source: python/trunk/Lib/test/test___future__.py

Last change on this file was 391, checked in by dmik, 11 years ago

python: Merge vendor 2.7.6 to trunk.

  • Property svn:eol-style set to native
File size: 2.5 KB
Line 
1#! /usr/bin/env python
2import unittest
3from test import test_support
4import __future__
5
6GOOD_SERIALS = ("alpha", "beta", "candidate", "final")
7
8features = __future__.all_feature_names
9
10class FutureTest(unittest.TestCase):
11
12 def test_names(self):
13 # Verify that all_feature_names appears correct.
14 given_feature_names = features[:]
15 for name in dir(__future__):
16 obj = getattr(__future__, name, None)
17 if obj is not None and isinstance(obj, __future__._Feature):
18 self.assertTrue(
19 name in given_feature_names,
20 "%r should have been in all_feature_names" % name
21 )
22 given_feature_names.remove(name)
23 self.assertEqual(len(given_feature_names), 0,
24 "all_feature_names has too much: %r" % given_feature_names)
25
26 def test_attributes(self):
27 for feature in features:
28 value = getattr(__future__, feature)
29
30 optional = value.getOptionalRelease()
31 mandatory = value.getMandatoryRelease()
32
33 a = self.assertTrue
34 e = self.assertEqual
35 def check(t, name):
36 a(isinstance(t, tuple), "%s isn't tuple" % name)
37 e(len(t), 5, "%s isn't 5-tuple" % name)
38 (major, minor, micro, level, serial) = t
39 a(isinstance(major, int), "%s major isn't int" % name)
40 a(isinstance(minor, int), "%s minor isn't int" % name)
41 a(isinstance(micro, int), "%s micro isn't int" % name)
42 a(isinstance(level, basestring),
43 "%s level isn't string" % name)
44 a(level in GOOD_SERIALS,
45 "%s level string has unknown value" % name)
46 a(isinstance(serial, int), "%s serial isn't int" % name)
47
48 check(optional, "optional")
49 if mandatory is not None:
50 check(mandatory, "mandatory")
51 a(optional < mandatory,
52 "optional not less than mandatory, and mandatory not None")
53
54 a(hasattr(value, "compiler_flag"),
55 "feature is missing a .compiler_flag attr")
56 # Make sure the compile accepts the flag.
57 compile("", "<test>", "exec", value.compiler_flag)
58 a(isinstance(getattr(value, "compiler_flag"), int),
59 ".compiler_flag isn't int")
60
61
62def test_main():
63 test_support.run_unittest(FutureTest)
64
65if __name__ == "__main__":
66 test_main()
Note: See TracBrowser for help on using the repository browser.