Jean-Paul Calderone
e2f3964451
okay this is indeed the expected
2021-01-11 10:09:54 -05:00
Jean-Paul Calderone
42f1930914
disambiguate this a bit
2021-01-11 10:08:15 -05:00
Jean-Paul Calderone
30c79bf678
make sure executable is unicode too, if that matters
2021-01-11 09:51:36 -05:00
Jean-Paul Calderone
b5f0e21ef8
testtools convention - actual value comes first
2021-01-10 20:19:15 -05:00
Jean-Paul Calderone
3bde012ea1
Create a better expectation
...
If we pass all this stuff to Popen we should expect to see it from get_argv() right?
2021-01-10 20:18:00 -05:00
Jean-Paul Calderone
28435d65c1
test the SUT
2021-01-10 20:16:25 -05:00
Jean-Paul Calderone
360b20a981
FilePath again
2021-01-10 20:14:05 -05:00
Jean-Paul Calderone
77c9a2c2f5
make the failures a little nicer
2021-01-10 20:13:17 -05:00
Jean-Paul Calderone
18de71666f
try to work-around bugs in the Popen hotfix
2021-01-10 20:10:34 -05:00
Jean-Paul Calderone
a21b66e775
FilePath again
2021-01-10 20:06:07 -05:00
Jean-Paul Calderone
e64a4c6426
Attempt to use a parent-side API that supports unicode properly
2021-01-10 19:59:22 -05:00
Jean-Paul Calderone
6091ca2164
try to get the child source right
2021-01-10 11:23:19 -05:00
Jean-Paul Calderone
b02b930eed
do better with paths
2021-01-10 11:22:00 -05:00
Jean-Paul Calderone
a73668a056
this doesn't take a list
2021-01-10 11:21:13 -05:00
Jean-Paul Calderone
b3a6f25c1c
Python 2 gets an old version with no CommandLineToArgv
...
Thanks.
2021-01-10 11:01:30 -05:00
Jean-Paul Calderone
6b621efef2
Turns out there is also CommandLineToArgv
...
just not CommandLineToArgvW, but that's fine.
2021-01-10 10:48:49 -05:00
Jean-Paul Calderone
24f3d74fdf
Fix the skip
2021-01-10 10:48:40 -05:00
Jean-Paul Calderone
e80bd6894f
Take a first attempt at testing the argv logic directly
2021-01-10 10:39:51 -05:00
Jean-Paul Calderone
d78e72595a
Use SetErrorMode and related constants from pywin32
2021-01-09 18:19:09 -05:00
Jean-Paul Calderone
1ae0311e36
Merge pull request #949 from tahoe-lafs/port-webish
...
Port webish/test_webish to Python 3
Fixes: ticket:3577
2021-01-08 13:51:00 -05:00
Itamar Turner-Trauring
f71dcfe9fc
Lint.
2021-01-08 13:42:10 -05:00
Itamar Turner-Trauring
7a15f7e11d
Switch to modern (circa 2014!) Conch API.
2021-01-08 13:32:11 -05:00
Itamar Turner-Trauring
3b29a5f707
Work with new Unicode configs.
2021-01-07 11:59:23 -05:00
Itamar Turner-Trauring
308dbba924
Fix flake.
2021-01-07 09:20:39 -05:00
Itamar Turner-Trauring
7b1bfadd21
Rip out FTP.
2021-01-06 13:39:52 -05:00
Itamar Turner-Trauring
7b091bde9b
Port to Python 3.
2021-01-06 10:51:05 -05:00
Itamar Turner-Trauring
192063acfa
Port to Python 3.
2021-01-06 09:59:33 -05:00
Itamar Turner-Trauring
a5e22d93cc
All tests pass on Python 3.
2021-01-06 09:54:48 -05:00
Itamar Turner-Trauring
ebaf075966
Another passing test on Python 3.
2021-01-06 09:38:43 -05:00
Itamar Turner-Trauring
f3d795d9a8
More passing tests on Python 3.
2021-01-06 09:31:15 -05:00
Itamar Turner-Trauring
d82bcc5280
Another passing test on Python 3.
2021-01-06 09:26:18 -05:00
Itamar Turner-Trauring
2998057d91
Don't need byte strings for debug!
2021-01-05 16:47:34 -05:00
Itamar Turner-Trauring
06fb9496ab
Another test passing on Python 3.
2021-01-05 16:35:57 -05:00
Itamar Turner-Trauring
0241244e49
Another test passing on Python 3.
2021-01-05 16:30:17 -05:00
Itamar Turner-Trauring
3a6f3f2809
Merge remote-tracking branch 'origin/master' into 3579.ftp-python-3
2021-01-05 16:05:56 -05:00
Chad Whitacre
fa15c2c8d6
Declare victory on blacklist
2021-01-05 06:45:32 -05:00
Chad Whitacre
88946900b3
Port unknown to Python 3
...
This is covered by test_dirnode/test_grid
2021-01-05 06:39:29 -05:00
Chad Whitacre
bd402ce1f4
Compute Content-Length more betterly
2021-01-05 06:27:46 -05:00
Chad Whitacre
dc5ac4a112
Merge pull request #946 from tahoe-lafs/3574.port-stats
...
Port stats to Python 3
2021-01-05 06:04:10 -05:00
Itamar Turner-Trauring
4683760ed8
Merge pull request #945 from tahoe-lafs/3566.web-tests-python-3-part-2
...
Port web tests to Python 3, part 2
Fixes ticket:3566
2021-01-04 15:40:52 -05:00
Jean-Paul Calderone
3c203828c5
Merge remote-tracking branch 'origin/master' into 3578.remove-encode_tail_segment
2021-01-04 15:08:27 -05:00
Jean-Paul Calderone
7a504dd99f
Merge pull request #936 from LeastAuthority/3534.test_introducer-no-mock
...
Remove mock from test_introducer
Fixes: ticket:3534
2021-01-04 15:06:29 -05:00
Itamar Turner-Trauring
bc19ccc77a
Use method that already does this.
2021-01-04 14:36:02 -05:00
Itamar Turner-Trauring
961ad123cc
Better name.
2021-01-04 14:35:33 -05:00
Itamar Turner-Trauring
6f0838e2e9
Docstring.
2021-01-04 14:34:18 -05:00
Itamar Turner-Trauring
d7db34f27a
Add explanation for if statement.
2021-01-04 14:33:06 -05:00
Itamar Turner-Trauring
a46a7dc7f8
Log, don't raise.
2021-01-04 14:23:12 -05:00
Jean-Paul Calderone
af06bdb182
Merge remote-tracking branch 'origin/master' into 3575.realistic_storage_index_hash-key
2021-01-04 14:14:13 -05:00
Jean-Paul Calderone
916ddd590e
Maybe a useful test to demonstrate the lower-level behavior?
...
Or maybe trash. I don't know.
2021-01-04 14:13:34 -05:00
Jean-Paul Calderone
190d9a7319
Skip the pidfile test on Windows where there are no pidfiles
2021-01-04 12:13:53 -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
Itamar Turner-Trauring
3a6b92f39f
More progress to passing tests on Python 3.
2021-01-04 11:48:38 -05:00
Itamar Turner-Trauring
2bf278e55d
Even more tests passing on Python 3.
2021-01-04 11:39:25 -05:00
Itamar Turner-Trauring
3d42030e01
More tests pass on Python 3.
2021-01-04 11:21:26 -05:00
Itamar Turner-Trauring
a54aeae338
Port to Python 3.
2021-01-04 11:05:59 -05:00
Itamar Turner-Trauring
744e205763
Tests pass on Python 3.
2021-01-04 11:03:38 -05:00
Chad Whitacre
c13821ecac
Tack on deep_stats
2021-01-04 06:18:14 -05:00
Chad Whitacre
655be5e3a0
Port stats to Python 3
2021-01-04 06:18:14 -05:00
Jean-Paul Calderone
855521fea8
Merge pull request #935 from LeastAuthority/3529.test_connections-no-mock
...
Remove mock usage from test_connections.py
Fixes: ticket:3529
2021-01-02 12:48:12 -05:00
Jean-Paul Calderone
c0358b3e03
Fold _encode_tail_segment in to _encode_segment
2021-01-01 15:14:47 -05:00
Chad Whitacre
2a8fa4da7a
Fix test module reference in util._python3
2020-12-29 12:54:19 -05:00
Chad Whitacre
b4b4a1aabf
Port webish/test_webish to Python 3
2020-12-29 12:39:00 -05:00
Jean-Paul Calderone
30b37e17dd
More of a storage_index_hash test
2020-12-29 10:48:03 -05:00
Jason R. Coombs
4a9d3bde5b
Exclude allmydata.scripts.types_ module from PythonTwoRegressions.
2020-12-26 13:30:32 -05:00
Jason R. Coombs
6522221166
Suppress error on SpyHandler interface.
2020-12-26 13:12:11 -05:00
Jason R. Coombs
854c22e1ca
Use compatible import for urllib.parse.quote.
2020-12-26 13:09:57 -05:00
Jason R. Coombs
cc5a1046d9
Define type for IntroducerService.VERSION, accepting bytes or str as keys for now.
2020-12-26 13:07:12 -05:00
Jason R. Coombs
3fd46f9400
Ignore additional attribute on the function.
2020-12-26 13:02:16 -05:00
Jason R. Coombs
04ab4dec3b
Extract function and annotate it to satisfy typechecks for _Config._basedir
2020-12-26 13:01:27 -05:00
Jason R. Coombs
574613a892
Merge branch 'master' into 3399.mypy
2020-12-26 12:45:09 -05:00
Jason R. Coombs
01147f4627
Add reference to ticket for ambiguous MRO
2020-12-26 12:33:22 -05:00
Jason R. Coombs
1bf71fd690
Replace todo with a ticket.
2020-12-26 12:12:39 -05:00
Jason R. Coombs
5396f9f97e
Replace fixme with reference to foolscap issue.
2020-12-26 12:02:47 -05:00
Jason R. Coombs
dacdf7f12d
Add more detail and link to upstream issue for Twisted stubs.
2020-12-26 11:56:13 -05:00
Jason R. Coombs
384e3f5220
Merge commit 'ab2c544' into 3399.mypy
2020-12-26 11:50:15 -05:00
Jason R. Coombs
ab2c544efc
Restore IDirnodeURI
2020-12-26 11:50:06 -05:00
Jason R. Coombs
b65ef3cee6
Revert "Ignores no longer needed."
...
This reverts commit 950ca18932
.
2020-12-26 11:25:40 -05:00
Jason R. Coombs
6b6b8f8378
Push IURI implementers down to the classes that actually implement it.
2020-12-26 11:17:35 -05:00
Itamar Turner-Trauring
eb8837a4c8
More things that need to be bytes.
2020-12-23 10:09:37 -05:00
Itamar Turner-Trauring
15f2d433ae
Fix tests on Python 3.
2020-12-23 10:01:44 -05:00
Itamar Turner-Trauring
3c8550b666
Python 3 fix: direct indexing of bytes returns an int.
2020-12-23 09:54:35 -05:00
Itamar Turner-Trauring
58cb757816
Sometimes these values are more extended Unicode than ASCII.
2020-12-23 09:42:42 -05:00
Itamar Turner-Trauring
f736dc6f7b
Fix some tests caused by unicode rendering.
2020-12-23 09:34:48 -05:00
Itamar Turner-Trauring
c5b403bd2f
Make the class new style again on Python 2.
2020-12-23 09:17:39 -05:00
Itamar Turner-Trauring
2c7dde9978
Merge remote-tracking branch 'origin/master' into 3566.web-tests-python-3-part-2
2020-12-23 09:14:34 -05:00
Itamar Turner-Trauring
55698cc8f2
Merge remote-tracking branch 'origin/master' into 3566.web-tests-python-3-part-2
2020-12-22 13:21:49 -05:00
Itamar Turner-Trauring
1c7956bc1a
Port to Python 3.
2020-12-22 13:19:59 -05:00
Itamar Turner-Trauring
cbf348f21b
Get rid of debug print.
2020-12-22 13:17:46 -05:00
Itamar Turner-Trauring
8881728ca5
Another passing test on Python 3.
2020-12-22 13:17:07 -05:00
Itamar Turner-Trauring
baa2cff29c
Unbreak Python 2.
2020-12-22 13:14:18 -05:00
Itamar Turner-Trauring
013388981c
Fix intermittent failing test on PyPy hopefully.
...
PyPy does not have refcounts, so files were only being closed when GC happened,
which meant their buffered writes never hit disk.
2020-12-22 13:04:53 -05:00
Itamar Turner-Trauring
f9ee4b239f
Merge pull request #934 from tahoe-lafs/3564.eliot-log-testing-python-3
...
Re-enable logging validation on Python 3.
Fixes ticket:3564
2020-12-22 11:43:36 -05:00
Itamar Turner-Trauring
74c08883f5
Another passing test on Python 3.
2020-12-22 11:36:52 -05:00
Itamar Turner-Trauring
0534979e61
Another passing test on Python 3.
2020-12-22 11:03:23 -05:00
Itamar Turner-Trauring
cabfdadc20
Merge branch '3564.eliot-log-testing-python-3' into 3566.web-tests-python-3-part-2
2020-12-22 10:48:32 -05:00
Itamar Turner-Trauring
f30376ade6
Make sure test output can encode bytes correctly too.
2020-12-22 10:47:25 -05:00
Jean-Paul Calderone
ab7c382dec
Merge pull request #939 from LeastAuthority/3567.test_storage_client-eaddrinuse
...
Use a pre-bound listening socket in the test
Fixes: ticket:3567
2020-12-21 13:27:08 -05:00
Itamar Turner-Trauring
b46898f667
Merge branch '3564.eliot-log-testing-python-3' into 3566.web-tests-python-3-part-2
2020-12-21 13:20:50 -05:00
Itamar Turner-Trauring
7fc64fdf45
Also handle bytes when serializing production Eliot log messages on Python 3.
2020-12-21 13:20:14 -05:00
Itamar Turner-Trauring
a8732a3c70
Merge branch '3564.eliot-log-testing-python-3' into 3566.web-tests-python-3-part-2
2020-12-21 13:12:19 -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
Itamar Turner-Trauring
2737229895
Another passing test.
2020-12-21 11:12:52 -05:00
Itamar Turner-Trauring
a2f042845d
Another passing test.
2020-12-21 10:58:09 -05:00
Itamar Turner-Trauring
d8197d9554
Another passing test.
2020-12-21 10:52:31 -05:00
Itamar Turner-Trauring
15c7af8e72
Another passing test.
2020-12-21 10:29:59 -05:00
Itamar Turner-Trauring
98c71e51e1
More progress towards passing tests.
2020-12-21 10:04:27 -05:00
Itamar Turner-Trauring
2ec7d52d09
Some progress towards passing tests on Python 3.
2020-12-18 16:12:32 -05:00
Itamar Turner-Trauring
c71acf93fd
Bytes, alas.
2020-12-18 16:10:23 -05:00
Itamar Turner-Trauring
5315d48355
Merge remote-tracking branch 'origin/master' into 3565.web-tests-python-3-part-1
2020-12-18 15:43:36 -05:00
Itamar Turner-Trauring
f964ae1782
Docstrings.
2020-12-18 15:43:27 -05:00
Itamar Turner-Trauring
50a794a911
More accurate docstring.
2020-12-18 11:34:08 -05:00
Itamar Turner-Trauring
865f3fd7d0
Improve the docstring.
2020-12-18 11:33:24 -05:00
Itamar Turner-Trauring
721b02b262
Use the function I specifically wrote for this!
2020-12-18 11:29:56 -05:00
Itamar Turner-Trauring
8f4a0379ea
Correct examples.
2020-12-18 11:26:10 -05:00
Itamar Turner-Trauring
b24a9f7083
Trying to get test_grid working on Python 3.
2020-12-18 11:21:04 -05:00
Jason R. Coombs
602a06e5cb
Extract Parameters type in scripts.types_.
2020-12-18 11:14:07 -05:00
Jason R. Coombs
189608e113
Remove GENERATED_FILES, unused
2020-12-18 11:07:30 -05:00
Jason R. Coombs
c2d2aba83f
Add reference to ticket.
2020-12-18 11:05:55 -05:00
Jason R. Coombs
0e248cb4ef
Declare signing key as required in introducer client publish.
2020-12-18 10:59:53 -05:00
Jason R. Coombs
090031cbfc
Remove confirm_share_allocation from interface (unused).
2020-12-18 10:55:20 -05:00
Jason R. Coombs
d051791e95
Add reference to ticket.
2020-12-18 10:53:24 -05:00
Jason R. Coombs
ea0c10ef83
Remove set_size, unused
2020-12-18 10:51:56 -05:00
Jason R. Coombs
efd0aef284
Indicate that unichr is Python 2 only.
2020-12-18 10:36:43 -05:00
Jason R. Coombs
51b0b201b4
Expand comment to provide more context.
2020-12-18 10:33:30 -05:00
Jason R. Coombs
99da74fffb
Change comment to clarify that it's the implementation that's incomplete.
2020-12-18 09:58:56 -05:00
Jason R. Coombs
950ca18932
Ignores no longer needed.
2020-12-18 09:23:27 -05:00
Jean-Paul Calderone
8e6c52b61e
pre-assign a listening socket to the main tub to avoid the error
2020-12-17 10:20:22 -05:00
Itamar Turner-Trauring
6e12cce1e4
Port to Python 3.
2020-12-17 09:55:35 -05:00
Itamar Turner-Trauring
3ac64e42f7
Web test_status tests pass on Python 3.
2020-12-17 09:54:04 -05:00
Itamar Turner-Trauring
9b59e7e245
Merge remote-tracking branch 'origin/3552.test_system-python-3' into 3565.web-tests-python-3-part-1
2020-12-17 09:51:52 -05:00
Itamar Turner-Trauring
33392502d3
server IDs/node IDS should be bytes.
2020-12-17 09:50:39 -05:00
Itamar Turner-Trauring
26297c296d
Merge branch 'master' into 3552.test_system-python-3
2020-12-17 09:42:34 -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
bb495b6dc5
unused imports
2020-12-16 21:26:59 -05:00
Jean-Paul Calderone
240d5d1164
Remove react monkey patching by supplying an alternate reactor
...
Let react run and do its thing. This gives us an even nicer way to check the
exit code.
2020-12-16 21:25:50 -05:00
Jean-Paul Calderone
faf8da82dd
Get rid of the sys.exit monkey-patch
...
It's just an exception. Let it get logged and then check after.
2020-12-16 21:20:16 -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
1f229ce9f6
All you have to do to drop it is not save it in the first place
...
Also it would have been dropped as soon as this function returned, anyway.
2020-12-16 20:51:11 -05:00
Jean-Paul Calderone
d5bff458b6
Parameterize argv to allmydata.scripts.runner.run
2020-12-16 20:51:01 -05:00
Jean-Paul Calderone
0ffbc7870e
Okay, let KeyboardInterrupt through
2020-12-16 20:32:04 -05:00
Jean-Paul Calderone
895ba55cf7
Python 3 compatibility
2020-12-16 18:17:14 -05:00
Jean-Paul Calderone
a223f6bb60
More reliably corrupt the signature
2020-12-16 17:31:06 -05:00
Jean-Paul Calderone
4117beba6a
remove unused import
...
yaaay
2020-12-16 16:25:51 -05:00
Jean-Paul Calderone
b200075246
whitespace
2020-12-16 16:23:05 -05:00
Jean-Paul Calderone
98000c2b66
re-implement test_unsigned_announcement without mock
...
and to make assertions about public behavior instead of private implementation
details
2020-12-16 16:20:38 -05:00
Jean-Paul Calderone
b2c9296f6b
Use ObserverList instead of an ad hoc reimplementation
2020-12-16 16:20:00 -05:00
Jean-Paul Calderone
60e401ca69
Make ObserverList synchronous, reentrant, and exception safe
...
with tests
2020-12-16 16:19:33 -05:00
Jean-Paul Calderone
83ebaef86c
Stop mocking safe_load
...
The comment implies this will cause something to break on some platform.
Let's find out.
2020-12-16 15:24:33 -05:00
Jean-Paul Calderone
d19b1cfd68
Merge pull request #933 from LeastAuthority/3533.test_root-no-mock
...
Remove Mock from test_root
Fixes: ticket:3533
2020-12-16 15:15:17 -05:00
Itamar Turner-Trauring
b5f2afe39c
WIP porting test_status.py.
2020-12-16 14:13:46 -05:00
Itamar Turner-Trauring
67c0a4ac84
Port another test module to Python 3.
2020-12-16 13:53:49 -05:00
Jean-Paul Calderone
9f28ccb2a4
Move the last three mock-using tests to test_tor_provider
...
where they can be rewritten later
2020-12-16 12:07:54 -05:00
Jean-Paul Calderone
3d82ca0d25
Use boring old dependency injection to replace mocks in this test
2020-12-16 11:50:35 -05:00
Jean-Paul Calderone
3d564f97d5
Switch away from mock in a few more simple cases in test_connections.py
2020-12-16 11:48:33 -05:00
Jean-Paul Calderone
468895c74d
Duplicate of allmydata.test.test_tor_provider.Provider.test_handler_control_endpoint
2020-12-16 11:28:36 -05:00
Jean-Paul Calderone
7eb9f2ce54
Moved into allmydata.test.test_i2p_provider
...
This follows the local convention of using mock even though I'm trying to get
rid of mock. This is because it keeps the test_i2p_provider suite consistent
which means it won't make removing mock from test_i2p_provider later much
harder and lets me avoid doing that work now.
2020-12-16 11:20:45 -05:00
Itamar Turner-Trauring
61c76902ca
Port to Python 3.
2020-12-16 11:16:34 -05:00
Jean-Paul Calderone
8271dbf3e6
Duplicate of allmydata.test.test_i2p_provider.Provider.test_handler_configdir
2020-12-16 11:15:51 -05:00
Jean-Paul Calderone
81b684b583
Duplicate of allmydata.test.test_i2p_provider.Provider.test_handler_launch_configdir_executable
2020-12-16 11:15:21 -05:00
Itamar Turner-Trauring
f7362dc1ef
Port to Python 3.
2020-12-16 11:14:55 -05:00
Jean-Paul Calderone
6d66be43b9
Duplicate of allmydata.test.test_i2p_provider.Provider.test_handler_launch_configdir
2020-12-16 11:14:46 -05:00
Jean-Paul Calderone
e84860ef15
Duplicate of allmydata.test.test_i2p_provider.Provider.test_handler_launch
2020-12-16 11:13:52 -05:00
Itamar Turner-Trauring
acc36c34d0
Tests pass on Python 2 and Python 3.
2020-12-16 11:13:32 -05:00
Jean-Paul Calderone
ececae2ce9
Duplicate of allmydata.test.test_i2p_provider.Provider.test_handler_sam_endpoint
2020-12-16 11:12:36 -05:00
Jean-Paul Calderone
f7c92bf4c9
Duplicate of allmydata.test.test_i2p_provider.Provider.test_handler_default
2020-12-16 11:11:22 -05:00
Jean-Paul Calderone
01b31e0680
Duplicate of allmydata.test.test_tor_provider.CreateOnion.test_launch_executable
2020-12-16 11:06:57 -05:00
Jean-Paul Calderone
61778bc799
Duplicate of allmydata.test.test_tor_provider.CreateOnion.test_launch
2020-12-16 11:05:51 -05:00
Jean-Paul Calderone
71ced4c228
Duplicate of allmydata.test.test_tor_provider.Provider.test_handler_socks_endpoint
2020-12-16 11:03:37 -05:00
Jean-Paul Calderone
ec9851f6d8
Duplicate of allmydata.test.test_i2p_provider.Provider.test_handler_no_i2p
2020-12-16 10:38:13 -05:00
Jean-Paul Calderone
b5d4a2579b
Duplicate of allmydata.test.test_i2p_provider.Provider.test_handler_disabled
2020-12-16 10:37:41 -05:00
Jean-Paul Calderone
17d9988d45
Duplicate of allmydata.test.test_tor_provider.Provider.test_handler_no_tor
2020-12-16 10:34:33 -05:00
Jean-Paul Calderone
d3f8839f1b
Duplicate of allmydata.test.test_tor_provider.Provider.test_handler_disabled
2020-12-16 10:34:07 -05:00
Itamar Turner-Trauring
052b3d9fb1
Re-enable logging validation on Python 3.
2020-12-16 10:06:59 -05:00
Itamar Turner-Trauring
54a11dbb6a
Merge pull request #932 from tahoe-lafs/3560.test_eliotutil-python-3
...
Port eliotutil and tests to Python 3
Fixes ticket:3560
2020-12-16 09:40:19 -05:00
Jean-Paul Calderone
eeebd15c42
Take Mock out of `allmydata.test.test_connections.TCP
`
2020-12-16 09:15:37 -05:00
Jean-Paul Calderone
2b1ea5c604
Remove the client Mock object
...
It wasn't used by anything so that was easy. Clean up the test as long as
we're here.
2020-12-15 18:30:12 -05:00
Jean-Paul Calderone
c4e8262a99
Merge pull request #925 from tahoe-lafs/3532.test_node-no-mock
...
Remove mock from test_node
Fixes: ticket:3532
2020-12-15 14:38:07 -05:00
Jean-Paul Calderone
fee8c55f01
The listenOn is probably the most interesting part
2020-12-15 13:42:20 -05:00
Jean-Paul Calderone
7dbcb4d712
Make set_tub_locations a nicer function
2020-12-15 13:41:01 -05:00
Jean-Paul Calderone
53b782aca4
get the function name right
2020-12-15 13:40:12 -05:00
Jean-Paul Calderone
c2dc2b39da
A better name
2020-12-15 13:34:04 -05:00
Jean-Paul Calderone
be559ab3a5
Turn the XXX into a TODO'd test and a ticket
2020-12-15 13:31:18 -05:00
Jean-Paul Calderone
29f0ae0554
These don't need to be methods. Also docstrings are nice.
2020-12-15 13:30:58 -05:00
Itamar Turner-Trauring
4a587836a5
Port eliotutil and tests to Python 3.
2020-12-15 10:13:46 -05:00
Itamar Turner-Trauring
6a29568888
Fix flakes.
2020-12-15 09:16:50 -05:00
Itamar Turner-Trauring
c7f2b7dd7c
Merge remote-tracking branch 'origin/master' into 3552.test_system-python-3
2020-12-15 09:13:32 -05:00
Jean-Paul Calderone
a97184868d
oops syntax error
...
so what is the good of pre-commit?
2020-12-14 18:40:18 -05:00
Jean-Paul Calderone
5c6e0a2bb4
docstrings
2020-12-14 18:33:28 -05:00
Jean-Paul Calderone
677e62e73e
Return the canned handler
2020-12-14 18:29:50 -05:00
Jean-Paul Calderone
b77f43e360
Simplify handler initialization
2020-12-14 18:27:02 -05:00
Jean-Paul Calderone
49330d1e4a
docstring
2020-12-14 18:25:58 -05:00
Jean-Paul Calderone
4b1c6a2815
Remove these reactor parameters
2020-12-14 17:42:30 -05:00
Jean-Paul Calderone
fcbe56ba0a
docstrings for the Tor and I2P address family implementations
2020-12-14 17:36:35 -05:00
Jean-Paul Calderone
18c18a0e1d
explain the inconsistent naming
2020-12-14 17:33:58 -05:00
Jean-Paul Calderone
b6ea3f47c8
unused imports
2020-12-14 16:58:22 -05:00
Jean-Paul Calderone
01507e4f93
some direct tests for DaemonizeTheRealService
2020-12-14 16:57:20 -05:00
Jean-Paul Calderone
a9bcd6270a
Merge remote-tracking branch 'origin/master' into 3557.GuessedAtParserWarning
2020-12-14 15:41:31 -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
39628cbb4e
Merge pull request #921 from tahoe-lafs/3550.remove-start-stop-restart-daemonize
...
remove start stop restart daemonize
Fixes: ticket:3550
Fixes: ticket:3523
Fixes: ticket:3524
2020-12-14 14:58:35 -05:00
Itamar Turner-Trauring
c7759cb82c
Try to fix test_web.py on Python 2.
2020-12-14 13:53:12 -05:00
Itamar Turner-Trauring
37d46cfb3d
Merge remote-tracking branch 'origin/master' into 3552.test_system-python-3
2020-12-14 13:32:43 -05:00
Itamar Turner-Trauring
28f46e9b06
test_system.py passes on both Python 2 and Python 3.
2020-12-14 11:07:37 -05:00
Jean-Paul Calderone
bdb7c50fac
You can just use multiple terminals
...
If you know how to daemonize stuff you can figure it out yourself I guess.
2020-12-14 09:38:16 -05:00
Jean-Paul Calderone
a0931f4999
You can pass the introducer on the command line
2020-12-14 09:38:06 -05:00
Jean-Paul Calderone
0a1c2386b9
client must be running already
2020-12-14 09:37:04 -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
Sajith Sasidharan
b787de0acc
Fix BeautifulSoup's GuessedAtParserWarning
2020-12-13 06:49:49 -05:00
Jean-Paul Calderone
34cd1efaa4
For the sake of clarity, stop talking about daemons here
2020-12-12 18:34:49 -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
51e50671e5
Get rid of the "tahoe start" and "tahoe stop" and fix the obvious problems
...
This just requires the client node to already be running now.
2020-12-11 15:32:24 -05:00
Itamar Turner-Trauring
98330d7186
Merge remote-tracking branch 'origin/master' into 3552.test_system-python-3
2020-12-11 13:24:04 -05:00
Itamar Turner-Trauring
9bf221dea4
Match Foolscap better.
2020-12-11 13:10:56 -05:00
Itamar Turner-Trauring
42f2f2318c
Fix some Python 3 tests.
2020-12-11 13:05:21 -05:00
Itamar Turner-Trauring
cf6206ca42
Fix test_filesystem_with_cli_in_subprocess on Python 2.
2020-12-11 12:37:23 -05:00
Itamar Turner-Trauring
36f18e0afb
Fix test_filesystem on Python 2.
2020-12-11 12:30:12 -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
efac902e57
Slightly better user-facing privacy error message here
2020-12-11 11:23:02 -05:00
Itamar Turner-Trauring
36e53caaeb
Add test coverage for packing UnknownNode with missing read-only URI.
2020-12-11 11:14:50 -05:00
Itamar Turner-Trauring
66cd68d325
Merge remote-tracking branch 'origin/master' into 3553.nodemaker-python-3
2020-12-11 10:48:50 -05:00
Itamar Turner-Trauring
b1f478c5df
Note test_system.py is only partially ported.
2020-12-11 10:48:34 -05:00
Jean-Paul Calderone
9259264d27
Get rid of the remaining mocks
2020-12-11 10:38:15 -05:00
Jean-Paul Calderone
0cdf66a991
Make the Tor/I2P "provider" interfaces explicit
2020-12-11 10:35:22 -05:00
Jean-Paul Calderone
733223c8d7
Refactor create_main_tub to make testing tub location logic easier
...
Then take advantage of this and simplify the tub location logic test
2020-12-11 10:34:30 -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
e8e928aced
Remove the web view onto the removed metrics
2020-12-10 18:24:00 -05:00
Itamar Turner-Trauring
a2e2ee596b
Some progress(?) towards passing tests.
2020-12-10 11:47:02 -05:00
Itamar Turner-Trauring
ba9e0db66e
Skip test_filesystem on Python 3 for now.
2020-12-10 11:17:46 -05:00
Itamar Turner-Trauring
5c1d904f57
Skip test on Python 3 for now, since that is not going to work in short term.
2020-12-10 11:00:15 -05:00
Itamar Turner-Trauring
c356ced49b
Another passing test on Python 3.
2020-12-10 10:56:41 -05:00
Itamar Turner-Trauring
36bf9224e6
More progress on Python 3, unbreak Python 2.
2020-12-10 10:52:07 -05:00
Itamar Turner-Trauring
fb621f4388
Port idlib to Python 3, making its behavior consistent across Python 2 and 3.
2020-12-10 10:11:43 -05:00
Itamar Turner-Trauring
e9b0a526bd
Merge branch 'master' into 3551.more-immutable-python-3
2020-12-10 10:06:53 -05:00
Jean-Paul Calderone
4ac95a1ede
Merge remote-tracking branch 'origin/master' into 3522.test_alias-no-mock
2020-12-10 07:19:43 -05:00
Jean-Paul Calderone
6f80862ec5
Slightly clean up formatting implementation
2020-12-10 07:19:27 -05:00
Jean-Paul Calderone
066e98874b
Point at do_cli_unicode here too
2020-12-10 07:17:24 -05:00
Jean-Paul Calderone
d0c22a529e
json.dumps output should always be ascii
2020-12-10 07:16:00 -05:00
Jean-Paul Calderone
2f53225765
better helper name
2020-12-10 07:06:01 -05:00
Jean-Paul Calderone
4bb28cadcb
motivate its existence a bit more
2020-12-10 07:04:28 -05:00
Jean-Paul Calderone
c39f7721af
run_cli_bytes docstring
2020-12-10 07:03:24 -05:00
Jean-Paul Calderone
d29d9c57e7
These values aren't used for the exercised codepaths
...
So just use None instead. Kind of a weak fix but a fix nonetheless.
2020-12-10 06:59:41 -05:00
Jean-Paul Calderone
89441d9169
Refactor create_connection_handlers so we don't need Tor and I2P mocks
2020-12-09 16:18:48 -05:00
Jean-Paul Calderone
e2963856d3
Dependency Injection for _tub_portlocation
2020-12-09 15:48:40 -05:00
Itamar Turner-Trauring
995f271d38
Merge branch '3553.nodemaker-python-3' into 3552.test_system-python-3
2020-12-09 15:01:01 -05:00
Itamar Turner-Trauring
96fd1861d2
Port to Python 3.
2020-12-09 14:58:54 -05:00
Itamar Turner-Trauring
bb06067c33
Port to Python 3.
2020-12-09 14:48:33 -05:00
Itamar Turner-Trauring
5cba8a4380
Port to Python 3.
2020-12-09 14:45:07 -05:00
Itamar Turner-Trauring
b1800c457d
All tests pass on Python 3.
2020-12-09 14:33:56 -05:00
Itamar Turner-Trauring
ff64432282
More passing on Python 3..
2020-12-09 14:14:07 -05:00
Itamar Turner-Trauring
59968d099c
More passing tests.
2020-12-09 14:05:03 -05:00
Itamar Turner-Trauring
016240d6e6
More passing tests on Python 3.
2020-12-09 13:50:15 -05:00
Itamar Turner-Trauring
6b8fd2f29d
Some progress towards passing tests on Python 3.
2020-12-09 13:45:31 -05:00
Itamar Turner-Trauring
48bef7db99
Some straightforward changes to support Python 3.
2020-12-09 13:42:35 -05:00
Itamar Turner-Trauring
63ff67a7be
Ported to Python 3.
2020-12-09 13:33:01 -05:00
Itamar Turner-Trauring
eb55c10eea
Tests pass on Python 3.
2020-12-09 13:28:16 -05:00
Itamar Turner-Trauring
baed5fd734
Port to Python 3.
2020-12-09 13:22:51 -05:00
Itamar Turner-Trauring
5924da93d8
More bytes.
2020-12-09 13:18:45 -05:00
Itamar Turner-Trauring
add26895cf
Another passing test on Python 3.
2020-12-09 13:11:39 -05:00
Itamar Turner-Trauring
b61b0a9001
Some more progress towards Python 3.
2020-12-09 13:02:29 -05:00
Itamar Turner-Trauring
1ab1aaea47
Some more progress towards Python 3.
2020-12-09 12:59:37 -05:00
Itamar Turner-Trauring
1adb40cf3b
Some more progress towards Python 3.
2020-12-09 12:52:53 -05:00
Itamar Turner-Trauring
b11161a7aa
Start porting to Python 3.
2020-12-09 12:47:07 -05:00
Jean-Paul Calderone
74c3990456
This extra stop complexity is no longer needed
2020-12-09 10:57:02 -05:00
Jean-Paul Calderone
5b0190b9a1
Remove some more test code related to start/restart/stop
2020-12-09 10:51:48 -05:00
Jean-Paul Calderone
d346c90c6e
This is gonna take some work
2020-12-09 10:51:48 -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
9412cf70c2
remove unused helper
2020-12-09 10:36:17 -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
3fd1b336b4
Don't test stats gatherer support in the runner
2020-12-09 10:32:49 -05:00
Jean-Paul Calderone
d916c725e6
Don't set up or query a stats gatherer in test_system
2020-12-09 10:32:26 -05:00
Itamar Turner-Trauring
67549aaed5
Merge remote-tracking branch 'origin/master' into 3456.introducer-python3
2020-12-09 09:21:02 -05:00
Itamar Turner-Trauring
0cf9be18d7
Merge remote-tracking branch 'origin/master' into 3544.furls-not-bytes-maybe
2020-12-08 16:08:12 -05:00
Itamar Turner-Trauring
754b88a0b9
Fix failing test.
2020-12-08 13:47:53 -05:00
Jean-Paul Calderone
69d3dad646
Get rid of remote_host / get_remote_host
...
Nothing uses it and if we don't provide it we don't need getLocationHints
2020-12-08 10:37:31 -05:00
Jean-Paul Calderone
eddf7fd8f9
Remove the pre-generated key/certificate
2020-12-08 10:34:25 -05:00
Itamar Turner-Trauring
dcd865897e
Merge branch 'master' into 3544.furls-not-bytes-maybe
2020-12-08 10:30:00 -05:00
Itamar Turner-Trauring
0b7c0bf451
Document furl type.
2020-12-08 10:28:47 -05:00
Jean-Paul Calderone
d83e4790c3
Let subscribed_to get initialized right
2020-12-07 13:14:00 -05:00
Jean-Paul Calderone
d415bda72a
Merge branch 'master' into 3521.test_storage_client-no-mock
2020-12-07 12:03:50 -05:00
Jean-Paul Calderone
61ee26fb00
ticket reference
2020-12-07 10:46:20 -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
72744c9464
more docstrings and properly support (and use) encoding=None throughout
2020-12-07 09:47:48 -05:00
Jean-Paul Calderone
05d271c7c8
a little more exposition
2020-12-07 09:26:58 -05:00
Jean-Paul Calderone
7b3a5aceb8
These tests can't reach any of the codepaths where quote_output matters
...
So simplify
2020-12-07 09:21:56 -05:00
Jean-Paul Calderone
f4432d3f23
Respect the provided encoding
...
UTF-8 is great but if we're claiming the encoding is something else everywhere
else we can't just make it UTF-8 here.
2020-12-07 09:12:38 -05:00
Jean-Paul Calderone
56f141e170
decode instead of encoding in maybe_decode
...
legacy from when the bytes/unicode tower was upsidedown compared to how it is now
2020-12-07 09:12:04 -05:00
Jean-Paul Calderone
72a5b571ca
Only test the cases we can make work everywhere
...
These tests previously (in this branch) tried to exercise more ``show_output``
logic than they can actually reach due to the requirement that argv be
interpretable. Shrink the test suite down to just what we can squeeze through
argv and deal with fully testing ``show_output`` elsewhere.
2020-12-07 09:10:59 -05:00
Jean-Paul Calderone
93b30d0dde
The implementation can't reliably see the encoding we're faking without this
2020-12-07 09:06:21 -05:00
Jean-Paul Calderone
8ca98bb8ca
using run_cli_unicode, better expect unicode result
2020-12-07 09:06:00 -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
2955d22f72
note a problem with test_system
2020-12-06 18:38:51 -05:00
Jean-Paul Calderone
b464fa6483
docstring
2020-12-06 18:28:11 -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
c4b58fe00b
unused import
2020-12-06 11:04:19 -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
8278fa9c62
Name the pem so it gets installed
...
Also use the new_tub helper that reads the pem so we don't have to generate a
new cert in this test
2020-12-06 10:39:25 -05:00
Jean-Paul Calderone
386f30fa79
Remove Mock from test_threshold_reached
2020-12-06 10:30:08 -05:00
Jean-Paul Calderone
24709fa758
Merge branch 'master' into 3547.furl-py36-regression
2020-12-05 13:29:27 -05:00
Jean-Paul Calderone
d7f005badd
Merge branch 'master' into 3520.test_client-no-mock
2020-12-05 12:55:25 -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
bdc75c3361
Merge remote-tracking branch 'origin/master' into 3539.nodemaker-weakrefdict
2020-12-05 07:23:54 -05:00
Jason R. Coombs
3eb975748a
Ignore type checks in allmydata.
2020-12-04 19:56:51 -05:00
Itamar Turner-Trauring
c1a699dede
Flake.
2020-12-04 11:39:57 -05:00
Itamar Turner-Trauring
22dcd726e6
Port to Python 3.
2020-12-04 11:36:17 -05:00
Itamar Turner-Trauring
15735e70bc
Port to Python 3.
2020-12-04 11:35:59 -05:00
Jean-Paul Calderone
15d0207f89
Merge pull request #897 from tahoe-lafs/3504.private-introducer-furl
...
Deprecate tahoe.cfg [client]introducer.furl
Fixes: ticket:3504
2020-12-04 09:44:19 -05:00
Itamar Turner-Trauring
0386924d00
Fix flake.
2020-12-02 15:26:25 -05:00
Itamar Turner-Trauring
b716456019
Merge remote-tracking branch 'origin/master' into 3544.furls-not-bytes-maybe
2020-12-02 15:24:31 -05:00
Itamar Turner-Trauring
71d287c1c1
Merge pull request #905 from tahoe-lafs/3514.test-introducer-python-3
...
Port test_introducer.py to Python 3
Fixes ticket:3514
2020-12-02 15:24:17 -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
Itamar Turner-Trauring
587222033d
Fix bad merge.
2020-12-01 11:58:56 -05:00
Itamar Turner-Trauring
d5ba1be5bc
Passing tests.
2020-11-30 17:56:50 -05:00
Itamar Turner-Trauring
17ec22ab84
Even more debytification of furls.
2020-11-30 17:55:37 -05:00
Itamar Turner-Trauring
22c328d6d3
More debytification.
2020-11-30 17:41:15 -05:00
Itamar Turner-Trauring
67694889da
Some progress towards ripping out furls-as-bytes.
2020-11-30 17:20:39 -05:00
Itamar Turner-Trauring
27102c0d89
Merge remote-tracking branch 'origin/master' into 3514.test-introducer-python-3
2020-11-30 16:47:21 -05:00
Itamar Turner-Trauring
8615c1ade8
Try to fix sorting on Python 3.
2020-11-30 16:45:14 -05:00
Itamar Turner-Trauring
eaca639b6f
Undo changes that should probably be in a different branch.
2020-11-30 16:28:26 -05:00
Itamar Turner-Trauring
413cf75d54
Uses clearer issuperset().
2020-11-30 16:25:24 -05:00
Itamar Turner-Trauring
9f7ae56a82
Make the explanation less nonsensical.
2020-11-30 16:24:27 -05:00
Jean-Paul Calderone
17ed8afd2f
Make the new test data files installable
...
There's an existing rule that matches *.txt
2020-11-30 13:37:21 -05:00
Jean-Paul Calderone
ef2f7e6136
unused import
2020-11-30 13:27:46 -05:00
Jean-Paul Calderone
2ac4af7fb4
Add some direct tests for NodeMaker.create_from_uri
2020-11-30 13:26:32 -05:00
Jean-Paul Calderone
4ca45aaa93
Catch basedir type errors earlier
2020-11-30 13:23:18 -05:00
Jean-Paul Calderone
01ab8d3ee9
Don't look before you leap
2020-11-30 08:56:45 -05:00
Jason R. Coombs
d2d3f1f4a9
Suppress type errors in test_checker
2020-11-29 16:33:25 -05:00
Jason R. Coombs
86f88a4aa5
Satisfy type checks in test_dirnode
2020-11-29 16:32:19 -05:00
Jason R. Coombs
54e4549836
Satisfy type check in test_helper.FakeClient.
2020-11-29 16:30:13 -05:00
Jason R. Coombs
fc19d1baf4
Suppress errors in test_sftp
2020-11-29 16:26:36 -05:00
Jason R. Coombs
b0803a2ac0
Suppress errors in test_web due to ambiguous MRO
2020-11-29 16:24:20 -05:00
Jason R. Coombs
13cd780231
Prefer sys.maxsize to sys.maxint.
2020-11-29 16:22:12 -05:00
Jason R. Coombs
7507e84a18
Suppress errors in no_network
2020-11-29 16:19:24 -05:00
Jason R. Coombs
53ff740f0e
Suppress type check error on NativeStorageServerWithVersion
2020-11-29 16:14:10 -05:00
Jason R. Coombs
ffa19d1c07
Suppress typing errors in common Nodes
2020-11-29 16:08:22 -05:00
Jason R. Coombs
2514196b27
Suppress typing error in DummyStorageClient
2020-11-29 16:06:46 -05:00
Jason R. Coombs
3653d7ed16
Ignore type checks on Referenceable objects. Ref warner/foolscap#78 .
2020-11-29 16:05:09 -05:00
Jason R. Coombs
1768377aec
Ignore error in DummyStorage
2020-11-29 16:04:56 -05:00
Jason R. Coombs
b1b3a23415
Fix type errors with CPUUsageMonitor subclasses with float POLL_INTERVAL.
2020-11-29 15:56:39 -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
41c341a3cc
Prefer type(None) for better compatibility.
2020-11-29 15:24:20 -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
6ea9003436
Declare MultiFormatResource.formatDefault as optional string for subclass overrides.
2020-11-29 15:19:11 -05:00
Jason R. Coombs
8b991d3516
Update DirectoryNode.set_uri to match interface spec.
2020-11-29 15:16:45 -05:00
Jason R. Coombs
67f0be8431
Prefer type(None) for better compatibility.
2020-11-29 15:13:19 -05:00
Jason R. Coombs
646297ddc3
Add stub for LocalCiphertextReader.set_upload_status
2020-11-29 15:08:46 -05:00
Jason R. Coombs
32b77c4239
Ignore interface violation in MutableFileVersion.download_to_data
2020-11-29 15:06:12 -05:00
Jason R. Coombs
a75454a04f
Add stub for MutableFileVersion.get_servermap
2020-11-29 15:02:13 -05:00
Jason R. Coombs
103bec6a15
On MutableFileNode, accept optional 'progress' parameter as declared by the interface.
2020-11-29 14:58:28 -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
c3a22966e8
Add stubs for methods demanded by IPeerSelector
2020-11-29 14:52:45 -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
Jason R. Coombs
e9ddcf5911
Implement set_size as required by the interface
2020-11-29 14:26:20 -05:00
Jason R. Coombs
7e757d2ec4
As _ImmutableFileNodeBase doesn't implement the interface, move the implementer declaration to LiteralFileNode
2020-11-29 14:23:59 -05:00
Jason R. Coombs
cc91b7c9ed
Declare DirectoryURIVerifier type to allow subclass to override.
2020-11-29 14:15:24 -05:00
Jason R. Coombs
dca0840c35
Add stubs for methods demanded by the interface
2020-11-29 14:08:33 -05:00
Jason R. Coombs
6ba7533168
Ignore failure on StorageServer.slot_testv_and_readv_and_writev, the implementation of which deviates from the interface spec substantially.
2020-11-29 14:04:59 -05:00
Jason R. Coombs
bc3508ce60
Ignore type checks on cmp usage (awaiting Python 3 porting)
2020-11-29 14:01:05 -05:00
Jason R. Coombs
50f81aa25d
Update two methods of introducer.client.IntroducerClient to match the interface definition.
2020-11-29 13:57:46 -05:00
Jason R. Coombs
4998c4693f
Ignore type checks on Referenceable objects. Ref warner/foolscap#78 .
2020-11-29 13:57:46 -05:00
Jason R. Coombs
adf0688918
Add a non-implementation of encode_proposal to satisfy interface.
2020-11-29 13:57:46 -05:00
Jason R. Coombs
5f40c562eb
Remove self arguments to IProgress, which mypy caught as improper.
2020-11-29 13:57:46 -05:00
Jason R. Coombs
dec6f6d647
Remove Interface subclass, as IURI is an interface. Fixes mypy error.
2020-11-29 13:57:46 -05:00
Jason R. Coombs
df31d7db5b
Suppress type error in Node.GENERATED_FILES, apparently unused.
2020-11-29 13:57:46 -05:00
Jason R. Coombs
25cce8b77e
Suppress typing errors in fileutil, crawler, fixups.
2020-11-29 13:57:46 -05:00
Jason R. Coombs
8da82e9ed5
Add workaround for Shoobx/mypy-zope#26 .
2020-11-29 13:57:46 -05:00
Jason R. Coombs
d1ea36781a
Add type declarations to check_load.
2020-11-29 13:57:46 -05:00
Jason R. Coombs
ce3b775944
Suppress typing error in test_python3
2020-11-29 13:57:46 -05:00
Jason R. Coombs
f2ffa78198
Define type of PollMixin._poll_should_ignore_these_errors
2020-11-29 13:57:46 -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
a978fcf433
Replace asserts with explicit checks and TypeError
2020-11-26 19:35:39 -05:00
Jean-Paul Calderone
c82501e0dc
Merge remote-tracking branch 'origin/master' into 3511.config-set-config
2020-11-26 11:01:18 -05:00
Jean-Paul Calderone
df53fdcf9b
add missing docs to new set_config method
2020-11-26 10:53:42 -05:00
Jean-Paul Calderone
d81fe54faf
typo fix
2020-11-26 10:50:36 -05:00
Jean-Paul Calderone
152c04e48c
Merge pull request #902 from tahoe-lafs/3512.localized-tempdir
...
Per-node web temp directory
Fixes: ticket:3512
2020-11-25 18:18:36 -05:00
Jean-Paul Calderone
520f4d15bf
Rename _get_request
to more accurate _create_request
2020-11-25 16:09:53 -05:00
Jean-Paul Calderone
8e6773c690
Merge pull request #907 from tahoe-lafs/3518.pypy-versions-None
...
Get rid of version_checks
Fixes: ticket:3518
2020-11-25 10:54:46 -05:00
Jean-Paul Calderone
bd9a91abf6
Merge pull request #901 from tahoe-lafs/3513.raiseException
...
Fix exception re-raising in no_network.py
Fixes: ticket:3513
2020-11-25 10:41:15 -05:00
Jean-Paul Calderone
a78c8056fb
Get rid of the first mock use in test_threshold_reached
2020-11-24 14:51:51 -05:00
Jean-Paul Calderone
9f4be1fbf0
Speed the tests back up
2020-11-24 14:23:20 -05:00
Jean-Paul Calderone
34b5068f5c
Just use a real Tub for this case
2020-11-24 14:18:04 -05:00
Jean-Paul Calderone
c3aff634a0
Add missing attribute docs
2020-11-24 14:17:52 -05:00
Jean-Paul Calderone
1a5efa5ec9
Just let the test use the real SFTPServer service
2020-11-24 14:05:00 -05:00
Jean-Paul Calderone
3321058a33
flake
2020-11-23 15:14:59 -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
224085c139
Clean up version checks and fix the PyPy regression
2020-11-23 14:14:52 -05:00
Jean-Paul Calderone
55193f725a
Avoid passing None to ensure_str
2020-11-23 10:28:04 -05:00
Itamar Turner-Trauring
661bc967d2
Port to Python 3.
2020-11-20 14:06:16 -05:00
Itamar Turner-Trauring
5b87fb4afe
All tests pass on Python 2 and 3.
2020-11-20 14:01:48 -05:00
Itamar Turner-Trauring
53a6882f21
Some progress on Python 3 passing tests, some going backwards.
2020-11-20 12:02:22 -05:00
Itamar Turner-Trauring
0e198e7361
Stop hiding Twisted logs!
2020-11-20 11:16:32 -05:00
Itamar Turner-Trauring
bcc509b7a7
Some progress towards passing tests.
2020-11-19 14:23:41 -05:00
Itamar Turner-Trauring
38275cbe6f
Merge remote-tracking branch 'origin/master' into 3502.mutable-python-3-part-2
2020-11-19 13:43:10 -05:00
Itamar Turner-Trauring
2ae03043b7
Another passing Python 3 test.
2020-11-19 12:04:02 -05:00
Itamar Turner-Trauring
ad893c9aa1
More passing Python 3 tests.
2020-11-19 11:47:57 -05:00
Itamar Turner-Trauring
8029a1befc
First passing test on Python 3.
2020-11-19 11:45:32 -05:00
Itamar Turner-Trauring
40d372a2f6
Some progress towards passing tests on Python 3.
2020-11-19 11:11:48 -05:00
Jean-Paul Calderone
1689804877
Try doing some other thing in Windows
2020-11-19 10:15:36 -05:00
Jean-Paul Calderone
4ce2572ce9
Does Windows behave if we restrict ourselves to *just* S_IREAD?
...
From CPython docs:
> Note Although Windows supports chmod(), you can only set the file’s
> read-only flag with it (via the stat.S_IWRITE and stat.S_IREAD constants or
> a corresponding integer value). All other bits are ignored.
2020-11-19 09:39:34 -05:00
Jean-Paul Calderone
d727ae4a86
Try to improve the failure mode
2020-11-19 08:50:44 -05:00
Jean-Paul Calderone
594f8019d1
Better support Windows here
2020-11-18 18:29:36 -05:00
Jean-Paul Calderone
f240cb183f
flake cleanup
2020-11-18 18:13:01 -05:00
Jean-Paul Calderone
92691c1b32
Be sure the temporary directory exists
2020-11-18 16:53:38 -05:00
Jean-Paul Calderone
5b0d20c453
Everything should be new-style
2020-11-18 16:53:28 -05:00
Jean-Paul Calderone
799e5a2a60
tweak comment about our test case
2020-11-18 15:52:04 -05:00
Jean-Paul Calderone
6d137ac257
Get rid of the tempfile.tempdir hackery
2020-11-18 15:51:08 -05:00
Jean-Paul Calderone
46955202e2
Hook into Twisted Web to control where request bodies are written
2020-11-18 15:47:06 -05:00
Jean-Paul Calderone
875f4d3414
Better setup error re-raising
2020-11-18 14:48:40 -05:00
Jean-Paul Calderone
862d32a90d
Add _Config.set_config
for presistently changing config values
2020-11-18 13:18:21 -05:00
Jean-Paul Calderone
f21e3189b5
Remove some repetition between read_config and config_from_string
2020-11-18 13:17:16 -05:00
Jean-Paul Calderone
53aa434d77
Add a helper to make a deep copy of a ConfigParser
...
This will help avoid unintentional side-effects
2020-11-18 13:01:08 -05:00
Jean-Paul Calderone
84647e25b7
Refine the ConfigParser generator
...
Limit the characters used in the section and item name strategies.
ConfigParser doesn't allow all characters in all places.
2020-11-18 12:59:23 -05:00
Jean-Paul Calderone
021615bdff
Some further test_configutil improvements
2020-11-18 12:44:52 -05:00
Jean-Paul Calderone
34714d5f6b
Add everything and nothing config validation helpers
2020-11-18 12:42:31 -05:00
Jean-Paul Calderone
e60c643b5f
Make configutil.write_config atomic and also make it take a FilePath
2020-11-18 10:57:38 -05:00
Itamar Turner-Trauring
feb85f4c4a
Always use native strings as keys.
2020-11-17 13:15:57 -05:00
Itamar Turner-Trauring
bb7ed3afc9
Fix the bug.
2020-11-17 11:25:24 -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
60e0056ad8
don't guide folks to the deprecated config item
2020-11-16 15:02:18 -05:00
Jean-Paul Calderone
0258bb7295
note it's deprecated
2020-11-16 15:02:13 -05:00
Jean-Paul Calderone
c9f7ce8db5
write introducers.yaml instead of [client]introducer.furl
2020-11-16 15:01:52 -05:00
Jean-Paul Calderone
302b5cb01f
look for the introducer furl via a more structured interface
2020-11-16 15:01:34 -05:00
Jean-Paul Calderone
0fd354396f
note this is for deprecated functionality
2020-11-16 15:01:21 -05:00
Jean-Paul Calderone
69b8262f6b
use a different .furl item since introducer.furl will go away
2020-11-16 15:01:05 -05:00
Jean-Paul Calderone
1946ee5023
note this is for deprecated functionality
2020-11-16 15:00:49 -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
Jean-Paul Calderone
d27c25a26f
make sure we put text into yaml
2020-11-14 18:17:34 -05:00
Jean-Paul Calderone
3ac2e9365f
yea okay that one fails
2020-11-14 16:57:45 -05:00
Jean-Paul Calderone
dbb8050a8c
really suffering from not having a local dev env here
2020-11-14 16:51:36 -05:00
Jean-Paul Calderone
c529d271ee
"unicode" is spelled "str" now
2020-11-14 16:46:54 -05:00
Jean-Paul Calderone
06fe3869ef
is pyyaml screwing it up?
2020-11-14 16:36:51 -05:00
Jean-Paul Calderone
7b2d76c7ec
Another effort to make this simultaneously Py2/Py3 friendly
2020-11-14 16:12:07 -05:00
Jean-Paul Calderone
22973e6951
Attempt to make Python 3 happier
2020-11-14 12:36:22 -05:00
Jean-Paul Calderone
18e327417c
Get [client]introducer.furl out of test_system
2020-11-14 11:44:28 -05:00
Jean-Paul Calderone
0f4e34c41d
Take [client]introducer.furl out of the UseNode fixture
2020-11-14 11:44:28 -05:00
Jean-Paul Calderone
b6bebc514a
Remove [client]introducer.furl from test_node
2020-11-14 11:44:28 -05:00
Jean-Paul Calderone
b181b577e8
Remove [client]introducer.furl from test_multi_introducers (mostly)
...
Leave in this one test to demonstrate the deprecated functionality still
works, until we delete it entirely.
2020-11-14 11:44:28 -05:00
Jean-Paul Calderone
fabcc079c5
we're not testing the yaml library
2020-11-14 11:44:28 -05:00
Jean-Paul Calderone
0664416f65
Remove [client]introducer.furl from test_introducer
2020-11-14 11:44:26 -05:00
Jean-Paul Calderone
b202f81fd1
move config helper to shared location
2020-11-14 10:23:07 -05:00
Jean-Paul Calderone
25666ee49c
Get rid of [client]introducer.furl from test_client
2020-11-14 10:02:19 -05:00
Jean-Paul Calderone
e0f69dcfcf
Get the path manipulation into _Config too
2020-11-14 09:26:07 -05:00
Jean-Paul Calderone
bef5ccd0ca
Move the introducer config reading code into _Config
2020-11-14 09:12:14 -05:00
Itamar Turner-Trauring
f60c703dfd
Ported to Python 3.
2020-11-12 11:24:37 -05:00
Itamar Turner-Trauring
99f54223ab
Ported to Python 3.
2020-11-12 11:17:17 -05:00
Itamar Turner-Trauring
679319baf4
Ported to Python 3.
2020-11-12 11:02:51 -05:00
Itamar Turner-Trauring
180c6d7536
Port to Python 3.
2020-11-12 11:00:54 -05:00
Itamar Turner-Trauring
9e2a79ee23
Ported to Python 3.
2020-11-11 14:45:20 -05:00
Itamar Turner-Trauring
d0d7a82734
Port to Python 3.
2020-11-11 14:25:58 -05:00
Itamar Turner-Trauring
d238242d73
Port to Python 3.
2020-11-11 14:09:49 -05:00
Itamar Turner-Trauring
b4803fbc3b
Port to Python 3.
2020-11-11 14:05:22 -05:00
Itamar Turner-Trauring
2ae031f54c
Merge remote-tracking branch 'origin/master' into 3500.mutable-tests-python-3
2020-11-11 11:41:45 -05:00
Itamar Turner-Trauring
1aeb46aadc
Restored sorted.
2020-11-11 10:52:57 -05:00
Itamar Turner-Trauring
7c9b8542c1
Fix flake.
2020-11-09 15:12:38 -05:00
Itamar Turner-Trauring
874111be81
Merge remote-tracking branch 'origin/3496.mutable-tests-python-3-part-3' into 3500.mutable-tests-python-3
2020-11-09 15:09:33 -05:00
Itamar Turner-Trauring
da636984fe
Merge remote-tracking branch 'origin/master' into 3500.mutable-tests-python-3
2020-11-09 15:09:16 -05:00
Itamar Turner-Trauring
fcc491bf3b
Port to Python 3.
2020-11-09 15:08:56 -05:00
Itamar Turner-Trauring
d8c1b2fba7
Port to Python 3.
2020-11-09 15:02:33 -05:00
Itamar Turner-Trauring
6b61c06882
All tests pass on Python 3.
2020-11-09 15:00:55 -05:00
Itamar Turner-Trauring
e41e660917
Merge branch 'master' into 3496.mutable-tests-python-3-part-3
2020-11-09 14:37:46 -05:00
Itamar Turner-Trauring
c768e0f670
Merge pull request #888 from tahoe-lafs/3475.mutable-tests-part-2-python-3
...
Port mutable tests to Python 3, part 2 of N
Fixes ticket:3475
2020-11-09 14:36:28 -05:00
Itamar Turner-Trauring
d31667d58c
Ported to Python 3.
2020-11-09 14:15:40 -05:00
Itamar Turner-Trauring
2b9e269d3a
Tests pass on Python 3.
2020-11-09 14:13:14 -05:00
Itamar Turner-Trauring
da6dfcd86d
Ported to Python 3.
2020-11-09 14:00:11 -05:00
Itamar Turner-Trauring
b2e72ef562
Port to Python 3.
2020-11-09 13:55:28 -05:00
Itamar Turner-Trauring
3d5d46fe7c
Port to Python 3.
2020-11-09 13:48:22 -05:00
Itamar Turner-Trauring
0e27e7eba1
Merge branch '3496.mutable-tests-python-3-part-3' into 3500.mutable-tests-python-3
2020-11-09 13:46:19 -05:00
Itamar Turner-Trauring
f5f0ce2477
Re-enable sorting.
2020-11-09 13:41:03 -05:00
Chad Whitacre
fe07078859
Turn web service back on in test for Python 3
2020-11-06 19:44:08 -05:00
Itamar Turner-Trauring
9dd0faf528
Ported to Python 3.
2020-11-06 11:41:34 -05:00
Itamar Turner-Trauring
55ec994450
Tests pass on Python 3.
2020-11-06 11:40:34 -05:00
Itamar Turner-Trauring
2e6f8ca10b
Ported to Python 3.
2020-11-06 11:32:14 -05:00
Itamar Turner-Trauring
55623d0175
Ported to Python 3.
2020-11-06 11:27:59 -05:00
Itamar Turner-Trauring
dfdaac7474
Ported to Python 3.
2020-11-06 11:25:48 -05:00
Itamar Turner-Trauring
bcc6d91444
Tests pass on Python 3.
2020-11-06 11:24:07 -05:00
Itamar Turner-Trauring
6017b11910
Merge branch '3475.mutable-tests-part-2-python-3' into 3496.mutable-tests-python-3-part-3
2020-11-06 11:20:54 -05:00
Itamar Turner-Trauring
eab228f22a
Merge pull request #887 from tahoe-lafs/3465.storage_client-python-3-take-2
...
Port storage_client to Python 3
Fixes ticket:3465
2020-11-06 11:18:31 -05:00
Itamar Turner-Trauring
84a33625bd
Port to Python 3.
2020-11-06 10:21:33 -05:00
Itamar Turner-Trauring
31ee2e18f3
Tests pass on Python 3.
2020-11-06 10:20:18 -05:00
Itamar Turner-Trauring
836d41a92d
Ported to Python 3.
2020-11-06 10:12:56 -05:00
Itamar Turner-Trauring
e4734468e5
Ported to Python 3.
2020-11-06 10:11:09 -05:00
Itamar Turner-Trauring
95df57382f
Tests pass on Python 3.
2020-11-06 10:09:11 -05:00
Itamar Turner-Trauring
e17be38d69
Start porting test infrastructure to Python 3 compatibility.
2020-11-06 10:04:46 -05:00
Itamar Turner-Trauring
cd01d4dafa
Test for Python 2 BytesKeyDict and UnicodeKeyDict behavior.
2020-11-05 10:15:38 -05:00
Itamar Turner-Trauring
a49ef086b6
No need for explicit unicode.
2020-11-05 10:09:52 -05:00
Itamar Turner-Trauring
f57ba3c927
Can't send unicode over foolscap.
2020-11-04 14:13:08 -05:00
Itamar Turner-Trauring
813594bbac
Go back to the way it was.
2020-11-04 13:45:41 -05:00
Itamar Turner-Trauring
2c8a91fb6e
Merge pull request #883 from tahoe-lafs/3493.node-to-python-3
...
Port allmydata.node to python 3
Fixes ticket:3493
2020-11-04 13:44:21 -05:00
Itamar Turner-Trauring
0a6321cc9a
Tests and additional check for typed key dicts.
2020-11-04 13:36:08 -05:00
Itamar Turner-Trauring
dc818757b6
Port to Python 3.
2020-11-04 13:22:34 -05:00
Itamar Turner-Trauring
2b557287c8
Lint fix.
2020-11-04 13:21:13 -05:00
Itamar Turner-Trauring
d407cb5005
Port to Python 3.
2020-11-04 13:19:16 -05:00
Itamar Turner-Trauring
f34597ac61
All tests pass on Python 3.
2020-11-04 13:09:55 -05:00
Itamar Turner-Trauring
d30014f8f5
The Resource dictionary is keyed by bytes, so storing unicode means you don't
...
get the cached resource!
2020-11-03 11:14:25 -05:00
Itamar Turner-Trauring
f6eb4aef57
Work consistently across Python 2 and 3.
2020-11-03 10:41:13 -05:00
Itamar Turner-Trauring
3edc1cb29e
The dictionary is unicode, not bytes.
2020-11-03 10:41:02 -05:00
Itamar Turner-Trauring
60992174ff
twisted.web expects bytes.
2020-11-03 10:40:53 -05:00
Itamar Turner-Trauring
672c440091
Better error reporting.
2020-11-03 10:40:41 -05:00
Itamar Turner-Trauring
e3a0f61dca
More passing tests.
2020-11-03 10:04:24 -05:00
Itamar Turner-Trauring
35c304cd82
Workaround for Eliot flaw.
2020-11-03 10:04:16 -05:00
Jean-Paul Calderone
540c70f835
Merge pull request #871 from exarkun/2928.remote-allocate_tcp_port-test_node.py
...
Remove `allocate_tcp_port` from test_node.py
Fixes: ticket:2928
2020-10-31 19:24:09 -04:00
Jean-Paul Calderone
7ad55e0fba
Merge remote-tracking branch 'origin/master' into 2928.remote-allocate_tcp_port-test_node.py
2020-10-31 11:42:01 -04:00
Jean-Paul Calderone
651c42ac0f
remove unused import
2020-10-31 11:41:20 -04:00
Jean-Paul Calderone
4d469d7b64
The test is faster now, leave the max_examples setting alone
2020-10-30 21:05:46 -04:00
Itamar Turner-Trauring
92a4a5afcc
Closer to more passing tests, maybe.
2020-10-30 15:04:00 -04:00
Itamar Turner-Trauring
45a2fcc3f2
Fix for Python 2.
2020-10-30 14:49:25 -04:00
Itamar Turner-Trauring
e79d1adeea
Fix lint.
2020-10-30 14:35:09 -04:00
Itamar Turner-Trauring
d52f6747f6
Some progress towards passing tests.
2020-10-30 14:21:16 -04:00
Itamar Turner-Trauring
6264cf15b1
Fix some failing tests.
2020-10-30 14:08:09 -04:00
Chad Whitacre
266b707d25
Merge pull request #861 from tahoe-lafs/3474.easy-ports
...
Port some easy files to Python 3
2020-10-30 13:33:34 -04:00
Itamar Turner-Trauring
6b4be7aee3
Should be unicode.
2020-10-30 11:23:30 -04:00
Itamar Turner-Trauring
36d1056ad0
Delete dead code, note porting.
2020-10-30 11:21:14 -04:00
Itamar Turner-Trauring
468beb05f6
Port to Python 3.
2020-10-29 14:09:18 -04:00
Itamar Turner-Trauring
dce368016b
Duplicates test coverage in test_connections.
2020-10-29 14:01:05 -04:00
Itamar Turner-Trauring
c3248524f0
Drop support for '\#', never was used by anything as far as we know.
2020-10-29 13:51:29 -04:00
Itamar Turner-Trauring
0cf6ca86fb
Improve test coverage.
2020-10-29 13:36:31 -04:00
Itamar Turner-Trauring
fa0dbcfd0e
Configs are always unicode now.
2020-10-29 10:26:07 -04:00
Chad Whitacre
a10c2606f4
Merge pull request #868 from tahoe-lafs/3468.offloaded-test-coverage
...
More test coverage for the upload helper
2020-10-28 15:20:34 -04:00
Chad Whitacre
d04b6c103a
Pick off a couple of easy ports
2020-10-28 14:57:10 -04:00
Itamar Turner-Trauring
6f2027e824
Fix lint.
2020-10-27 16:59:43 -04:00
Itamar Turner-Trauring
20a64d5767
Test new fileutil behavior.
2020-10-27 14:24:23 -04:00
Itamar Turner-Trauring
f1b281123d
Fix tests.
2020-10-27 14:24:20 -04:00
Itamar Turner-Trauring
bcb6822171
Merge branch '3485.backported-configparser-for-py-2' into 3479.test-node-python-3
2020-10-27 14:06:35 -04:00
Itamar Turner-Trauring
b62bd13bee
Merge remote-tracking branch 'origin/master' into 3479.test-node-python-3
2020-10-27 14:02:27 -04:00
Itamar Turner-Trauring
b79504a43b
Refactor to unify different code paths.
2020-10-27 13:59:45 -04:00
Itamar Turner-Trauring
0d270e1290
Create ConfigParsers in a consistent manner.
2020-10-27 11:48:25 -04:00
Itamar Turner-Trauring
207111fb9c
Documentation fixes.
2020-10-27 11:43:27 -04:00
Itamar Turner-Trauring
1a7bb06587
SafeConfigParser has been replaced by ConfigParser.
2020-10-27 09:35:09 -04:00
Itamar Turner-Trauring
c76afc9ece
Try to fix some failing unit tests in ASCII locale.
2020-10-27 08:54:28 -04:00
Itamar Turner-Trauring
d5333ae9f9
Merge remote-tracking branch 'origin/master' into 3485.backported-configparser-for-py-2
2020-10-26 16:53:19 -04:00
Itamar Turner-Trauring
4a54377208
Some more fixes.
2020-10-26 16:48:18 -04:00
Itamar Turner-Trauring
4dc1adc817
Some progress towards passing Python 2 tests.
2020-10-26 16:37:00 -04:00
Itamar Turner-Trauring
76697c8c1b
It's already unicode.
2020-10-26 14:33:59 -04:00
Itamar Turner-Trauring
375ed5096c
Config parsing now always returns Unicode.
2020-10-26 12:12:49 -04:00
Itamar Turner-Trauring
f50fd8e474
Switch to new configparser backport.
2020-10-26 12:12:46 -04:00
Jean-Paul Calderone
25ee76104a
Merge pull request #872 from tahoe-lafs/3486.netifaces
...
Switch to netifaces
Fixes: ticket:3486
2020-10-26 11:55:31 -04:00
Chad Whitacre
338ee89e63
Stick with unicode (new str) for file path parts
...
This seems to be the pattern, e.g.:
https://github.com/tahoe-lafs/tahoe-lafs/blob/master/src/allmydata/client.py#L229
2020-10-23 12:52:32 -04:00
Chad Whitacre
725291c2aa
Merge branch 'master' into 3468.offloaded-test-coverage
2020-10-23 12:08:48 -04:00
Chad Whitacre
f0657aec69
Merge pull request #853 from tahoe-lafs/3346.port-immutable-offloaded
...
Port immutable.offloaded to Python 3
2020-10-23 12:05:20 -04:00
Jean-Paul Calderone
96c848b2ad
flakes
2020-10-23 09:50:31 -04:00
Jean-Paul Calderone
c60d62d858
Direct test for the new implementation
2020-10-23 09:32:13 -04:00
Jean-Paul Calderone
931bdef2a2
Get rid of the old implementation and related unused code
...
Also put in the new implementation, though now it needs tests because *there
were no direct tests for the old one*.
2020-10-23 09:23:16 -04:00
Jean-Paul Calderone
a5e889f707
flakes
2020-10-22 15:31:39 -04:00
Jean-Paul Calderone
606617cbfd
clean up the tub location tests a bit
2020-10-22 14:41:28 -04:00
Jean-Paul Calderone
ea257681bb
Stop starting the services so that we stop binding the ports
2020-10-22 14:36:49 -04:00
Jean-Paul Calderone
8e41c2d3e1
whitespace
2020-10-22 14:36:45 -04:00
Jean-Paul Calderone
83dbcdb3bf
Switch away from EmptyNode since it's gone from master
2020-10-22 14:31:33 -04:00
Jean-Paul Calderone
af5531d81b
Merge remote-tracking branch 'origin/master' into 2928.remote-allocate_tcp_port-test_node.py
2020-10-22 14:31:21 -04:00
Jean-Paul Calderone
a58fd5c88e
remove unused attribute
2020-10-22 07:23:02 -04:00
Jean-Paul Calderone
e97b5f6bb4
document get_arg req parameter
2020-10-22 07:22:51 -04:00
Jean-Paul Calderone
8401547b35
docstring for TahoeLAFSRequest
2020-10-22 07:22:41 -04:00
Jean-Paul Calderone
e3b1d4f536
enforce the type requirement
2020-10-22 07:17:52 -04:00
Jean-Paul Calderone
c8b9a0265a
get_root
docs
2020-10-22 07:16:57 -04:00
Jean-Paul Calderone
612cbb583a
combine common_web and common_tweb now that there is no nevow renderer
2020-10-22 07:13:13 -04:00
Jean-Paul Calderone
0f574dc019
docstring for the helper
2020-10-21 14:47:56 -04:00
Jean-Paul Calderone
d1599a924e
Test and fix cap censoring in HTTP access logs
2020-10-21 14:42:30 -04:00
Jean-Paul Calderone
b2999d283f
Somewhat clarify this test
2020-10-21 12:37:34 -04:00
Jean-Paul Calderone
62f5fb9d28
Make sure the JSON is given back as bytes
2020-10-21 12:27:08 -04:00
Jean-Paul Calderone
444c3e6ce4
typo fix
2020-10-21 12:23:43 -04:00
Jean-Paul Calderone
37016f4ab5
pyflakes
2020-10-21 12:21:44 -04:00
Jean-Paul Calderone
c31300fd0d
Handle interrupted connections
2020-10-21 12:21:01 -04:00
Jean-Paul Calderone
14b9dc090d
Replace some ctx
names with req
2020-10-21 10:12:48 -04:00
Jean-Paul Calderone
03a144755d
Nevow is no longer a dependency
2020-10-21 10:02:32 -04:00
Jean-Paul Calderone
7eecf51dc5
Just talk about rendering, not Nevow
2020-10-21 10:02:22 -04:00
Jean-Paul Calderone
6500f742dc
Twisted Web handles UnsupportedMethod for us
2020-10-21 10:02:10 -04:00
Jean-Paul Calderone
816ca79d8a
Talk about os.stat and tracebacks instead of Nevow
2020-10-21 10:01:57 -04:00
Jean-Paul Calderone
2ba34a4759
Talk about Nevow as a proper noun where necessary
2020-10-21 10:01:46 -04:00
Jean-Paul Calderone
a577f1e48d
pyflakes
2020-10-21 09:49:03 -04:00
Jean-Paul Calderone
80549f5f02
Make this request a little more realistic
2020-10-21 09:46:21 -04:00
Jean-Paul Calderone
7d54af7928
re-use our other renderer
2020-10-21 09:46:14 -04:00
Jean-Paul Calderone
27c2fd80c8
re-use our other renderer
2020-10-21 09:46:00 -04:00
Jean-Paul Calderone
c8db069960
Get rid of no-longer used Nevow exception handler
2020-10-21 09:45:41 -04:00
Jean-Paul Calderone
c64a71a642
Re-arrange some of the requestReceived logic and switch to t.web Site
2020-10-21 09:45:11 -04:00
Jean-Paul Calderone
538cefed3d
Update Twisted Web-based render
to use our request
...
Also to do one other thing Twisted Web does for resources automatically -
handle UnsupportedMethod
2020-10-21 08:51:45 -04:00
Jean-Paul Calderone
637bb2e576
De-Nevow `render
`
2020-10-21 08:51:25 -04:00
Jean-Paul Calderone
304a9880e6
De-Nevow `get_root
`
2020-10-21 08:50:53 -04:00
Jean-Paul Calderone
743ead71a4
De-Nevow `get_arg
`
2020-10-21 08:50:37 -04:00
Jean-Paul Calderone
7f02128973
[wip] test form posts
2020-10-21 08:29:41 -04:00
Jean-Paul Calderone
0dcc3e13c0
Remove unused imports
2020-10-21 08:21:29 -04:00
Jean-Paul Calderone
7ca8ede88c
Merge remote-tracking branch 'origin/master' into 3428.dont-return-deferred-to-twistedweb.2
2020-10-21 07:35:10 -04:00
Jean-Paul Calderone
f602382244
Comments about __get__ calls
2020-10-21 07:34:27 -04:00
Jean-Paul Calderone
7ce2122e71
one more reference
2020-10-21 07:26:12 -04:00
Jean-Paul Calderone
e8761c98ad
A comment about what _finish
is here for
2020-10-21 07:25:48 -04:00
Jean-Paul Calderone
d8b6e36c6f
docstring for StaticResource
2020-10-21 07:23:16 -04:00
Jean-Paul Calderone
dbe2d4efd7
It isn't the root, it's wherever we actually are
2020-10-21 07:22:00 -04:00
Jean-Paul Calderone
a91dba5f5b
_finish docstring
2020-10-21 07:18:41 -04:00
Jean-Paul Calderone
1ed74604c7
Use twisted.web.server.Request instead of DummyRequest in the tests
...
Always prefer the real thing if possible
2020-10-21 07:15:36 -04:00
Jean-Paul Calderone
3192715e37
everything newstyle
2020-10-19 14:37:03 -04:00
Jean-Paul Calderone
a9e9efb336
direct tests for @render_exception
2020-10-19 14:26:12 -04:00
Jean-Paul Calderone
b68c08cff9
Yank direct support for URLPath from common.py
2020-10-19 12:33:15 -04:00
Jean-Paul Calderone
72e60f8301
Fix imports
2020-10-18 11:12:44 -04:00
Jean-Paul Calderone
e710fd883a
Add a Twisted Web-based renderer and start using it on Python 3
...
This could be the thing that eventually replaces the Nevow-based testing
renderer on Python 2 as well.
2020-10-18 11:00:57 -04:00
Jean-Paul Calderone
84acf4e50f
Accept unicode return values and encode them to UTF-8
...
Nevow accepts unicode in most places it accepts bytes and does the usual
sloppy Python 2 thing, lets one or the other get implicitly re-coded,
typically using the ascii codec.
We'll go with UTF-8 because that fails less often than ASCII. We may want to
clean up the code at some point so we're not accidentally slinging both bytes
and text around as if they were the same thing.
2020-10-18 10:58:09 -04:00
Jean-Paul Calderone
fc1f43c7a3
How does it go without the type check
...
This is for py36:
> TypeError: helper_furl must be bytes, got 'pb://kl5iekm6itcyjejirxva2upthepsasnn@bogus:1234/frekgeq7gsongibyeuvzmvqoyf4h5pcx' instead
2020-10-16 19:07:28 -04:00
Jean-Paul Calderone
a403d25146
Merge remote-tracking branch 'origin/master' into 3468.offloaded-test-coverage
2020-10-16 14:34:35 -04:00
Jean-Paul Calderone
85bb0a7834
Get rid of the original token-based authorization helper
...
It was only used by magic-folder and that's gone now. We have a different
authorization helper for other things now, allmydata.web.private.
2020-10-16 14:14:15 -04:00
Jean-Paul Calderone
292f136547
pyflakes
2020-10-16 13:21:07 -04:00
Jean-Paul Calderone
a22426011b
import and naming cleanups post-merge
2020-10-16 12:49:36 -04:00
Itamar Turner-Trauring
8e618b9383
Fix Python 2 issue.
2020-10-16 11:25:29 -04:00
Itamar Turner-Trauring
6aa96bbb8d
Port test_node.py to Python 3.
2020-10-16 11:23:38 -04:00
Itamar Turner-Trauring
f7a89f76e7
All tests pass on Python 3.
2020-10-16 11:20:10 -04:00
Itamar Turner-Trauring
51d472e221
More progress towards passing tests on Python 3.
2020-10-16 11:13:11 -04:00
Itamar Turner-Trauring
f689d59a40
More passing tests on Python 3.
2020-10-16 10:55:33 -04:00
Itamar Turner-Trauring
bcd7cdf86f
Some passing tests on Python 3.
2020-10-16 10:47:49 -04:00
Jean-Paul Calderone
32051f93b9
Merge remote-tracking branch 'origin/master' into 3428.dont-return-deferred-to-twistedweb.2
2020-10-16 10:37:54 -04:00
Itamar Turner-Trauring
c2fe5a65a6
Merge pull request #847 from tahoe-lafs/3459.test-checker-python-3
...
Port test_checker.py to Python 3
Fixes ticket:3459
2020-10-16 10:31:25 -04:00
Jean-Paul Calderone
a73a919a20
flakes
2020-10-16 10:22:42 -04:00
Jean-Paul Calderone
a1f1f00be7
Use the more feaetureful rendering helper
2020-10-16 09:53:30 -04:00
Jean-Paul Calderone
31207e4b6b
don't double-apply the renderer logic
...
since that leads to double-finishing requests too
2020-10-16 09:53:24 -04:00
Jean-Paul Calderone
0faa24d344
Add a mess of eliot logging to request handling
2020-10-16 09:53:19 -04:00
Jean-Paul Calderone
0339ba97b9
Turn getChild None and Deferred results into something Twisted Web can manage
2020-10-16 09:52:41 -04:00
Jean-Paul Calderone
fa02e46033
maybeDeferred always returns a Deferred
2020-10-16 09:52:33 -04:00
Jean-Paul Calderone
f733a244aa
Just gonna produce text instead
2020-10-16 09:52:26 -04:00
Jean-Paul Calderone
d38ae4d6dd
Stop reading server module attributes all the time
...
It jumps through a ton of deprecation machinery that is at least tedious in
the debugger, if not wasteful at runtime.
2020-10-16 09:52:18 -04:00
Jean-Paul Calderone
07246b3509
Render requests more thoroughly
2020-10-16 09:52:10 -04:00
Jean-Paul Calderone
df949868b6
Stop explicitly finishing and then returning a string
2020-10-16 09:51:50 -04:00
Jean-Paul Calderone
69c7c40510
handle Deferred from render
2020-10-16 09:51:42 -04:00
Jean-Paul Calderone
f15086d995
Merge pull request #844 from tahoe-lafs/3460.improved-got_announcement
...
Improved `_got_announcement`
Fixes: ticket:3460
2020-10-16 08:55:11 -04:00
Jean-Paul Calderone
99fe617069
Merge pull request #857 from tahoe-lafs/3470.oneshotobserverlist-immediately
...
Make OneShotObserverList immediate
Fixes: ticket:3470
2020-10-15 17:37:31 -04:00
Jean-Paul Calderone
733d393a07
Merge pull request #840 from tahoe-lafs/3454.unskip-test_python3
...
Unskip the Python 3 porting test on Python 2
Fixes: ticket:3454
2020-10-15 17:32:59 -04:00
Jean-Paul Calderone
4d56b5f4ed
Merge pull request #858 from tahoe-lafs/3471.immediate-localwrapper
...
Allow LocalWrapper to be immediate
Fixes: ticket:3471
2020-10-15 13:15:35 -04:00
Jean-Paul Calderone
2960a270ce
Declare and document what LocalWrapper is/does
2020-10-15 12:00:03 -04:00
Itamar Turner-Trauring
707ab50606
Test BytesJSONEncoder with Unicode.
2020-10-15 08:37:09 -04:00
Itamar Turner-Trauring
1c976990a1
Make comment more meaningful.
2020-10-15 08:34:56 -04:00
Itamar Turner-Trauring
e6a196c144
Get rid of hopefully unnecessary sort.
2020-10-15 08:33:51 -04:00
Itamar Turner-Trauring
b658a66e7f
Merge remote-tracking branch 'origin/master' into 3459.test-checker-python-3
2020-10-15 08:32:53 -04:00
Itamar Turner-Trauring
b094a00458
Merge pull request #860 from tahoe-lafs/3473-mutable-tests-part-1-python-3
...
Port allmydata.mutable.tests to Python 3: part 1 of N
Fixes ticket:3473
2020-10-15 08:27:45 -04:00
Itamar Turner-Trauring
fecbbb6733
Port to Python 3.
2020-10-14 16:05:02 -04:00
Itamar Turner-Trauring
7faea936df
Tests pass on Python 3.
2020-10-14 16:03:53 -04:00
Itamar Turner-Trauring
b5e54f2ed2
Port to Python 3.
2020-10-14 15:50:02 -04:00
Itamar Turner-Trauring
fa92fde04a
Port to Python 3.
2020-10-14 15:46:37 -04:00
Itamar Turner-Trauring
43f5a25ec2
Tests pass on Python 3.
2020-10-14 15:45:09 -04:00
Jean-Paul Calderone
40e0ef0fad
Directly test CHKCheckerAndUEBFetcher cases
2020-10-14 12:02:56 -04:00
Jean-Paul Calderone
b0159a898e
Parameterize the callRemote scheduling
2020-10-14 11:08:40 -04:00
Jean-Paul Calderone
5a51d98479
Add missing chk_upload, document two new attrs, and move them up
2020-10-14 10:58:50 -04:00
Jean-Paul Calderone
9a18843bb1
finish the comment
2020-10-14 10:58:50 -04:00
Jean-Paul Calderone
555b751af0
Further expand existing test coverage by reducing fake quantities
...
Helper_fake_upload is replaced by more narrowly focused CHKUploadHelper_fake
2020-10-14 10:58:50 -04:00
Jean-Paul Calderone
4e46f9ae12
expand the already-uploaded test for the helper to cover more
...
shrink the amount of fake code being used and increase the amount of real code
being used
2020-10-14 10:58:50 -04:00
Jean-Paul Calderone
ef11eeb4a2
exercise concurrent upload
2020-10-14 10:58:50 -04:00
Jean-Paul Calderone
8eb518a221
docstring for Helper._active_uploads
2020-10-14 10:58:50 -04:00
Jean-Paul Calderone
c88c2846e2
Point folks at docs for this
2020-10-14 10:58:50 -04:00
Jean-Paul Calderone
5974f5adf9
Stop using eventually
in OneShotObserverList
2020-10-14 10:56:50 -04:00
Itamar Turner-Trauring
c0f486a9f6
Work on Python 3.
2020-10-13 09:51:25 -04:00
Itamar Turner-Trauring
50925fcec1
Get rid of more no-longer-needed moves.
2020-10-13 09:49:39 -04:00
Itamar Turner-Trauring
3ea18ca3fc
As better alternative to common_py3, make common.py import on Python 3.
2020-10-13 09:45:03 -04:00
Chad Whitacre
a0963fc2da
Keep future.builtins imports consistent
...
- remove int from a stock import
- comment a non-stock import
2020-10-13 08:39:25 -04:00
Chad Whitacre
574c63d350
Port immutable.offloaded to Python 3
2020-10-12 07:25:44 -04:00
Itamar Turner-Trauring
17f0676b3f
Merge branch 'master' into 3459.test-checker-python-3
2020-10-09 10:22:17 -04:00
Ross Patterson
cc8c9c0bdf
Merge pull request #851 from tahoe-lafs/3464.cleanup-bbb-comments
...
#3455 : Address feedback, BBB comments
2020-10-08 13:49:34 -07: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
Itamar Turner-Trauring
d519d4b2fa
Merge branch 'master' into 3463.more-immutable-python-3
2020-10-07 13:22:04 -04:00
Itamar Turner-Trauring
72cc37bb95
Merge pull request #843 from tahoe-lafs/3458.callremote-unicode
...
Fix callRemote unicode issues on Python 2 universally, using monkeypatching
Fixes ticket:3458
2020-10-07 13:21:19 -04:00
Itamar Turner-Trauring
5b76bf7f44
Fix trailing whitespace.
2020-10-07 10:12:31 -04:00
Itamar Turner-Trauring
f2e5688723
Port to Python 3.
2020-10-07 10:06:02 -04:00
Itamar Turner-Trauring
af95769927
Merge branch '3458.callremote-unicode' into 3463.more-immutable-python-3
2020-10-07 09:53:30 -04:00
Itamar Turner-Trauring
9dc4f98987
Port to Python 3.
2020-10-07 09:29:41 -04:00
Itamar Turner-Trauring
3e87ba368e
Port to Python 3.
2020-10-06 11:32:19 -04:00
Chad Whitacre
e78afd877c
Merge pull request #846 from tahoe-lafs/3456.tweak-docstring
...
Tweak docstring on FakeCanary
2020-10-06 06:19:54 -04:00
Itamar Turner-Trauring
c680b1d971
Lint fixes.
2020-10-05 11:38:53 -04:00
Ross Patterson
e89bbe1601
Merge pull request #845 from tahoe-lafs/3455.python-3-port-node-round1
...
3455: Round 1 of porting `allmydata.node`
2020-10-05 08:32:28 -07:00
Itamar Turner-Trauring
dd863a003f
Port test_checker.py to Python 3.
2020-10-05 11:12:06 -04:00
Itamar Turner-Trauring
96231fab5f
Support bytes in JSON output.
2020-10-05 11:01:11 -04:00
Itamar Turner-Trauring
b60cd13054
Fix the integration test failure.
2020-10-05 10:43:48 -04:00
Itamar Turner-Trauring
fe6917b48b
Merge remote-tracking branch 'origin/master' into 3458.callremote-unicode
2020-10-05 10:24:36 -04:00
Chad Whitacre
ad4d7f7612
Tweak docstring
...
Since this class is used in multiple test modules now, it makes sense to
keep it in common_util instead of test_storage.
2020-10-05 08:34:41 -04:00
Chad Whitacre
2fe2acf4c7
Merge pull request #842 from tahoe-lafs/3456.bye-bye-common_py3
...
Fold common_py3 back into other files
2020-10-05 08:03:18 -04:00
Ross Patterson
f1da68f340
feat(py3): Fix config from string compatibility
...
I did an audit of the code base and AFAICT the `node.config_from_string(...)` is only
used internally. Much of that usage is in tests where most of the usages feed in
non-specific, simple `"..."` string literals (IOW, bytes under py2, unicode under py3) while one
test module used `b"..."` byte string literals. Given all that it seems to me that the
best goal would be to use simple string literals throughout the usage of
`node.config_from_string(...)` and have only one special case in that function to handle
the difference between versions.
I just discovered that running the test with `TEST_SUITE=allmydata` doesn't run the
tests in `allmydata.test.test_node` but running them with
`TEST_SUITE=allmydata.test.test_node` does run them. I'm trying to figure out why that
is, but in the meantime here are the differences in the Python 3 test output when
running just the `allmydata.test.test_node` tests. This changes converts 11 tests from
errros to success, changes the specific errors for others and improves coverage a bit:
```diff
--- ../../.tox/make-test-py3-all-old.log 2020-10-01 11:56:15.428609940 -0700
+++ ../../.tox/make-test-py3-all-new.log 2020-10-01 11:56:55.052792565 -0700
@@ -95,9 +95,9 @@
tor_provider,
File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/introducer/server.py", line 87, in __init__
node.Node.__init__(self, config, main_tub, control_tub, i2p_provider, tor_provider)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 734, in __init__
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 739, in __init__
self.setup_logging()
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 826, in setup_logging
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 831, in setup_logging
newmeth = types.UnboundMethodType(formatTimeTahoeStyle, ob, ob.__class__)
builtins.AttributeError: module 'types' has no attribute 'UnboundMethodType'
@@ -158,53 +158,29 @@
(#.### secs)
allmydata.test.test_node.TestCase.test_config_required ... [OK]
(#.### secs)
-allmydata.test.test_node.TestCase.test_location1 ... Traceback (most recent call last):
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 112, in test_location1
- tub_location="192.0.2.0:1234")
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 99, in _test_location
- tub = testing_tub(config_data)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 53, in testing_tub
- config = config_from_string(basedir, 'DEFAULT_PORTNUMFILE_BLANK', config_data)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 209, in config_from_string
- parser.readfp(BytesIO(config_str))
-builtins.TypeError: a bytes-like object is required, not 'str'
-[ERROR]
+allmydata.test.test_node.TestCase.test_location1 ... [OK]
(#.### secs)
allmydata.test.test_node.TestCase.test_location2 ... Traceback (most recent call last):
File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 117, in test_location2
tub_location="192.0.2.0:1234,example.org:8091")
File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 99, in _test_location
tub = testing_tub(config_data)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 53, in testing_tub
- config = config_from_string(basedir, 'DEFAULT_PORTNUMFILE_BLANK', config_data)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 209, in config_from_string
- parser.readfp(BytesIO(config_str))
-builtins.TypeError: a bytes-like object is required, not 'str'
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 65, in testing_tub
+ cert_filename='DEFAULT_CERTFILE_BLANK'
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 669, in create_main_tub
+ portlocation = _tub_portlocation(config)
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 596, in _tub_portlocation
+ tubport = _convert_tub_port(file_tubport)
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 552, in _convert_tub_port
+ if re.search(r'^\d+$', s):
+ File "/usr/lib/python3.6/re.py", line 182, in search
+ return _compile(pattern, flags).search(string)
+builtins.TypeError: cannot use a string pattern on a bytes-like object
[ERROR]
(#.### secs)
-allmydata.test.test_node.TestCase.test_location_auto_and_explicit ... Traceback (most recent call last):
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 142, in test_location_auto_and_explicit
- local_addresses=["127.0.0.1", "192.0.2.0", "example.com:4321"],
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 99, in _test_location
- tub = testing_tub(config_data)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 53, in testing_tub
- config = config_from_string(basedir, 'DEFAULT_PORTNUMFILE_BLANK', config_data)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 209, in config_from_string
- parser.readfp(BytesIO(config_str))
-builtins.TypeError: a bytes-like object is required, not 'str'
-[ERROR]
+allmydata.test.test_node.TestCase.test_location_auto_and_explicit ... [OK]
(#.### secs)
-allmydata.test.test_node.TestCase.test_location_not_set ... Traceback (most recent call last):
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 128, in test_location_not_set
- local_addresses=["127.0.0.1", "192.0.2.0"],
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 99, in _test_location
- tub = testing_tub(config_data)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 53, in testing_tub
- config = config_from_string(basedir, 'DEFAULT_PORTNUMFILE_BLANK', config_data)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 209, in config_from_string
- parser.readfp(BytesIO(config_str))
-builtins.TypeError: a bytes-like object is required, not 'str'
-[ERROR]
+allmydata.test.test_node.TestCase.test_location_not_set ... [OK]
(#.### secs)
allmydata.test.test_node.TestCase.test_logdir_is_str ... Traceback (most recent call last):
File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 340, in test_logdir_is_str
@@ -215,27 +191,31 @@
storage_broker,
File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/client.py", line 676, in __init__
node.Node.__init__(self, config, main_tub, control_tub, i2p_provider, tor_provider)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 734, in __init__
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 739, in __init__
self.setup_logging()
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 826, in setup_logging
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 831, in setup_logging
newmeth = types.UnboundMethodType(formatTimeTahoeStyle, ob, ob.__class__)
builtins.AttributeError: module 'types' has no attribute 'UnboundMethodType'
[ERROR]
(#.### secs)
allmydata.test.test_node.TestCase.test_private_config ... Traceback (most recent call last):
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 259, in test_private_config
- config = config_from_string(basedir, "", "")
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 209, in config_from_string
- parser.readfp(BytesIO(config_str))
-builtins.TypeError: a bytes-like object is required, not 'str'
-[ERROR]
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 261, in test_private_config
+ self.assertEqual(config.get_private_config("already"), "secret")
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/.tox/py36-coverage/lib/python3.6/site-packages/twisted/trial/_synctest.py", line 434, in assertEqual
+ super(_Assertions, self).assertEqual(first, second, msg)
+ File "/usr/lib/python3.6/unittest/case.py", line 829, in assertEqual
+ assertion_func(first, second, msg=msg)
+ File "/usr/lib/python3.6/unittest/case.py", line 822, in _baseAssertEqual
+ raise self.failureException(msg)
+twisted.trial.unittest.FailTest: b'secret' != 'secret'
+[FAILURE]
(#.### secs)
allmydata.test.test_node.TestCase.test_private_config_missing ... [OK]
(#.### secs)
allmydata.test.test_node.TestCase.test_private_config_unreadable ... Traceback (most recent call last):
File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 213, in test_private_config_unreadable
config.get_or_create_private_config("foo", "contents")
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 369, in get_or_create_private_config
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 374, in get_or_create_private_config
fileutil.write(privname, value)
File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/util/fileutil.py", line 275, in write
f.write(data)
@@ -258,77 +238,33 @@
(#.### secs)
allmydata.test.test_node.TestCase.test_timestamp ... [OK]
(#.### secs)
-allmydata.test.test_node.TestCase.test_write_config_unwritable_file ... Traceback (most recent call last):
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 288, in test_write_config_unwritable_file
- config = config_from_string(basedir, "", "")
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 209, in config_from_string
- parser.readfp(BytesIO(config_str))
-builtins.TypeError: a bytes-like object is required, not 'str'
-[ERROR]
+allmydata.test.test_node.TestCase.test_write_config_unwritable_file ... [OK]
(#.### secs)
-allmydata.test.test_node.TestMissingPorts.test_disabled_port_not_tub ... Traceback (most recent call last):
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 488, in test_disabled_port_not_tub
- config = config_from_string(self.basedir, "portnum", config_data)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 209, in config_from_string
- parser.readfp(BytesIO(config_str))
-builtins.TypeError: a bytes-like object is required, not 'str'
-[ERROR]
+allmydata.test.test_node.TestMissingPorts.test_disabled_port_not_tub ... [OK]
(#.### secs)
-allmydata.test.test_node.TestMissingPorts.test_disabled_tub_not_port ... Traceback (most recent call last):
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 506, in test_disabled_tub_not_port
- config = config_from_string(self.basedir, "portnum", config_data)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 209, in config_from_string
- parser.readfp(BytesIO(config_str))
-builtins.TypeError: a bytes-like object is required, not 'str'
-[ERROR]
+allmydata.test.test_node.TestMissingPorts.test_disabled_tub_not_port ... [OK]
(#.### secs)
-allmydata.test.test_node.TestMissingPorts.test_empty_tub_location ... Traceback (most recent call last):
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 470, in test_empty_tub_location
- config = config_from_string(self.basedir, "portnum", config_data)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 209, in config_from_string
- parser.readfp(BytesIO(config_str))
-builtins.TypeError: a bytes-like object is required, not 'str'
-[ERROR]
+allmydata.test.test_node.TestMissingPorts.test_empty_tub_location ... [OK]
(#.### secs)
-allmydata.test.test_node.TestMissingPorts.test_empty_tub_port ... Traceback (most recent call last):
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 453, in test_empty_tub_port
- config = config_from_string(self.basedir, "portnum", config_data)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 209, in config_from_string
- parser.readfp(BytesIO(config_str))
-builtins.TypeError: a bytes-like object is required, not 'str'
-[ERROR]
+allmydata.test.test_node.TestMissingPorts.test_empty_tub_port ... [OK]
(#.### secs)
-allmydata.test.test_node.TestMissingPorts.test_parsing_all_disabled ... Traceback (most recent call last):
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 439, in test_parsing_all_disabled
- config = config_from_string(self.basedir, "portnum", config_data)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 209, in config_from_string
- parser.readfp(BytesIO(config_str))
-builtins.TypeError: a bytes-like object is required, not 'str'
-[ERROR]
+allmydata.test.test_node.TestMissingPorts.test_parsing_all_disabled ... [OK]
(#.### secs)
-allmydata.test.test_node.TestMissingPorts.test_parsing_defaults ... Traceback (most recent call last):
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 392, in test_parsing_defaults
- config = config_from_string(self.basedir, "portnum", config_data)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 209, in config_from_string
- parser.readfp(BytesIO(config_str))
-builtins.TypeError: a bytes-like object is required, not 'str'
-[ERROR]
+allmydata.test.test_node.TestMissingPorts.test_parsing_defaults ... [OK]
(#.### secs)
allmydata.test.test_node.TestMissingPorts.test_parsing_location_complex ... Traceback (most recent call last):
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 415, in test_parsing_location_complex
- config = config_from_string(self.basedir, "portnum", config_data)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 209, in config_from_string
- parser.readfp(BytesIO(config_str))
-builtins.TypeError: a bytes-like object is required, not 'str'
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 418, in test_parsing_location_complex
+ tubport, tublocation = _tub_portlocation(config)
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 596, in _tub_portlocation
+ tubport = _convert_tub_port(file_tubport)
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 552, in _convert_tub_port
+ if re.search(r'^\d+$', s):
+ File "/usr/lib/python3.6/re.py", line 182, in search
+ return _compile(pattern, flags).search(string)
+builtins.TypeError: cannot use a string pattern on a bytes-like object
[ERROR]
(#.### secs)
-allmydata.test.test_node.TestMissingPorts.test_parsing_tcp ... Traceback (most recent call last):
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 370, in test_parsing_tcp
- config = config_from_string(self.basedir, "portnum", config_data)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 209, in config_from_string
- parser.readfp(BytesIO(config_str))
-builtins.TypeError: a bytes-like object is required, not 'str'
-[ERROR]
+allmydata.test.test_node.TestMissingPorts.test_parsing_tcp ... [OK]
(#.### secs)
===============================================================================
@@ -415,9 +351,9 @@
tor_provider,
File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/introducer/server.py", line 87, in __init__
node.Node.__init__(self, config, main_tub, control_tub, i2p_provider, tor_provider)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 734, in __init__
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 739, in __init__
self.setup_logging()
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 826, in setup_logging
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 831, in setup_logging
newmeth = types.UnboundMethodType(formatTimeTahoeStyle, ob, ob.__class__)
builtins.AttributeError: module 'types' has no attribute 'UnboundMethodType'
@@ -449,6 +385,20 @@
allmydata.test.test_node.TestCase.test_config_items
===============================================================================
+[FAIL]
+Traceback (most recent call last):
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 261, in test_private_config
+ self.assertEqual(config.get_private_config("already"), "secret")
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/.tox/py36-coverage/lib/python3.6/site-packages/twisted/trial/_synctest.py", line 434, in assertEqual
+ super(_Assertions, self).assertEqual(first, second, msg)
+ File "/usr/lib/python3.6/unittest/case.py", line 829, in assertEqual
+ assertion_func(first, second, msg=msg)
+ File "/usr/lib/python3.6/unittest/case.py", line 822, in _baseAssertEqual
+ raise self.failureException(msg)
+twisted.trial.unittest.FailTest: b'secret' != 'secret'
+
+allmydata.test.test_node.TestCase.test_private_config
+===============================================================================
[ERROR]
Traceback (most recent call last):
File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 657, in test_disabled
@@ -503,62 +453,26 @@
===============================================================================
[ERROR]
Traceback (most recent call last):
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 112, in test_location1
- tub_location="192.0.2.0:1234")
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 99, in _test_location
- tub = testing_tub(config_data)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 53, in testing_tub
- config = config_from_string(basedir, 'DEFAULT_PORTNUMFILE_BLANK', config_data)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 209, in config_from_string
- parser.readfp(BytesIO(config_str))
-builtins.TypeError: a bytes-like object is required, not 'str'
-
-allmydata.test.test_node.TestCase.test_location1
-===============================================================================
-[ERROR]
-Traceback (most recent call last):
File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 117, in test_location2
tub_location="192.0.2.0:1234,example.org:8091")
File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 99, in _test_location
tub = testing_tub(config_data)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 53, in testing_tub
- config = config_from_string(basedir, 'DEFAULT_PORTNUMFILE_BLANK', config_data)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 209, in config_from_string
- parser.readfp(BytesIO(config_str))
-builtins.TypeError: a bytes-like object is required, not 'str'
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 65, in testing_tub
+ cert_filename='DEFAULT_CERTFILE_BLANK'
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 669, in create_main_tub
+ portlocation = _tub_portlocation(config)
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 596, in _tub_portlocation
+ tubport = _convert_tub_port(file_tubport)
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 552, in _convert_tub_port
+ if re.search(r'^\d+$', s):
+ File "/usr/lib/python3.6/re.py", line 182, in search
+ return _compile(pattern, flags).search(string)
+builtins.TypeError: cannot use a string pattern on a bytes-like object
allmydata.test.test_node.TestCase.test_location2
===============================================================================
[ERROR]
Traceback (most recent call last):
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 142, in test_location_auto_and_explicit
- local_addresses=["127.0.0.1", "192.0.2.0", "example.com:4321"],
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 99, in _test_location
- tub = testing_tub(config_data)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 53, in testing_tub
- config = config_from_string(basedir, 'DEFAULT_PORTNUMFILE_BLANK', config_data)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 209, in config_from_string
- parser.readfp(BytesIO(config_str))
-builtins.TypeError: a bytes-like object is required, not 'str'
-
-allmydata.test.test_node.TestCase.test_location_auto_and_explicit
-===============================================================================
-[ERROR]
-Traceback (most recent call last):
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 128, in test_location_not_set
- local_addresses=["127.0.0.1", "192.0.2.0"],
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 99, in _test_location
- tub = testing_tub(config_data)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 53, in testing_tub
- config = config_from_string(basedir, 'DEFAULT_PORTNUMFILE_BLANK', config_data)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 209, in config_from_string
- parser.readfp(BytesIO(config_str))
-builtins.TypeError: a bytes-like object is required, not 'str'
-
-allmydata.test.test_node.TestCase.test_location_not_set
-===============================================================================
-[ERROR]
-Traceback (most recent call last):
File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 340, in test_logdir_is_str
yield client.create_client(basedir)
File "/home/rpatterson/src/work/sfu/tahoe-lafs/.tox/py36-coverage/lib/python3.6/site-packages/twisted/internet/defer.py", line 1418, in _inlineCallbacks
@@ -567,9 +481,9 @@
storage_broker,
File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/client.py", line 676, in __init__
node.Node.__init__(self, config, main_tub, control_tub, i2p_provider, tor_provider)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 734, in __init__
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 739, in __init__
self.setup_logging()
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 826, in setup_logging
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 831, in setup_logging
newmeth = types.UnboundMethodType(formatTimeTahoeStyle, ob, ob.__class__)
builtins.AttributeError: module 'types' has no attribute 'UnboundMethodType'
@@ -577,19 +491,9 @@
===============================================================================
[ERROR]
Traceback (most recent call last):
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 259, in test_private_config
- config = config_from_string(basedir, "", "")
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 209, in config_from_string
- parser.readfp(BytesIO(config_str))
-builtins.TypeError: a bytes-like object is required, not 'str'
-
-allmydata.test.test_node.TestCase.test_private_config
-===============================================================================
-[ERROR]
-Traceback (most recent call last):
File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 213, in test_private_config_unreadable
config.get_or_create_private_config("foo", "contents")
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 369, in get_or_create_private_config
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 374, in get_or_create_private_config
fileutil.write(privname, value)
File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/util/fileutil.py", line 275, in write
f.write(data)
@@ -607,97 +511,21 @@
===============================================================================
[ERROR]
Traceback (most recent call last):
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 288, in test_write_config_unwritable_file
- config = config_from_string(basedir, "", "")
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 209, in config_from_string
- parser.readfp(BytesIO(config_str))
-builtins.TypeError: a bytes-like object is required, not 'str'
-
-allmydata.test.test_node.TestCase.test_write_config_unwritable_file
-===============================================================================
-[ERROR]
-Traceback (most recent call last):
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 488, in test_disabled_port_not_tub
- config = config_from_string(self.basedir, "portnum", config_data)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 209, in config_from_string
- parser.readfp(BytesIO(config_str))
-builtins.TypeError: a bytes-like object is required, not 'str'
-
-allmydata.test.test_node.TestMissingPorts.test_disabled_port_not_tub
-===============================================================================
-[ERROR]
-Traceback (most recent call last):
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 506, in test_disabled_tub_not_port
- config = config_from_string(self.basedir, "portnum", config_data)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 209, in config_from_string
- parser.readfp(BytesIO(config_str))
-builtins.TypeError: a bytes-like object is required, not 'str'
-
-allmydata.test.test_node.TestMissingPorts.test_disabled_tub_not_port
-===============================================================================
-[ERROR]
-Traceback (most recent call last):
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 470, in test_empty_tub_location
- config = config_from_string(self.basedir, "portnum", config_data)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 209, in config_from_string
- parser.readfp(BytesIO(config_str))
-builtins.TypeError: a bytes-like object is required, not 'str'
-
-allmydata.test.test_node.TestMissingPorts.test_empty_tub_location
-===============================================================================
-[ERROR]
-Traceback (most recent call last):
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 453, in test_empty_tub_port
- config = config_from_string(self.basedir, "portnum", config_data)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 209, in config_from_string
- parser.readfp(BytesIO(config_str))
-builtins.TypeError: a bytes-like object is required, not 'str'
-
-allmydata.test.test_node.TestMissingPorts.test_empty_tub_port
-===============================================================================
-[ERROR]
-Traceback (most recent call last):
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 439, in test_parsing_all_disabled
- config = config_from_string(self.basedir, "portnum", config_data)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 209, in config_from_string
- parser.readfp(BytesIO(config_str))
-builtins.TypeError: a bytes-like object is required, not 'str'
-
-allmydata.test.test_node.TestMissingPorts.test_parsing_all_disabled
-===============================================================================
-[ERROR]
-Traceback (most recent call last):
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 392, in test_parsing_defaults
- config = config_from_string(self.basedir, "portnum", config_data)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 209, in config_from_string
- parser.readfp(BytesIO(config_str))
-builtins.TypeError: a bytes-like object is required, not 'str'
-
-allmydata.test.test_node.TestMissingPorts.test_parsing_defaults
-===============================================================================
-[ERROR]
-Traceback (most recent call last):
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 415, in test_parsing_location_complex
- config = config_from_string(self.basedir, "portnum", config_data)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 209, in config_from_string
- parser.readfp(BytesIO(config_str))
-builtins.TypeError: a bytes-like object is required, not 'str'
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 418, in test_parsing_location_complex
+ tubport, tublocation = _tub_portlocation(config)
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 596, in _tub_portlocation
+ tubport = _convert_tub_port(file_tubport)
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 552, in _convert_tub_port
+ if re.search(r'^\d+$', s):
+ File "/usr/lib/python3.6/re.py", line 182, in search
+ return _compile(pattern, flags).search(string)
+builtins.TypeError: cannot use a string pattern on a bytes-like object
allmydata.test.test_node.TestMissingPorts.test_parsing_location_complex
-===============================================================================
-[ERROR]
-Traceback (most recent call last):
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 370, in test_parsing_tcp
- config = config_from_string(self.basedir, "portnum", config_data)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 209, in config_from_string
- parser.readfp(BytesIO(config_str))
-builtins.TypeError: a bytes-like object is required, not 'str'
-
-allmydata.test.test_node.TestMissingPorts.test_parsing_tcp
-------------------------------------------------------------------------------
-Ran 34 tests in 2.788s
+Ran 34 tests in 2.516s
-FAILED (failures=4, errors=21, successes=9)
+FAILED (failures=5, errors=9, successes=20)
Name Stmts Miss Branch BrPart Cover Missing
------------------------------------------------------------------------------------------------
src/allmydata/__init__.py 16 4 0 0 75% 18-22, 28-32
@@ -751,7 +579,7 @@
src/allmydata/mutable/repairer.py 57 37 18 0 29% 13, 15, 17, 19, 29-34, 65-71, 74-126, 129-131
src/allmydata/mutable/retrieve.py 489 411 120 0 13% 29-43, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 67-69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89-90, 105-160, 164, 167-171, 174-175, 186-193, 201-208, 211-212, 223-227, 230-232, 236-254, 257-275, 278-283, 286-332, 344-354, 362-454, 485-516, 529-540, 564-578, 586-597, 607-633, 643-663, 671-699, 712-729, 738-798, 806-829, 839-889, 897-905, 909-910, 919-941, 950-971, 981-994, 999-1005
src/allmydata/mutable/servermap.py 623 524 198 0 12% 26-38, 41-42, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 70, 72, 74, 76, 78, 80, 82, 116-124, 130-139, 142, 145, 148, 159-161, 165, 170-172, 175, 177, 180-181, 183, 186-199, 202, 206, 213, 217-220, 225-228, 231, 234-238, 243-252, 255-259, 263-265, 269-275, 280-290, 295-305, 311-315, 320-322, 328-350, 358-363, 370-372, 379, 390-450, 454, 457-461, 466-545, 549-557, 560-575, 578-593, 596-613, 623-638, 642-779, 787, 791-799, 803-804, 816-880, 883-904, 910-914, 919-920, 928-944, 960-974, 981-998, 1002-1012, 1020-1183, 1186-1205, 1209-1225, 1228-1229
-src/allmydata/node.py 388 106 146 39 69% 120, 132, 190, 211-213, 241, 243-245, 278, 284, 291-295, 303-306, 315, 320, 339, 341, 361, 368, 370, 377-379, 393-396, 422, 424, 449, 453, 490, 493, 500, 511-512, 547-549, 566, 574, 581, 583, 590-591, 597, 601, 612, 622-634, 679, 681, 736-750, 756, 764, 792-805, 808-809, 814-815, 827-846, 189->190, 204->208, 240->241, 242->243, 277->278, 314->315, 319->320, 338->339, 340->341, 360->361, 365->368, 391->393, 421->422, 423->424, 448->449, 451->453, 489->490, 492->493, 499->500, 510->511, 565->566, 567->570, 573->574, 575->578, 580->581, 582->583, 585->597, 589->590, 600->601, 603->606, 610->616, 611->612, 618->622, 673->679, 680->681, 763->764, 766->768, 821->830, 823->821
+src/allmydata/node.py 391 87 148 30 75% 20, 125, 137, 195, 246, 248-250, 283, 289, 308-311, 320, 325, 344, 346, 366, 373, 375, 382-384, 398-401, 427, 429, 454, 458, 495, 498, 505, 516-517, 606, 617, 634-638, 684, 686, 741-755, 761, 769, 797-810, 813-814, 819-820, 832-851, 19->20, 194->195, 209->213, 245->246, 247->248, 282->283, 319->320, 324->325, 343->344, 345->346, 365->366, 370->373, 396->398, 426->427, 428->429, 453->454, 456->458, 494->495, 497->498, 504->505, 515->516, 605->606, 616->617, 627->634, 678->684, 685->686, 768->769, 771->773, 826->835, 828->826
src/allmydata/nodemaker.py 97 71 38 0 21% 23-33, 36, 38, 41, 44-47, 49, 53-95, 98-115, 118-125, 129-138, 141-150
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 146 14 0 0% 1-341
@@ -810,7 +638,7 @@
src/allmydata/util/dictutil.py 38 22 12 1 34% 16, 21-24, 27-31, 34-38, 55-56, 59-60, 63-64, 71, 77-78, 12->16
src/allmydata/util/eliotutil.py 115 68 24 0 35% 82-85, 91-94, 104, 117-122, 129-139, 151, 155-159, 163-167, 179-186, 198-199, 202-210, 222-226, 231-247, 250, 266-294, 308-312
src/allmydata/util/encodingutil.py 217 123 80 12 36% 18, 37-38, 41, 43, 52-53, 69, 75-78, 102, 108, 114-122, 130-134, 145-155, 164, 173-175, 178-181, 187, 196-213, 217-231, 237-243, 279-282, 291-296, 314, 320-322, 327, 334-340, 343-355, 358-363, 366-367, 370-373, 379, 395-405, 412-420, 423, 429, 16->18, 36->37, 40->41, 42->43, 66->69, 72->74, 74->75, 278->279, 285->295, 288->291, 299->310, 319->320
-src/allmydata/util/fileutil.py 343 244 120 13 25% 15, 23-25, 47-55, 71-85, 96-97, 100, 103, 106, 109, 115-116, 119-125, 128, 131, 134, 137-138, 142-145, 151-153, 158, 166-176, 179-184, 201-203, 214-237, 241-244, 247-254, 262, 279, 282-290, 293-304, 326, 328, 336-342, 348, 351, 358, 366-376, 382-400, 405, 410-426, 434-462, 486-529, 548-554, 566-568, 573-604, 608-612, 615-627, 633, 636-659, 13->15, 22->23, 200->201, 259->262, 325->326, 327->328, 332->336, 345->351, 347->348, 357->358, 380->382, 404->405, 571->573
+src/allmydata/util/fileutil.py 343 243 120 13 25% 15, 23-25, 47-55, 71-85, 96-97, 100, 103, 106, 109, 115-116, 119-125, 128, 131, 134, 137-138, 142-145, 151-153, 158, 166-176, 179-184, 201-203, 214-237, 241-244, 247-254, 262, 282-290, 293-304, 326, 328, 336-342, 348, 351, 358, 366-376, 382-400, 405, 410-426, 434-462, 486-529, 548-554, 566-568, 573-604, 608-612, 615-627, 633, 636-659, 13->15, 22->23, 200->201, 259->262, 325->326, 327->328, 332->336, 345->351, 347->348, 357->358, 380->382, 404->405, 571->573
src/allmydata/util/gcutil.py 23 3 8 3 81% 20, 51-57, 19->20, 50->51, 64->exit
src/allmydata/util/happinessutil.py 77 62 42 1 13% 15, 25-54, 64-69, 82-92, 142-183, 207-223, 235-249, 13->15
src/allmydata/util/hashutil.py 157 76 8 1 50% 14, 40-42, 45-46, 49-56, 60-62, 66-68, 72-76, 118, 122, 126, 130, 134, 138, 142, 146, 150, 154, 158, 162, 166, 174-176, 180-183, 187, 191, 195, 199, 204, 209-210, 214-215, 219, 223-228, 232, 236, 240, 244, 248-250, 254, 258, 262, 266, 270-271, 278, 282, 12->14
@@ -818,7 +646,7 @@
src/allmydata/util/i2p_provider.py 121 73 36 5 35% 44-67, 72-81, 85-135, 151-161, 168, 176-180, 183-184, 187, 193-216, 219, 226, 167->168, 175->176, 182->183, 186->187, 192->193
src/allmydata/util/idlib.py 5 2 0 0 60% 6, 9
src/allmydata/util/iputil.py 172 74 56 12 52% 14, 63-102, 123-140, 151-184, 209, 216, 229, 237-238, 242, 246, 254-257, 271-277, 328-329, 353-354, 13->14, 215->216, 220->242, 226->229, 234->220, 239->234, 245->246, 249->259, 265->261, 291->329, 295->328, 360->exit
-src/allmydata/util/log.py 52 27 16 1 38% 13, 38-41, 46-48, 51-61, 67-75, 78, 12->13
+src/allmydata/util/log.py 52 23 16 2 46% 13, 46-48, 51-61, 67-75, 78, 12->13, 39->41
src/allmydata/util/mathutil.py 12 3 2 1 71% 16, 25-26, 15->16
src/allmydata/util/netstring.py 35 24 12 1 26% 13, 31-54, 12->13
src/allmydata/util/observer.py 91 56 20 1 32% 14, 29-32, 36-38, 41, 44, 47, 50-54, 57-60, 63-66, 69-70, 79, 82, 93-97, 103, 106, 109, 112-113, 119-121, 134, 137-139, 142-145, 148-151, 154-157, 13->14
@@ -854,7 +682,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 27467 22018 8248 184 17%
+TOTAL 27470 21994 8250 176 17%
12 files skipped due to complete coverage.
make[#]: Leaving directory '/home/rpatterson/src/work/sfu/tahoe-lafs'
```
2020-10-04 21:52:27 -07:00
Ross Patterson
da046108e2
feat(py3): Fix section name unicode type clash
...
Before this change, there was an error in the tests in python 3. I couldn't find any
clues from the history as to why explicit byte-string literals were used here. This
change addresses the error under Python 3 and doesn't cause any regressions under Python
2 in the test suite. This changes two tests from failures to passing under Python 3 and
increases coverage a bit:
```diff
--- ../../.tox/make-test-py3-all-old.log 2020-10-04 21:42:22.931028265 -0700
+++ ../../.tox/make-test-py3-all-new.log 2020-10-04 21:49:19.164127097 -0700
@@ -313,7 +313,7 @@
####-##-##T##:##:##-###0 [twisted.scripts._twistd_unix.UnixAppLogger#info] twistd 20.3.0 (/home/rpatterson/src/work/sfu/tahoe-lafs/.tox/py36-coverage/bin/python 3.6.12) starting up.
####-##-##T##:##:##-###0 [twisted.scripts._twistd_unix.UnixAppLogger#info] reactor class: mock.mock.MagicMock.
####-##-##T##:##:##-###0 [twisted.scripts._twistd_unix.UnixAppLogger#info] Server Shut Down.
- [FAIL]
+ [OK]
allmydata.test
cli
test_status ... [ERROR]
@@ -1191,7 +1191,7 @@
test_disabled_but_helper ... [FAIL]
test_disabled_but_storage ... [FAIL]
Configuration
- test_create_client_invalid_config ... [FAIL]
+ test_create_client_invalid_config ... [OK]
test_read_invalid_config ... [OK]
IntroducerNotListening
test_port_none_introducer ... [FAIL]
@@ -2024,18 +2024,6 @@
===============================================================================
[FAIL]
Traceback (most recent call last):
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/.tox/py36-coverage/lib/python3.6/site-packages/mock/mock.py", line 1369, in patched
- return func(*newargs, **newkeywargs)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/cli/test_start.py", line 265, in test_run_invalid_config
- output,
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/.tox/py36-coverage/lib/python3.6/site-packages/twisted/trial/_synctest.py", line 494, in assertIn
- % (containee, container))
-twisted.trial.unittest.FailTest: 'invalid section' not in '\nUnknown error\nTraceback (most recent call last):\n File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/cli/test_start.py", line 232, in cwr\n fn()\n File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/scripts/run_common.py", line 155, in start\n d = service_factory()\n File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/scripts/run_common.py", line 136, in <lambda>\n u"client": lambda: maybeDeferred(namedAny("allmydata.client.create_client"), self.basedir),\n File "/home/rpatterson/src/work/sfu/tahoe-lafs/.tox/py36-coverage/lib/python3.6/site-packages/twisted/internet/defer.py", line 151, in maybeDeferred\n result = f(*args, **kw)\n--- <exception caught here> ---\n File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/client.py", line 243, in create_client\n config = read_config(basedir, u"client.port")\n File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/client.py", line 219, in read_config\n _valid_config=_valid_config(),\n File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 192, in read_config\n configutil.validate_config(config_fname, parser, _valid_config)\n File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/util/configutil.py", line 72, in validate_config\n if not valid_config.is_valid_section(section):\n File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/util/configutil.py", line 113, in is_valid_section\n self._is_valid_section(section_name)\n File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/util/configutil.py", line 141, in <lambda>\n return lambda *a, **kw: f(*a, **kw) or g(*a, **kw)\n File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/client.py", line 72, in _is_valid_section\n section_name.startswith(b"storageserver.plugins.") or\nbuiltins.TypeError: startswith first arg must be str or a tuple of str, not bytes\n'
-
-allmydata.test.cli.test_start.RunTests.test_run_invalid_config
-===============================================================================
-[FAIL]
-Traceback (most recent call last):
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:
@@ -2222,34 +2210,6 @@
result = result.throwExceptionIntoGenerator(g)
File "/home/rpatterson/src/work/sfu/tahoe-lafs/.tox/py36-coverage/lib/python3.6/site-packages/twisted/python/failure.py", line 512, in throwExceptionIntoGenerator
return g.throw(self.type, self.value, self.tb)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 741, in test_create_client_invalid_config
- yield client.create_client(self.basedir)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/.tox/py36-coverage/lib/python3.6/site-packages/twisted/trial/_synctest.py", line 355, in __exit__
- self._expectedName, reason.getTraceback()),
-twisted.trial.unittest.FailTest: builtins.TypeError raised instead of UnknownConfigError:
- Traceback (most recent call last):
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/.tox/py36-coverage/lib/python3.6/site-packages/twisted/internet/defer.py", line 1529, in _cancellableInlineCallbacks
- _inlineCallbacks(None, g, status)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/.tox/py36-coverage/lib/python3.6/site-packages/twisted/internet/defer.py", line 1416, in _inlineCallbacks
- result = result.throwExceptionIntoGenerator(g)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/.tox/py36-coverage/lib/python3.6/site-packages/twisted/python/failure.py", line 512, in throwExceptionIntoGenerator
- return g.throw(self.type, self.value, self.tb)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 741, in test_create_client_invalid_config
- yield client.create_client(self.basedir)
---- <exception caught here> ---
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 741, in test_create_client_invalid_config
- yield client.create_client(self.basedir)
-builtins.TypeError: startswith first arg must be str or a tuple of str, not bytes
-
-
-allmydata.test.test_node.Configuration.test_create_client_invalid_config
-===============================================================================
-[FAIL]
-Traceback (most recent call last):
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/.tox/py36-coverage/lib/python3.6/site-packages/twisted/internet/defer.py", line 1416, in _inlineCallbacks
- result = result.throwExceptionIntoGenerator(g)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/.tox/py36-coverage/lib/python3.6/site-packages/twisted/python/failure.py", line 512, in throwExceptionIntoGenerator
- return g.throw(self.type, self.value, self.tb)
File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 704, in test_port_none_introducer
yield create_introducer(basedir)
File "/home/rpatterson/src/work/sfu/tahoe-lafs/.tox/py36-coverage/lib/python3.6/site-packages/twisted/trial/_synctest.py", line 355, in __exit__
@@ -8717,7 +8677,7 @@
-------------------------------------------------------------------------------
Ran 1300 tests in ###.###s
-FAILED (skips=42, expectedFailures=1, failures=35, errors=531, successes=707)
+FAILED (skips=42, expectedFailures=1, failures=33, errors=531, successes=709)
Unknown error
Traceback (most recent call last):
@@ -8806,7 +8766,7 @@
src/allmydata/scripts/create_node.py 302 98 114 10 66% 224-229, 235, 257-260, 262-265, 268-269, 289-292, 295-298, 329, 339, 347-380, 391-445, 461-477, 223->224, 234->235, 256->257, 261->262, 266->277, 267->268, 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
src/allmydata/scripts/default_nodedir.py 15 5 6 2 57% 10-14, 9->10, 16->exit
-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/run_common.py 135 17 24 5 86% 37, 41-46, 59-60, 158, 192-193, 216-220, 226-227, 55->62, 135->exit, 135->exit, 191->192, 225->226
src/allmydata/scripts/runner.py 138 49 42 5 61% 84-85, 91, 97-99, 150, 153-160, 174-181, 188-192, 202-232, 237-252, 255, 31->36, 149->150, 151->153, 185->188, 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 44 16 12 3 59% 8, 30, 75-79, 84-93, 7->8, 29->30, 74->75
@@ -8893,7 +8853,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 27477 11782 8244 605 54%
+TOTAL 27477 11781 8244 604 54%
18 files skipped due to complete coverage.
+ '[' '!' -z 1 ']'
```
2020-10-04 21:50:09 -07:00
Ross Patterson
a89715ebe8
feat(py3): feat(py3): Fix use of deprecated type
...
Python 3 did away with the unbound method type entirely, they're just functions under
Python 3, and IIUC the unbound type is just an alias for the method type in Python 2.
As such, this approach should preserve the behavior under Python 2 and should work under
Python 3.
With this change, the diff in test output shows one test error converted to a failure,
increases coverage in all the modules that have a coverage change, and reveals the next
porting bug:
```
...
File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 740, in __init__
self.config.write_config_file("my_nodeid", b32encode(self.nodeid).lower() + "\n")
builtins.TypeError: can't concat str to bytes
```
There are no regressions I see under Python 2, so this seems like the right fix to this
particular issue AFAICT.
```diff
--- ../../.tox/make-test-py3-all-old.log 2020-10-04 15:59:59.355692613 -0700
+++ ../../.tox/make-test-py3-all-new.log 2020-10-04 16:59:27.870208496 -0700
@@ -1206,7 +1206,7 @@
test_location2 ... [ERROR]
test_location_auto_and_explicit ... [ERROR]
test_location_not_set ... [ERROR]
- test_logdir_is_str ... [ERROR]
+ test_logdir_is_str ... [FAIL]
test_private_config ... [ERROR]
test_private_config_missing ... [OK]
test_private_config_unreadable ... [ERROR]
@@ -2254,7 +2254,7 @@
yield create_introducer(basedir)
File "/home/rpatterson/src/work/sfu/tahoe-lafs/.tox/py36-coverage/lib/python3.6/site-packages/twisted/trial/_synctest.py", line 355, in __exit__
self._expectedName, reason.getTraceback()),
-twisted.trial.unittest.FailTest: builtins.AttributeError raised instead of ValueError:
+twisted.trial.unittest.FailTest: builtins.TypeError raised instead of ValueError:
Traceback (most recent call last):
File "/home/rpatterson/src/work/sfu/tahoe-lafs/.tox/py36-coverage/lib/python3.6/site-packages/twisted/internet/defer.py", line 1529, in _cancellableInlineCallbacks
_inlineCallbacks(None, g, status)
@@ -2271,11 +2271,9 @@
tor_provider,
File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/introducer/server.py", line 87, in __init__
node.Node.__init__(self, config, main_tub, control_tub, i2p_provider, tor_provider)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 734, in __init__
- self.setup_logging()
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 826, in setup_logging
- newmeth = types.UnboundMethodType(formatTimeTahoeStyle, ob, ob.__class__)
-builtins.AttributeError: module 'types' has no attribute 'UnboundMethodType'
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 740, in __init__
+ self.config.write_config_file("my_nodeid", b32encode(self.nodeid).lower() + "\n")
+builtins.TypeError: can't concat str to bytes
allmydata.test.test_node.IntroducerNotListening.test_port_none_introducer
@@ -2307,6 +2305,30 @@
===============================================================================
[FAIL]
Traceback (most recent call last):
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 340, in test_logdir_is_str
+ yield client.create_client(basedir)
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/.tox/py36-coverage/lib/python3.6/site-packages/twisted/internet/defer.py", line 1418, in _inlineCallbacks
+ result = g.send(result)
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/client.py", line 298, in create_client_from_config
+ storage_broker,
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/client.py", line 676, in __init__
+ node.Node.__init__(self, config, main_tub, control_tub, i2p_provider, tor_provider)
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 734, in __init__
+ self.setup_logging()
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 842, in setup_logging
+ foolscap.logging.log.setLogDir(incident_dir.encode(get_filesystem_encoding()))
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 336, in call_setLogDir
+ self.failUnless(isinstance(logdir, str), logdir)
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/.tox/py36-coverage/lib/python3.6/site-packages/twisted/trial/_synctest.py", line 397, in assertTrue
+ super(_Assertions, self).assertTrue(condition, msg)
+ File "/usr/lib/python3.6/unittest/case.py", line 682, in assertTrue
+ raise self.failureException(msg)
+twisted.trial.unittest.FailTest: False is not true : b'/home/rpatterson/src/work/sfu/tahoe-lafs/_trial_temp/test_node/test_logdir_is_str/logs/incidents'
+
+allmydata.test.test_node.TestCase.test_logdir_is_str
+===============================================================================
+[FAIL]
+Traceback (most recent call last):
File "/home/rpatterson/src/work/sfu/tahoe-lafs/.tox/py36-coverage/lib/python3.6/site-packages/twisted/internet/defer.py", line 1418, in _inlineCallbacks
result = g.send(result)
File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_runner.py", line 192, in test_eliot_destination
@@ -5933,11 +5955,9 @@
storage_broker,
File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/client.py", line 676, in __init__
node.Node.__init__(self, config, main_tub, control_tub, i2p_provider, tor_provider)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 734, in __init__
- self.setup_logging()
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 826, in setup_logging
- newmeth = types.UnboundMethodType(formatTimeTahoeStyle, ob, ob.__class__)
-builtins.AttributeError: module 'types' has no attribute 'UnboundMethodType'
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 740, in __init__
+ self.config.write_config_file("my_nodeid", b32encode(self.nodeid).lower() + "\n")
+builtins.TypeError: can't concat str to bytes
allmydata.test.test_client.Basic.test_web_apiauthtoken
===============================================================================
@@ -7130,8 +7150,12 @@
===============================================================================
[ERROR]
Traceback (most recent call last):
-Failure: testtools.testresult.real._StringException: Empty attachments:
- twisted-log
+Failure: testtools.testresult.real._StringException: twisted-log: {{{
+2020-10-04 23:57:37.636Z [-] Foolscap logging initialized
+2020-10-04 23:57:37.636Z [-] Note to developers: twistd.log does not receive very much.
+2020-10-04 23:57:37.636Z [-] Use 'flogtool tail -c NODEDIR/private/logport.furl' instead
+2020-10-04 23:57:37.636Z [-] and read docs/logging.rst
+}}}
Traceback (most recent call last):
File "/home/rpatterson/src/work/sfu/tahoe-lafs/.tox/py36-coverage/lib/python3.6/site-packages/twisted/internet/defer.py", line 1416, in _inlineCallbacks
@@ -7144,19 +7168,21 @@
tor_provider,
File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/introducer/server.py", line 87, in __init__
node.Node.__init__(self, config, main_tub, control_tub, i2p_provider, tor_provider)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 734, in __init__
- self.setup_logging()
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 826, in setup_logging
- newmeth = types.UnboundMethodType(formatTimeTahoeStyle, ob, ob.__class__)
-AttributeError: module 'types' has no attribute 'UnboundMethodType'
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 740, in __init__
+ self.config.write_config_file("my_nodeid", b32encode(self.nodeid).lower() + "\n")
+TypeError: can't concat str to bytes
allmydata.test.test_introducer.Node.test_create
===============================================================================
[ERROR]
Traceback (most recent call last):
-Failure: testtools.testresult.real._StringException: Empty attachments:
- twisted-log
+Failure: testtools.testresult.real._StringException: twisted-log: {{{
+2020-10-04 23:57:38.284Z [-] Foolscap logging initialized
+2020-10-04 23:57:38.284Z [-] Note to developers: twistd.log does not receive very much.
+2020-10-04 23:57:38.284Z [-] Use 'flogtool tail -c NODEDIR/private/logport.furl' instead
+2020-10-04 23:57:38.284Z [-] and read docs/logging.rst
+}}}
Traceback (most recent call last):
File "/home/rpatterson/src/work/sfu/tahoe-lafs/.tox/py36-coverage/lib/python3.6/site-packages/twisted/internet/defer.py", line 1416, in _inlineCallbacks
@@ -7169,11 +7195,9 @@
tor_provider,
File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/introducer/server.py", line 87, in __init__
node.Node.__init__(self, config, main_tub, control_tub, i2p_provider, tor_provider)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 734, in __init__
- self.setup_logging()
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 826, in setup_logging
- newmeth = types.UnboundMethodType(formatTimeTahoeStyle, ob, ob.__class__)
-AttributeError: module 'types' has no attribute 'UnboundMethodType'
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 740, in __init__
+ self.config.write_config_file("my_nodeid", b32encode(self.nodeid).lower() + "\n")
+TypeError: can't concat str to bytes
allmydata.test.test_introducer.Node.test_furl
@@ -7540,24 +7564,6 @@
===============================================================================
[ERROR]
Traceback (most recent call last):
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 340, in test_logdir_is_str
- yield client.create_client(basedir)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/.tox/py36-coverage/lib/python3.6/site-packages/twisted/internet/defer.py", line 1418, in _inlineCallbacks
- result = g.send(result)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/client.py", line 298, in create_client_from_config
- storage_broker,
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/client.py", line 676, in __init__
- node.Node.__init__(self, config, main_tub, control_tub, i2p_provider, tor_provider)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 734, in __init__
- self.setup_logging()
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 826, in setup_logging
- newmeth = types.UnboundMethodType(formatTimeTahoeStyle, ob, ob.__class__)
-builtins.AttributeError: module 'types' has no attribute 'UnboundMethodType'
-
-allmydata.test.test_node.TestCase.test_logdir_is_str
-===============================================================================
-[ERROR]
-Traceback (most recent call last):
File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 259, in test_private_config
config = config_from_string(basedir, "", "")
File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 209, in config_from_string
@@ -8446,11 +8452,9 @@
tor_provider,
File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/introducer/server.py", line 87, in __init__
node.Node.__init__(self, config, main_tub, control_tub, i2p_provider, tor_provider)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 734, in __init__
- self.setup_logging()
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 826, in setup_logging
- newmeth = types.UnboundMethodType(formatTimeTahoeStyle, ob, ob.__class__)
-builtins.AttributeError: module 'types' has no attribute 'UnboundMethodType'
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 740, in __init__
+ self.config.write_config_file("my_nodeid", b32encode(self.nodeid).lower() + "\n")
+builtins.TypeError: can't concat str to bytes
allmydata.test.test_system.Connections.test_rref
allmydata.test.test_system.SystemTest.test_filesystem
@@ -8565,11 +8569,9 @@
tor_provider,
File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/introducer/server.py", line 87, in __init__
node.Node.__init__(self, config, main_tub, control_tub, i2p_provider, tor_provider)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 734, in __init__
- self.setup_logging()
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 826, in setup_logging
- newmeth = types.UnboundMethodType(formatTimeTahoeStyle, ob, ob.__class__)
-builtins.AttributeError: module 'types' has no attribute 'UnboundMethodType'
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 740, in __init__
+ self.config.write_config_file("my_nodeid", b32encode(self.nodeid).lower() + "\n")
+builtins.TypeError: can't concat str to bytes
allmydata.test.web.test_introducer.IntroducerWeb.test_basic_information
===============================================================================
@@ -8587,11 +8589,9 @@
tor_provider,
File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/introducer/server.py", line 87, in __init__
node.Node.__init__(self, config, main_tub, control_tub, i2p_provider, tor_provider)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 734, in __init__
- self.setup_logging()
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 826, in setup_logging
- newmeth = types.UnboundMethodType(formatTimeTahoeStyle, ob, ob.__class__)
-builtins.AttributeError: module 'types' has no attribute 'UnboundMethodType'
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 740, in __init__
+ self.config.write_config_file("my_nodeid", b32encode(self.nodeid).lower() + "\n")
+builtins.TypeError: can't concat str to bytes
allmydata.test.web.test_introducer.IntroducerWeb.test_json_front_page
===============================================================================
@@ -8609,11 +8609,9 @@
tor_provider,
File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/introducer/server.py", line 87, in __init__
node.Node.__init__(self, config, main_tub, control_tub, i2p_provider, tor_provider)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 734, in __init__
- self.setup_logging()
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 826, in setup_logging
- newmeth = types.UnboundMethodType(formatTimeTahoeStyle, ob, ob.__class__)
-builtins.AttributeError: module 'types' has no attribute 'UnboundMethodType'
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 740, in __init__
+ self.config.write_config_file("my_nodeid", b32encode(self.nodeid).lower() + "\n")
+builtins.TypeError: can't concat str to bytes
allmydata.test.web.test_introducer.IntroducerWeb.test_tahoe_css
===============================================================================
@@ -8631,11 +8629,9 @@
tor_provider,
File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/introducer/server.py", line 87, in __init__
node.Node.__init__(self, config, main_tub, control_tub, i2p_provider, tor_provider)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 734, in __init__
- self.setup_logging()
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 826, in setup_logging
- newmeth = types.UnboundMethodType(formatTimeTahoeStyle, ob, ob.__class__)
-builtins.AttributeError: module 'types' has no attribute 'UnboundMethodType'
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 740, in __init__
+ self.config.write_config_file("my_nodeid", b32encode(self.nodeid).lower() + "\n")
+builtins.TypeError: can't concat str to bytes
allmydata.test.web.test_introducer.IntroducerWeb.test_welcome
===============================================================================
@@ -8721,7 +8717,7 @@
-------------------------------------------------------------------------------
Ran 1300 tests in ###.###s
-FAILED (skips=42, expectedFailures=1, failures=34, errors=532, successes=707)
+FAILED (skips=42, expectedFailures=1, failures=35, errors=531, successes=707)
Unknown error
Traceback (most recent call last):
@@ -8740,11 +8736,9 @@
storage_broker,
File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/client.py", line 676, in __init__
node.Node.__init__(self, config, main_tub, control_tub, i2p_provider, tor_provider)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 734, in __init__
- self.setup_logging()
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 826, in setup_logging
- newmeth = types.UnboundMethodType(formatTimeTahoeStyle, ob, ob.__class__)
-builtins.AttributeError: module 'types' has no attribute 'UnboundMethodType'
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 740, in __init__
+ self.config.write_config_file("my_nodeid", b32encode(self.nodeid).lower() + "\n")
+builtins.TypeError: can't concat str to bytes
+ test_exit=1
+ ./.tox/py36-coverage/bin/coverage combine
+ ./.tox/py36-coverage/bin/coverage html
@@ -8775,11 +8769,11 @@
src/allmydata/immutable/downloader/__init__.py 7 1 2 1 78% 12, 11->12
src/allmydata/immutable/downloader/common.py 14 1 2 1 88% 12, 11->12
src/allmydata/immutable/downloader/fetcher.py 147 1 56 1 99% 12, 11->12
-src/allmydata/immutable/downloader/finder.py 143 11 40 5 91% 11, 88-89, 108, 115, 170-173, 231-232, 10->11, 87->88, 107->108, 113->115, 165->exit
+src/allmydata/immutable/downloader/finder.py 143 9 40 5 92% 11, 88-89, 108, 115, 170-173, 10->11, 87->88, 107->108, 113->115, 165->exit
src/allmydata/immutable/downloader/node.py 282 9 66 9 94% 11, 170-172, 224-235, 271, 10->11, 43->exit, 60->68, 165->169, 169->170, 256->exit, 270->271, 517->exit, 537->exit
src/allmydata/immutable/downloader/segmentation.py 118 1 22 1 99% 11, 10->11
-src/allmydata/immutable/downloader/share.py 453 23 154 11 94% 11, 210, 239-250, 289-290, 354, 399-400, 430-437, 518, 722-725, 775, 862, 10->11, 209->210, 222->239, 288->289, 352->354, 397->399, 515->518, 660->663, 710->722, 762->exit, 774->775
-src/allmydata/immutable/downloader/status.py 154 12 36 1 93% 11, 65-67, 223, 226, 230, 232, 234, 274, 285, 287, 10->11
+src/allmydata/immutable/downloader/share.py 453 15 154 8 96% 11, 210, 248-250, 354, 430-437, 518, 722-725, 862, 10->11, 209->210, 239->248, 352->354, 515->518, 660->663, 710->722, 762->exit
+src/allmydata/immutable/downloader/status.py 154 9 36 1 95% 11, 223, 226, 230, 232, 234, 274, 285, 287, 10->11
src/allmydata/immutable/encode.py 421 13 124 10 95% 114, 197-200, 278-280, 405, 412, 462, 509, 562, 687, 102->104, 113->114, 195->197, 404->405, 411->412, 461->462, 499->509, 505->511, 561->562, 685->687
src/allmydata/immutable/filenode.py 196 48 30 5 72% 77-78, 83, 85, 88, 94-101, 104-124, 127-172, 254, 258, 315, 40->42, 224->227, 227->229, 251->254, 257->258
src/allmydata/immutable/happiness_upload.py 214 1 132 3 99% 15, 13->15, 213->211, 280->279
@@ -8802,7 +8796,7 @@
src/allmydata/mutable/repairer.py 57 37 18 0 29% 13, 15, 17, 19, 29-34, 65-71, 74-126, 129-131
src/allmydata/mutable/retrieve.py 489 123 120 33 71% 46, 48, 50, 52, 56, 58, 60, 62, 64, 89-90, 133, 186-193, 204-208, 211-212, 224-226, 231, 240, 251, 312, 318, 344-354, 377, 385-386, 399-400, 425-434, 490, 501, 515-516, 529-540, 564-578, 591-592, 629-630, 653-654, 674-675, 681-682, 698, 712-729, 758-760, 765, 772-774, 790-792, 871, 883, 909-910, 919-941, 965-966, 981-994, 999-1005, 129->133, 167->169, 169->171, 201->204, 223->224, 230->231, 237->239, 239->240, 243->247, 249->251, 309->312, 317->318, 376->377, 381->385, 391->394, 396->399, 424->425, 489->490, 499->501, 514->515, 590->591, 628->629, 652->653, 673->674, 677->687, 680->681, 687->694, 694->698, 755->764, 764->765, 868->871, 880->883, 964->965
src/allmydata/mutable/servermap.py 612 240 186 26 56% 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 74, 130-139, 142, 148, 159-161, 175, 177, 183, 186-199, 206, 213, 217-220, 231, 234-238, 243-252, 255-259, 315, 328-350, 358-363, 370-372, 379, 429, 433, 443-447, 495, 498, 506-508, 514-516, 569-570, 603-611, 623-638, 718-721, 732-741, 792, 796, 803-804, 850-851, 872-874, 911-915, 929-945, 961-975, 982-999, 1003-1013, 1043-1045, 1050-1052, 1060-1064, 1069-1070, 1093-1100, 1106-1186, 1214-1215, 1232-1233, 313->315, 427->429, 432->433, 439->443, 459->461, 493->495, 497->498, 504->506, 509->514, 566->569, 597->603, 687->exit, 702->exit, 710->exit, 717->718, 727->732, 759->exit, 791->792, 795->796, 869->872, 1039->1043, 1047->1050, 1059->1060, 1066->1069, 1092->1093, 1213->1214
-src/allmydata/node.py 388 82 146 33 76% 120, 132, 190, 241, 243-245, 278, 284, 294-295, 303-306, 315, 320, 339, 341, 361, 393-396, 422, 449, 453, 490, 493, 500, 511-512, 548, 566, 574, 581, 583, 590-591, 601, 612, 629-633, 679, 681, 738-741, 747, 756, 764, 792-805, 808-809, 814-815, 827-846, 189->190, 240->241, 242->243, 277->278, 314->315, 319->320, 338->339, 340->341, 360->361, 391->393, 421->422, 448->449, 451->453, 489->490, 492->493, 499->500, 510->511, 547->548, 565->566, 573->574, 580->581, 582->583, 589->590, 600->601, 611->612, 622->629, 673->679, 680->681, 737->738, 746->747, 763->764, 821->830, 823->821
+src/allmydata/node.py 388 66 146 33 80% 120, 132, 190, 241, 243-245, 278, 284, 294-295, 303-306, 315, 320, 339, 341, 361, 393-396, 422, 449, 453, 490, 493, 500, 511-512, 548, 566, 574, 581, 583, 590-591, 601, 612, 629-633, 679, 681, 741, 747, 756, 764, 792-805, 808-809, 814-815, 832, 837, 189->190, 240->241, 242->243, 277->278, 314->315, 319->320, 338->339, 340->341, 360->361, 391->393, 421->422, 448->449, 451->453, 489->490, 492->493, 499->500, 510->511, 547->548, 565->566, 573->574, 580->581, 582->583, 589->590, 600->601, 611->612, 622->629, 673->679, 680->681, 746->747, 763->764, 823->821, 831->832, 835->837
src/allmydata/nodemaker.py 97 23 38 10 70% 49, 61, 66, 70, 81, 94, 107-115, 130-138, 141-150, 57->61, 65->66, 69->70, 79->81, 86->95, 90->94, 104->107, 124->exit, 129->130, 129->133
src/allmydata/scripts/admin.py 51 20 2 1 60% 9-14, 25, 28, 31-37, 40-46, 57, 59, 61-66, 56->57
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
@@ -8837,7 +8831,7 @@
src/allmydata/storage/common.py 24 1 4 2 89% 11, 10->11, 36->39
src/allmydata/storage/crawler.py 222 1 64 3 99% 16, 13->16, 96->99, 496->505
src/allmydata/storage/expirer.py 240 1 81 2 99% 9, 7->9, 250->exitp
-src/allmydata/storage/immutable.py 198 2 48 6 97% 12, 101, 11->12, 100->101, 142->140, 155->160, 187->197, 273->exit
+src/allmydata/storage/immutable.py 198 1 48 5 98% 12, 11->12, 142->140, 155->160, 187->197, 273->exit
src/allmydata/storage/lease.py 35 1 4 1 95% 12, 11->12
src/allmydata/storage/mutable.py 289 8 90 6 96% 12, 162, 252, 289, 362-367, 11->12, 160->162, 247->252, 307->311, 354->362, 448->exit
src/allmydata/storage/server.py 371 9 120 9 96% 13, 92, 222, 243, 329, 349, 375, 422-423, 10->13, 91->92, 221->222, 241->243, 289->300, 317->329, 325->305, 346->349, 374->375
@@ -8899,7 +8893,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 27477 11798 8244 605 54%
+TOTAL 27477 11768 8244 601 54%
18 files skipped due to complete coverage.
+ '[' '!' -z 1 ']'
```
2020-10-04 20:56:14 -07:00
Ross Patterson
baa36157b6
feat(py3): Update Python internal data model refs
...
As of Python 2.7, some of [the `func_*` and `im_*` attributes also can be accessed
through their corresponding `__*__` attributes for Python 3
compatibility](https://docs.python.org/2/reference/datamodel.html?highlight=__self__#the-standard-type-hierarchy ).
I searched for all such occurrences and this is all that needed changing AFAICT.
Converts 9 test errors to errors with new exceptions and improves Python 3 test coverage
a smidge:
```diff
--- ../../.tox/make-test-py3-all-old.log 2020-10-04 15:16:34.054975263 -0700
+++ ../../.tox/make-test-py3-all-new.log 2020-10-04 15:59:59.355692613 -0700
@@ -2273,9 +2273,9 @@
node.Node.__init__(self, config, main_tub, control_tub, i2p_provider, tor_provider)
File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 734, in __init__
self.setup_logging()
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 824, in setup_logging
- ob = o.im_self
-builtins.AttributeError: 'function' object has no attribute 'im_self'
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 826, in setup_logging
+ newmeth = types.UnboundMethodType(formatTimeTahoeStyle, ob, ob.__class__)
+builtins.AttributeError: module 'types' has no attribute 'UnboundMethodType'
allmydata.test.test_node.IntroducerNotListening.test_port_none_introducer
@@ -5935,9 +5935,9 @@
node.Node.__init__(self, config, main_tub, control_tub, i2p_provider, tor_provider)
File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 734, in __init__
self.setup_logging()
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 824, in setup_logging
- ob = o.im_self
-builtins.AttributeError: 'function' object has no attribute 'im_self'
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 826, in setup_logging
+ newmeth = types.UnboundMethodType(formatTimeTahoeStyle, ob, ob.__class__)
+builtins.AttributeError: module 'types' has no attribute 'UnboundMethodType'
allmydata.test.test_client.Basic.test_web_apiauthtoken
===============================================================================
@@ -7146,9 +7146,9 @@
node.Node.__init__(self, config, main_tub, control_tub, i2p_provider, tor_provider)
File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 734, in __init__
self.setup_logging()
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 824, in setup_logging
- ob = o.im_self
-AttributeError: 'function' object has no attribute 'im_self'
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 826, in setup_logging
+ newmeth = types.UnboundMethodType(formatTimeTahoeStyle, ob, ob.__class__)
+AttributeError: module 'types' has no attribute 'UnboundMethodType'
allmydata.test.test_introducer.Node.test_create
@@ -7171,9 +7171,9 @@
node.Node.__init__(self, config, main_tub, control_tub, i2p_provider, tor_provider)
File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 734, in __init__
self.setup_logging()
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 824, in setup_logging
- ob = o.im_self
-AttributeError: 'function' object has no attribute 'im_self'
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 826, in setup_logging
+ newmeth = types.UnboundMethodType(formatTimeTahoeStyle, ob, ob.__class__)
+AttributeError: module 'types' has no attribute 'UnboundMethodType'
allmydata.test.test_introducer.Node.test_furl
@@ -7550,9 +7550,9 @@
node.Node.__init__(self, config, main_tub, control_tub, i2p_provider, tor_provider)
File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 734, in __init__
self.setup_logging()
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 824, in setup_logging
- ob = o.im_self
-builtins.AttributeError: 'function' object has no attribute 'im_self'
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 826, in setup_logging
+ newmeth = types.UnboundMethodType(formatTimeTahoeStyle, ob, ob.__class__)
+builtins.AttributeError: module 'types' has no attribute 'UnboundMethodType'
allmydata.test.test_node.TestCase.test_logdir_is_str
===============================================================================
@@ -8448,9 +8448,9 @@
node.Node.__init__(self, config, main_tub, control_tub, i2p_provider, tor_provider)
File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 734, in __init__
self.setup_logging()
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 824, in setup_logging
- ob = o.im_self
-builtins.AttributeError: 'function' object has no attribute 'im_self'
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 826, in setup_logging
+ newmeth = types.UnboundMethodType(formatTimeTahoeStyle, ob, ob.__class__)
+builtins.AttributeError: module 'types' has no attribute 'UnboundMethodType'
allmydata.test.test_system.Connections.test_rref
allmydata.test.test_system.SystemTest.test_filesystem
@@ -8567,9 +8567,9 @@
node.Node.__init__(self, config, main_tub, control_tub, i2p_provider, tor_provider)
File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 734, in __init__
self.setup_logging()
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 824, in setup_logging
- ob = o.im_self
-builtins.AttributeError: 'function' object has no attribute 'im_self'
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 826, in setup_logging
+ newmeth = types.UnboundMethodType(formatTimeTahoeStyle, ob, ob.__class__)
+builtins.AttributeError: module 'types' has no attribute 'UnboundMethodType'
allmydata.test.web.test_introducer.IntroducerWeb.test_basic_information
===============================================================================
@@ -8589,9 +8589,9 @@
node.Node.__init__(self, config, main_tub, control_tub, i2p_provider, tor_provider)
File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 734, in __init__
self.setup_logging()
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 824, in setup_logging
- ob = o.im_self
-builtins.AttributeError: 'function' object has no attribute 'im_self'
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 826, in setup_logging
+ newmeth = types.UnboundMethodType(formatTimeTahoeStyle, ob, ob.__class__)
+builtins.AttributeError: module 'types' has no attribute 'UnboundMethodType'
allmydata.test.web.test_introducer.IntroducerWeb.test_json_front_page
===============================================================================
@@ -8611,9 +8611,9 @@
node.Node.__init__(self, config, main_tub, control_tub, i2p_provider, tor_provider)
File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 734, in __init__
self.setup_logging()
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 824, in setup_logging
- ob = o.im_self
-builtins.AttributeError: 'function' object has no attribute 'im_self'
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 826, in setup_logging
+ newmeth = types.UnboundMethodType(formatTimeTahoeStyle, ob, ob.__class__)
+builtins.AttributeError: module 'types' has no attribute 'UnboundMethodType'
allmydata.test.web.test_introducer.IntroducerWeb.test_tahoe_css
===============================================================================
@@ -8633,9 +8633,9 @@
node.Node.__init__(self, config, main_tub, control_tub, i2p_provider, tor_provider)
File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 734, in __init__
self.setup_logging()
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 824, in setup_logging
- ob = o.im_self
-builtins.AttributeError: 'function' object has no attribute 'im_self'
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 826, in setup_logging
+ newmeth = types.UnboundMethodType(formatTimeTahoeStyle, ob, ob.__class__)
+builtins.AttributeError: module 'types' has no attribute 'UnboundMethodType'
allmydata.test.web.test_introducer.IntroducerWeb.test_welcome
===============================================================================
@@ -8742,9 +8742,9 @@
node.Node.__init__(self, config, main_tub, control_tub, i2p_provider, tor_provider)
File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 734, in __init__
self.setup_logging()
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 824, in setup_logging
- ob = o.im_self
-builtins.AttributeError: 'function' object has no attribute 'im_self'
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 826, in setup_logging
+ newmeth = types.UnboundMethodType(formatTimeTahoeStyle, ob, ob.__class__)
+builtins.AttributeError: module 'types' has no attribute 'UnboundMethodType'
+ test_exit=1
+ ./.tox/py36-coverage/bin/coverage combine
+ ./.tox/py36-coverage/bin/coverage html
@@ -8802,7 +8802,7 @@
src/allmydata/mutable/repairer.py 57 37 18 0 29% 13, 15, 17, 19, 29-34, 65-71, 74-126, 129-131
src/allmydata/mutable/retrieve.py 489 123 120 33 71% 46, 48, 50, 52, 56, 58, 60, 62, 64, 89-90, 133, 186-193, 204-208, 211-212, 224-226, 231, 240, 251, 312, 318, 344-354, 377, 385-386, 399-400, 425-434, 490, 501, 515-516, 529-540, 564-578, 591-592, 629-630, 653-654, 674-675, 681-682, 698, 712-729, 758-760, 765, 772-774, 790-792, 871, 883, 909-910, 919-941, 965-966, 981-994, 999-1005, 129->133, 167->169, 169->171, 201->204, 223->224, 230->231, 237->239, 239->240, 243->247, 249->251, 309->312, 317->318, 376->377, 381->385, 391->394, 396->399, 424->425, 489->490, 499->501, 514->515, 590->591, 628->629, 652->653, 673->674, 677->687, 680->681, 687->694, 694->698, 755->764, 764->765, 868->871, 880->883, 964->965
src/allmydata/mutable/servermap.py 612 240 186 26 56% 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 74, 130-139, 142, 148, 159-161, 175, 177, 183, 186-199, 206, 213, 217-220, 231, 234-238, 243-252, 255-259, 315, 328-350, 358-363, 370-372, 379, 429, 433, 443-447, 495, 498, 506-508, 514-516, 569-570, 603-611, 623-638, 718-721, 732-741, 792, 796, 803-804, 850-851, 872-874, 911-915, 929-945, 961-975, 982-999, 1003-1013, 1043-1045, 1050-1052, 1060-1064, 1069-1070, 1093-1100, 1106-1186, 1214-1215, 1232-1233, 313->315, 427->429, 432->433, 439->443, 459->461, 493->495, 497->498, 504->506, 509->514, 566->569, 597->603, 687->exit, 702->exit, 710->exit, 717->718, 727->732, 759->exit, 791->792, 795->796, 869->872, 1039->1043, 1047->1050, 1059->1060, 1066->1069, 1092->1093, 1213->1214
-src/allmydata/node.py 388 84 146 33 75% 120, 132, 190, 241, 243-245, 278, 284, 294-295, 303-306, 315, 320, 339, 341, 361, 393-396, 422, 449, 453, 490, 493, 500, 511-512, 548, 566, 574, 581, 583, 590-591, 601, 612, 629-633, 679, 681, 738-741, 747, 756, 764, 792-805, 808-809, 814-815, 825-846, 189->190, 240->241, 242->243, 277->278, 314->315, 319->320, 338->339, 340->341, 360->361, 391->393, 421->422, 448->449, 451->453, 489->490, 492->493, 499->500, 510->511, 547->548, 565->566, 573->574, 580->581, 582->583, 589->590, 600->601, 611->612, 622->629, 673->679, 680->681, 737->738, 746->747, 763->764, 821->830, 823->821
+src/allmydata/node.py 388 82 146 33 76% 120, 132, 190, 241, 243-245, 278, 284, 294-295, 303-306, 315, 320, 339, 341, 361, 393-396, 422, 449, 453, 490, 493, 500, 511-512, 548, 566, 574, 581, 583, 590-591, 601, 612, 629-633, 679, 681, 738-741, 747, 756, 764, 792-805, 808-809, 814-815, 827-846, 189->190, 240->241, 242->243, 277->278, 314->315, 319->320, 338->339, 340->341, 360->361, 391->393, 421->422, 448->449, 451->453, 489->490, 492->493, 499->500, 510->511, 547->548, 565->566, 573->574, 580->581, 582->583, 589->590, 600->601, 611->612, 622->629, 673->679, 680->681, 737->738, 746->747, 763->764, 821->830, 823->821
src/allmydata/nodemaker.py 97 23 38 10 70% 49, 61, 66, 70, 81, 94, 107-115, 130-138, 141-150, 57->61, 65->66, 69->70, 79->81, 86->95, 90->94, 104->107, 124->exit, 129->130, 129->133
src/allmydata/scripts/admin.py 51 20 2 1 60% 9-14, 25, 28, 31-37, 40-46, 57, 59, 61-66, 56->57
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
@@ -8899,7 +8899,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 27477 11800 8244 605 54%
+TOTAL 27477 11798 8244 605 54%
18 files skipped due to complete coverage.
+ '[' '!' -z 1 ']'
```
2020-10-04 16:01:32 -07:00
Ross Patterson
b2332b5bf1
fix(py3): Duplicate section name that py3 catches
...
Python 3 raises an exception that Python 2 doesn't and as such exposes malformed cfg/ini
contents used in the tests.
The test output diff shows that this mostly converts test `DuplicateSectionError` errors
to test errors with different exceptions which is reasonable for the type of fix this
is. It does seem to reduce coverage which I'm guessing is because the malformed
contents were triggering error handling code paths that aren't triggered now, but I
haven't confirmed that. I would think that to cover those cases we should write tests
that do that explicitly rather than accidentally.
```diff
--- ../../.tox/make-test-py3-all-old.log 2020-10-04 15:13:09.670578482 -0700
+++ ../../.tox/make-test-py3-all-new.log 2020-10-04 15:16:34.054975263 -0700
@@ -1835,7 +1835,7 @@
raise self.failureException(msg)
twisted.trial.unittest.FailTest: ['allmydata', 'allmydata.__main__', 'allm[5873 chars]try'] != set() : Some unported modules remain:
Ported files: 96 / 292
-Ported lines: 27978 / 93480
+Ported lines: 27978 / 93482
allmydata.test.test_python3.Python3PortingEffortTests.test_finished_porting
@@ -2166,11 +2166,11 @@
result = result.throwExceptionIntoGenerator(g)
File "/home/rpatterson/src/work/sfu/tahoe-lafs/.tox/py36-coverage/lib/python3.6/site-packages/twisted/python/failure.py", line 512, in throwExceptionIntoGenerator
return g.throw(self.type, self.value, self.tb)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 685, in test_disabled_but_helper
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 687, in test_disabled_but_helper
yield client.create_client(basedir)
File "/home/rpatterson/src/work/sfu/tahoe-lafs/.tox/py36-coverage/lib/python3.6/site-packages/twisted/trial/_synctest.py", line 355, in __exit__
self._expectedName, reason.getTraceback()),
-twisted.trial.unittest.FailTest: configparser.DuplicateSectionError raised instead of ValueError:
+twisted.trial.unittest.FailTest: builtins.NameError raised instead of ValueError:
Traceback (most recent call last):
File "/home/rpatterson/src/work/sfu/tahoe-lafs/.tox/py36-coverage/lib/python3.6/site-packages/twisted/internet/defer.py", line 1529, in _cancellableInlineCallbacks
_inlineCallbacks(None, g, status)
@@ -2178,12 +2178,12 @@
result = result.throwExceptionIntoGenerator(g)
File "/home/rpatterson/src/work/sfu/tahoe-lafs/.tox/py36-coverage/lib/python3.6/site-packages/twisted/python/failure.py", line 512, in throwExceptionIntoGenerator
return g.throw(self.type, self.value, self.tb)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 685, in test_disabled_but_helper
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 687, in test_disabled_but_helper
yield client.create_client(basedir)
--- <exception caught here> ---
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 685, in test_disabled_but_helper
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 687, in test_disabled_but_helper
yield client.create_client(basedir)
-configparser.DuplicateSectionError: While reading from '/home/rpatterson/src/work/sfu/tahoe-lafs/_trial_temp/test_node/test_disabled_but_helper/tahoe.cfg' [line 10]: section 'node' already exists
+builtins.NameError: name 'unicode' is not defined
allmydata.test.test_node.ClientNotListening.test_disabled_but_helper
@@ -2194,11 +2194,11 @@
result = result.throwExceptionIntoGenerator(g)
File "/home/rpatterson/src/work/sfu/tahoe-lafs/.tox/py36-coverage/lib/python3.6/site-packages/twisted/python/failure.py", line 512, in throwExceptionIntoGenerator
return g.throw(self.type, self.value, self.tb)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 668, in test_disabled_but_storage
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 670, in test_disabled_but_storage
yield client.create_client(basedir)
File "/home/rpatterson/src/work/sfu/tahoe-lafs/.tox/py36-coverage/lib/python3.6/site-packages/twisted/trial/_synctest.py", line 355, in __exit__
self._expectedName, reason.getTraceback()),
-twisted.trial.unittest.FailTest: configparser.DuplicateSectionError raised instead of ValueError:
+twisted.trial.unittest.FailTest: builtins.NameError raised instead of ValueError:
Traceback (most recent call last):
File "/home/rpatterson/src/work/sfu/tahoe-lafs/.tox/py36-coverage/lib/python3.6/site-packages/twisted/internet/defer.py", line 1529, in _cancellableInlineCallbacks
_inlineCallbacks(None, g, status)
@@ -2206,12 +2206,12 @@
result = result.throwExceptionIntoGenerator(g)
File "/home/rpatterson/src/work/sfu/tahoe-lafs/.tox/py36-coverage/lib/python3.6/site-packages/twisted/python/failure.py", line 512, in throwExceptionIntoGenerator
return g.throw(self.type, self.value, self.tb)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 668, in test_disabled_but_storage
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 670, in test_disabled_but_storage
yield client.create_client(basedir)
--- <exception caught here> ---
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 668, in test_disabled_but_storage
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 670, in test_disabled_but_storage
yield client.create_client(basedir)
-configparser.DuplicateSectionError: While reading from '/home/rpatterson/src/work/sfu/tahoe-lafs/_trial_temp/test_node/test_disabled_but_storage/tahoe.cfg' [line 10]: section 'node' already exists
+builtins.NameError: name 'unicode' is not defined
allmydata.test.test_node.ClientNotListening.test_disabled_but_storage
@@ -2222,7 +2222,7 @@
result = result.throwExceptionIntoGenerator(g)
File "/home/rpatterson/src/work/sfu/tahoe-lafs/.tox/py36-coverage/lib/python3.6/site-packages/twisted/python/failure.py", line 512, in throwExceptionIntoGenerator
return g.throw(self.type, self.value, self.tb)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 739, in test_create_client_invalid_config
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 741, in test_create_client_invalid_config
yield client.create_client(self.basedir)
File "/home/rpatterson/src/work/sfu/tahoe-lafs/.tox/py36-coverage/lib/python3.6/site-packages/twisted/trial/_synctest.py", line 355, in __exit__
self._expectedName, reason.getTraceback()),
@@ -2234,10 +2234,10 @@
result = result.throwExceptionIntoGenerator(g)
File "/home/rpatterson/src/work/sfu/tahoe-lafs/.tox/py36-coverage/lib/python3.6/site-packages/twisted/python/failure.py", line 512, in throwExceptionIntoGenerator
return g.throw(self.type, self.value, self.tb)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 739, in test_create_client_invalid_config
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 741, in test_create_client_invalid_config
yield client.create_client(self.basedir)
--- <exception caught here> ---
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 739, in test_create_client_invalid_config
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 741, in test_create_client_invalid_config
yield client.create_client(self.basedir)
builtins.TypeError: startswith first arg must be str or a tuple of str, not bytes
@@ -2250,7 +2250,7 @@
result = result.throwExceptionIntoGenerator(g)
File "/home/rpatterson/src/work/sfu/tahoe-lafs/.tox/py36-coverage/lib/python3.6/site-packages/twisted/python/failure.py", line 512, in throwExceptionIntoGenerator
return g.throw(self.type, self.value, self.tb)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 702, in test_port_none_introducer
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 704, in test_port_none_introducer
yield create_introducer(basedir)
File "/home/rpatterson/src/work/sfu/tahoe-lafs/.tox/py36-coverage/lib/python3.6/site-packages/twisted/trial/_synctest.py", line 355, in __exit__
self._expectedName, reason.getTraceback()),
@@ -2262,10 +2262,10 @@
result = result.throwExceptionIntoGenerator(g)
File "/home/rpatterson/src/work/sfu/tahoe-lafs/.tox/py36-coverage/lib/python3.6/site-packages/twisted/python/failure.py", line 512, in throwExceptionIntoGenerator
return g.throw(self.type, self.value, self.tb)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 702, in test_port_none_introducer
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 704, in test_port_none_introducer
yield create_introducer(basedir)
--- <exception caught here> ---
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 702, in test_port_none_introducer
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 704, in test_port_none_introducer
yield create_introducer(basedir)
File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/introducer/server.py", line 76, in create_introducer
tor_provider,
@@ -7432,23 +7432,17 @@
===============================================================================
[ERROR]
Traceback (most recent call last):
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 655, in test_disabled
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 657, in test_disabled
n = yield client.create_client(basedir)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/client.py", line 243, in create_client
- config = read_config(basedir, u"client.port")
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/client.py", line 219, in read_config
- _valid_config=_valid_config(),
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 187, in read_config
- parser = configutil.get_config(config_fname)
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/util/configutil.py", line 50, in get_config
- config.readfp(f)
- File "/usr/lib/python3.6/configparser.py", line 764, in readfp
- self.read_file(fp, source=filename)
- File "/usr/lib/python3.6/configparser.py", line 718, in read_file
- self._read(f, source)
- File "/usr/lib/python3.6/configparser.py", line 1067, in _read
- lineno)
-configparser.DuplicateSectionError: While reading from '/home/rpatterson/src/work/sfu/tahoe-lafs/_trial_temp/test_node/test_disabled/tahoe.cfg' [line 10]: section 'node' already exists
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/.tox/py36-coverage/lib/python3.6/site-packages/twisted/internet/defer.py", line 1418, in _inlineCallbacks
+ result = g.send(result)
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/client.py", line 285, in create_client_from_config
+ introducer_clients = create_introducer_clients(config, main_tub, _introducer_factory)
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/client.py", line 519, in create_introducer_clients
+ introducer_cache_filepath,
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/introducer/client.py", line 29, in __init__
+ assert type(nickname) is unicode
+builtins.NameError: name 'unicode' is not defined
allmydata.test.test_node.ClientNotListening.test_disabled
===============================================================================
@@ -7456,7 +7450,7 @@
Traceback (most recent call last):
File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 577, in test_listen_on_zero
t = FakeTub()
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 549, in __init__
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 548, in __init__
self.tubID = base64.b32encode("foo")
File "/usr/lib/python3.6/base64.py", line 154, in b32encode
s = memoryview(s).tobytes()
@@ -7466,9 +7460,9 @@
===============================================================================
[ERROR]
Traceback (most recent call last):
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 605, in test_multiple_ports
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 606, in test_multiple_ports
t = FakeTub()
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 549, in __init__
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 548, in __init__
self.tubID = base64.b32encode("foo")
File "/usr/lib/python3.6/base64.py", line 154, in b32encode
s = memoryview(s).tobytes()
@@ -7478,9 +7472,9 @@
===============================================================================
[ERROR]
Traceback (most recent call last):
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 624, in test_tor_i2p_listeners
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 626, in test_tor_i2p_listeners
t = FakeTub()
- File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 549, in __init__
+ File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 548, in __init__
self.tubID = base64.b32encode("foo")
File "/usr/lib/python3.6/base64.py", line 154, in b32encode
s = memoryview(s).tobytes()
@@ -8781,11 +8775,11 @@
src/allmydata/immutable/downloader/__init__.py 7 1 2 1 78% 12, 11->12
src/allmydata/immutable/downloader/common.py 14 1 2 1 88% 12, 11->12
src/allmydata/immutable/downloader/fetcher.py 147 1 56 1 99% 12, 11->12
-src/allmydata/immutable/downloader/finder.py 143 9 40 5 92% 11, 88-89, 108, 115, 170-173, 10->11, 87->88, 107->108, 113->115, 165->exit
+src/allmydata/immutable/downloader/finder.py 143 11 40 5 91% 11, 88-89, 108, 115, 170-173, 231-232, 10->11, 87->88, 107->108, 113->115, 165->exit
src/allmydata/immutable/downloader/node.py 282 9 66 9 94% 11, 170-172, 224-235, 271, 10->11, 43->exit, 60->68, 165->169, 169->170, 256->exit, 270->271, 517->exit, 537->exit
src/allmydata/immutable/downloader/segmentation.py 118 1 22 1 99% 11, 10->11
-src/allmydata/immutable/downloader/share.py 453 15 154 8 96% 11, 210, 248-250, 354, 430-437, 518, 722-725, 862, 10->11, 209->210, 239->248, 352->354, 515->518, 660->663, 710->722, 762->exit
-src/allmydata/immutable/downloader/status.py 154 9 36 1 95% 11, 223, 226, 230, 232, 234, 274, 285, 287, 10->11
+src/allmydata/immutable/downloader/share.py 453 23 154 11 94% 11, 210, 239-250, 289-290, 354, 399-400, 430-437, 518, 722-725, 775, 862, 10->11, 209->210, 222->239, 288->289, 352->354, 397->399, 515->518, 660->663, 710->722, 762->exit, 774->775
+src/allmydata/immutable/downloader/status.py 154 12 36 1 93% 11, 65-67, 223, 226, 230, 232, 234, 274, 285, 287, 10->11
src/allmydata/immutable/encode.py 421 13 124 10 95% 114, 197-200, 278-280, 405, 412, 462, 509, 562, 687, 102->104, 113->114, 195->197, 404->405, 411->412, 461->462, 499->509, 505->511, 561->562, 685->687
src/allmydata/immutable/filenode.py 196 48 30 5 72% 77-78, 83, 85, 88, 94-101, 104-124, 127-172, 254, 258, 315, 40->42, 224->227, 227->229, 251->254, 257->258
src/allmydata/immutable/happiness_upload.py 214 1 132 3 99% 15, 13->15, 213->211, 280->279
@@ -8808,7 +8802,7 @@
src/allmydata/mutable/repairer.py 57 37 18 0 29% 13, 15, 17, 19, 29-34, 65-71, 74-126, 129-131
src/allmydata/mutable/retrieve.py 489 123 120 33 71% 46, 48, 50, 52, 56, 58, 60, 62, 64, 89-90, 133, 186-193, 204-208, 211-212, 224-226, 231, 240, 251, 312, 318, 344-354, 377, 385-386, 399-400, 425-434, 490, 501, 515-516, 529-540, 564-578, 591-592, 629-630, 653-654, 674-675, 681-682, 698, 712-729, 758-760, 765, 772-774, 790-792, 871, 883, 909-910, 919-941, 965-966, 981-994, 999-1005, 129->133, 167->169, 169->171, 201->204, 223->224, 230->231, 237->239, 239->240, 243->247, 249->251, 309->312, 317->318, 376->377, 381->385, 391->394, 396->399, 424->425, 489->490, 499->501, 514->515, 590->591, 628->629, 652->653, 673->674, 677->687, 680->681, 687->694, 694->698, 755->764, 764->765, 868->871, 880->883, 964->965
src/allmydata/mutable/servermap.py 612 240 186 26 56% 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 74, 130-139, 142, 148, 159-161, 175, 177, 183, 186-199, 206, 213, 217-220, 231, 234-238, 243-252, 255-259, 315, 328-350, 358-363, 370-372, 379, 429, 433, 443-447, 495, 498, 506-508, 514-516, 569-570, 603-611, 623-638, 718-721, 732-741, 792, 796, 803-804, 850-851, 872-874, 911-915, 929-945, 961-975, 982-999, 1003-1013, 1043-1045, 1050-1052, 1060-1064, 1069-1070, 1093-1100, 1106-1186, 1214-1215, 1232-1233, 313->315, 427->429, 432->433, 439->443, 459->461, 493->495, 497->498, 504->506, 509->514, 566->569, 597->603, 687->exit, 702->exit, 710->exit, 717->718, 727->732, 759->exit, 791->792, 795->796, 869->872, 1039->1043, 1047->1050, 1059->1060, 1066->1069, 1092->1093, 1213->1214
-src/allmydata/node.py 388 84 146 34 75% 120, 132, 190, 241, 243-245, 278, 284, 294-295, 303-306, 315, 320, 339, 341, 361, 393-396, 422, 449, 453, 490, 493, 500, 511-512, 548, 566, 574, 581, 583, 590-591, 601, 612, 629-633, 679, 681, 738-741, 747, 756, 764, 792-805, 808-809, 814-815, 825-846, 189->190, 240->241, 242->243, 277->278, 314->315, 319->320, 338->339, 340->341, 360->361, 391->393, 421->422, 448->449, 451->453, 489->490, 492->493, 499->500, 510->511, 537->535, 547->548, 565->566, 573->574, 580->581, 582->583, 589->590, 600->601, 611->612, 622->629, 673->679, 680->681, 737->738, 746->747, 763->764, 821->830, 823->821
+src/allmydata/node.py 388 84 146 33 75% 120, 132, 190, 241, 243-245, 278, 284, 294-295, 303-306, 315, 320, 339, 341, 361, 393-396, 422, 449, 453, 490, 493, 500, 511-512, 548, 566, 574, 581, 583, 590-591, 601, 612, 629-633, 679, 681, 738-741, 747, 756, 764, 792-805, 808-809, 814-815, 825-846, 189->190, 240->241, 242->243, 277->278, 314->315, 319->320, 338->339, 340->341, 360->361, 391->393, 421->422, 448->449, 451->453, 489->490, 492->493, 499->500, 510->511, 547->548, 565->566, 573->574, 580->581, 582->583, 589->590, 600->601, 611->612, 622->629, 673->679, 680->681, 737->738, 746->747, 763->764, 821->830, 823->821
src/allmydata/nodemaker.py 97 23 38 10 70% 49, 61, 66, 70, 81, 94, 107-115, 130-138, 141-150, 57->61, 65->66, 69->70, 79->81, 86->95, 90->94, 104->107, 124->exit, 129->130, 129->133
src/allmydata/scripts/admin.py 51 20 2 1 60% 9-14, 25, 28, 31-37, 40-46, 57, 59, 61-66, 56->57
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
@@ -8843,7 +8837,7 @@
src/allmydata/storage/common.py 24 1 4 2 89% 11, 10->11, 36->39
src/allmydata/storage/crawler.py 222 1 64 3 99% 16, 13->16, 96->99, 496->505
src/allmydata/storage/expirer.py 240 1 81 2 99% 9, 7->9, 250->exit
-src/allmydata/storage/immutable.py 198 1 48 5 98% 12, 11->12, 142->140, 155->160, 187->197, 273->exit
+src/allmydata/storage/immutable.py 198 2 48 6 97% 12, 101, 11->12, 100->101, 142->140, 155->160, 187->197, 273->exit
src/allmydata/storage/lease.py 35 1 4 1 95% 12, 11->12
src/allmydata/storage/mutable.py 289 8 90 6 96% 12, 162, 252, 289, 362-367, 11->12, 160->162, 247->252, 307->311, 354->362, 448->exit
src/allmydata/storage/server.py 371 9 120 9 96% 13, 92, 222, 243, 329, 349, 375, 422-423, 10->13, 91->92, 221->222, 241->243, 289->300, 317->329, 325->305, 346->349, 374->375
@@ -8905,7 +8899,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 27477 11786 8244 602 54%
+TOTAL 27477 11800 8244 605 54%
18 files skipped due to complete coverage.
+ '[' '!' -z 1 ']'
```
Trac: refs #3455
2020-10-04 15:57:01 -07:00