1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
# Copyright 2010-2011 Canonical Ltd. This software is licensed under the
# GNU Affero General Public License version 3 (see the file LICENSE).
"""Tests for the testing module."""
__metaclass__ = type
import os
import tempfile
from lp.services.config import config
from lp.services.features import getFeatureFlag
from lp.testing import (
feature_flags,
NestedTempfile,
set_feature_flag,
TestCase,
YUIUnitTestCase,
)
from lp.testing.layers import DatabaseFunctionalLayer
class TestFeatureFlags(TestCase):
layer = DatabaseFunctionalLayer
def test_set_feature_flags_raises_if_not_available(self):
"""set_feature_flags prevents mistakes mistakes by raising."""
self.assertRaises(AssertionError, set_feature_flag, u'name', u'value')
def test_flags_set_within_feature_flags_context(self):
"""In the feature_flags context, set/get works."""
self.useContext(feature_flags())
set_feature_flag(u'name', u'value')
self.assertEqual('value', getFeatureFlag('name'))
def test_flags_unset_outside_feature_flags_context(self):
"""get fails when used outside the feature_flags context."""
with feature_flags():
set_feature_flag(u'name', u'value')
self.assertIs(None, getFeatureFlag('name'))
class TestYUIUnitTestCase(TestCase):
def test_id(self):
test = YUIUnitTestCase()
test.initialize("foo/bar/baz.html")
self.assertEqual(test.test_path, test.id())
def test_id_is_normalized_and_relative_to_root(self):
test = YUIUnitTestCase()
test_path = os.path.join(config.root, "../bar/baz/../bob.html")
test.initialize(test_path)
self.assertEqual("../bar/bob.html", test.id())
class NestedTempfileTest(TestCase):
"""Tests for `NestedTempfile`."""
def test_normal(self):
# The temp directory is removed when the context is exited.
starting_tempdir = tempfile.gettempdir()
with NestedTempfile():
self.assertEqual(tempfile.tempdir, tempfile.gettempdir())
self.assertNotEqual(tempfile.tempdir, starting_tempdir)
self.assertTrue(os.path.isdir(tempfile.tempdir))
nested_tempdir = tempfile.tempdir
self.assertEqual(tempfile.tempdir, tempfile.gettempdir())
self.assertEqual(starting_tempdir, tempfile.tempdir)
self.assertFalse(os.path.isdir(nested_tempdir))
def test_exception(self):
# The temp directory is removed when the context is exited, even if
# the code running in context raises an exception.
class ContrivedException(Exception):
pass
try:
with NestedTempfile():
nested_tempdir = tempfile.tempdir
raise ContrivedException
except ContrivedException:
self.assertFalse(os.path.isdir(nested_tempdir))
|