summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Pool <mbp@canonical.com>2011-11-29 13:08:11 +1100
committerMartin Pool <mbp@canonical.com>2011-11-29 13:08:11 +1100
commit05e00d8d1b3d0a6e0ddc2153d9552f7823223ae9 (patch)
tree8e9283a7a9ddbc0bb0774fe50852a2f84803f3d0
parent3e502a29cc859f5c6b74827f5f321dfb5a193e3c (diff)
downloadfixtures-05e00d8d1b3d0a6e0ddc2153d9552f7823223ae9.tar.gz
Rename to just 'Timeout'; other review cleanups
-rw-r--r--NEWS2
-rw-r--r--README16
-rw-r--r--lib/fixtures/__init__.py4
-rw-r--r--lib/fixtures/_fixtures/__init__.py4
-rw-r--r--lib/fixtures/_fixtures/timeout.py2
-rw-r--r--lib/fixtures/tests/_fixtures/test_timeout.py9
6 files changed, 20 insertions, 17 deletions
diff --git a/NEWS b/NEWS
index 005e674..e7928b8 100644
--- a/NEWS
+++ b/NEWS
@@ -11,7 +11,7 @@ CHANGES:
* EnvironmentVariableFixture now upcalls via super().
(Jonathan Lange, #881120)
-* New TimeoutFixture. (Martin Pool)
+* New Timeout fixture. (Martin Pool)
0.3.7
~~~~~
diff --git a/README b/README
index 574649f..cd02c99 100644
--- a/README
+++ b/README
@@ -336,16 +336,20 @@ Create a temporary directory and clean it up later.
The created directory is stored in the ``path`` attribute of the fixture after
setUp.
-TimeoutFixture
-++++++++++++++
+Timeout
++++++++
-Interrupts tests if they take more than a specified number of whole wall-clock
+Aborts if the covered code takes more than a specified number of whole wall-clock
seconds.
There are two possibilities, controlled by the 'gentle' argument: when gentle,
an exception will be raised and the test will fail. When not gentle, the
entire test process will be terminated, which is less clean, but more likely to
-break hangs where no Python code is running. You can only use one in any given
-test.
+break hangs where no Python code is running.
+
+*Caution:* Only one timeout can be active at any time across all threads in a
+single process. Using more than one has undefined results. (This could be
+improved by chaining alarms.)
-Currently supported only on Unix because it relies on the ``alarm`` system call.
+*Note:* Currently supported only on Unix because it relies on the ``alarm``
+system call.
diff --git a/lib/fixtures/__init__.py b/lib/fixtures/__init__.py
index 9e54aef..42ecf6f 100644
--- a/lib/fixtures/__init__.py
+++ b/lib/fixtures/__init__.py
@@ -51,7 +51,7 @@ __all__ = [
'PythonPathEntry',
'TempDir',
'TestWithFixtures',
- 'TestTimeout',
+ 'Timeout',
]
@@ -65,7 +65,7 @@ from fixtures._fixtures import (
PythonPackage,
PythonPathEntry,
TempDir,
- TestTimeout,
+ Timeout,
)
from fixtures.testcase import TestWithFixtures
diff --git a/lib/fixtures/_fixtures/__init__.py b/lib/fixtures/_fixtures/__init__.py
index 20285ef..d219c7a 100644
--- a/lib/fixtures/_fixtures/__init__.py
+++ b/lib/fixtures/_fixtures/__init__.py
@@ -25,7 +25,7 @@ __all__ = [
'PythonPackage',
'PythonPathEntry',
'TempDir',
- 'TestTimeout',
+ 'Timeout',
]
@@ -37,4 +37,4 @@ from fixtures._fixtures.packagepath import PackagePathEntry
from fixtures._fixtures.pythonpackage import PythonPackage
from fixtures._fixtures.pythonpath import PythonPathEntry
from fixtures._fixtures.tempdir import TempDir
-from fixtures._fixtures.timeout import TestTimeout
+from fixtures._fixtures.timeout import Timeout
diff --git a/lib/fixtures/_fixtures/timeout.py b/lib/fixtures/_fixtures/timeout.py
index b1d133b..b5fcbe9 100644
--- a/lib/fixtures/_fixtures/timeout.py
+++ b/lib/fixtures/_fixtures/timeout.py
@@ -23,7 +23,7 @@ class TestTimeoutException(Exception):
"""Test timed out"""
-class TestTimeout(fixtures.Fixture):
+class Timeout(fixtures.Fixture):
def __init__(self, timeout_secs, gentle):
self.timeout_secs = timeout_secs
diff --git a/lib/fixtures/tests/_fixtures/test_timeout.py b/lib/fixtures/tests/_fixtures/test_timeout.py
index 870f3bc..3521aaa 100644
--- a/lib/fixtures/tests/_fixtures/test_timeout.py
+++ b/lib/fixtures/tests/_fixtures/test_timeout.py
@@ -29,20 +29,20 @@ class ExampleTests(testtools.TestCase, TestWithFixtures):
"""These are not intended to pass: they are sample data for the real tests"""
def sample_timeout_passes(self):
- self.useFixture(fixtures.TestTimeout(100, gentle=True))
+ self.useFixture(fixtures.Timeout(100, gentle=True))
pass # Timeout shouldn't fire
def sample_long_delay_with_timeout(self):
- self.useFixture(fixtures.TestTimeout(2, gentle=True))
+ self.useFixture(fixtures.Timeout(2, gentle=True))
time.sleep(100) # Expected to be killed here.
def sample_long_delay_with_harsh_timeout(self):
- self.useFixture(fixtures.TestTimeout(2, gentle=False))
+ self.useFixture(fixtures.Timeout(2, gentle=False))
time.sleep(100) # Expected to be killed here.
-class TestTimeoutFixture(testtools.TestCase, TestWithFixtures):
+class TestTimeout(testtools.TestCase, TestWithFixtures):
def requireUnix(self):
if getattr(signal, 'alarm', None) is None:
@@ -70,7 +70,6 @@ class TestTimeoutFixture(testtools.TestCase, TestWithFixtures):
got_alarm = True
old_handler = signal.signal(signal.SIGALRM, sigalrm_handler)
self.addCleanup(signal.signal, signal.SIGALRM, old_handler)
- import pdb;pdb.set_trace()
result = test.run()
self.assertFalse(result.wasSuccessful())
self.assertTrue(got_alarm)