Commit Graph

844 Commits

Author SHA1 Message Date
Jean-Paul Calderone
7ce7cf7f24
Merge pull request #1016 from LeastAuthority/3650.tahoe-invite-regression
Fix regression in `tahoe invite` w/o shares parameters

Fixes: ticket:3650
2021-03-25 20:09:55 -04:00
Itamar Turner-Trauring
8099929dec
Merge pull request #1013 from tahoe-lafs/3647.more-cli-python-3
Port allmydata.test.cli.test_invite to Python 3

Fixes ticket:3647
2021-03-25 10:19:49 -04:00
Jean-Paul Calderone
3963979fbd Test and fix tahoe invite w/o share arguments 2021-03-24 13:23:19 -04:00
Itamar Turner-Trauring
590f71ad10
Merge pull request #1012 from tahoe-lafs/3646.backupdb-python-3
Port test_backupdb to Python 3

Fixes ticket:3646
2021-03-23 16:13:44 -04:00
Jean-Paul Calderone
5b7f0f2477
Merge pull request #1004 from LeastAuthority/3638.mypy-vs-allmydata-scripts
Fix src/allmydata/scripts/ mypy errors

Fixes: ticket:3638
2021-03-23 16:06:33 -04:00
Itamar Turner-Trauring
4b0aa41256 Fix flake. 2021-03-23 11:04:00 -04:00
Itamar Turner-Trauring
e140dc06ea Tests pass on Python 3. 2021-03-23 10:53:53 -04:00
Itamar Turner-Trauring
b1b70cc61c Tests pass on Python 3. 2021-03-23 10:02:01 -04:00
Itamar Turner-Trauring
e091d4d0aa Body should be bytes. 2021-03-18 13:29:56 -04:00
Itamar Turner-Trauring
f9d0116283 Fix typo. 2021-03-18 13:29:50 -04:00
Itamar Turner-Trauring
2f25950944 All tests pass on Python 3. 2021-03-18 11:00:49 -04:00
Itamar Turner-Trauring
b7d6b97f63 Some progress towards passing tests on Python 3. 2021-03-18 10:42:15 -04:00
Itamar Turner-Trauring
34f1f43e95 Revert changes to tahoe_backup/test_backup for now. 2021-03-18 10:33:10 -04:00
Jean-Paul Calderone
0464e9f5ab Merge remote-tracking branch 'origin/master' into 3638.mypy-vs-allmydata-scripts 2021-03-17 21:23:28 -04:00
Itamar Turner-Trauring
56efe7ae48 Merge branch '3603.scripts' into 3634.cli-tests-python-3 2021-03-17 15:33:18 -04:00
Itamar Turner-Trauring
2eba96de61 Address review comments. 2021-03-17 15:29:00 -04:00
Jean-Paul Calderone
b879314194 Make these byte strings explicitly byte strings 2021-03-17 15:21:22 -04:00
Jean-Paul Calderone
84cc7c5b84 Tell mypy about the types of optFlags and optParameters 2021-03-17 15:21:16 -04:00
Jean-Paul Calderone
6955154824 Allow SubCommands to be defined with any Options 2021-03-17 15:17:19 -04:00
Itamar Turner-Trauring
44374487c7 Some progress towards passing tests on Python 3. 2021-03-15 10:37:03 -04:00
Itamar Turner-Trauring
4d80177b18 Merge branch '3603.scripts' into 3634.cli-tests-python-3 2021-03-15 10:36:56 -04:00
Itamar Turner-Trauring
f147669071 Tests pass on Python 3. 2021-03-15 09:44:36 -04:00
Itamar Turner-Trauring
425313457b Make sure we're not doing "%s" % (bytes_). 2021-03-15 09:41:56 -04:00
Jason R. Coombs
0838133006 Merge branch 'master' into 3603.scripts 2021-03-06 10:43:01 -05:00
Itamar Turner-Trauring
70c0607789 Enable BytesWarning across all tests ported to Python 3, fixing problems that caught. 2021-02-24 14:36:15 -05:00
Jason R. Coombs
939988a042 Add workaround for compatibility on Python 2 where test.cli.test_create_alias expects the URL to be a byte string, broken in d02334bfd5. 2021-02-15 15:13:56 -05:00
Jason R. Coombs
d02334bfd5 Rely on futurize to expose the moved modules. 2021-02-15 14:13:59 -05:00
Jason R. Coombs
09f3e3f6b5 Remove comment, superseded by docstring. 2021-02-15 13:26:20 -05:00
Jason R. Coombs
0de90fda3f Merge commit '2fb603e60' into 3603.scripts 2021-02-15 13:10:35 -05:00
Jason R. Coombs
2fb603e603 Rewrite doctest to pass on Python 2+3. 2021-02-15 13:10:21 -05:00
Jason R. Coombs
ebbe645cb6 Use explicit unicode literal for docstring. Now test passes on Python 2 when ALLOW_BYTES is indicated. 2021-02-15 13:06:42 -05:00
Jason R. Coombs
3c93605ead Add docstring to types_. 2021-02-15 12:15:41 -05:00
Itamar Turner-Trauring
06cd015647 Merge remote-tracking branch 'origin/master' into 3606.test_system-web-python3 2021-02-15 11:14:41 -05:00
Jason R. Coombs
df137cca0a Merge branch 'master' into 3603.scripts 2021-02-12 16:08:31 -05:00
Jean-Paul Calderone
f0ac092109 Avoid the pidfile stuff on Windows 2021-02-12 14:49:20 -05:00
Jean-Paul Calderone
4575deb27c Attempt to address non-ascii exceptions from the option parser 2021-02-12 14:32:49 -05:00
Jean-Paul Calderone
91490fc2d5 Merge remote-tracking branch 'origin/master' into 3528.test_cli-no-mock 2021-02-12 13:35:03 -05:00
Jean-Paul Calderone
3beacc9c8f Merge remote-tracking branch 'origin/master' into 3581.unicode_to_argv.1 2021-02-09 21:18:58 -05:00
Itamar Turner-Trauring
6b38c8d1c9 More of test_system now passes on Python 3. 2021-02-03 11:24:47 -05:00
Jason R. Coombs
621ae58abe Avoid overthinking encoding when handling usage errors. 'test_unicode_arguments_and_output' still passes on Python 2. Ref #3603. 2021-01-31 11:13:59 -05:00
Jason R. Coombs
57cb88638a In scripts.create_node, set the encoding once and write text. 2021-01-30 12:46:44 -05:00
Jason R. Coombs
d6082d853a Declare scripts.create_node as ported. 2021-01-30 12:23:16 -05:00
Jason R. Coombs
36b7fdaecf Apply futurize to create_node. 2021-01-30 12:15:36 -05:00
Jason R. Coombs
5fc9674d3a Update escape_path for Python 3 compatibility. 2021-01-30 11:47:53 -05:00
Jason R. Coombs
210eb5b529 Add test for escape_path. 2021-01-30 11:44:36 -05:00
Jason R. Coombs
5bf2b09b81 In scripts.runner, replace hard failure on Python 3 with 'experimental' warning. Ref #3603. Closes #3035. 2021-01-30 11:12:01 -05:00
Jason R. Coombs
00e856fed5 Declare scripts.types_ as ported (never had Python 2 support). 2021-01-30 11:00:19 -05:00
Jason R. Coombs
7d468cde19 Merge branch 'master' into 3399.mypy 2021-01-15 11:17:47 -05:00
Jean-Paul Calderone
622d67c9b9 done with this, thanks 2021-01-12 14:55:40 -05:00
Jean-Paul Calderone
183ee10035 probably more useful debug info 2021-01-12 14:39:56 -05:00
Jean-Paul Calderone
ec92f0362d this? 2021-01-12 14:36:42 -05:00
Jean-Paul Calderone
7ca3c86a35 debug nonsense 2021-01-12 14:35:03 -05:00
Jean-Paul Calderone
ae1a0c591b Prefer to fix unicode_to_argv/argv_to_unicode instead of callers 2021-01-12 09:58:34 -05:00
Jean-Paul Calderone
ec6c036f87 less cheesy list collision fix 2021-01-11 16:14:34 -05:00
Jean-Paul Calderone
260706d330 Fix the collision with the builtin list 2021-01-11 16:00:42 -05:00
Jean-Paul Calderone
2306819db1 Get rid of unicode_to_argv and argv_to_unicode 2021-01-11 15:45:39 -05:00
Jean-Paul Calderone
9958236c31 explain the extra coverage stuff 2021-01-04 12:06:03 -05:00
Jean-Paul Calderone
c9b3ccedb4 explain this while loop 2021-01-04 11:59:58 -05:00
Jason R. Coombs
574613a892 Merge branch 'master' into 3399.mypy 2020-12-26 12:45:09 -05:00
Itamar Turner-Trauring
c25dd57768 Make sure we can handle bytes, plus a couple other fixes. 2020-12-21 13:12:01 -05:00
Jason R. Coombs
602a06e5cb Extract Parameters type in scripts.types_. 2020-12-18 11:14:07 -05:00
Jean-Paul Calderone
6e152daf05 Put the pidfile in the right place
Seems we relied on the chdir for that to happen, previously.
2020-12-17 09:37:45 -05:00
Jean-Paul Calderone
70305131f1 docstrings 2020-12-17 09:22:43 -05:00
Jean-Paul Calderone
f88061e31c docstring 2020-12-17 09:16:05 -05:00
Jean-Paul Calderone
a363c8de67 Fix test_non_numeric_pid (and put it in a better place too) 2020-12-17 09:11:29 -05:00
Jean-Paul Calderone
a04a915628 Parameterize the Options class so we can synthesize an unhandled exception 2020-12-16 21:15:24 -05:00
Jean-Paul Calderone
2746eb9ae1 Fix the broken fake_react by not using the argv feature 2020-12-16 20:58:27 -05:00
Jean-Paul Calderone
a4b0b4a01a Parameterize stderr to allmydata.scripts.runner.run 2020-12-16 20:55:00 -05:00
Jean-Paul Calderone
d5bff458b6 Parameterize argv to allmydata.scripts.runner.run 2020-12-16 20:51:01 -05:00
Jean-Paul Calderone
035cd8b4ac Merge remote-tracking branch 'origin/master' into 3532.test_node-no-mock 2020-12-14 15:35:42 -05:00
Jean-Paul Calderone
7638064818 Merge remote-tracking branch 'origin/master' into 3532.test_node-no-mock 2020-12-14 09:32:33 -05:00
Jean-Paul Calderone
b58b07a9d7 Fold run_common into tahoe_run since there are no other run-like commands anymore 2020-12-12 18:26:22 -05:00
Jean-Paul Calderone
39631a90bf we always use --nodaemon 2020-12-12 18:23:01 -05:00
Jean-Paul Calderone
25c98d7421 don't shadow the global 2020-12-12 18:21:35 -05:00
Jean-Paul Calderone
692285ada3 key-generator was removed 2020-12-12 18:21:16 -05:00
Jean-Paul Calderone
ed2152e2c8 We don't need to check this condition. We're always running. 2020-12-12 18:20:26 -05:00
Jean-Paul Calderone
d8da612055 Move the --nodaemon logic out of tahoe_run
We're always going to --nodaemon from now on
2020-12-12 18:20:09 -05:00
Jean-Paul Calderone
f17a5dfafc key-generator was apparently removed long ago 2020-12-12 17:40:13 -05:00
Jean-Paul Calderone
9a8f72202d Check for these exceptions and report them better 2020-12-11 11:23:10 -05:00
Jean-Paul Calderone
624916e06b
Merge branch 'master' into 3550.remove-start-stop-restart-daemonize 2020-12-10 19:47:47 -05:00
Jean-Paul Calderone
1c7c228f90 Merge remote-tracking branch 'origin/master' into 3549.remove-stats-gatherer 2020-12-10 18:27:54 -05:00
Jean-Paul Calderone
6f80862ec5 Slightly clean up formatting implementation 2020-12-10 07:19:27 -05:00
Jean-Paul Calderone
d0c22a529e json.dumps output should always be ascii 2020-12-10 07:16:00 -05:00
Jean-Paul Calderone
ca92fa4eb5 Don't think about "tahoe start" 2020-12-09 10:51:48 -05:00
Jean-Paul Calderone
4d28b0ec27 Get rid of "tahoe start", "tahoe daemonize", "tahoe stop", "tahoe restart" 2020-12-09 10:51:48 -05:00
Jean-Paul Calderone
a34fca8e7a Don't think about "tahoe start" 2020-12-09 10:51:10 -05:00
Jean-Paul Calderone
9a27254afa unused import 2020-12-09 10:39:03 -05:00
Jean-Paul Calderone
d7ec5a19be Don't implement the stats gatherer or support configuring or talking to one 2020-12-09 10:34:16 -05:00
Jean-Paul Calderone
1a77ba5698 remove redundant u prefix 2020-12-07 10:37:25 -05:00
Jean-Paul Calderone
d6d64f6b27 fix the json case 2020-12-07 10:37:22 -05:00
Jean-Paul Calderone
87e808b392 one more switch 2020-12-07 10:18:05 -05:00
Jean-Paul Calderone
c7358e6639 Switch over to the helper in the two functions that matter for this PR 2020-12-07 10:16:48 -05:00
Jean-Paul Calderone
a8e3424ef6 remove another unrelated change that's no longer required 2020-12-07 09:55:27 -05:00
Jean-Paul Calderone
d2664121b9 backout no-longer required unrelated change 2020-12-07 09:51:34 -05:00
Jean-Paul Calderone
c12b082fa7 Put run_cli back largely how it was
Also deal with StringIO better in show_output
2020-12-06 20:37:28 -05:00
Jean-Paul Calderone
613777d166 Make sure this one is bytes too 2020-12-06 19:23:13 -05:00
Jean-Paul Calderone
5aee8b422d Oops there's another case 2020-12-06 18:39:09 -05:00
Jean-Paul Calderone
77bebb9916 [wip] remove mock from test_alias, along with a bunch of encoding-related changes :/ 2020-12-06 17:00:34 -05:00
Jean-Paul Calderone
d29210a140 unused import 2020-12-06 11:04:05 -05:00
Jean-Paul Calderone
238590d7fd Remove mock by removing a bunch of unicode shenanigans 2020-12-06 11:03:44 -05:00
Jean-Paul Calderone
ac7491680b fix unicode/bytes stuff in the affected tests 2020-12-05 09:06:45 -05:00
Jean-Paul Calderone
a0d46c6f09 Merge remote-tracking branch 'origin/master' into 3504.private-introducer-furl 2020-12-02 09:22:09 -05:00
Jason R. Coombs
572d7b2e02 Ignore error when untyped Module has no dispatch. 2020-11-29 15:52:04 -05:00
Jason R. Coombs
acbb6b3e93 Convert subcommands to tuples instead of lists, as that's what mypy demands for heterogeneous sequences. 2020-11-29 15:48:26 -05:00
Jason R. Coombs
6b772e7fdc Declare type for BaseOptions.description_unwrapped. 2020-11-29 15:22:58 -05:00
Jason R. Coombs
cb351607d8 Repeat type declaration from parent to avoid over-constraining this type for subclasses. 2020-11-29 15:21:25 -05:00
Jason R. Coombs
af172f6bff Repeat type declaration from parent to avoid over-constraining this type for subclasses. 2020-11-29 14:55:13 -05:00
Jason R. Coombs
1b92da75fa Some subclasses use ints, so just go for Any 2020-11-29 14:44:17 -05:00
Jason R. Coombs
e0eb63929a Declare type for BaseOptions.description. Fixes many type errors. 2020-11-29 14:35:17 -05:00
Jason R. Coombs
1248d65778 Declare types for BasedirOptions. Fixes several errors. 2020-11-29 14:32:34 -05:00
Jean-Paul Calderone
84088e4f41 unused import 2020-11-26 21:18:58 -05:00
Jean-Paul Calderone
805378ef11 Do more path stuff with FilePath 2020-11-26 20:53:57 -05:00
Jean-Paul Calderone
c694e8c7e2 Delete allmydata.version_checks and related functionality
It is not Tahoe-LAFS' job to manage package installation in this way.
Instead, we can declare our dependencies in setup.py and rely on installation
management tools and packagers to create a suitable execution environment.

