[Twisted-Python] Twisted 1.0.4 - admin/runtests failures?

Hello, Twisted people. Out of the box (yet I already did `python setup.py install --prefix=/usr, as `root'), `admin/runtests' yields a few errors, as shown below. Should these be expected? Reported? This is over a SuSE 8.1 Linux. `pycrypto' 1.9a6 is installed. 17:21:31 0 pinard@alcyon:/usr/tmp/Twisted-1.0.4 $ admin/runtests ...................................................................................................F........S.................................T..............................................................................................................................T......................................................................................................................................SS...........F.......................................................................................................E................................................................. =============================================================================== SKIPPED: testModules (twisted.test.test_doc.DocCoverage) ------------------------------------------------------------------------------- Activate me when you feel like writing docstrings, and fixing GTK crashing bugs. =============================================================================== SKIPPED: testReadLimit (twisted.test.test_policies.ThrottlingTestCase) ------------------------------------------------------------------------------- Inaccurate tests are worse than no tests. =============================================================================== SKIPPED: testWriteLimit (twisted.test.test_policies.ThrottlingTestCase) ------------------------------------------------------------------------------- Inaccurate tests are worse than no tests. =============================================================================== EXPECTED FAILURE: testStor (twisted.test.test_ftp.FTPClientAndServerTests) ------------------------------------------------------------------------------- Traceback (most recent call last): File "/var/tmp/Twisted-1.0.4/twisted/test/test_ftp.py", line 276, in testStor self.assertEquals(open('HelloThere').read(), expectedContent) FailTest: '' != 'Hello\nHello\nHello\nHello\n' =============================================================================== EXPECTED FAILURE: testSneakyHiddenDoom (twisted.test.test_loopback.LoopbackTCPTestCase) ------------------------------------------------------------------------------- Traceback (most recent call last): File "/var/tmp/Twisted-1.0.4/twisted/test/test_loopback.py", line 77, in testSneakyHiddenDoom LoopbackTestCase.testSneakyHiddenDoom(self) File "/var/tmp/Twisted-1.0.4/twisted/test/test_loopback.py", line 71, in testSneakyHiddenDoom self.assertEquals(c.lines, ['DOOM LINE', 'Hello 1', 'Hello 2', 'Hello 3']) FailTest: ['DOOM LINE', 'Hello 1', 'Hello 2'] != ['DOOM LINE', 'Hello 1', 'Hello 2', 'Hello 3'] =============================================================================== FAILURE: testModificationTime (twisted.test.test_dirdbm.ShelfTestCase) ------------------------------------------------------------------------------- Traceback (most recent call last): File "/var/tmp/Twisted-1.0.4/twisted/test/test_dirdbm.py", line 114, in testModificationTime self.assert_(0 <= time.time() - self.dbm.getModificationTime("k") < 1) FailTest =============================================================================== FAILURE: testStderr (twisted.test.test_process.PosixProcessTestCase) ------------------------------------------------------------------------------- Traceback (most recent call last): File "/var/tmp/Twisted-1.0.4/twisted/test/test_process.py", line 386, in testStderr self.assertEquals(lsOut, p.errF.getvalue()) FailTest: '/bin/ls: ZZXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX: Aucun fichier ou r\xe9pertoire de ce type\n' != '/bin/ls: ZZXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX: No such file or directory\n' =============================================================================== ERROR: testMulticast (twisted.test.test_udp.MulticastTestCase) ------------------------------------------------------------------------------- Traceback (most recent call last): File "/var/tmp/Twisted-1.0.4/twisted/trial/unittest.py", line 188, in runOneTest method(testCase) File "/var/tmp/Twisted-1.0.4/twisted/test/test_udp.py", line 186, in testMulticast self.assertEquals(self.server.packets[0][0], "hello world") IndexError: list index out of range ------------------------------------------------------------------------------- Ran 587 tests in 100.385s FAILED (failures=2, errors=1, skips=3, expectedFailures=2) -- François Pinard http://www.iro.umontreal.ca/~pinard

On Wed, Apr 23, 2003 at 05:30:00PM -0400, Francois Pinard wrote:
Thanks for the report.
Woops. This is a localization problem. Maybe it should be an expected skip for certain values of LC_LANG? Or maybe we should just not use ls.
Multicast is known to be broken in a few situations. Can you describe your network setup. In particular, do you have a firewall configured, or is the machine performing NAT? Jp -- A sad spectacle. If they be inhabited, what a scope for misery and folly. If they be not inhabited, what a waste of space. -- Thomas Carlyle, looking at the stars -- up 34 days, 19:03, 7 users, load average: 0.31, 0.48, 0.53

Woops. This is a localization problem. Maybe it should be an expected skip for certain values of LC_LANG? Or maybe we should just not use ls.
Hmm, it means popen2 used french while reactor.spawnProcess used english. That test clears the environment before running spawnProcess.. maybe we should let it inherit the complete environment from its parent. Could you try the attached patch and see if it fixes the problem?
I've seen that test fail on machines that don't have any external network interfaces configured (just the loopback interface). My guess is that it has to do with the 'MULTICAST' flag, which isn't usually set on lo. thanks, -Brian Index: twisted/internet/default.py =================================================================== RCS file: /cvs/Twisted/twisted/internet/default.py,v retrieving revision 1.72 diff -u -r1.72 default.py --- twisted/internet/default.py 21 Apr 2003 15:32:15 -0000 1.72 +++ twisted/internet/default.py 23 Apr 2003 22:55:48 -0000 @@ -149,8 +149,10 @@ # IReactorProcess - def spawnProcess(self, processProtocol, executable, args=(), env={}, path=None, - uid=None, gid=None, usePTY = 0): + def spawnProcess(self, processProtocol, executable, args=(), env=None, + path=None, uid=None, gid=None, usePTY=0): + if env == None: + env = os.environ p = platform.getType() if p == 'posix': if usePTY: Index: twisted/internet/interfaces.py =================================================================== RCS file: /cvs/Twisted/twisted/internet/interfaces.py,v retrieving revision 1.78 diff -u -r1.78 interfaces.py --- twisted/internet/interfaces.py 21 Apr 2003 19:53:39 -0000 1.78 +++ twisted/internet/interfaces.py 23 Apr 2003 22:55:49 -0000 @@ -324,7 +324,7 @@ class IReactorProcess(Interface): - def spawnProcess(self, processProtocol, executable, args=(), env={}, path=None, uid=None, gid=None, usePTY=0): + def spawnProcess(self, processProtocol, executable, args=(), env=None, path=None, uid=None, gid=None, usePTY=0): """Spawn a process, with a process protcol. @param processProtocol: a L{ProcessProtocol} instance @@ -337,7 +337,7 @@ executable's name. @param env: the environment variables to pass to the processs; a - dictionary of strings. + dictionary of strings. If 'None', use os.environ. @param path: the path to run the subprocess in - defaults to the current directory. Index: twisted/test/test_process.py =================================================================== RCS file: /cvs/Twisted/twisted/test/test_process.py,v retrieving revision 1.38 diff -u -r1.38 test_process.py --- twisted/test/test_process.py 14 Apr 2003 06:28:27 -0000 1.38 +++ twisted/test/test_process.py 23 Apr 2003 22:55:49 -0000 @@ -378,7 +378,7 @@ if not os.path.exists('/bin/ls'): raise RuntimeError("/bin/ls not found") p = Accumulator() - reactor.spawnProcess(p, '/bin/ls', ["/bin/ls", "ZZXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"], {}, "/tmp", + reactor.spawnProcess(p, '/bin/ls', ["/bin/ls", "ZZXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"], None, "/tmp", usePTY=self.usePTY) while not p.closed: @@ -391,7 +391,7 @@ else: raise RuntimeError("gzip not found in /bin or /usr/bin") s = "there's no place like home!\n" * 3 p = Accumulator() - reactor.spawnProcess(p, cmd, [cmd, "-c"], {}, "/tmp", + reactor.spawnProcess(p, cmd, [cmd, "-c"], None, "/tmp", usePTY=self.usePTY) p.transport.write(s) p.transport.closeStdin()

[Brian Warner]
Woops. This is a localization problem. Maybe it should be an expected skip for certain values of LC_LANG? Or maybe we should just not use ls.
Hmm, it means popen2 used french while reactor.spawnProcess used english. [...] Could you try the attached patch and see if it fixes the problem?
Thanks. Following your suggestion, I re-installed Twisted 1.0.4 with the above patches, and reran `admin/runtests'. The patches apparently solved a few things. Without them, the testing summary was: ----------------------------------------------------------------------> FAILED (failures=2, errors=1, skips=3, expectedFailures=2) ----------------------------------------------------------------------< and now, it is reduced to: ----------------------------------------------------------------------> FAILED (failures=1, skips=3, expectedFailures=2) ----------------------------------------------------------------------< Here is the listing result of what remains: ----------------------------------------------------------------------> ........................................F...................................................................S.................................T..............................................................................................................................T......................................................................................................................................SS..................................................................................................................................................................................... =============================================================================== SKIPPED: testModules (twisted.test.test_doc.DocCoverage) ------------------------------------------------------------------------------- Activate me when you feel like writing docstrings, and fixing GTK crashing bugs. =============================================================================== SKIPPED: testReadLimit (twisted.test.test_policies.ThrottlingTestCase) ------------------------------------------------------------------------------- Inaccurate tests are worse than no tests. =============================================================================== SKIPPED: testWriteLimit (twisted.test.test_policies.ThrottlingTestCase) ------------------------------------------------------------------------------- Inaccurate tests are worse than no tests. =============================================================================== EXPECTED FAILURE: testStor (twisted.test.test_ftp.FTPClientAndServerTests) ------------------------------------------------------------------------------- Traceback (most recent call last): File "/var/tmp/Twisted-1.0.4/twisted/test/test_ftp.py", line 276, in testStor self.assertEquals(open('HelloThere').read(), expectedContent) FailTest: '' != 'Hello\nHello\nHello\nHello\n' =============================================================================== EXPECTED FAILURE: testSneakyHiddenDoom (twisted.test.test_loopback.LoopbackTCPTestCase) ------------------------------------------------------------------------------- Traceback (most recent call last): File "/var/tmp/Twisted-1.0.4/twisted/test/test_loopback.py", line 77, in testSneakyHiddenDoom LoopbackTestCase.testSneakyHiddenDoom(self) File "/var/tmp/Twisted-1.0.4/twisted/test/test_loopback.py", line 71, in testSneakyHiddenDoom self.assertEquals(c.lines, ['DOOM LINE', 'Hello 1', 'Hello 2', 'Hello 3']) FailTest: ['DOOM LINE', 'Hello 1', 'Hello 2'] != ['DOOM LINE', 'Hello 1', 'Hello 2', 'Hello 3'] =============================================================================== FAILURE: testRSA (twisted.test.test_conch.SSHKeysHandlingTestCase) ------------------------------------------------------------------------------- Traceback (most recent call last): File "/var/tmp/Twisted-1.0.4/twisted/test/test_conch.py", line 76, in testRSA self._testKey(publicRSA_openssh, privateRSA_openssh, 'openssh') File "/var/tmp/Twisted-1.0.4/twisted/test/test_conch.py", line 85, in _testKey self._testGenerateKey(privKey, pubKey, privData, pubData, keyType) File "/var/tmp/Twisted-1.0.4/twisted/test/test_conch.py", line 118, in _testGenerateKey self.assertEquals(keys.makePrivateKeyString(privKey, kind=keyType), privData) FailTest: '-----BEGIN RSA PRIVATE KEY-----\nMIIBxwIBAAJhAK8ycfDmDpyZs3+LXwRLy4vA1T6yd/3PZNiPwM+uH8Yx3/YpskSW\n4sbUIZR/ZXzY1CMfuC5qyR+UDUbBaaK3Bwyjk8E02C4eSpkabJZGB0Yr3CUpG4fw\nvgUd7rQ0ueeZlQIBIwJgbh+1VZfr7WftK5lu7MHtqE1S1vPWZQYE3+VUn8yJADyb\nZ4fsZaCrzW9lkIqXkE3GIY+ojdhZhkO1gbG0118sIgphwSWKRxK0mvh6ERxKqIt1\nxJEJO74EykXZV4oNJ8sjAjEAy0pL0EBH6EVS98evDCBtQw22OZT52qXlAwZ2gyTr\niKFVoqjeEjt3SZKKqXHSApP/AjEA3J9r2ZghVhGN6V8DnQrTk24Td0E8hU8AcP0F\nVP+8PQm/g/aXf2QQkQT+omdHVEJrAjAXO7DkmaHRZwIq8j/kIPaLUgYyd20DC6Uk\n6su3N2tgEnAv2MjsJA2iAh55w918ozMCMEukX33NwkllGrZpuBiV/2W/VyGStaoM\ndS4Nm22Zgl4R+IUEFq9VggXV06VlPQbyMwIwJQPp/z+HDpM0ntg9cAo3390laeF0\nk8jwQJ0gL5x0oMYdpOhV0O5Ck/yrsRDCKDZA\n-----END RSA PRIVATE KEY-----' != '-----BEGIN RSA PRIVATE KEY-----\nMIIByAIBAAJhAK8ycfDmDpyZs3+LXwRLy4vA1T6yd/3PZNiPwM+uH8Yx3/YpskSW\n4sbUIZR/ZXzY1CMfuC5qyR+UDUbBaaK3Bwyjk8E02C4eSpkabJZGB0Yr3CUpG4fw\nvgUd7rQ0ueeZlQIBIwJgbh+1VZfr7WftK5lu7MHtqE1S1vPWZQYE3+VUn8yJADyb\nZ4fsZaCrzW9lkIqXkE3GIY+ojdhZhkO1gbG0118sIgphwSW KRxK0mvh6ERxKqIt1\nxJEJO74EykXZV4oNJ8sjAjEA3J9r2ZghVhGN6V8DnQrTk24Td0E8hU8AcP0FVP+8\nPQm/g/aXf2QQkQT+omdHVEJrAjEAy0pL0EBH6EVS98evDCBtQw22OZT52qXlAwZ2\ngyTriKFVoqjeEjt3SZKKqXHSApP/AjBLpF99zcJJZRq2abgYlf9lv1chkrWqDHUu\nDZttmYJeEfiFBBavVYIF1dOlZT0G8jMCMBc7sOSZodFnAiryP+Qg9otSBjJ3bQML\npSTqy7c3a2AScC/YyOwkDaICHnnD3XyjMwIxALRzl0tQEKMXs6hH8ToUdlLROCrP\nEhQ0wahUTCk1gKA4uPD6TMTChavbh4K63OvbKg==\n-----END RSA PRIVATE KEY-----' ------------------------------------------------------------------------------- Ran 587 tests in 98.090s FAILED (failures=1, skips=3, expectedFailures=2) ----------------------------------------------------------------------< -- François Pinard http://www.iro.umontreal.ca/~pinard

[Jp Calderone]
Thanks for the report.
OK. So it was OK to send it. :-)
Woops. This is a localization problem. Maybe it should be an expected skip for certain values of LC_LANG? Or maybe we should just not use ls.
And / or, maybe, the overall testing environment (not the user) should reset LANG, LANGUAGE, LC_LANG, LC_ALL and LC_MESSAGES before proceeding, all to non set, or less ideally, set to empty, to `C' or to `POSIX'.
Wow! All this from a mere "list index out of range"! :-) There is indeed a firewall on the machine I use for testing Twisted, at least on the network card facing the Internet, and masquereding is done for internal machines forwarded from a second network card. I would not think beforehand that localhost as limitations against itself, however, but am never fully sure, I do not often visit the firewall configuration. I naively think that I can access localhost:ANYPORT without the firewall being in the way. I'm willing to revisit the firewall if you have a suggestion for me about how to carefully open it, enough for Twisted to work reliably. I surely could use, for testing Twisted, an internal machine which has no intrinsic firewall, on some other internal network, but this might not be where I want to run it in the long run. Opinions? -- François Pinard http://www.iro.umontreal.ca/~pinard

