blob: bfef40450d52fca3b023e1ad5dffc10a471d849e [file] [log] [blame]
From 2c3c28f5dbbd61bcfa5c548d1d423fffbaf2132d Mon Sep 17 00:00:00 2001
From: Brian Dolbec <dolsen@gentoo.org>
Date: Fri, 31 Mar 2017 09:32:18 -0700
Subject: [PATCH] tests/test_main.py: Fix test_twisted to handle differntly
sorted options
Some systems retuned the usage with '__main__.py' instead of the command 'trial'
So, substitute that out if it exists.
The options returned via python can be a different sort order than is output via the
command --help. So break up the lines into a list and check equality, lines are neither
missing or extra.
---
src/twisted/test/test_main.py | 34 ++++++++++++++++++++++++++++++++--
1 file changed, 32 insertions(+), 2 deletions(-)
diff --git a/src/twisted/test/test_main.py b/src/twisted/test/test_main.py
index 572769018..b010a389e 100644
--- a/src/twisted/test/test_main.py
+++ b/src/twisted/test/test_main.py
@@ -18,6 +18,10 @@ from twisted.trial.unittest import TestCase
class MainTests(TestCase):
"""Test that twisted scripts can be invoked as modules."""
+ # this test just does not work correctly on Gentoo
+ # the output has '__main__.py' instead of 'trial'
+ # I have only been able to get 2.7 working correctly
+ # with replacing the value with what is expected.
def test_twisted(self):
"""Invoking python -m twisted should execute twist."""
cmd = sys.executable
@@ -28,11 +32,37 @@ class MainTests(TestCase):
def processEnded(ign):
f = p.outF
- output = f.getvalue().replace(b'\r\n', b'\n')
+ # Some systems may return __main__.py instead of the command name expected
+ output = f.getvalue().replace(b'\r\n', b'\n').replace(b"__main__.py", b"trial")
options = TwistOptions()
message = '{}\n'.format(options).encode('utf-8')
- self.assertEqual(output, message)
+ # NOTE: python may return the options in a different order
+ # than is output via the command --help option
+ # so we must break up the text and compare that lines
+ # are not missing or extra from what is expected
+ a = output.split(b'\n')
+ b = message.split(b'\n')
+ extras = []
+ missing = []
+ equal_len = (len(a) == len(b))
+ for i in a:
+ if i not in b:
+ extras.append(i)
+ for i in b:
+ if i not in a:
+ missing.append(i)
+
+ self.assertTrue(equal_len,
+ msg="Usage reported a different number of lines than expected")
+ self.assertTrue(extras == [],
+ msg="Usage returned these extra lines not expected: %s"
+ % '\n'.join(extras)
+ )
+ self.assertTrue(missing == [],
+ msg="Usage was missing these expected lines: %s"
+ % '\n'.join(missing)
+ )
return d.addCallback(processEnded)
def test_twisted_import(self):
--
2.12.1