16
16
* $ GRAALVM_NODE=<graalvm>/bin/node node graalvm.js
17
17
*/
18
18
19
- var fs = require ( 'fs' ) ;
20
19
var child_process = require ( 'child_process' ) ;
21
20
var runner_support = require ( './runner_support' ) ;
22
21
23
22
var jsCommand = 'js' ;
24
23
var jsArgs = [ '--js.intl-402' ] ;
25
- var nodeCommand = process . env [ 'GRAALVM_NODE' ] ;
26
- var nodeArgs = [ ] ;
27
-
28
- var testScriptFilename = 'graalvmtest.js' ;
29
24
30
25
var flagsForSuite = {
31
- 'data- es5' : [ ] ,
32
- 'data- es6' : [ [ '--js.ecmascript-version=6' ] ] ,
33
- 'data- es2016plus' : [ [ '--js.ecmascript-version=staging' ] ] ,
34
- 'data- esnext' : [ [ '--js.ecmascript-version=staging' ] , [ '--experimental-options' , '--js.new-set-methods' ] ] ,
35
- 'data- esintl' : [ ] ,
36
- 'data- non-standard' : [ [ '--experimental-options' , '--js.nashorn-compat' ] , [ '--experimental-options' , '--js.v8-compat' ] , [ '--experimental-options' , '--js.global-property' ] ]
26
+ 'es5' : [ ] ,
27
+ 'es6' : [ [ '--js.ecmascript-version=6' ] ] ,
28
+ 'es2016plus' : [ [ '--js.ecmascript-version=staging' ] ] ,
29
+ 'esnext' : [ [ '--js.ecmascript-version=staging' ] , [ '--experimental-options' , '--js.new-set-methods' ] ] ,
30
+ 'esintl' : [ ] ,
31
+ 'non-standard' : [ [ '--experimental-options' , '--js.nashorn-compat' ] , [ '--experimental-options' , '--js.v8-compat' ] , [ '--experimental-options' , '--js.global-property' ] ]
37
32
} ;
38
33
39
- var prelude =
40
- 'if (typeof global === "undefined") {\n' +
41
- ' this.lacksGlobal = true;\n' +
42
- ' global = this;\n' +
43
- '}\n' +
44
- 'if (typeof globalThis === "undefined") {\n' +
45
- ' this.lacksGlobalThis = true;\n' +
46
- ' globalThis = this;\n' +
47
- '}\n' +
48
- 'var __script_executed = {};\n' +
49
- 'global.__script_executed = __script_executed;\n' +
50
- 'global.test = function test(expression) {\n' +
51
- ' if (expression) {\n' +
52
- ' console.log("[SUCCESS]");\n' +
53
- ' }\n' +
54
- '}\n' +
55
- 'global.asyncTestPassed = function asyncTestPassed() {\n' +
56
- ' console.log("[SUCCESS]");\n' +
57
- '}\n' +
58
- runner_support . createIterableHelper ;
59
-
60
34
// Key for .res (e.g. test.res.graalvm), automatic based on GraalVM version.
61
35
var graalvmKey = ( function ( ) {
62
36
var stdout = child_process . execFileSync ( jsCommand , [ '--version' ] , {
@@ -69,9 +43,9 @@ var graalvmKey = (function () {
69
43
} ) ( ) ;
70
44
console . log ( 'GraalVM result key is: test.res.graalvm' + graalvmKey ) ;
71
45
72
- function exec ( launcherCommand , launcherArgs , flags ) {
46
+ function exec ( flags , testFilename ) {
73
47
try {
74
- var stdout = child_process . execFileSync ( launcherCommand , launcherArgs . concat ( flags , [ testScriptFilename ] ) , {
48
+ var stdout = child_process . execFileSync ( jsCommand , jsArgs . concat ( flags , [ testFilename ] ) , {
75
49
encoding : 'utf-8' ,
76
50
stdio : [ 'ignore' , 'pipe' , 'ignore' ]
77
51
} ) ;
@@ -82,14 +56,14 @@ function exec(launcherCommand, launcherArgs, flags) {
82
56
}
83
57
}
84
58
85
- function executeTestScript ( launcherCommand , launcherArgs , suite ) {
86
- if ( exec ( launcherCommand , launcherArgs , [ ] ) ) {
59
+ function graalvmRunner ( testFilename , suite ) {
60
+ if ( exec ( [ ] , testFilename ) ) {
87
61
return true ;
88
62
}
89
63
90
64
for ( var i = 0 ; i < flagsForSuite [ suite ] . length ; i ++ ) {
91
65
var flags = flagsForSuite [ suite ] [ i ] ;
92
- if ( exec ( launcherCommand , launcherArgs , flags ) ) {
66
+ if ( exec ( flags , testFilename ) ) {
93
67
return {
94
68
val : 'flagged' ,
95
69
note_id : ( 'graalvm-' + flags . join ( '-' ) ) . replace ( / [ = \. ] / g, '-' ) . replace ( / - + / g, '-' ) ,
@@ -101,29 +75,6 @@ function executeTestScript(launcherCommand, launcherArgs, suite) {
101
75
return false ;
102
76
}
103
77
104
- function runTest ( evalcode , suite , testPath ) {
105
- if ( / \b s e t T i m e o u t \b / . test ( evalcode ) && ! nodeCommand ) {
106
- console . log ( testPath + ': could not run test using setTimeout (set GRAALVM_NODE to GraalVM\'s `node` binary and rerun to get results)' ) ;
107
- return 'skip' ;
108
- }
109
-
110
- var script =
111
- prelude + '\n' +
112
- 'var evalcode = ' + JSON . stringify ( evalcode ) + ';\n' +
113
- 'var result = eval(evalcode);\n' +
114
- 'if (result) {\n' +
115
- ' console.log("[SUCCESS]");\n' +
116
- '}\n' ;
117
-
118
- fs . writeFileSync ( testScriptFilename , script ) ;
119
-
120
- if ( evalcode . match ( / \b s e t T i m e o u t \b / ) ) {
121
- return executeTestScript ( nodeCommand , nodeArgs , suite ) ;
122
- } else {
123
- return executeTestScript ( jsCommand , jsArgs , suite ) ;
124
- }
125
- }
126
-
127
78
function resultsMatch ( expect , actual ) {
128
79
if ( expect === actual ) {
129
80
return true ;
@@ -134,4 +85,4 @@ function resultsMatch(expect, actual) {
134
85
return false ;
135
86
}
136
87
137
- runner_support . runTests ( runTest , graalvmKey , 'GraalVM' , { resultsMatch : resultsMatch } ) ;
88
+ runner_support . runTests ( graalvmRunner , graalvmKey , 'GraalVM' , { resultsMatch : resultsMatch } ) ;
0 commit comments