Making this statement in the past required going much further out on a limb
than it does today.  This code has served its purpose and can now be retired.
2020-11-23 15:10:18 -05:00
Jean-Paul Calderone
2ee0b1d3c6 flake cleanup 2020-11-16 15:05:04 -05:00
Jean-Paul Calderone
5cb1df06c4 delegate introducer furl lookup to the config object 2020-11-16 15:02:51 -05:00
Jean-Paul Calderone
4e84f5e690 write introducers.yaml instead of [client]introducer.furl in client creation 2020-11-16 15:00:20 -05:00
Jean-Paul Calderone
10600ef5ec Move write_introducer somewhere it can be used more widely 2020-11-16 14:59:42 -05:00
Itamar Turner-Trauring
6b61c06882 All tests pass on Python 3. 2020-11-09 15:00:55 -05:00
Itamar Turner-Trauring
f50fd8e474 Switch to new configparser backport. 2020-10-26 12:12:46 -04:00
Ross Patterson
95f2d53f92 chore(refs #3455) Address feedback, BBB comments
https://github.com/tahoe-lafs/tahoe-lafs/pull/845#issuecomment-704469561
2020-10-07 12:28:41 -07:00
Ross Patterson
ae1aab611d fix(py3): Match wiki porting conventions
Address feedback from PR pointing out that my python-future imports aren't matching the
conventions from the wiki.

Trac: refs #3448
2020-10-01 08:57:54 -07:00
Ross Patterson
362c121426 feat(py3): Convert unicode-only modules to str
Modules that reference `unicode` but do *not* reference `str` can safely be converted to
use `str` in a way that's closest to the way it should be done under Python 3 but that
is still Python 2 compatible [per
`python-future`](https://python-future.org/compatible_idioms.html?highlight=unicode#unicode).

This change results in 4 additional tests passing under Python 3 that weren't before,
one previous test error is now a failure, and more coverage in a few modules.  Here's
the diff of the output from running all tests under Python 3 before these changes and
after.  I've elided the irrelevant changes (time stamps, object ids, etc.):

```diff
--- .tox/make-test-py3-all-old.log	2020-09-27 20:56:55.761691130 -0700
+++ .tox/make-test-py3-all-new.log	2020-09-27 20:58:16.242075678 -0700
@@ -1,6 +1,6 @@
...
@@ -4218,7 +4218,7 @@
 [ERROR]
 (#.### secs)
 allmydata.test.mutable.test_version.Version.test_download_version ... Traceback (most recent call last):
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/mutable/test_version.py", line 274, in test_download_version
+  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/mutable/test_version.py", line 279, in test_download_version
     d = self.publish_multiple()
   File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/mutable/util.py", line 372, in publish_multiple
     self._nodemaker = make_nodemaker(self._storage)
@@ -4438,40 +4438,26 @@
 allmydata.test.test_abbreviate.Abbreviate.test_time ... [OK]
 (#.### secs)
 allmydata.test.test_auth.AccountFileCheckerKeyTests.test_authenticated ... Traceback (most recent call last):
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_auth.py", line 42, in setUp
-    abspath = abspath_expanduser_unicode(unicode(self.account_file.path))
-builtins.NameError: name 'unicode' is not defined
+Failure: twisted.cred.error.UnauthorizedLogin:
 [ERROR]
 (#.### secs)
 allmydata.test.test_auth.AccountFileCheckerKeyTests.test_missing_signature ... Traceback (most recent call last):
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_auth.py", line 42, in setUp
-    abspath = abspath_expanduser_unicode(unicode(self.account_file.path))
-builtins.NameError: name 'unicode' is not defined
-[ERROR]
+  File "/home/rpatterson/src/work/sfu/tahoe-lafs/.tox/py36-coverage/lib/python3.6/site-packages/twisted/trial/_asynctest.py", line 75, in _eb
+    raise self.failureException(output)
+twisted.trial.unittest.FailTest:
+Expected: (<class 'twisted.conch.error.ValidPublicKey'>,)
+Got:
+[Failure instance: Traceback (failure with no frames): <class 'twisted.cred.error.UnauthorizedLogin'>:
+]
+[FAILURE]
 (#.### secs)
-allmydata.test.test_auth.AccountFileCheckerKeyTests.test_password_auth_user ... Traceback (most recent call last):
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_auth.py", line 42, in setUp
-    abspath = abspath_expanduser_unicode(unicode(self.account_file.path))
-builtins.NameError: name 'unicode' is not defined
-[ERROR]
+allmydata.test.test_auth.AccountFileCheckerKeyTests.test_password_auth_user ... [OK]
 (#.### secs)
-allmydata.test.test_auth.AccountFileCheckerKeyTests.test_unknown_user ... Traceback (most recent call last):
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_auth.py", line 42, in setUp
-    abspath = abspath_expanduser_unicode(unicode(self.account_file.path))
-builtins.NameError: name 'unicode' is not defined
-[ERROR]
+allmydata.test.test_auth.AccountFileCheckerKeyTests.test_unknown_user ... [OK]
 (#.### secs)
-allmydata.test.test_auth.AccountFileCheckerKeyTests.test_unrecognized_key ... Traceback (most recent call last):
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_auth.py", line 42, in setUp
-    abspath = abspath_expanduser_unicode(unicode(self.account_file.path))
-builtins.NameError: name 'unicode' is not defined
-[ERROR]
+allmydata.test.test_auth.AccountFileCheckerKeyTests.test_unrecognized_key ... [OK]
 (#.### secs)
-allmydata.test.test_auth.AccountFileCheckerKeyTests.test_wrong_signature ... Traceback (most recent call last):
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_auth.py", line 42, in setUp
-    abspath = abspath_expanduser_unicode(unicode(self.account_file.path))
-builtins.NameError: name 'unicode' is not defined
-[ERROR]
+allmydata.test.test_auth.AccountFileCheckerKeyTests.test_wrong_signature ... [OK]
 (#.### secs)
 allmydata.test.test_backupdb.BackupDB.test_basic ... [OK]
 (#.### secs)
@@ -4615,7 +4601,7 @@
 src/allmydata/crypto/util.py                            12      2      4      2    75%   13, 32, 12->13, 30->32
 src/allmydata/deep_stats.py                             83     63     26      0    18%   27-52, 56-58, 62-82, 86-91, 94, 97, 103-114, 117-121, 125-131, 135
 src/allmydata/dirnode.py                               525    420    178      0    15%   70-103, 112-116, 119-135, 140-143, 146-160, 165-173, 176-177, 180-205, 208-217, 223-229, 248-286, 293-299, 302, 310, 315, 318-324, 327-332, 336-340, 344-346, 355-406, 410, 413, 416, 419, 422, 425, 428, 431-433, 436, 439, 442, 445, 448-450, 453, 457, 459, 464, 469-472, 475-478, 481-484, 489-492, 498-501, 504-507, 510-518, 530-532, 539-555, 558-566, 570-589, 600-610, 613-620, 628-641, 646-652, 657-678, 693-714, 752-761, 765-770, 774-812, 819-820, 825, 828, 831, 836-839, 842-849, 852-853, 862-877, 880-881, 884-891, 894, 897-899
-src/allmydata/frontends/auth.py                        100     71     28      0    26%   21-22, 30-48, 51, 54-56, 59-70, 80-87, 100-110, 117-118, 121, 124-142, 147-150, 156-159
+src/allmydata/frontends/auth.py                        100     52     28      4    47%   21-22, 38, 41-44, 51, 54-56, 65-70, 80-87, 106-108, 117-118, 121, 124-142, 147-150, 156-159, 37->38, 40->41, 59->65, 101->106
 src/allmydata/frontends/ftpd.py                        255    254     84      0     1%   4-337
 src/allmydata/frontends/sftpd.py                      1211   1208    488      0     1%   4-2014
 src/allmydata/hashtree.py                              174    135     72      1    16%   59, 75-78, 106-108, 114-117, 123-126, 132-136, 142-149, 152-162, 165-169, 172, 175, 180, 183, 186, 218-232, 259-262, 295-306, 320-323, 326-331, 384-484, 58->59
@@ -4653,7 +4639,7 @@
 src/allmydata/scripts/admin.py                          51     31      2      0    38%   9-14, 17-21, 25, 28, 31-37, 40-46, 56-57, 59, 61-66, 74-78
 src/allmydata/scripts/backupdb.py                      146     91     14      1    36%   84-91, 94-96, 99, 103, 106, 111-114, 117-119, 122, 125, 128, 176-221, 231-242, 245-263, 266-272, 308-324, 327-333, 336-341, 306->308
 src/allmydata/scripts/cli.py                           259    124     46      6    46%   25-49, 69-72, 79-81, 103, 142-146, 175, 221-222, 258, 265-266, 284-285, 330-331, 338-341, 346-355, 361-362, 366-373, 388, 405, 417, 432, 449, 479-481, 484-486, 489-491, 494-496, 499-501, 504-515, 518-520, 523-525, 528-530, 533, 536-538, 541-543, 546-548, 551-553, 556-558, 561-563, 566-568, 571-573, 576-577, 60->exit, 61->exit, 174->175, 180->exit, 181->exit, 219->221
-src/allmydata/scripts/common.py                        153     74     60      4    48%   64, 82, 88, 100, 114-126, 130-152, 159-163, 168-169, 172, 177, 191-236, 240-241, 47->49, 63->64, 79->82, 87->88
+src/allmydata/scripts/common.py                        154     74     60      4    49%   69, 87, 93, 105, 119-131, 135-157, 164-168, 173-174, 177, 182, 196-241, 245-246, 52->54, 68->69, 84->87, 92->93
 src/allmydata/scripts/common_http.py                    77     58     20      0    20%   15-30, 34-36, 38, 42-83, 87, 90, 94-96, 101
 src/allmydata/scripts/create_node.py                   302    185    114      8    30%   24, 61-96, 99-111, 114-128, 136-139, 169-174, 191-194, 205-208, 224-229, 235, 242, 256-278, 289-292, 295-298, 329, 339, 347-380, 385-445, 448-450, 455-477, 223->224, 234->235, 241->242, 252->256, 288->289, 294->295, 328->329, 338->339
 src/allmydata/scripts/debug.py                         719    638    202      0     9%   14, 31-32, 35-49, 52-60, 63-142, 146-154, 157-164, 168-217, 220-304, 307-401, 407, 417, 437-465, 468-485, 488-602, 606, 609-611, 637-648, 653-656, 659, 683-689, 692-810, 813-842, 845-848, 851-865, 869, 888, 891-940, 946, 949-950, 957, 960-961, 967-972, 984-985, 999-1000, 1003-1004, 1020-1021, 1025-1031, 1046-1050
@@ -4661,10 +4647,10 @@
 src/allmydata/scripts/run_common.py                    135     18     24      6    85%   37, 41-46, 59-60, 149, 158, 192-193, 216-220, 226-227, 55->62, 135->exit, 135->exit, 148->149, 191->192, 225->226
 src/allmydata/scripts/runner.py                        138     53     42     11    56%   84-85, 91, 97-99, 104, 114, 123-132, 140, 146, 149-160, 174-181, 186, 189-190, 204-232, 248, 255, 31->36, 103->104, 113->114, 139->140, 145->146, 147->149, 185->186, 188->189, 202->204, 247->248, 254->255
 src/allmydata/scripts/slow_operation.py                 69     56     22      0    14%   15-44, 47-52, 55-61, 64-83
-src/allmydata/scripts/stats_gatherer.py                 41     25     10      0    31%   20-25, 62-86
+src/allmydata/scripts/stats_gatherer.py                 42     25     10      0    33%   25-30, 67-91
 src/allmydata/scripts/tahoe_add_alias.py               106     91     30      0    11%   20-32, 35-59, 63-98, 102-111, 115-144
 src/allmydata/scripts/tahoe_backup.py                  331    267     85      0    15%   20-35, 38-51, 54-58, 71-73, 76-152, 155-157, 160-161, 164-174, 178-209, 212-242, 246-274, 278-279, 287-311, 322-331, 336, 339, 342-351, 356, 359, 362-367, 372-374, 379, 384, 389, 398, 417-425, 428, 431-461, 469-480, 483-486, 500-504, 511-512, 525, 538-542, 545-549, 552-555, 558-561, 564, 571, 578, 586-594
-src/allmydata/scripts/tahoe_check.py                   263    235    121      0     7%   15, 20-100, 103-112, 120-129, 132-167, 170-173, 179-192, 195-256, 259-270, 277-323, 327-336, 339
+src/allmydata/scripts/tahoe_check.py                   264    235    121      0     8%   20, 25-105, 108-117, 125-134, 137-172, 175-178, 184-197, 200-261, 264-275, 282-328, 332-341, 344
 src/allmydata/scripts/tahoe_cp.py                      602    503    226      0    12%   22, 26, 30-31, 34-37, 40-41, 44-47, 50-53, 56-60, 63-70, 75-77, 80, 83, 86, 90-91, 94, 98-99, 102, 106-111, 114, 117-134, 138-142, 145-159, 162-172, 175-177, 180, 185-189, 192, 195-197, 200-203, 206, 210-214, 218-223, 230-233, 236, 239-253, 256-263, 266-297, 303, 307-309, 316, 320-323, 326-333, 336-350, 354-358, 361-397, 403-413, 416-433, 436-437, 440-454, 465-496, 504-580, 583, 589-630, 636-689, 693-698, 701-703, 706-719, 723-762, 765-775, 778-806, 810-818, 821-838, 842, 845-857, 862-863, 867
 src/allmydata/scripts/tahoe_get.py                      37     32     12      0    10%   9-45
 src/allmydata/scripts/tahoe_invite.py                   59     41      8      0    27%   27-31, 36-71, 76-101
@@ -4679,7 +4665,7 @@
 src/allmydata/scripts/tahoe_stop.py                     60     47     10      0    19%   16, 24-84
 src/allmydata/scripts/tahoe_unlink.py                   28     23      6      0    15%   12-40
 src/allmydata/scripts/tahoe_webopen.py                  27     24     12      0     8%   7-31
-src/allmydata/stats.py                                 242    156     54      3    33%   28-34, 37-40, 43-47, 50-64, 67-72, 101, 104-110, 113-125, 144-146, 154-155, 160-163, 169-174, 178-187, 191, 200-207, 210, 213-219, 222-228, 232-234, 237, 241, 246-250, 253, 256-257, 263-278, 281-285, 288-293, 299-325, 100->101, 143->144, 153->154
+src/allmydata/stats.py                                 242    156     54      3    33%   29-35, 38-41, 44-48, 51-65, 68-73, 102, 105-111, 114-126, 145-147, 155-156, 161-164, 170-175, 179-188, 192, 201-208, 211, 214-220, 223-229, 233-235, 238, 242, 247-251, 254, 257-258, 264-279, 282-286, 289-294, 300-326, 101->102, 144->145, 154->155
 src/allmydata/storage/common.py                         24      2      4      2    86%   11, 28, 10->11, 36->39
 src/allmydata/storage/crawler.py                       222    125     64      6    37%   16, 90, 111-113, 148-178, 192-193, 231, 244, 251, 275-312, 315-363, 377-384, 393, 416, 428, 445, 453, 488-492, 495-508, 13->16, 89->90, 96->99, 228->231, 248->251, 268->271
 src/allmydata/storage/expirer.py                       240    183     81      2    21%   9, 74-79, 119, 122, 125-167, 171-233, 236-253, 256-261, 264-266, 269-274, 280-284, 288-322, 388-435, 7->9, 71->74
@@ -4748,7 +4734,7 @@
 src/allmydata/windows/fixups.py                        133    133     54      0     0%   1-237
 src/allmydata/windows/registry.py                       42     42     12      0     0%   1-77
 ------------------------------------------------------------------------------------------------
-TOTAL                                                27427  20411   8234    294    22%
+TOTAL                                                27430  20392   8234    298    22%

 18 files skipped due to complete coverage.
 + '[' '!' -z 1 ']'
```

Trac: refs #3448, https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3448
2020-09-30 08:47:02 -07:00
Jason R. Coombs
5a40bf47f4 Convert print statements to print functions, even when commented. Fixes #3408. 2020-09-11 14:50:44 -04:00
Jason R. Coombs
160f2b9628 Add TODO reflecting transient state of the check. 2020-08-24 11:46:48 -04:00
Jason R. Coombs
8b553d2045 Add Python 3 compatibility for code paths relevant to 'tahoe --version'. 2020-08-21 19:55:34 -04:00
Jason R. Coombs
2d29265d71 Bypass Python 3 check when running under tox. 2020-08-21 19:55:34 -04:00
Itamar Turner-Trauring
2cc2cb6a7f Rename to_str() to the more accurate to_bytes(). 2020-08-14 13:49:48 -04:00
meejah
1549e7eb18 simplify (for line in f.readlines() -> for line in f) 2020-05-06 15:16:34 -06:00
meejah
4c3d0ea6cc use 'with open' for more file-opens 2020-05-04 21:59:15 -06:00
meejah
4b0c730adf use 'with open' correctly 2020-05-04 21:59:15 -06:00
meejah
c385e958a8 Merge branch 'master' into ticket3252-port-web-directory.remaining.1 2020-04-23 12:24:00 -06:00
meejah
018e161f19 don't allow trailing slashes
This makes /uri/xxx URIs invalid if they have a trailing slash.
It seems that the former Nevow implementation would allow this, and
some tests (and, notable, "tahoe backup") did rely on using URIs
of this style.
2020-04-18 01:52:18 -06:00
Jean-Paul Calderone
ef73e18f3d
Remove the greater part of the implementation 2020-02-13 10:43:50 -05:00
Jean-Paul Calderone
6d83b9c1e1 remove "tahoe rm" 2020-01-17 09:14:36 -05:00
Jean-Paul Calderone
f134f77f2e deprecate start, stop, restart, daemonize 2020-01-15 14:21:29 -05:00
Jean-Paul Calderone
173a9a5256 Factor process management scripts so "run" does not depend on "daemonize" 2020-01-15 14:19:26 -05:00
Jean-Paul Calderone
1cbe21b899 start to deprecate the daemonization-related commands 2020-01-15 13:54:01 -05:00
Jean-Paul Calderone
21bf7fc25c Merge remote-tracking branch 'origin/master' into integration/storage-economics 2019-08-16 15:39:31 -04:00
Jean-Paul Calderone
3d2d61f853 Merge remote-tracking branch 'origin/master' into 3239.python2-new-style-regression-test 2019-08-13 18:27:23 -04:00
Jean-Paul Calderone
b7e3633056 Fix a lot of classic classes in Tahoe-LAFS 2019-08-13 16:55:40 -04:00
Jean-Paul Calderone
13409a2449 Move the remaining package checking machinery to its own module. 2019-08-13 15:11:01 -04:00
meejah
eb0a582d1c add a --helper command-line option to 'tahoe create-node' 2019-08-08 17:41:57 -06:00
meejah
0f6002b935 raise not except 2019-08-07 14:08:23 -06:00
meejah
358f0c9ead error if --coverage but no coverage package 2019-08-07 13:59:40 -06:00
meejah
3b3626244e cleanup 2019-08-07 12:39:29 -06:00
meejah
8e4b05214a add --coverage for integration tests 2019-08-06 16:47:43 -06:00
Jean-Paul Calderone
deb3109f43 please report all errors 2019-08-03 06:19:01 -04:00
meejah
dd55accec8 Merge branch 'master' into 3031-replace-pycryptopp 2019-06-26 14:42:43 -06:00
Jean-Paul Calderone
3c7ab91f07 Replace the monkey-patching with attributes on instances 2019-06-26 10:59:39 -04:00
meejah
47ccdb0177 refactor ed25519 helpers to functional style
eliminates the wrapper classes and uses some more-explicit
names throughout (e.g "sk" -> "signing_key")
2019-06-13 22:19:28 -06:00