Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / third_party / cython / src / pyximport / test / test_pyximport.py
1 import pyximport; pyximport.install(reload_support=True)
2 import os, sys
3 import time, shutil
4 import tempfile
5
6 def make_tempdir():
7     tempdir = os.path.join(tempfile.gettempdir(), "pyrex_temp")
8     if os.path.exists(tempdir):
9         remove_tempdir(tempdir)
10
11     os.mkdir(tempdir)
12     return tempdir
13
14 def remove_tempdir(tempdir):
15     shutil.rmtree(tempdir, 0, on_remove_file_error)
16
17 def on_remove_file_error(func, path, excinfo):
18     print "Sorry! Could not remove a temp file:", path
19     print "Extra information."
20     print func, excinfo
21     print "You may want to delete this yourself when you get a chance."
22
23 def test():
24     pyximport._test_files = []
25     tempdir = make_tempdir()
26     sys.path.append(tempdir)
27     filename = os.path.join(tempdir, "dummy.pyx")
28     open(filename, "w").write("print 'Hello world from the Pyrex install hook'")
29     import dummy
30     reload(dummy)
31
32     depend_filename = os.path.join(tempdir, "dummy.pyxdep")
33     depend_file = open(depend_filename, "w")
34     depend_file.write("*.txt\nfoo.bar")
35     depend_file.close()
36
37     build_filename = os.path.join(tempdir, "dummy.pyxbld")
38     build_file = open(build_filename, "w")
39     build_file.write("""
40 from distutils.extension import Extension
41 def make_ext(name, filename):
42     return Extension(name=name, sources=[filename]) 
43 """)
44     build_file.close()
45
46     open(os.path.join(tempdir, "foo.bar"), "w").write(" ")
47     open(os.path.join(tempdir, "1.txt"), "w").write(" ")
48     open(os.path.join(tempdir, "abc.txt"), "w").write(" ")
49     reload(dummy)
50     assert len(pyximport._test_files)==1, pyximport._test_files
51     reload(dummy)
52
53     time.sleep(1) # sleep a second to get safer mtimes
54     open(os.path.join(tempdir, "abc.txt"), "w").write(" ")
55     print "Here goes the reolad"
56     reload(dummy)
57     assert len(pyximport._test_files) == 1, pyximport._test_files
58
59     reload(dummy)
60     assert len(pyximport._test_files) ==0, pyximport._test_files
61     remove_tempdir(tempdir)
62
63 if __name__=="__main__":
64     test()
65