1 # Copyright (c) 2010 Testtools authors. See LICENSE for details.
3 """Tests for the test runner logic."""
7 from testtools.helpers import try_import
8 fixtures = try_import('fixtures')
11 from testtools import TestCase, run
15 class SampleTestFixture(fixtures.Fixture):
16 """Creates testtools.runexample temporarily."""
19 self.package = fixtures.PythonPackage(
20 'runexample', [('__init__.py', """
21 from testtools import TestCase
23 class TestFoo(TestCase):
29 from unittest import TestLoader
30 return TestLoader().loadTestsFromName(__name__)
34 super(SampleTestFixture, self).setUp()
35 self.useFixture(self.package)
36 testtools.__path__.append(self.package.base)
37 self.addCleanup(testtools.__path__.remove, self.package.base)
40 class TestRun(TestCase):
42 def test_run_list(self):
44 self.skipTest("Need fixtures")
45 package = self.useFixture(SampleTestFixture())
46 out = StringIO.StringIO()
47 run.main(['prog', '-l', 'testtools.runexample.test_suite'], out)
48 self.assertEqual("""testtools.runexample.TestFoo.test_bar
49 testtools.runexample.TestFoo.test_quux
52 def test_run_load_list(self):
54 self.skipTest("Need fixtures")
55 package = self.useFixture(SampleTestFixture())
56 out = StringIO.StringIO()
57 # We load two tests - one that exists and one that doesn't, and we
58 # should get the one that exists and neither the one that doesn't nor
59 # the unmentioned one that does.
60 tempdir = self.useFixture(fixtures.TempDir())
61 tempname = tempdir.path + '/tests.list'
62 f = open(tempname, 'wb')
65 testtools.runexample.TestFoo.test_bar
66 testtools.runexample.missingtest
70 run.main(['prog', '-l', '--load-list', tempname,
71 'testtools.runexample.test_suite'], out)
72 self.assertEqual("""testtools.runexample.TestFoo.test_bar
76 from unittest import TestLoader
77 return TestLoader().loadTestsFromName(__name__)