1- use std:: ffi:: OsStr ;
2- use std:: process:: Command ;
3-
41use quickjs_oxide:: { Runtime , RuntimeError , Value } ;
52
63struct Case {
@@ -267,7 +264,12 @@ fn pinned_quickjs_object_super_arrow_semantics_match_expectations() {
267264
268265 for case in CASES {
269266 assert_eq ! (
270- oracle_observation( & oracle, case) ,
267+ super :: quickjs_object_super_oracle:: observe_completion_name_only(
268+ & oracle,
269+ case. source,
270+ case. group,
271+ case. description,
272+ ) ,
271273 case. expected,
272274 "pinned QuickJS object-super-arrow vector drifted for {} / {}: {:?}" ,
273275 case. group,
@@ -285,7 +287,12 @@ fn object_super_arrow_semantics_match_pinned_quickjs() {
285287 } ;
286288
287289 for case in CASES {
288- let quickjs = oracle_observation ( & oracle, case) ;
290+ let quickjs = super :: quickjs_object_super_oracle:: observe_completion_name_only (
291+ & oracle,
292+ case. source ,
293+ case. group ,
294+ case. description ,
295+ ) ;
289296 assert_eq ! (
290297 rust_observation( case) ,
291298 quickjs,
@@ -363,45 +370,6 @@ fn error_name(
363370 value. to_utf8_lossy ( )
364371}
365372
366- fn oracle_observation ( oracle : & OsStr , case : & Case ) -> String {
367- let wrapper = r#"
368- try {
369- var value = std.evalScript(scriptArgs[0]);
370- print('return|' + typeof value + '|' + String(value));
371- } catch (error) {
372- if (error !== null && typeof error === 'object')
373- print('throw|object|' + error.name);
374- else
375- print('throw|' + typeof error + '|' + String(error));
376- }
377- "# ;
378- let output = Command :: new ( oracle)
379- . args ( [ "--std" , "-e" , wrapper, case. source ] )
380- . output ( )
381- . unwrap_or_else ( |error| {
382- panic ! (
383- "could not run QuickJS for {} / {}: {error}" ,
384- case. group, case. description,
385- )
386- } ) ;
387- assert ! (
388- output. status. success( ) ,
389- "QuickJS observer failed for {} / {}: {}" ,
390- case. group,
391- case. description,
392- String :: from_utf8_lossy( & output. stderr) ,
393- ) ;
394- String :: from_utf8 ( output. stdout )
395- . unwrap_or_else ( |error| {
396- panic ! (
397- "QuickJS output was not UTF-8 for {} / {}: {error}" ,
398- case. group, case. description,
399- )
400- } )
401- . trim_end ( )
402- . to_owned ( )
403- }
404-
405373fn value_type ( runtime : & Runtime , value : & Value ) -> & ' static str {
406374 match value {
407375 Value :: Undefined => "undefined" ,
0 commit comments