@@ -61,7 +61,8 @@ pub fn parse_config(args: Vec<String>) -> Config {
61
61
. optopt ( "" , "jsondoclint-path" , "path to jsondoclint to use for doc tests" , "PATH" )
62
62
. optopt ( "" , "run-clang-based-tests-with" , "path to Clang executable" , "PATH" )
63
63
. optopt ( "" , "llvm-filecheck" , "path to LLVM's FileCheck binary" , "DIR" )
64
- . reqopt ( "" , "src-base" , "directory to scan for test files" , "PATH" )
64
+ . reqopt ( "" , "src-root" , "directory containing sources" , "PATH" )
65
+ . reqopt ( "" , "src-test-suite-root" , "directory containing test suite sources" , "PATH" )
65
66
. reqopt ( "" , "build-base" , "directory to deposit test outputs" , "PATH" )
66
67
. reqopt ( "" , "sysroot-base" , "directory containing the compiler sysroot" , "PATH" )
67
68
. reqopt ( "" , "stage" , "stage number under test" , "N" )
@@ -243,7 +244,6 @@ pub fn parse_config(args: Vec<String>) -> Config {
243
244
|| header:: extract_llvm_version_from_binary ( & matches. opt_str ( "llvm-filecheck" ) ?) ,
244
245
) ;
245
246
246
- let src_base = opt_path ( matches, "src-base" ) ;
247
247
let run_ignored = matches. opt_present ( "ignored" ) ;
248
248
let with_rustc_debug_assertions = matches. opt_present ( "with-rustc-debug-assertions" ) ;
249
249
let with_std_debug_assertions = matches. opt_present ( "with-std-debug-assertions" ) ;
@@ -300,6 +300,10 @@ pub fn parse_config(args: Vec<String>) -> Config {
300
300
None => panic ! ( "`--stage` is required" ) ,
301
301
} ;
302
302
303
+ let src_root = opt_path ( matches, "src-root" ) ;
304
+ let src_test_suite_root = opt_path ( matches, "src-test-suite-root" ) ;
305
+ assert ! ( src_test_suite_root. starts_with( & src_root) ) ;
306
+
303
307
Config {
304
308
bless : matches. opt_present ( "bless" ) ,
305
309
compile_lib_path : make_absolute ( opt_path ( matches, "compile-lib-path" ) ) ,
@@ -314,7 +318,10 @@ pub fn parse_config(args: Vec<String>) -> Config {
314
318
run_clang_based_tests_with : matches. opt_str ( "run-clang-based-tests-with" ) ,
315
319
llvm_filecheck : matches. opt_str ( "llvm-filecheck" ) . map ( PathBuf :: from) ,
316
320
llvm_bin_dir : matches. opt_str ( "llvm-bin-dir" ) . map ( PathBuf :: from) ,
317
- src_base,
321
+
322
+ src_root,
323
+ src_test_suite_root,
324
+
318
325
build_base : opt_path ( matches, "build-base" ) ,
319
326
sysroot_base : opt_path ( matches, "sysroot-base" ) ,
320
327
@@ -422,7 +429,10 @@ pub fn log_config(config: &Config) {
422
429
logv ( c, format ! ( "rustc_path: {:?}" , config. rustc_path. display( ) ) ) ;
423
430
logv ( c, format ! ( "cargo_path: {:?}" , config. cargo_path) ) ;
424
431
logv ( c, format ! ( "rustdoc_path: {:?}" , config. rustdoc_path) ) ;
425
- logv ( c, format ! ( "src_base: {:?}" , config. src_base. display( ) ) ) ;
432
+
433
+ logv ( c, format ! ( "src_root: {}" , config. src_root. display( ) ) ) ;
434
+ logv ( c, format ! ( "src_test_suite_root: {}" , config. src_test_suite_root. display( ) ) ) ;
435
+
426
436
logv ( c, format ! ( "build_base: {:?}" , config. build_base. display( ) ) ) ;
427
437
logv ( c, format ! ( "stage: {}" , config. stage) ) ;
428
438
logv ( c, format ! ( "stage_id: {}" , config. stage_id) ) ;
@@ -620,20 +630,29 @@ struct TestCollector {
620
630
/// regardless of whether any filters/tests were specified on the command-line,
621
631
/// because filtering is handled later by libtest.
622
632
pub fn collect_and_make_tests ( config : Arc < Config > ) -> Vec < test:: TestDescAndFn > {
623
- debug ! ( "making tests from {:? }" , config. src_base . display( ) ) ;
633
+ debug ! ( "making tests from {}" , config. src_test_suite_root . display( ) ) ;
624
634
let common_inputs_stamp = common_inputs_stamp ( & config) ;
625
- let modified_tests = modified_tests ( & config, & config. src_base ) . unwrap_or_else ( |err| {
626
- panic ! ( "modified_tests got error from dir: {}, error: {}" , config. src_base. display( ) , err)
627
- } ) ;
635
+ let modified_tests =
636
+ modified_tests ( & config, & config. src_test_suite_root ) . unwrap_or_else ( |err| {
637
+ panic ! (
638
+ "modified_tests got error from dir: {}, error: {}" ,
639
+ config. src_test_suite_root. display( ) ,
640
+ err
641
+ )
642
+ } ) ;
628
643
let cache = HeadersCache :: load ( & config) ;
629
644
630
645
let cx = TestCollectorCx { config, cache, common_inputs_stamp, modified_tests } ;
631
646
let mut collector =
632
647
TestCollector { tests : vec ! [ ] , found_path_stems : HashSet :: new ( ) , poisoned : false } ;
633
648
634
- collect_tests_from_dir ( & cx, & mut collector, & cx. config . src_base , Path :: new ( "" ) ) . unwrap_or_else (
635
- |reason| panic ! ( "Could not read tests from {}: {reason}" , cx. config. src_base. display( ) ) ,
636
- ) ;
649
+ collect_tests_from_dir ( & cx, & mut collector, & cx. config . src_test_suite_root , Path :: new ( "" ) )
650
+ . unwrap_or_else ( |reason| {
651
+ panic ! (
652
+ "Could not read tests from {}: {reason}" ,
653
+ cx. config. src_test_suite_root. display( )
654
+ )
655
+ } ) ;
637
656
638
657
let TestCollector { tests, found_path_stems, poisoned } = collector;
639
658
@@ -655,7 +674,7 @@ pub fn collect_and_make_tests(config: Arc<Config>) -> Vec<test::TestDescAndFn> {
655
674
/// common to some subset of tests, and are hopefully unlikely to be modified
656
675
/// while working on other tests.)
657
676
fn common_inputs_stamp ( config : & Config ) -> Stamp {
658
- let rust_src_dir = config. find_rust_src_root ( ) . expect ( "Could not find Rust source root" ) ;
677
+ let src_root = & config. src_root ;
659
678
660
679
let mut stamp = Stamp :: from_path ( & config. rustc_path ) ;
661
680
@@ -670,17 +689,17 @@ fn common_inputs_stamp(config: &Config) -> Stamp {
670
689
"src/etc/lldb_providers.py" ,
671
690
] ;
672
691
for file in & pretty_printer_files {
673
- let path = rust_src_dir . join ( file) ;
692
+ let path = src_root . join ( file) ;
674
693
stamp. add_path ( & path) ;
675
694
}
676
695
677
- stamp. add_dir ( & rust_src_dir . join ( "src/ etc/ natvis" ) ) ;
696
+ stamp. add_dir ( & src_root . join ( "src" ) . join ( " etc" ) . join ( " natvis") ) ;
678
697
679
698
stamp. add_dir ( & config. run_lib_path ) ;
680
699
681
700
if let Some ( ref rustdoc_path) = config. rustdoc_path {
682
701
stamp. add_path ( & rustdoc_path) ;
683
- stamp. add_path ( & rust_src_dir . join ( "src/etc/htmldocck.py" ) ) ;
702
+ stamp. add_path ( & src_root . join ( "src/etc/htmldocck.py" ) ) ;
684
703
}
685
704
686
705
// Re-run coverage tests if the `coverage-dump` tool was modified,
@@ -689,10 +708,10 @@ fn common_inputs_stamp(config: &Config) -> Stamp {
689
708
stamp. add_path ( coverage_dump_path)
690
709
}
691
710
692
- stamp. add_dir ( & rust_src_dir . join ( "src/tools/run-make-support" ) ) ;
711
+ stamp. add_dir ( & src_root . join ( "src/tools/run-make-support" ) ) ;
693
712
694
713
// Compiletest itself.
695
- stamp. add_dir ( & rust_src_dir . join ( "src/tools/compiletest/ " ) ) ;
714
+ stamp. add_dir ( & src_root . join ( "src/tools/compiletest" ) ) ;
696
715
697
716
stamp
698
717
}
@@ -933,10 +952,7 @@ fn files_related_to_test(
933
952
}
934
953
935
954
// `minicore.rs` test auxiliary: we need to make sure tests get rerun if this changes.
936
- //
937
- // FIXME(jieyouxu): untangle these paths, we should provide both a path to root `tests/` or
938
- // `tests/auxiliary/` and the test suite in question. `src_base` is also a terrible name.
939
- related. push ( config. src_base . parent ( ) . unwrap ( ) . join ( "auxiliary" ) . join ( "minicore.rs" ) ) ;
955
+ related. push ( config. src_root . join ( "tests" ) . join ( "auxiliary" ) . join ( "minicore.rs" ) ) ;
940
956
941
957
related
942
958
}
@@ -1026,10 +1042,8 @@ fn make_test_name(
1026
1042
testpaths : & TestPaths ,
1027
1043
revision : Option < & str > ,
1028
1044
) -> test:: TestName {
1029
- // Print the name of the file, relative to the repository root.
1030
- // `src_base` looks like `/path/to/rust/tests/ui`
1031
- let root_directory = config. src_base . parent ( ) . unwrap ( ) . parent ( ) . unwrap ( ) ;
1032
- let path = testpaths. file . strip_prefix ( root_directory) . unwrap ( ) ;
1045
+ // Print the name of the file, relative to the sources root.
1046
+ let path = testpaths. file . strip_prefix ( & config. src_root ) . unwrap ( ) ;
1033
1047
let debugger = match config. debugger {
1034
1048
Some ( d) => format ! ( "-{}" , d) ,
1035
1049
None => String :: new ( ) ,
0 commit comments