@@ -4,11 +4,11 @@ const program = require('commander');
4
4
5
5
function test ( python3 , opt ) {
6
6
var startime , endtime , elapsed ;
7
-
7
+
8
8
// Import Skulpt
9
9
var skulptname = 'skulpt.js' ;
10
10
if ( opt ) {
11
- skulptname = 'skulpt.min.js' ;
11
+ skulptname = 'skulpt.min.js' ;
12
12
}
13
13
require ( '../dist/' + skulptname ) ;
14
14
Sk . js_beautify = require ( 'js-beautify' ) . js ;
@@ -17,65 +17,81 @@ function test (python3, opt) {
17
17
var dir , pyver ;
18
18
19
19
if ( python3 ) {
20
- dir = "test/unit3" ;
21
- pyver = Sk . python3 ;
20
+ dir = "test/unit3" ;
21
+ pyver = Sk . python3 ;
22
22
} else {
23
- dir = "test/unit" ;
24
- pyver = Sk . python2 ;
23
+ dir = "test/unit" ;
24
+ pyver = Sk . python2 ;
25
25
}
26
26
27
- var passTot = 0 ;
28
- var failTot = 0 ;
29
- var buf , found ;
30
-
31
- var regexp = / .* R a n .* p a s s e d : \s + ( \d + ) \s + f a i l e d : \s + ( \d + ) / g;
27
+ const regexp = / .* R a n .* p a s s e d : \s + ( \d + ) \s + f a i l e d : \s + ( \d + ) / g;
32
28
33
29
// Configure Skulpt to run unit tests
34
30
Sk . configure ( {
35
- syspath : [ dir ] ,
36
- read : ( fname ) => { return fs . readFileSync ( fname , "utf8" ) ; } ,
37
- output : ( args ) => { buf += args ; } ,
38
- __future__ : pyver
31
+ syspath : [ dir ] ,
32
+ read : ( fname ) => { return fs . readFileSync ( fname , "utf8" ) ; } ,
33
+ output : ( args ) => { Sk . buf += args ; } ,
34
+ __future__ : pyver
39
35
} ) ;
40
36
41
37
// Test each existing unit test file
42
38
var files = fs . readdirSync ( dir ) ;
39
+ var modules = [ ] ;
40
+
41
+ for ( var idx = 0 ; idx < files . length ; idx ++ ) {
42
+ let file = dir + '/' + files [ idx ] ;
43
+ let stat = fs . statSync ( file ) ;
44
+ let basename = path . basename ( file , ".py" ) ;
45
+
46
+ if ( stat . isFile ( ) && basename . startsWith ( "test_" ) && ( path . extname ( file ) == ".py" ) ) {
47
+ modules . push ( [ file , basename ] ) ;
48
+ }
49
+ }
50
+
43
51
starttime = Date . now ( ) ;
44
- files . forEach ( ( file ) => {
45
- let fullname = dir + "/" + file ;
46
- let stat = fs . statSync ( fullname ) ;
47
- let basename = path . basename ( file , ".py" ) ;
48
-
49
- if ( stat . isFile ( ) && basename . startsWith ( "test_" ) && ( path . extname ( file ) == ".py" ) ) {
50
- buf = "" ;
51
- console . log ( fullname ) ;
52
-
53
- // Run Skulpt
54
- Sk . misceval . asyncToPromise ( function ( ) {
55
- return Sk . importMain ( basename , false , true ) ;
56
- } ) . then ( function ( ) { } , function ( e ) {
57
- failTot += 1 ;
58
- console . log ( "UNCAUGHT EXCEPTION: " + e ) ;
59
- console . log ( e . stack ) ;
60
- process . exit ( 1 ) ;
61
- } ) ;
62
-
63
- // Print results
64
- console . log ( buf ) ;
65
-
66
- // Update results
67
- while ( ( found = regexp . exec ( buf ) ) !== null ) {
68
- passTot += parseInt ( found [ 1 ] ) ;
69
- failTot += parseInt ( found [ 2 ] ) ;
70
- }
71
- }
72
- } ) ;
73
52
74
- endtime = Date . now ( ) ;
75
- console . log ( "Summary" ) ;
76
- console . log ( "Passed: " + passTot + " Failed: " + failTot ) ;
77
- elapsed = ( endtime - starttime ) / 1000 ;
78
- console . log ( "Total run time for all unit tests: " + elapsed . toString ( ) + "s" ) ;
53
+ function runtest ( tests , passed , failed ) {
54
+ if ( tests . length == 0 ) {
55
+ endtime = Date . now ( ) ;
56
+ elapsed = ( endtime - starttime ) / 1000 ;
57
+ console . log ( "Summary" ) ;
58
+ console . log ( "Passed: " + passed + " Failed: " + failed ) ;
59
+ console . log ( "Total run time for all unit tests: " + elapsed . toString ( ) + "s" ) ;
60
+ return ;
61
+ }
62
+
63
+ var test = tests . shift ( ) ;
64
+
65
+ // Clear output buffer
66
+ Sk . buf = "" ;
67
+
68
+ // Print test name
69
+ console . log ( test [ 0 ] + "\n" ) ;
70
+
71
+ // Run test
72
+ Sk . misceval . asyncToPromise ( function ( ) {
73
+ return Sk . importMain ( test [ 1 ] , false , true ) ;
74
+ } ) . then ( function ( ) {
75
+ var found ;
76
+
77
+ // Print results
78
+ console . log ( Sk . buf ) ;
79
+
80
+ // Update results
81
+ while ( ( found = regexp . exec ( Sk . buf ) ) !== null ) {
82
+ passed += parseInt ( found [ 1 ] ) ;
83
+ failed += parseInt ( found [ 2 ] ) ;
84
+ }
85
+ } ) . catch ( function ( err ) {
86
+ failed += 1 ;
87
+ console . log ( "UNCAUGHT EXCEPTION: " + err ) ;
88
+ console . log ( err . stack ) ;
89
+ } ) . then ( function ( ) {
90
+ runtest ( tests , passed , failed )
91
+ } ) ;
92
+ }
93
+
94
+ runtest ( modules , 0 , 0 ) ;
79
95
}
80
96
81
97
program
0 commit comments