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

