Author: Matti Picus <matti.pi...@gmail.com>
Branch: precompiled-headers
Changeset: r69042:0b9dc910cbd5
Date: 2014-01-29 23:39 +0200
http://bitbucket.org/pypy/pypy/changeset/0b9dc910cbd5/

Log:    move Makefile tests

diff --git a/rpython/translator/platform/test/test_makefile.py 
b/rpython/translator/platform/test/test_makefile.py
--- a/rpython/translator/platform/test/test_makefile.py
+++ b/rpython/translator/platform/test/test_makefile.py
@@ -1,7 +1,10 @@
 
 from rpython.translator.platform.posix import GnuMakefile as Makefile
+from rpython.translator.platform import host
+from rpython.tool.udir import udir
+from rpython.translator.tool.cbuild import ExternalCompilationInfo
 from StringIO import StringIO
-import re
+import re, sys
 
 def test_simple_makefile():
     m = Makefile()
@@ -29,3 +32,106 @@
     val = s.getvalue()
     assert not re.search('CC += +xxx', val, re.M)
     assert re.search('CC += +yyy', val, re.M)    
+
+class TestMakefile(object):
+    platform = host
+    strict_on_stderr = True
+
+    def check_res(self, res, expected='42\n'):
+        assert res.out == expected
+        if self.strict_on_stderr:
+            assert res.err == ''
+        assert res.returncode == 0        
+    
+    def test_900_files(self):
+        txt = '#include <stdio.h>\n'
+        for i in range(900):
+            txt += 'int func%03d();\n' % i
+        txt += 'int main() {\n    int j=0;'    
+        for i in range(900):
+            txt += '    j += func%03d();\n' % i
+        txt += '    printf("%d\\n", j);\n'
+        txt += '    return 0;};\n'
+        cfile = udir.join('test_900_files.c')
+        cfile.write(txt)
+        cfiles = [cfile]
+        for i in range(900):
+            cfile2 = udir.join('implement%03d.c' %i)
+            cfile2.write('''
+                int func%03d()
+            {
+                return %d;
+            }
+            ''' % (i, i))
+            cfiles.append(cfile2)
+        mk = self.platform.gen_makefile(cfiles, ExternalCompilationInfo(), 
path=udir)
+        mk.write()
+        self.platform.execute_makefile(mk)
+        res = self.platform.execute(udir.join('test_900_files'))
+        self.check_res(res, '%d\n' %sum(range(900)))
+
+    def test_precompiled_headers(self):
+        import time
+        tmpdir = udir.join('precompiled_headers').ensure(dir=1)
+        # Create an eci that should not use precompiled headers
+        eci = ExternalCompilationInfo(include_dirs=[tmpdir])
+        main_c = tmpdir.join('main_no_pch.c')
+        eci.separate_module_files = [main_c]
+        ncfiles = 10
+        nprecompiled_headers = 20
+        txt = ''
+        for i in range(ncfiles):
+            txt += "int func%03d();\n" % i
+        txt += "\nint main(int argc, char * argv[])\n"
+        txt += "{\n   int i=0;\n"
+        for i in range(ncfiles):
+            txt += "   i += func%03d();\n" % i
+        txt += '    printf("%d\\n", i);\n'
+        txt += "   return 0;\n};\n"
+        main_c.write(txt)
+        # Create some large headers with dummy functions to be precompiled
+        cfiles_precompiled_headers = []
+        for i in range(nprecompiled_headers):
+            pch_name =tmpdir.join('pcheader%03d.h' % i)
+            txt = ''
+            for j in range(3000):
+                txt += "int pcfunc%03d_%03d();\n" %(i, j)
+            pch_name.write(txt)    
+            cfiles_precompiled_headers.append(pch_name)        
+        # Create some cfiles with headers we want precompiled
+        cfiles = []
+        for i in range(ncfiles):
+            c_name =tmpdir.join('implement%03d.c' % i)
+            txt = ''
+            for pch_name in cfiles_precompiled_headers:
+                txt += '#include "%s"\n' % pch_name
+            txt += "int func%03d(){ return %d;};\n" % (i, i)
+            c_name.write(txt)
+            cfiles.append(c_name)        
+        mk = self.platform.gen_makefile(cfiles, eci, path=udir,
+                           cfile_precompilation=cfiles_precompiled_headers)
+        if sys.platform == 'win32':
+            clean = ('clean', '', 'for %f in ( $(OBJECTS) $(TARGET) ) do @if 
exist %f del /f %f')
+        else:    
+            clean = ('clean', '', 'rm -f $(OBJECTS) $(TARGET) ')
+        mk.rule(*clean)
+        mk.write()
+        t0 = time.clock()
+        self.platform.execute_makefile(mk)
+        t1 = time.clock()
+        t_precompiled = t1 - t0
+        res = self.platform.execute(mk.exe_name)
+        self.check_res(res, '%d\n' %sum(range(ncfiles)))
+        self.platform.execute_makefile(mk, extra_opts=['clean'])
+        #Rewrite a non-precompiled header makefile
+        mk = self.platform.gen_makefile(cfiles, eci, path=udir)
+        mk.rule(*clean)
+        mk.write()
+        t0 = time.clock()
+        self.platform.execute_makefile(mk)
+        t1 = time.clock()
+        t_normal = t1 - t0
+        print "precompiled haeder 'make' time %.2f, non-precompiled header 
time %.2f" %(t_precompiled, t_normal)
+        assert t_precompiled < t_normal * 0.5
+
+   
diff --git a/rpython/translator/platform/test/test_platform.py 
b/rpython/translator/platform/test/test_platform.py
--- a/rpython/translator/platform/test/test_platform.py
+++ b/rpython/translator/platform/test/test_platform.py
@@ -59,97 +59,6 @@
         res = self.platform.execute(executable)
         self.check_res(res)
 
-    def test_900_files(self):
-        txt = '#include <stdio.h>\n'
-        for i in range(900):
-            txt += 'int func%03d();\n' % i
-        txt += 'int main() {\n    int j=0;'    
-        for i in range(900):
-            txt += '    j += func%03d();\n' % i
-        txt += '    printf("%d\\n", j);\n'
-        txt += '    return 0;};\n'
-        cfile = udir.join('test_900_files.c')
-        cfile.write(txt)
-        cfiles = [cfile]
-        for i in range(900):
-            cfile2 = udir.join('implement%03d.c' %i)
-            cfile2.write('''
-                int func%03d()
-            {
-                return %d;
-            }
-            ''' % (i, i))
-            cfiles.append(cfile2)
-        mk = self.platform.gen_makefile(cfiles, ExternalCompilationInfo(), 
path=udir)
-        mk.write()
-        self.platform.execute_makefile(mk)
-        res = self.platform.execute(udir.join('test_900_files'))
-        self.check_res(res, '%d\n' %sum(range(900)))
-
-    def test_precompiled_headers(self):
-        import time
-        tmpdir = udir.join('precompiled_headers').ensure(dir=1)
-        # Create an eci that should not use precompiled headers
-        eci = ExternalCompilationInfo(include_dirs=[tmpdir])
-        main_c = tmpdir.join('main_no_pch.c')
-        eci.separate_module_files = [main_c]
-        ncfiles = 10
-        nprecompiled_headers = 20
-        txt = ''
-        for i in range(ncfiles):
-            txt += "int func%03d();\n" % i
-        txt += "\nint main(int argc, char * argv[])\n"
-        txt += "{\n   int i=0;\n"
-        for i in range(ncfiles):
-            txt += "   i += func%03d();\n" % i
-        txt += '    printf("%d\\n", i);\n'
-        txt += "   return 0;\n};\n"
-        main_c.write(txt)
-        # Create some large headers with dummy functions to be precompiled
-        cfiles_precompiled_headers = []
-        for i in range(nprecompiled_headers):
-            pch_name =tmpdir.join('pcheader%03d.h' % i)
-            txt = ''
-            for j in range(3000):
-                txt += "int pcfunc%03d_%03d();\n" %(i, j)
-            pch_name.write(txt)    
-            cfiles_precompiled_headers.append(pch_name)        
-        # Create some cfiles with headers we want precompiled
-        cfiles = []
-        for i in range(ncfiles):
-            c_name =tmpdir.join('implement%03d.c' % i)
-            txt = ''
-            for pch_name in cfiles_precompiled_headers:
-                txt += '#include "%s"\n' % pch_name
-            txt += "int func%03d(){ return %d;};\n" % (i, i)
-            c_name.write(txt)
-            cfiles.append(c_name)        
-        mk = self.platform.gen_makefile(cfiles, eci, path=udir,
-                           cfile_precompilation=cfiles_precompiled_headers)
-        if sys.platform == 'win32':
-            clean = ('clean', '', 'for %f in ( $(OBJECTS) $(TARGET) ) do @if 
exist %f del /f %f')
-        else:    
-            clean = ('clean', '', 'rm -f $(OBJECTS) $(TARGET) ')
-        mk.rule(*clean)
-        mk.write()
-        t0 = time.clock()
-        self.platform.execute_makefile(mk)
-        t1 = time.clock()
-        t_precompiled = t1 - t0
-        res = self.platform.execute(mk.exe_name)
-        self.check_res(res, '%d\n' %sum(range(ncfiles)))
-        self.platform.execute_makefile(mk, extra_opts=['clean'])
-        #Rewrite a non-precompiled header makefile
-        mk = self.platform.gen_makefile(cfiles, eci, path=udir)
-        mk.rule(*clean)
-        mk.write()
-        t0 = time.clock()
-        self.platform.execute_makefile(mk)
-        t1 = time.clock()
-        t_normal = t1 - t0
-        print "precompiled haeder 'make' time %.2f, non-precompiled header 
time %.2f" %(t_precompiled, t_normal)
-        assert t_precompiled < t_normal * 0.5
-
     def test_nice_errors(self):
         cfile = udir.join('test_nice_errors.c')
         cfile.write('')
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to