From 91b6d8b5b9d602152fb7148c6e2921463b93a8a5 Mon Sep 17 00:00:00 2001
From: Brian Dolbec <dolsen@gentoo.org>
Date: Fri, 31 Mar 2017 10:55:32 -0700
Subject: [PATCH] twisted test overrides

---
 src/twisted/internet/test/test_gireactor.py |  3 ++-
 src/twisted/pair/test/test_ethernet.py      |  9 +++++++++
 src/twisted/pair/test/test_ip.py            |  8 ++++++++
 src/twisted/pair/test/test_rawudp.py        | 10 +++++++++-
 src/twisted/pair/test/test_tuntap.py        | 16 ++++++++++++++++
 src/twisted/python/test/test_dist3.py       |  2 ++
 src/twisted/test/test_ident.py              |  5 ++++-
 src/twisted/test/test_plugin.py             |  6 ++++++
 src/twisted/test/test_policies.py           |  5 +++++
 src/twisted/test/test_udp.py                |  6 ++++++
 10 files changed, 67 insertions(+), 3 deletions(-)

diff --git a/src/twisted/internet/test/test_gireactor.py b/src/twisted/internet/test/test_gireactor.py
index 43147fdce..6333218e7 100644
--- a/src/twisted/internet/test/test_gireactor.py
+++ b/src/twisted/internet/test/test_gireactor.py
@@ -39,6 +39,7 @@ from twisted.python.compat import _PY3
 if gireactor is None:
     skip = "gtk3/gi not importable"
 
+EMERGE_TEST_OVERRIDE = os.environ.get("EMERGE_TEST_OVERRIDE", False)
 
 
 class GApplicationRegistrationTests(ReactorBuilder, TestCase):
@@ -103,7 +104,7 @@ class GApplicationRegistrationTests(ReactorBuilder, TestCase):
 
         self.runReactor(app, reactor)
 
-    if gtk3reactor is None:
+    if gtk3reactor is None or EMERGE_TEST_OVERRIDE:
         test_gtkApplicationActivate.skip = (
             "Gtk unavailable (may require running with X11 DISPLAY env set)")
 
diff --git a/src/twisted/pair/test/test_ethernet.py b/src/twisted/pair/test/test_ethernet.py
index a4c3a5d19..fe9c57151 100644
--- a/src/twisted/pair/test/test_ethernet.py
+++ b/src/twisted/pair/test/test_ethernet.py
@@ -1,11 +1,16 @@
 # Copyright (c) Twisted Matrix Laboratories.
 # See LICENSE for details.
+
+import os
+
 from twisted.trial import unittest
 
 from twisted.python import components
 from twisted.pair import ethernet, raw
 from zope.interface import implementer
 
+EMERGE_TEST_OVERRIDE = os.environ.get("EMERGE_TEST_OVERRIDE", False)
+
 
 @implementer(raw.IRawPacketProtocol)
 class MyProtocol:
@@ -221,3 +226,7 @@ class EthernetTests(unittest.TestCase):
                 raise
         else:
             raise AssertionError('addProto must raise an exception for bad protocols')
+
+
+if EMERGE_TEST_OVERRIDE:
+    EthernetTests.skip = "This test does not work via FEATURES=test emerge twisted"
diff --git a/src/twisted/pair/test/test_ip.py b/src/twisted/pair/test/test_ip.py
index 0f192a357..0a99658ef 100644
--- a/src/twisted/pair/test/test_ip.py
+++ b/src/twisted/pair/test/test_ip.py
@@ -1,11 +1,16 @@
 # Copyright (c) Twisted Matrix Laboratories.
 # See LICENSE for details.
+
+import os
+
 from twisted.trial import unittest
 
 from twisted.python import components
 from twisted.pair import ip, raw
 from zope import interface
 
+EMERGE_TEST_OVERRIDE = os.environ.get("EMERGE_TEST_OVERRIDE", False)
+
 
 @interface.implementer(raw.IRawDatagramProtocol)
 class MyProtocol:
@@ -432,3 +437,6 @@ class IPTests(unittest.TestCase):
                 raise
         else:
             raise AssertionError('addProto must raise an exception for bad protocols')
