Skip to content

Commit 702b2e9

Browse files
committed
refactor(tests): share object completion oracle
1 parent c89aa19 commit 702b2e9

12 files changed

Lines changed: 16 additions & 274 deletions

tests/oracle/object/oracle_object_accessors.rs

Lines changed: 2 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
use std::ffi::OsStr;
2-
use std::process::Command;
32

43
use quickjs_oxide::{Runtime, Value};
54

@@ -457,42 +456,8 @@ fn rust_observation(case: &Case) -> String {
457456
}
458457

459458
fn oracle_observation(oracle: &OsStr, case: &Case) -> String {
460-
let wrapper = r#"
461-
try {
462-
var value = std.evalScript(scriptArgs[0]);
463-
print('return|' + typeof value + '|' + String(value));
464-
} catch (error) {
465-
if (error !== null && typeof error === 'object')
466-
print('throw|object|' + error.name + '|' + error.message);
467-
else
468-
print('throw|' + typeof error + '|' + String(error));
469-
}
470-
"#;
471-
let output = Command::new(oracle)
472-
.args(["--std", "-e", wrapper, case.source])
473-
.output()
474-
.unwrap_or_else(|error| {
475-
panic!(
476-
"could not run QuickJS for {} / {}: {error}",
477-
case.group, case.description,
478-
)
479-
});
480-
assert!(
481-
output.status.success(),
482-
"QuickJS observer failed for {} / {}: {}",
483-
case.group,
484-
case.description,
485-
String::from_utf8_lossy(&output.stderr),
486-
);
487-
String::from_utf8(output.stdout)
488-
.unwrap_or_else(|error| {
489-
panic!(
490-
"QuickJS output was not UTF-8 for {} / {}: {error}",
491-
case.group, case.description,
492-
)
493-
})
494-
.trim_end()
495-
.to_owned()
459+
let description = format!("{} / {}", case.group, case.description);
460+
super::quickjs_completion::observe(oracle, case.source, &description)
496461
}
497462

498463
fn value_type(runtime: &Runtime, value: &Value) -> &'static str {

tests/oracle/object/oracle_object_assign.rs

Lines changed: 1 addition & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -679,28 +679,7 @@ fn observe_rust_eval(
679679
}
680680

681681
fn observe_oracle(oracle: &OsStr, source: &str, description: &str) -> String {
682-
let wrapper = r#"
683-
try {
684-
var value=std.evalScript(scriptArgs[0]);
685-
print('return|'+typeof value+'|'+String(value));
686-
} catch(error) {
687-
if(error!==null&&typeof error==='object')print('throw|object|'+error.name+'|'+error.message);
688-
else print('throw|'+typeof error+'|'+String(error));
689-
}
690-
"#;
691-
let output = Command::new(oracle)
692-
.args(["--std", "-e", wrapper, source])
693-
.output()
694-
.unwrap_or_else(|error| panic!("could not run QuickJS for {description}: {error}"));
695-
assert!(
696-
output.status.success(),
697-
"QuickJS observer failed for {description}: {}",
698-
String::from_utf8_lossy(&output.stderr),
699-
);
700-
String::from_utf8(output.stdout)
701-
.unwrap_or_else(|error| panic!("QuickJS output was not UTF-8 for {description}: {error}"))
702-
.trim_end()
703-
.to_owned()
682+
super::quickjs_completion::observe(oracle, source, description)
704683
}
705684

