| 
									
										
										
										
											2001-02-26 21:14:49 +00:00
										 |  |  | #! /usr/bin/env python | 
					
						
							| 
									
										
										
										
											2002-07-23 19:04:11 +00:00
										 |  |  | from test.test_support import verbose, verify | 
					
						
							| 
									
										
										
										
											2001-02-26 21:14:49 +00:00
										 |  |  | from types import TupleType, StringType, IntType | 
					
						
							|  |  |  | import __future__ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | GOOD_SERIALS = ("alpha", "beta", "candidate", "final") | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-08-17 19:49:02 +00:00
										 |  |  | features = __future__.all_feature_names | 
					
						
							| 
									
										
										
										
											2001-08-18 20:18:49 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | # Verify that all_feature_names appears correct. | 
					
						
							|  |  |  | given_feature_names = features[:] | 
					
						
							|  |  |  | for name in dir(__future__): | 
					
						
							|  |  |  |     obj = getattr(__future__, name, None) | 
					
						
							|  |  |  |     if obj is not None and isinstance(obj, __future__._Feature): | 
					
						
							|  |  |  |         verify(name in given_feature_names, | 
					
						
							|  |  |  |                "%r should have been in all_feature_names" % name) | 
					
						
							|  |  |  |         given_feature_names.remove(name) | 
					
						
							|  |  |  | verify(len(given_feature_names) == 0, | 
					
						
							|  |  |  |        "all_feature_names has too much: %r" % given_feature_names) | 
					
						
							|  |  |  | del given_feature_names | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-02-26 21:14:49 +00:00
										 |  |  | for feature in features: | 
					
						
							|  |  |  |     value = getattr(__future__, feature) | 
					
						
							|  |  |  |     if verbose: | 
					
						
							|  |  |  |         print "Checking __future__ ", feature, "value", value | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-03-02 02:53:08 +00:00
										 |  |  |     optional = value.getOptionalRelease() | 
					
						
							|  |  |  |     mandatory = value.getMandatoryRelease() | 
					
						
							| 
									
										
										
										
											2001-02-26 21:14:49 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     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") | 
					
						
							| 
									
										
										
										
											2002-11-09 20:19:12 +00:00
										 |  |  |     verify(isinstance(level, basestring), "optional level isn't string") | 
					
						
							| 
									
										
										
										
											2001-02-26 21:14:49 +00:00
										 |  |  |     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") | 
					
						
							| 
									
										
										
										
											2002-11-09 20:19:12 +00:00
										 |  |  |         verify(isinstance(level, basestring), "mandatory level isn't string") | 
					
						
							| 
									
										
										
										
											2001-02-26 21:14:49 +00:00
										 |  |  |         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") | 
					
						
							| 
									
										
										
										
											2001-08-17 19:49:02 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     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") |