@@ -570,42 +570,21 @@ function addTest(manifest, test, tests) {
570
570
throw Error ( 'Unknown test type: ' + test . type ) ;
571
571
}
572
572
573
+ let benchResults = null ;
573
574
if ( options . benchmark ) {
574
- // pre-load params to avoid doc loader and parser timing
575
- const benchParams = testInfo . params . map ( param => param ( test , {
576
- load : true
577
- } ) ) ;
578
- const benchValues = await Promise . all ( benchParams ) ;
579
-
580
- await new Promise ( ( resolve , reject ) => {
581
- const suite = new benchmark . Suite ( ) ;
582
- suite . add ( {
583
- name : test . name ,
584
- defer : true ,
585
- fn : deferred => {
586
- jsonld [ fn ] . apply ( null , benchValues ) . then ( ( ) => {
587
- deferred . resolve ( ) ;
588
- } ) ;
589
- }
590
- } ) ;
591
- suite
592
- . on ( 'start' , e => {
593
- self . timeout ( ( e . target . maxTime + 2 ) * 1000 ) ;
594
- } )
595
- . on ( 'cycle' , e => {
596
- console . log ( String ( e . target ) ) ;
597
- } )
598
- . on ( 'error' , err => {
599
- reject ( new Error ( err ) ) ;
600
- } )
601
- . on ( 'complete' , ( ) => {
602
- resolve ( ) ;
603
- } )
604
- . run ( { async : true } ) ;
575
+ benchResults = await runBenchmark ( {
576
+ test,
577
+ fn,
578
+ params : testInfo . params . map ( param => param ( test , {
579
+ // pre-load params to avoid doc loader and parser timing
580
+ load : true
581
+ } ) ) ,
582
+ mochaTest : self
605
583
} ) ;
606
584
}
607
585
608
586
if ( options . earl . report ) {
587
+ // TODO: add benchmark info
609
588
options . earl . report . addAssertion ( test , true ) ;
610
589
}
611
590
} catch ( err ) {
@@ -625,6 +604,38 @@ function addTest(manifest, test, tests) {
625
604
}
626
605
}
627
606
607
+ async function runBenchmark ( { test, fn, params, mochaTest} ) {
608
+ const values = await Promise . all ( params ) ;
609
+
610
+ return new Promise ( ( resolve , reject ) => {
611
+ const suite = new benchmark . Suite ( ) ;
612
+ suite . add ( {
613
+ name : test . name ,
614
+ defer : true ,
615
+ fn : deferred => {
616
+ jsonld [ fn ] . apply ( null , values ) . then ( ( ) => {
617
+ deferred . resolve ( ) ;
618
+ } ) ;
619
+ }
620
+ } ) ;
621
+ suite
622
+ . on ( 'start' , e => {
623
+ // set timeout to a bit more than max benchmark time
624
+ mochaTest . timeout ( ( e . target . maxTime + 2 ) * 1000 ) ;
625
+ } )
626
+ . on ( 'cycle' , e => {
627
+ console . log ( String ( e . target ) ) ;
628
+ } )
629
+ . on ( 'error' , err => {
630
+ reject ( new Error ( err ) ) ;
631
+ } )
632
+ . on ( 'complete' , e => {
633
+ resolve ( ) ;
634
+ } )
635
+ . run ( { async : true } ) ;
636
+ } ) ;
637
+ }
638
+
628
639
function getJsonLdTestType ( test ) {
629
640
const types = Object . keys ( TEST_TYPES ) ;
630
641
for ( let i = 0 ; i < types . length ; ++ i ) {
@@ -892,6 +903,26 @@ function basename(filename) {
892
903
return filename . substr ( idx + 1 ) ;
893
904
}
894
905
906
+ // check test.option.loader.rewrite map for url,
907
+ // if no test rewrite, check manifest,
908
+ // else no rewrite
909
+ function rewrite ( test , url ) {
910
+ if ( test . option &&
911
+ test . option . loader &&
912
+ test . option . loader . rewrite &&
913
+ url in test . option . loader . rewrite ) {
914
+ return test . option . loader . rewrite [ url ] ;
915
+ }
916
+ const manifest = test . manifest ;
917
+ if ( manifest . option &&
918
+ manifest . option . loader &&
919
+ manifest . option . loader . rewrite &&
920
+ url in manifest . option . loader . rewrite ) {
921
+ return manifest . option . loader . rewrite [ url ] ;
922
+ }
923
+ return url ;
924
+ }
925
+
895
926
/**
896
927
* Creates a test remote document loader.
897
928
*
@@ -906,13 +937,17 @@ function createDocumentLoader(test) {
906
937
'https://w3c.github.io/json-ld-api/tests' ,
907
938
'https://w3c.github.io/json-ld-framing/tests'
908
939
] ;
940
+
909
941
const localLoader = function ( url ) {
910
942
// always load remote-doc tests remotely in node
911
943
// NOTE: disabled due to github pages issues.
912
944
//if(options.nodejs && test.manifest.name === 'Remote document') {
913
945
// return jsonld.documentLoader(url);
914
946
//}
915
947
948
+ // handle loader rewrite options for test or manifest
949
+ url = rewrite ( test , url ) ;
950
+
916
951
// FIXME: this check only works for main test suite and will not work if:
917
952
// - running other tests and main test suite not installed
918
953
// - use other absolute URIs but want to load local files
0 commit comments