1 # Copyright (c) 2010 Testtools authors. See LICENSE for details.
3 """Tests for the test runner logic."""
5 from testtools.helpers import try_import, try_imports
6 fixtures = try_import('fixtures')
7 StringIO = try_imports(['StringIO.StringIO', 'io.StringIO'])
10 from testtools import TestCase, run
14 class SampleTestFixture(fixtures.Fixture):
15 """Creates testtools.runexample temporarily."""
18 self.package = fixtures.PythonPackage(
19 'runexample', [('__init__.py', """
20 from testtools import TestCase
22 class TestFoo(TestCase):
28 from unittest import TestLoader
29 return TestLoader().loadTestsFromName(__name__)
33 super(SampleTestFixture, self).setUp()
34 self.useFixture(self.package)
35 testtools.__path__.append(self.package.base)
36 self.addCleanup(testtools.__path__.remove, self.package.base)
39 class TestRun(TestCase):
41 def test_run_list(self):
43 self.skipTest("Need fixtures")
44 package = self.useFixture(SampleTestFixture())
46 run.main(['prog', '-l', 'testtools.runexample.test_suite'], out)
47 self.assertEqual("""testtools.runexample.TestFoo.test_bar
48 testtools.runexample.TestFoo.test_quux
51 def test_run_load_list(self):
53 self.skipTest("Need fixtures")
54 package = self.useFixture(SampleTestFixture())
56 # We load two tests - one that exists and one that doesn't, and we
57 # should get the one that exists and neither the one that doesn't nor
58 # the unmentioned one that does.
59 tempdir = self.useFixture(fixtures.TempDir())
60 tempname = tempdir.path + '/tests.list'
61 f = open(tempname, 'wb')
64 testtools.runexample.TestFoo.test_bar
65 testtools.runexample.missingtest
69 run.main(['prog', '-l', '--load-list', tempname,
70 'testtools.runexample.test_suite'], out)
71 self.assertEqual("""testtools.runexample.TestFoo.test_bar
75 from unittest import TestLoader
76 return TestLoader().loadTestsFromName(__name__)