@@ -37,6 +37,53 @@ export default class Problems extends React.PureComponent {
37
37
}
38
38
}
39
39
40
+ runtest ( i ) {
41
+ const path = require ( 'path' ) ;
42
+ var prob = this . state . probs [ this . state . curr ]
43
+ var langcode = atom . config . get ( "codeblue.programmingLanguage" )
44
+ var ext = ""
45
+ if ( langcode == 43 ) ext = ".c"
46
+ else if ( langcode == 54 ) ext = ".cpp"
47
+ else ext = ".py"
48
+ var wd = atom . config . get ( "codeblue.workingDirectory" )
49
+ var towhere = path . join ( wd , prob . index )
50
+ var torun = path . join ( towhere , prob . index + ext )
51
+ var inputfile = path . join ( towhere , "examples/input" + i + ".in" )
52
+
53
+ var allverdicts = this . state . allverdicts
54
+
55
+ cmd = "python " + torun + " < " + inputfile
56
+
57
+ const { exec } = require ( 'child_process' ) ;
58
+ exec ( cmd , {
59
+ timeout : 2500 ,
60
+ maxBuffer : 1024 * 32 ,
61
+ } , ( error , stdout , stderr ) => {
62
+ var res = { n : i - 1 , error : false , verdict : "none" , icon : "check" }
63
+ res . stdout = stdout
64
+ if ( error !== null ) {
65
+ res . error = true
66
+ if ( error . killed ) {
67
+ res . verdict = "TIME_LIMIT_EXCEEDED"
68
+ res . icon = "clock"
69
+ } else if ( error . code == "ERR_CHILD_PROCESS_STDIO_MAXBUFFER" ) {
70
+ res . verdict = "MEMORY_LIMIT_EXCEEDED"
71
+ res . icon = "database"
72
+ } else {
73
+ res . verdict = "RUNTIME_ERROR"
74
+ res . icon = "alert"
75
+ }
76
+ res . stderr = stderr
77
+ }
78
+ allverdicts [ prob . index ] [ i - 1 ] = res
79
+ this . setState ( { allverdicts : allverdicts } )
80
+ } )
81
+ }
82
+
83
+ runexamples ( ) {
84
+ this . runtest ( 1 )
85
+ }
86
+
40
87
fetch ( url ) {
41
88
return new Promise ( ( resolve , reject ) => {
42
89
request ( url , ( error , response , body ) => {
@@ -100,7 +147,7 @@ export default class Problems extends React.PureComponent {
100
147
outputs . push ( io )
101
148
} else {
102
149
inputs . push ( io )
103
- verdicts . push ( { n : Math . floor ( i / 2 ) , verdict : "NONE " , icon : "none" } )
150
+ verdicts . push ( { n : Math . floor ( i / 2 ) , error : false , verdict : "none " , icon : "none" , stdout : "" , stderr : "" } )
104
151
}
105
152
} else {
106
153
noftests [ index ] = Math . floor ( i / 2 )
@@ -292,7 +339,11 @@ export default class Problems extends React.PureComponent {
292
339
)
293
340
}
294
341
</ div >
295
- { this . state . probs . length ? < Actions prob = { this . state . probs [ this . state . curr ] } tests = { this . state . allverdicts [ this . state . probs [ this . state . curr ] . index ] } /> : null }
342
+ { this . state . probs . length ? < Actions
343
+ prob = { this . state . probs [ this . state . curr ] }
344
+ tests = { this . state . allverdicts [ this . state . probs [ this . state . curr ] . index ] }
345
+ runexamples = { this . runexamples . bind ( this ) }
346
+ /> : null }
296
347
{ this . state . probs . length ? < RecentSubmissions actions = { this . state . actions } /> : null }
297
348
</ div >
298
349
) }
0 commit comments