| 
									
										
										
										
											2001-03-21 03:58:16 +00:00
										 |  |  | from test_support import TESTFN, TestFailed | 
					
						
							| 
									
										
										
										
											2000-10-06 18:46:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | import os | 
					
						
							|  |  |  | import random | 
					
						
							| 
									
										
										
										
											2000-10-24 17:16:32 +00:00
										 |  |  | import sys | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-03-21 03:58:16 +00:00
										 |  |  | # Brief digression to test that import is case-sensitive:  if we got this | 
					
						
							|  |  |  | # far, we know for sure that "random" exists. | 
					
						
							|  |  |  | try: | 
					
						
							|  |  |  |     import RAnDoM | 
					
						
							|  |  |  | except ImportError: | 
					
						
							|  |  |  |     pass | 
					
						
							|  |  |  | else: | 
					
						
							|  |  |  |     raise TestFailed("import of RAnDoM should have failed (case mismatch)") | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-05-08 15:19:57 +00:00
										 |  |  | # Another brief digression to test the accuracy of manifest float constants. | 
					
						
							|  |  |  | import double_const  # don't blink -- that *was* the test | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-08-04 08:12:36 +00:00
										 |  |  | def test_with_extension(ext): # ext normally ".py"; perhaps ".pyw" | 
					
						
							|  |  |  |     source = TESTFN + ext | 
					
						
							|  |  |  |     pyo = TESTFN + ".pyo" | 
					
						
							|  |  |  |     if sys.platform.startswith('java'): | 
					
						
							|  |  |  |         pyc = TESTFN + "$py.class" | 
					
						
							|  |  |  |     else: | 
					
						
							|  |  |  |         pyc = TESTFN + ".pyc" | 
					
						
							| 
									
										
										
										
											2000-10-06 18:46:22 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-08-04 08:12:36 +00:00
										 |  |  |     f = open(source, "w") | 
					
						
							|  |  |  |     print >> f, "# This tests Python's ability to import a", ext, "file." | 
					
						
							|  |  |  |     a = random.randrange(1000) | 
					
						
							|  |  |  |     b = random.randrange(1000) | 
					
						
							|  |  |  |     print >> f, "a =", a | 
					
						
							|  |  |  |     print >> f, "b =", b | 
					
						
							|  |  |  |     f.close() | 
					
						
							| 
									
										
										
										
											2000-10-06 18:46:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     try: | 
					
						
							| 
									
										
										
										
											2001-08-04 08:12:36 +00:00
										 |  |  |         try: | 
					
						
							|  |  |  |             mod = __import__(TESTFN) | 
					
						
							|  |  |  |         except ImportError, err: | 
					
						
							|  |  |  |             raise ValueError("import from %s failed: %s" % (ext, err)) | 
					
						
							| 
									
										
										
										
											2000-10-06 18:46:22 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-08-04 08:12:36 +00:00
										 |  |  |         if mod.a != a or mod.b != b: | 
					
						
							|  |  |  |             print a, "!=", mod.a | 
					
						
							|  |  |  |             print b, "!=", mod.b | 
					
						
							|  |  |  |             raise ValueError("module loaded (%s) but contents invalid" % mod) | 
					
						
							|  |  |  |     finally: | 
					
						
							|  |  |  |         os.unlink(source) | 
					
						
							| 
									
										
										
										
											2000-10-06 18:46:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     try: | 
					
						
							| 
									
										
										
										
											2001-08-04 08:12:36 +00:00
										 |  |  |         try: | 
					
						
							|  |  |  |             reload(mod) | 
					
						
							|  |  |  |         except ImportError, err: | 
					
						
							|  |  |  |             raise ValueError("import from .pyc/.pyo failed: %s" % err) | 
					
						
							|  |  |  |     finally: | 
					
						
							|  |  |  |         try: | 
					
						
							|  |  |  |             os.unlink(pyc) | 
					
						
							|  |  |  |         except os.error: | 
					
						
							|  |  |  |             pass | 
					
						
							|  |  |  |         try: | 
					
						
							|  |  |  |             os.unlink(pyo) | 
					
						
							|  |  |  |         except os.error: | 
					
						
							|  |  |  |             pass | 
					
						
							|  |  |  |         del sys.modules[TESTFN] | 
					
						
							| 
									
										
										
										
											2000-10-24 17:16:32 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-08-04 08:12:36 +00:00
										 |  |  | sys.path.insert(0, os.curdir) | 
					
						
							|  |  |  | try: | 
					
						
							|  |  |  |     test_with_extension(".py") | 
					
						
							|  |  |  |     if sys.platform.startswith("win"): | 
					
						
							|  |  |  |         for ext in ".PY", ".Py", ".pY", ".pyw", ".PYW", ".pYw": | 
					
						
							|  |  |  |             test_with_extension(ext) | 
					
						
							|  |  |  | finally: | 
					
						
							|  |  |  |     del sys.path[0] |