@@ -58,10 +58,50 @@ export default class SubmissionScenario extends Scenario {
58
58
const runOutputFile = path . join ( currentTestcasePath , 'run.stdout' )
59
59
const expectedOutputFile = path . join ( currentTestcasePath , 'stdout' )
60
60
61
- const diff = exec ( `
62
- diff -b -B -a --suppress-common-lines --speed-large-files ${ runOutputFile } ${ expectedOutputFile }
63
- ` )
64
- let score = diff . code === 0 ? 100 : 0
61
+ let score = 0 ;
62
+ switch ( job . lang ) {
63
+ case 'mysql' : {
64
+ console . log ( 'inside job kang mysql' )
65
+
66
+ const fromEntries = ( entries ) => {
67
+ return entries . reduce ( ( acc , [ key , value ] ) => {
68
+ acc [ key ] = value ;
69
+ return acc ;
70
+ } , { } ) ;
71
+ } ;
72
+
73
+ const normalizeObject = ( obj ) =>
74
+ fromEntries ( Object . entries ( obj ) . sort ( ( [ keyA ] , [ keyB ] ) => keyA . localeCompare ( keyB ) ) ) ;
75
+
76
+ const compare = ( arr1 , arr2 ) => {
77
+ if ( arr1 . length !== arr2 . length ) return false ;
78
+
79
+ const sortedArr1 = arr1 . map ( normalizeObject ) . sort ( ( a , b ) => JSON . stringify ( a ) . localeCompare ( JSON . stringify ( b ) ) ) ;
80
+ const sortedArr2 = arr2 . map ( normalizeObject ) . sort ( ( a , b ) => JSON . stringify ( a ) . localeCompare ( JSON . stringify ( b ) ) ) ;
81
+
82
+ return JSON . stringify ( sortedArr1 ) === JSON . stringify ( sortedArr2 ) ;
83
+ } ;
84
+ const runOutput = fs . readFileSync ( runOutputFile , {
85
+ encoding : 'utf-8'
86
+ } ) ;
87
+ const expectedOutput = fs . readFileSync ( expectedOutputFile , {
88
+ encoding : 'utf-8'
89
+ } ) ;
90
+ try {
91
+ score = compare ( JSON . parse ( runOutput ) , JSON . parse ( expectedOutput ) ) ? 100 : 0 ;
92
+ } catch ( err ) {
93
+ // unable to parse json
94
+ }
95
+ break ;
96
+ }
97
+ default : {
98
+ const diff = exec ( `
99
+ diff -b -B -a --suppress-common-lines --speed-large-files ${ runOutputFile } ${ expectedOutputFile }
100
+ ` ) ;
101
+ score = diff . code === 0 ? 100 : 0 ;
102
+ break ;
103
+ }
104
+ }
65
105
66
106
let result = new Array (
67
107
+ code === 143 && "TLE" ,
0 commit comments