@@ -41,13 +41,17 @@ function saveSolution(language, content) {
41
41
file . writeFileSync ( userSolutionFilename , content ) ;
42
42
}
43
43
44
- function parseStdout ( stdout ) {
44
+ function parseResultsFileFromStdout ( stdout ) {
45
45
// stdout:
46
46
// LongestSubstringWithoutRepeatingCharacters for testcase All in language cpp
47
47
// Results written to /path\to/openleetcode/src/ui/testcase_output/<testname><datetime>.results
48
48
// Status: <status>
49
49
// Duration: <duration>ms
50
- return stdout . match ( / R e s u l t s w r i t t e n t o ( .* \. r e s u l t s ) / ) [ 1 ] ;
50
+ match = stdout . match ( / R e s u l t s w r i t t e n t o ( .* \. r e s u l t s ) / ) ;
51
+ if ( ! match || match . length === 0 ) {
52
+ return null ;
53
+ }
54
+ return match [ 1 ] ;
51
55
}
52
56
53
57
function parseBuildError ( stdout ) {
@@ -156,31 +160,36 @@ function run(callback, testcase = 'All', expected = false) {
156
160
157
161
var resultsFilename ;
158
162
exec ( command , ( error , stdout , stderr ) => {
159
- if ( error ) {
163
+ var element = document . getElementById ( "compilation-content" ) ;
164
+
165
+ element . textContent = "" ;
166
+ resultsFilename = parseResultsFileFromStdout ( stdout ) ;
167
+ if ( ! resultsFilename || ! file . existsSync ( resultsFilename ) ) {
168
+ console . log ( "Setting error" ) ;
160
169
console . log ( "Error running the command, error: " + error +
161
170
", stderr: " + stderr + ", stdout: " + stdout ) ;
162
- var element = document . getElementById ( "compilation-content" ) ;
163
- element . textContent = parseBuildError ( stdout + "\n" + error ) ;
171
+ element . textContent = parseBuildError ( stdout ) ;
164
172
document . getElementById ( 'tab-compilation-button' ) . click ( ) ;
165
173
return ;
166
174
}
167
- var element = document . getElementById ( "compilation-content" ) ;
168
- element . textContent = "" ;
169
-
170
- resultsFilename = parseStdout ( stdout ) ;
171
- if ( ! resultsFilename ) {
172
- throw new Error ( "Could not parse results filename from stdout: " +
173
- "${stdout}" ) ;
174
- }
175
175
176
- if ( ! file . existsSync ( resultsFilename ) ) {
177
- throw new Error ( `Results file does not exist: ${ resultsFilename } ` ) ;
178
- }
179
-
180
176
const results = file . readFileSync ( resultsFilename , 'utf8' ) ;
181
177
console . log ( results ) ;
182
178
const resultsJson = JSON . parse ( results ) ;
183
- callback ( resultsJson ) ;
179
+ errorcode = resultsJson [ "errorcode" ] ;
180
+ console . log ( "errorcode: " + errorcode ) ;
181
+ if ( errorcode != undefined && errorcode !== 0 ) {
182
+ html = "<p>Errorcode: " + resultsJson . errorcode + "</p>" ;
183
+ html += "<p>Stdout: " + resultsJson . stdout + "</p>" ;
184
+ html += "<p>Stderr: " + resultsJson . stderr + "</p>" ;
185
+
186
+ element . innerHTML = html ;
187
+ document . getElementById ( 'tab-compilation-button' ) . click ( ) ;
188
+ return ;
189
+ } else {
190
+ console . log ( "Setting results" ) ;
191
+ callback ( resultsJson ) ;
192
+ }
184
193
} ) ;
185
194
}
186
195
0 commit comments