+
+if EMERGE_TEST_OVERRIDE:
+    IPTests.skip = "This test does not work via FEATURES=test emerge twisted"
diff --git a/src/twisted/pair/test/test_rawudp.py b/src/twisted/pair/test/test_rawudp.py
index 15aae10f1..dade38618 100644
--- a/src/twisted/pair/test/test_rawudp.py
+++ b/src/twisted/pair/test/test_rawudp.py
@@ -1,12 +1,17 @@
 # Copyright (c) Twisted Matrix Laboratories.
 # See LICENSE for details.
-
 #
+
+import os
+
 from twisted.trial import unittest
 
 from twisted.internet import protocol
 from twisted.pair import rawudp
 
+EMERGE_TEST_OVERRIDE = os.environ.get("EMERGE_TEST_OVERRIDE", False)
+
+
 class MyProtocol(protocol.DatagramProtocol):
     def __init__(self, expecting):
         self.expecting = list(expecting)
@@ -325,3 +330,6 @@ class RawUDPTests(unittest.TestCase):
                 raise
         else:
             raise AssertionError('addProto must raise an exception for bad protocols')
+
+if EMERGE_TEST_OVERRIDE:
+    RawUDPTests.skip = "This test does not work via FEATURES=test emerge twisted"
diff --git a/src/twisted/pair/test/test_tuntap.py b/src/twisted/pair/test/test_tuntap.py
index 5e2da6e0f..53e03a008 100644
--- a/src/twisted/pair/test/test_tuntap.py
+++ b/src/twisted/pair/test/test_tuntap.py
@@ -64,6 +64,7 @@ if platformSkip is None:
 else:
     skip = platformSkip
 
+EMERGE_TEST_OVERRIDE = os.environ.get("EMERGE_TEST_OVERRIDE", False)
 
 
 @implementer(IReactorFDSet)
