瀏覽代碼

add tests for `.pyc`

blueloveTH 1 月之前
父節點
當前提交
3e182d5c6b
共有 3 個文件被更改,包括 20 次插入8 次删除
  1. 11 5
      scripts/run_tests.py
  2. 4 2
      tests/801_sys.py
  3. 5 1
      tests/802_traceback.py

+ 11 - 5
scripts/run_tests.py

@@ -3,14 +3,12 @@ import sys
 import time
 import subprocess
 
+pkpy_exe = 'main.exe' if sys.platform == 'win32' else './main'
 
 def test_file(filepath, cpython=False):
     if cpython:
         return os.system("python " + filepath) == 0
-    if sys.platform == 'win32':
-        code = os.system("main.exe " + filepath)
-    else:
-        code = os.system("./main " + filepath)
+    code = os.system(pkpy_exe + ' ' + filepath)
     if code != 0:
         print('Return code:', code)
     return code == 0
@@ -18,7 +16,7 @@ def test_file(filepath, cpython=False):
 def test_dir(path):
     print("Testing directory:", path)
     for filename in sorted(os.listdir(path)):
-        if not filename.endswith('.py'):
+        if not filename.endswith('.py') and not filename.endswith('.pyc'):
             continue
         filepath = os.path.join(path, filename)
         print("> " + filepath, flush=True)
@@ -76,6 +74,8 @@ exit()
             print(res.stdout)
             exit(1)
 
+code = os.system(f'python compileall.py {pkpy_exe} tests tmp/tests')
+assert code == 0
 
 if len(sys.argv) == 2:
     assert 'benchmark' in sys.argv[1]
@@ -84,5 +84,11 @@ else:
     test_dir('tests/')
     test_repl()
 
+    if os.path.exists('tmp/tests'):
+        print('-' * 50)
+        time.sleep(3)
+        test_dir('tmp/tests/')
+    
+
 
 print("ALL TESTS PASSED")

+ 4 - 2
tests/801_sys.py

@@ -1,5 +1,7 @@
 import sys
 
-filename = 'tests/801_sys.py'
-assert (sys.argv == [filename]), sys.argv
+assert (sys.argv in [
+    ['tests/801_sys.py'],
+    ['tmp/tests/801_sys.pyc'],
+    ]), sys.argv
 

+ 5 - 1
tests/802_traceback.py

@@ -1,4 +1,8 @@
 import traceback
+import sys
+
+if sys.argv[0].endswith('.pyc'):
+    exit()
 
 try:
     a = {'123': 4}
@@ -7,7 +11,7 @@ except KeyError:
     actual = traceback.format_exc()
 
 expected = '''Traceback (most recent call last):
-  File "tests/802_traceback.py", line 5
+  File "tests/802_traceback.py", line 9
     b = a[6]
 KeyError: 6'''