On Wed, Apr 23, 2003 at 05:30:00PM -0400, Francois Pinard wrote:
Thanks for the report.
Woops. This is a localization problem. Maybe it should be an expected skip for certain values of LC_LANG? Or maybe we should just not use ls.
Multicast is known to be broken in a few situations. Can you describe your network setup. In particular, do you have a firewall configured, or is the machine performing NAT? Jp -- A sad spectacle. If they be inhabited, what a scope for misery and folly. If they be not inhabited, what a waste of space. -- Thomas Carlyle, looking at the stars -- up 34 days, 19:03, 7 users, load average: 0.31, 0.48, 0.53

Woops. This is a localization problem. Maybe it should be an expected skip for certain values of LC_LANG? Or maybe we should just not use ls.
Hmm, it means popen2 used french while reactor.spawnProcess used english. That test clears the environment before running spawnProcess.. maybe we should let it inherit the complete environment from its parent. Could you try the attached patch and see if it fixes the problem?
I've seen that test fail on machines that don't have any external network interfaces configured (just the loopback interface). My guess is that it has to do with the 'MULTICAST' flag, which isn't usually set on lo. thanks, -Brian Index: twisted/internet/default.py =================================================================== RCS file: /cvs/Twisted/twisted/internet/default.py,v retrieving revision 1.72 diff -u -r1.72 default.py --- twisted/internet/default.py 21 Apr 2003 15:32:15 -0000 1.72 +++ twisted/internet/default.py 23 Apr 2003 22:55:48 -0000 @@ -149,8 +149,10 @@ # IReactorProcess - def spawnProcess(self, processProtocol, executable, args=(), env={}, path=None, - uid=None, gid=None, usePTY = 0): + def spawnProcess(self, processProtocol, executable, args=(), env=None, + path=None, uid=None, gid=None, usePTY=0): + if env == None: + env = os.environ p = platform.getType() if p == 'posix': if usePTY: Index: twisted/internet/interfaces.py =================================================================== RCS file: /cvs/Twisted/twisted/internet/interfaces.py,v retrieving revision 1.78 diff -u -r1.78 interfaces.py --- twisted/internet/interfaces.py 21 Apr 2003 19:53:39 -0000 1.78 +++ twisted/internet/interfaces.py 23 Apr 2003 22:55:49 -0000 @@ -324,7 +324,7 @@ class IReactorProcess(Interface): - def spawnProcess(self, processProtocol, executable, args=(), env={}, path=None, uid=None, gid=None, usePTY=0): + def spawnProcess(self, processProtocol, executable, args=(), env=None, path=None, uid=None, gid=None, usePTY=0): """Spawn a process, with a process protcol. @param processProtocol: a L{ProcessProtocol} instance @@ -337,7 +337,7 @@ executable's name. @param env: the environment variables to pass to the processs; a - dictionary of strings. + dictionary of strings. If 'None', use os.environ. @param path: the path to run the subprocess in - defaults to the current directory. Index: twisted/test/test_process.py =================================================================== RCS file: /cvs/Twisted/twisted/test/test_process.py,v retrieving revision 1.38 diff -u -r1.38 test_process.py --- twisted/test/test_process.py 14 Apr 2003 06:28:27 -0000 1.38 +++ twisted/test/test_process.py 23 Apr 2003 22:55:49 -0000 @@ -378,7 +378,7 @@ if not os.path.exists('/bin/ls'): raise RuntimeError("/bin/ls not found") p = Accumulator() - reactor.spawnProcess(p, '/bin/ls', ["/bin/ls", "ZZXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"], {}, "/tmp", + reactor.spawnProcess(p, '/bin/ls', ["/bin/ls", "ZZXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"], None, "/tmp", usePTY=self.usePTY) while not p.closed: @@ -391,7 +391,7 @@ else: raise RuntimeError("gzip not found in /bin or /usr/bin") s = "there's no place like home!\n" * 3 p = Accumulator() - reactor.spawnProcess(p, cmd, [cmd, "-c"], {}, "/tmp", + reactor.spawnProcess(p, cmd, [cmd, "-c"], None, "/tmp", usePTY=self.usePTY) p.transport.write(s) p.transport.closeStdin()

[Brian Warner]
Woops. This is a localization problem. Maybe it should be an expected skip for certain values of LC_LANG? Or maybe we should just not use ls.
Hmm, it means popen2 used french while reactor.spawnProcess used english. [...] Could you try the attached patch and see if it fixes the problem?
Thanks. Following your suggestion, I re-installed Twisted 1.0.4 with the above patches, and reran `admin/runtests'. The patches apparently solved a few things. Without them, the testing summary was: ----------------------------------------------------------------------> FAILED (failures=2, errors=1, skips=3, expectedFailures=2) ----------------------------------------------------------------------< and now, it is reduced to: ----------------------------------------------------------------------> FAILED (failures=1, skips=3, expectedFailures=2) ----------------------------------------------------------------------< Here is the listing result of what remains: ----------------------------------------------------------------------> ........................................F...................................................................S.................................T..............................................................................................................................T......................................................................................................................................SS..................................................................................................................................................................................... =============================================================================== SKIPPED: testModules (twisted.test.test_doc.DocCoverage) ------------------------------------------------------------------------------- Activate me when you feel like writing docstrings, and fixing GTK crashing bugs. =============================================================================== SKIPPED: testReadLimit (twisted.test.test_policies.ThrottlingTestCase) ------------------------------------------------------------------------------- Inaccurate tests are worse than no tests. =============================================================================== SKIPPED: testWriteLimit (twisted.test.test_policies.ThrottlingTestCase) ------------------------------------------------------------------------------- Inaccurate tests are worse than no tests. =============================================================================== EXPECTED FAILURE: testStor (twisted.test.test_ftp.FTPClientAndServerTests) ------------------------------------------------------------------------------- Traceback (most recent call last): File "/var/tmp/Twisted-1.0.4/twisted/test/test_ftp.py", line 276, in testStor self.assertEquals(open('HelloThere').read(), expectedContent) FailTest: '' != 'Hello\nHello\nHello\nHello\n' =============================================================================== EXPECTED FAILURE: testSneakyHiddenDoom (twisted.test.test_loopback.LoopbackTCPTestCase) ------------------------------------------------------------------------------- Traceback (most recent call last): File "/var/tmp/Twisted-1.0.4/twisted/test/test_loopback.py", line 77, in testSneakyHiddenDoom LoopbackTestCase.testSneakyHiddenDoom(self) File "/var/tmp/Twisted-1.0.4/twisted/test/test_loopback.py", line 71, in testSneakyHiddenDoom self.assertEquals(c.lines, ['DOOM LINE', 'Hello 1', 'Hello 2', 'Hello 3']) FailTest: ['DOOM LINE', 'Hello 1', 'Hello 2'] != ['DOOM LINE', 'Hello 1', 'Hello 2', 'Hello 3'] =============================================================================== FAILURE: testRSA (twisted.test.test_conch.SSHKeysHandlingTestCase) ------------------------------------------------------------------------------- Traceback (most recent call last): File "/var/tmp/Twisted-1.0.4/twisted/test/test_conch.py", line 76, in testRSA self._testKey(publicRSA_openssh, privateRSA_openssh, 'openssh') File "/var/tmp/Twisted-1.0.4/twisted/test/test_conch.py", line 85, in _testKey self._testGenerateKey(privKey, pubKey, privData, pubData, keyType) File "/var/tmp/Twisted-1.0.4/twisted/test/test_conch.py", line 118, in _testGenerateKey self.assertEquals(keys.makePrivateKeyString(privKey, kind=keyType), privData) FailTest: '-----BEGIN RSA PRIVATE KEY-----\nMIIBxwIBAAJhAK8ycfDmDpyZs3+LXwRLy4vA1T6yd/3PZNiPwM+uH8Yx3/YpskSW\n4sbUIZR/ZXzY1CMfuC5qyR+UDUbBaaK3Bwyjk8E02C4eSpkabJZGB0Yr3CUpG4fw\nvgUd7rQ0ueeZlQIBIwJgbh+1VZfr7WftK5lu7MHtqE1S1vPWZQYE3+VUn8yJADyb\nZ4fsZaCrzW9lkIqXkE3GIY+ojdhZhkO1gbG0118sIgphwSWKRxK0mvh6ERxKqIt1\nxJEJO74EykXZV4oNJ8sjAjEAy0pL0EBH6EVS98evDCBtQw22OZT52qXlAwZ2gyTr\niKFVoqjeEjt3SZKKqXHSApP/AjEA3J9r2ZghVhGN6V8DnQrTk24Td0E8hU8AcP0F\nVP+8PQm/g/aXf2QQkQT+omdHVEJrAjAXO7DkmaHRZwIq8j/kIPaLUgYyd20DC6Uk\n6su3N2tgEnAv2MjsJA2iAh55w918ozMCMEukX33NwkllGrZpuBiV/2W/VyGStaoM\ndS4Nm22Zgl4R+IUEFq9VggXV06VlPQbyMwIwJQPp/z+HDpM0ntg9cAo3390laeF0\nk8jwQJ0gL5x0oMYdpOhV0O5Ck/yrsRDCKDZA\n-----END RSA PRIVATE KEY-----' != '-----BEGIN RSA PRIVATE KEY-----\nMIIByAIBAAJhAK8ycfDmDpyZs3+LXwRLy4vA1T6yd/3PZNiPwM+uH8Yx3/YpskSW\n4sbUIZR/ZXzY1CMfuC5qyR+UDUbBaaK3Bwyjk8E02C4eSpkabJZGB0Yr3CUpG4fw\nvgUd7rQ0ueeZlQIBIwJgbh+1VZfr7WftK5lu7MHtqE1S1vPWZQYE3+VUn8yJADyb\nZ4fsZaCrzW9lkIqXkE3GIY+ojdhZhkO1gbG0118sIgphwSW KRxK0mvh6ERxKqIt1\nxJEJO74EykXZV4oNJ8sjAjEA3J9r2ZghVhGN6V8DnQrTk24Td0E8hU8AcP0FVP+8\nPQm/g/aXf2QQkQT+omdHVEJrAjEAy0pL0EBH6EVS98evDCBtQw22OZT52qXlAwZ2\ngyTriKFVoqjeEjt3SZKKqXHSApP/AjBLpF99zcJJZRq2abgYlf9lv1chkrWqDHUu\nDZttmYJeEfiFBBavVYIF1dOlZT0G8jMCMBc7sOSZodFnAiryP+Qg9otSBjJ3bQML\npSTqy7c3a2AScC/YyOwkDaICHnnD3XyjMwIxALRzl0tQEKMXs6hH8ToUdlLROCrP\nEhQ0wahUTCk1gKA4uPD6TMTChavbh4K63OvbKg==\n-----END RSA PRIVATE KEY-----' ------------------------------------------------------------------------------- Ran 587 tests in 98.090s FAILED (failures=1, skips=3, expectedFailures=2) ----------------------------------------------------------------------< -- François Pinard http://www.iro.umontreal.ca/~pinard

[Jp Calderone]
Thanks for the report.
OK. So it was OK to send it. :-)
Woops. This is a localization problem. Maybe it should be an expected skip for certain values of LC_LANG? Or maybe we should just not use ls.
And / or, maybe, the overall testing environment (not the user) should reset LANG, LANGUAGE, LC_LANG, LC_ALL and LC_MESSAGES before proceeding, all to non set, or less ideally, set to empty, to `C' or to `POSIX'.
Wow! All this from a mere "list index out of range"! :-) There is indeed a firewall on the machine I use for testing Twisted, at least on the network card facing the Internet, and masquereding is done for internal machines forwarded from a second network card. I would not think beforehand that localhost as limitations against itself, however, but am never fully sure, I do not often visit the firewall configuration. I naively think that I can access localhost:ANYPORT without the firewall being in the way. I'm willing to revisit the firewall if you have a suggestion for me about how to carefully open it, enough for Twisted to work reliably. I surely could use, for testing Twisted, an internal machine which has no intrinsic firewall, on some other internal network, but this might not be where I want to run it in the long run. Opinions? -- François Pinard http://www.iro.umontreal.ca/~pinard
participants (3)
-
Brian Warner
-
Francois Pinard
-
Jp Calderone