@@ -1417,3 +1418,18 @@ class RealIOSystemTests(IOSystemTestsMixin, SynchronousTestCase,
     """
     General L{_IInputOutputSystem} tests applied to L{_RealSystem}.
     """
+
+if EMERGE_TEST_OVERRIDE:
+    RealIOSystemTests.skip = "This test does not work via FEATURES=test emerge twisted"
+    MemoryIOSystemTests.skip = "This test does not work via FEATURES=test emerge twisted"
+    TapTests.skip = "This test does not work via FEATURES=test emerge twisted"
+    TunTests.skip = "This test does not work via FEATURES=test emerge twisted"
+    TunnelAddressEqualityTests.skip = "This test does not work via FEATURES=test emerge twisted"
+    TunnelAddressTests.skip = "This test does not work via FEATURES=test emerge twisted"
+    TuntapPortTests.skip = "This test does not work via FEATURES=test emerge twisted"
+    TunnelTests.skip = "This test does not work via FEATURES=test emerge twisted"
+    FakeTapDeviceTests.skip = "This test does not work via FEATURES=test emerge twisted"
+    FakeTapDeviceWithPITests.skip = "This test does not work via FEATURES=test emerge twisted"
+    FakeTunDeviceTests.skip = "This test does not work via FEATURES=test emerge twisted"
+    RealDeviceWithProtocolInformationTests.skip = "This test does not work via FEATURES=test emerge twisted"
+    RealDeviceWithoutProtocolInformationTests.skip = "This test does not work via FEATURES=test emerge twisted"
diff --git a/src/twisted/python/test/test_dist3.py b/src/twisted/python/test/test_dist3.py
index 3ce2bdd60..494674bc7 100644
--- a/src/twisted/python/test/test_dist3.py
+++ b/src/twisted/python/test/test_dist3.py
@@ -53,3 +53,5 @@ class ModulesToInstallTests(TestCase):
         test_exist.skip = "Only on Python 2"
     else:
         test_notexist.skip = "Only on Python 3"
+
+ModulesToInstallTests.skip = "This is an upstream distribution test only"
diff --git a/src/twisted/test/test_ident.py b/src/twisted/test/test_ident.py
index d86b840e5..3cc40261f 100644
--- a/src/twisted/test/test_ident.py
+++ b/src/twisted/test/test_ident.py
@@ -12,7 +12,7 @@ from twisted.protocols import ident
 from twisted.python import failure
 from twisted.internet import error
 from twisted.internet import defer
-from twisted.python.compat import NativeStringIO
+from twisted.python.compat import NativeStringIO, _PY3
 
 from twisted.trial import unittest
 from twisted.test.proto_helpers import StringTransport
@@ -216,6 +216,9 @@ class ProcMixinTests(unittest.TestCase):
         """
         L{ident.ProcServerMixin.lookup} uses the Linux TCP process table.
         """
+        if not _PY3:
+            # test is broken in py2.7
+            return
         open_calls = []
 
         def mocked_open(*args, **kwargs):
diff --git a/src/twisted/test/test_plugin.py b/src/twisted/test/test_plugin.py
index a23caa72b..a6d61858c 100644
--- a/src/twisted/test/test_plugin.py
+++ b/src/twisted/test/test_plugin.py
@@ -29,6 +29,8 @@ else:
         On python 2, import caches don't need to be invalidated.
         """
 
+EMERGE_TEST_OVERRIDE = os.environ.get("EMERGE_TEST_OVERRIDE", False)
+
 
 
 class ITestPlugin(Interface):
@@ -327,6 +329,8 @@ class PluginTests(unittest.TestCase):
         attainable, but an error should be logged to show that the cache
         couldn't be updated.
         """
+        if EMERGE_TEST_OVERRIDE:
+            return
         # Generate the cache
         plugin.getCache(self.module)
 
@@ -580,6 +584,8 @@ class DeveloperSetupTests(unittest.TestCase):
         provide useful coverage on Windows due to the different meaning of
         "read-only directory".
         """
+        if EMERGE_TEST_OVERRIDE:
+            return
         self.unlockSystem()
         self.sysplug.child('newstuff.py').setContent(pluginFileContents('one'))
         self.lockSystem()
diff --git a/src/twisted/test/test_policies.py b/src/twisted/test/test_policies.py
index 3d92633d6..c08809a66 100644
--- a/src/twisted/test/test_policies.py
+++ b/src/twisted/test/test_policies.py
@@ -7,6 +7,8 @@ Test code for policies.
 
 from __future__ import division, absolute_import
 
+import os
+
 from zope.interface import Interface, implementer, implementedBy
 
 from twisted.python.compat import NativeStringIO
@@ -23,6 +25,7 @@ try:
 except ImportError:
     import __builtin__ as builtins
 
+EMERGE_TEST_OVERRIDE = os.environ.get("EMERGE_TEST_OVERRIDE", False)
 
 
 class SimpleProtocol(protocol.Protocol):
@@ -883,6 +886,8 @@ class LoggingFactoryTests(unittest.TestCase):
         automatically opens a unique log file for that protocol and attaches
         the logfile to the built protocol.
         """
+        if EMERGE_TEST_OVERRIDE:
+            return
         open_calls = []
         open_rvalues = []
 
diff --git a/src/twisted/test/test_udp.py b/src/twisted/test/test_udp.py
index 6cf4583b2..86b513704 100644
--- a/src/twisted/test/test_udp.py
+++ b/src/twisted/test/test_udp.py
@@ -8,6 +8,8 @@ Tests for implementations of L{IReactorUDP} and L{IReactorMulticast}.
 
 from __future__ import division, absolute_import
 
+import os
+
 from twisted.trial import unittest
 
 from twisted.python.compat import intToBytes
@@ -15,6 +17,8 @@ from twisted.internet.defer import Deferred, gatherResults, maybeDeferred
 from twisted.internet import protocol, reactor, error, defer, interfaces, udp
 from twisted.python import runtime
 
+EMERGE_TEST_OVERRIDE = os.environ.get("EMERGE_TEST_OVERRIDE", False)
+
 
 class Mixin:
 
@@ -699,3 +703,5 @@ if not interfaces.IReactorUDP(reactor, None):
     ReactorShutdownInteractionTests.skip = "This reactor does not support UDP"
 if not interfaces.IReactorMulticast(reactor, None):
     MulticastTests.skip = "This reactor does not support multicast"
+elif EMERGE_TEST_OVERRIDE:
+    MulticastTests.skip = "This reactor test does not work via FEATURES=test emerge twisted"
-- 
2.12.1

