cpython/Lib/test/test___future__.py
Tim Peters de642bdc5d A self-contained piece of Michael Hudson's patch
#449043 supporting __future__ in simulated shells
in support of PEP 264.

Much has changed from the patch version:
+ Repaired bad hex constant for nested_scopes.
+ Defined symbolic CO_xxx names so global search will find these uses.
+ Made the exported list of feature names explicit, instead of abusing
  __all__ for this purpose (and redefined __all__ accordingly).
+ Added gross .compiler_flag verification to test___future__.py, and
  reworked it a little to make use of the newly exported explicit list
  of feature names.
2001-08-17 19:49:02 +00:00

46 lines
2 KiB
Python

#! /usr/bin/env python
from test_support import verbose, verify
from types import TupleType, StringType, IntType
import __future__
GOOD_SERIALS = ("alpha", "beta", "candidate", "final")
features = __future__.all_feature_names
for feature in features:
value = getattr(__future__, feature)
if verbose:
print "Checking __future__ ", feature, "value", value
optional = value.getOptionalRelease()
mandatory = value.getMandatoryRelease()
verify(type(optional) is TupleType, "optional isn't tuple")
verify(len(optional) == 5, "optional isn't 5-tuple")
major, minor, micro, level, serial = optional
verify(type(major) is IntType, "optional major isn't int")
verify(type(minor) is IntType, "optional minor isn't int")
verify(type(micro) is IntType, "optional micro isn't int")
verify(type(level) is StringType, "optional level isn't string")
verify(level in GOOD_SERIALS,
"optional level string has unknown value")
verify(type(serial) is IntType, "optional serial isn't int")
verify(type(mandatory) is TupleType or
mandatory is None, "mandatory isn't tuple or None")
if mandatory is not None:
verify(len(mandatory) == 5, "mandatory isn't 5-tuple")
major, minor, micro, level, serial = mandatory
verify(type(major) is IntType, "mandatory major isn't int")
verify(type(minor) is IntType, "mandatory minor isn't int")
verify(type(micro) is IntType, "mandatory micro isn't int")
verify(type(level) is StringType, "mandatory level isn't string")
verify(level in GOOD_SERIALS,
"mandatory serial string has unknown value")
verify(type(serial) is IntType, "mandatory serial isn't int")
verify(optional < mandatory,
"optional not less than mandatory, and mandatory not None")
verify(hasattr(value, "compiler_flag"),
"feature is missing a .compiler_flag attr")
verify(type(getattr(value, "compiler_flag")) is IntType,
".compiler_flag isn't int")