706685
fn rust_graph_observations() -> Vec<String> {

tests/oracle/object/oracle_object_descriptors.rs

Lines changed: 1 addition & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -642,28 +642,7 @@ fn observe_rust_eval(
642642
}
643643

644644
fn observe_oracle(oracle: &OsStr, source: &str, description: &str) -> String {
645-
let wrapper = r#"
646-
try {
647-
var value=std.evalScript(scriptArgs[0]);
648-
print('return|'+typeof value+'|'+String(value));
649-
} catch(error) {
650-
if(error!==null&&typeof error==='object')print('throw|object|'+error.name+'|'+error.message);
651-
else print('throw|'+typeof error+'|'+String(error));
652-
}
653-
"#;
654-
let output = Command::new(oracle)
655-
.args(["--std", "-e", wrapper, source])
656-
.output()
657-
.unwrap_or_else(|error| panic!("could not run QuickJS for {description}: {error}"));
658-
assert!(
659-
output.status.success(),
660-
"QuickJS observer failed for {description}: {}",
661-
String::from_utf8_lossy(&output.stderr),
662-
);
663-
String::from_utf8(output.stdout)
664-
.unwrap_or_else(|error| panic!("QuickJS output was not UTF-8 for {description}: {error}"))
665-
.trim_end()
666-
.to_owned()
645+
super::quickjs_completion::observe(oracle, source, description)
667646
}
668647

669648
fn rust_graph_observations() -> Vec<String> {

tests/oracle/object/oracle_object_enumeration.rs

Lines changed: 1 addition & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -419,28 +419,7 @@ fn observe_rust_eval(
419419
}
420420

421421
fn observe_oracle(oracle: &OsStr, source: &str, description: &str) -> String {
422-
let wrapper = r#"
423-
try {
424-
var value=std.evalScript(scriptArgs[0]);
425-
print('return|'+typeof value+'|'+String(value));
426-
} catch(error) {
427-
if(error!==null&&typeof error==='object')print('throw|object|'+error.name+'|'+error.message);
428-
else print('throw|'+typeof error+'|'+String(error));
429-
}
430-
"#;
431-
let output = Command::new(oracle)
432-
.args(["--std", "-e", wrapper, source])
433-
.output()
434-
.unwrap_or_else(|error| panic!("could not run QuickJS for {description}: {error}"));
435-
assert!(
436-
output.status.success(),
437-
"QuickJS observer failed for {description}: {}",
438-
String::from_utf8_lossy(&output.stderr),
439-
);
440-
String::from_utf8(output.stdout)
441-
.unwrap_or_else(|error| panic!("QuickJS output was not UTF-8 for {description}: {error}"))
442-
.trim_end()
443-
.to_owned()
422+
super::quickjs_completion::observe(oracle, source, description)
444423
}
445424

446425
fn rust_graph_observations() -> Vec<String> {

tests/oracle/object/oracle_object_extensibility.rs

Lines changed: 1 addition & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -468,28 +468,7 @@ fn observe_rust_eval(
468468
}
469469

470470
fn observe_oracle(oracle: &OsStr, source: &str, description: &str) -> String {
471-
let wrapper = r#"
472-
try {
473-
var value=std.evalScript(scriptArgs[0]);
474-
print('return|'+typeof value+'|'+String(value));
475-
} catch(error) {
476-
if(error!==null&&typeof error==='object')print('throw|object|'+error.name+'|'+error.message);
477-
else print('throw|'+typeof error+'|'+String(error));
478-
}
479-
"#;
480-
let output = Command::new(oracle)
481-
.args(["--std", "-e", wrapper, source])
482-
.output()
483-
.unwrap_or_else(|error| panic!("could not run QuickJS for {description}: {error}"));
484-
assert!(
485-
output.status.success(),
486-
"QuickJS observer failed for {description}: {}",
487-
String::from_utf8_lossy(&output.stderr),
488-
);
489-
String::from_utf8(output.stdout)
490-
.unwrap_or_else(|error| panic!("QuickJS output was not UTF-8 for {description}: {error}"))
491-
.trim_end()
492-
.to_owned()
471+
super::quickjs_completion::observe(oracle, source, description)
493472
}
494473

495474
fn rust_graph_observations() -> Vec<String> {

tests/oracle/object/oracle_object_from_entries.rs

Lines changed: 1 addition & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -671,28 +671,7 @@ fn observe_rust_eval(
671671
}
672672

673673
fn observe_oracle(oracle: &OsStr, source: &str, description: &str) -> String {
674-
let wrapper = r#"
675-
try {
676-
var value=std.evalScript(scriptArgs[0]);
677-
print('return|'+typeof value+'|'+String(value));
678-
} catch(error) {
679-
if(error!==null&&typeof error==='object')print('throw|object|'+error.name+'|'+error.message);
680-
else print('throw|'+typeof error+'|'+String(error));
681-
}
682-
"#;
683-
let output = Command::new(oracle)
684-
.args(["--std", "-e", wrapper, source])
685-
.output()
686-
.unwrap_or_else(|error| panic!("could not run QuickJS for {description}: {error}"));
687-
assert!(
688-
output.status.success(),
689-
"QuickJS observer failed for {description}: {}",
690-
String::from_utf8_lossy(&output.stderr),
691-
);
692-
String::from_utf8(output.stdout)
693-
.unwrap_or_else(|error| panic!("QuickJS output was not UTF-8 for {description}: {error}"))
694-
.trim_end()
695-
.to_owned()
674+
super::quickjs_completion::observe(oracle, source, description)
696675
}
697676

698677
fn rust_graph_observations() -> Vec<String> {

tests/oracle/object/oracle_object_group_by.rs

Lines changed: 1 addition & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -509,30 +509,7 @@ fn observe_rust_eval(
509509
}
510510

511511
fn observe_oracle(oracle: &OsStr, source: &str, description: &str) -> String {
512-
let wrapper = r#"
513-
try {
514-
var value = std.evalScript(scriptArgs[0]);
515-
print('return|' + typeof value + '|' + String(value));
516-
} catch (error) {
517-
if (error !== null && typeof error === 'object')
518-
print('throw|object|' + error.name + '|' + error.message);
519-
else
520-
print('throw|' + typeof error + '|' + String(error));
521-
}
522-
"#;
523-
let output = Command::new(oracle)
524-
.args(["--std", "-e", wrapper, source])
525-
.output()
526-
.unwrap_or_else(|error| panic!("could not run QuickJS for {description}: {error}"));
527-
assert!(
528-
output.status.success(),
529-
"QuickJS observer failed for {description}: {}",
530-
String::from_utf8_lossy(&output.stderr),
531-
);
532-
String::from_utf8(output.stdout)
533-
.unwrap_or_else(|error| panic!("QuickJS output was not UTF-8 for {description}: {error}"))
534-
.trim_end()
535-
.to_owned()
512+
super::quickjs_completion::observe(oracle, source, description)
536513
}
537514

538515
fn rust_graph_observations() -> Vec<String> {

tests/oracle/object/oracle_object_has_own.rs

Lines changed: 1 addition & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -516,28 +516,7 @@ fn observe_rust_eval(
516516
}
517517

518518
fn observe_oracle(oracle: &OsStr, source: &str, description: &str) -> String {
519-
let wrapper = r#"
520-
try {
521-
var value=std.evalScript(scriptArgs[0]);
522-
print('return|'+typeof value+'|'+String(value));
523-
} catch(error) {
524-
if(error!==null&&typeof error==='object')print('throw|object|'+error.name+'|'+error.message);
525-
else print('throw|'+typeof error+'|'+String(error));
526-
}
527-
"#;
528-
let output = Command::new(oracle)
529-
.args(["--std", "-e", wrapper, source])
530-
.output()
531-
.unwrap_or_else(|error| panic!("could not run QuickJS for {description}: {error}"));
532-
assert!(
533-
output.status.success(),
534-
"QuickJS observer failed for {description}: {}",
535-
String::from_utf8_lossy(&output.stderr),
536-
);
537-
String::from_utf8(output.stdout)
538-
.unwrap_or_else(|error| panic!("QuickJS output was not UTF-8 for {description}: {error}"))
539-
.trim_end()
540-
.to_owned()
519+
super::quickjs_completion::observe(oracle, source, description)
541520
}
542521

543522
fn rust_graph_observations() -> Vec<String> {

tests/oracle/object/oracle_object_integrity.rs

Lines changed: 1 addition & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -534,28 +534,7 @@ fn observe_rust_eval(
534534
}
535535

536536
fn observe_oracle(oracle: &OsStr, source: &str, description: &str) -> String {
537-
let wrapper = r#"
538-
try {
539-
var value=std.evalScript(scriptArgs[0]);
540-
print('return|'+typeof value+'|'+String(value));
541-
} catch(error) {
542-
if(error!==null&&typeof error==='object')print('throw|object|'+error.name+'|'+error.message);
543-
else print('throw|'+typeof error+'|'+String(error));
544-
}
545-
"#;
546-
let output = Command::new(oracle)
547-
.args(["--std", "-e", wrapper, source])
548-
.output()
549-
.unwrap_or_else(|error| panic!("could not run QuickJS for {description}: {error}"));
550-
assert!(
551-
output.status.success(),
552-
"QuickJS observer failed for {description}: {}",
553-
String::from_utf8_lossy(&output.stderr),
554-
);
555-
String::from_utf8(output.stdout)
556-
.unwrap_or_else(|error| panic!("QuickJS output was not UTF-8 for {description}: {error}"))
557-
.trim_end()
558-
.to_owned()
537+
super::quickjs_completion::observe(oracle, source, description)
559538
}
560539

561540
fn rust_graph_observations() -> Vec<String> {

tests/oracle/object/oracle_object_is.rs

Lines changed: 1 addition & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -354,28 +354,7 @@ fn observe_rust_eval(
354354
}
355355

356356
fn observe_oracle(oracle: &OsStr, source: &str, description: &str) -> String {
357-
let wrapper = r#"
358-
try {
359-
var value=std.evalScript(scriptArgs[0]);
360-
print('return|'+typeof value+'|'+String(value));
361-
} catch(error) {
362-
if(error!==null&&typeof error==='object')print('throw|object|'+error.name+'|'+error.message);
363-
else print('throw|'+typeof error+'|'+String(error));
364-
}
365-
"#;
366-
let output = Command::new(oracle)
367-
.args(["--std", "-e", wrapper, source])
368-
.output()
369-
.unwrap_or_else(|error| panic!("could not run QuickJS for {description}: {error}"));
370-
assert!(
371-
output.status.success(),
372-
"QuickJS observer failed for {description}: {}",
373-
String::from_utf8_lossy(&output.stderr),
374-
);
375-
String::from_utf8(output.stdout)
376-
.unwrap_or_else(|error| panic!("QuickJS output was not UTF-8 for {description}: {error}"))
377-
.trim_end()
378-
.to_owned()
357+
super::quickjs_completion::observe(oracle, source, description)
379358
}
380359

381360
fn rust_graph_observations() -> Vec<String> {

0 commit comments

Comments
 (0)