@@ -16,6 +16,7 @@ pub(crate) struct IntegrationTests {
16
16
total : i64 ,
17
17
passed : i64 ,
18
18
skipped : i64 ,
19
+ focus_run : bool ,
19
20
}
20
21
21
22
#[ godot_api]
@@ -28,23 +29,33 @@ impl IntegrationTests {
28
29
FMT_GREEN_BOLD , FMT_END
29
30
) ;
30
31
31
- let ( rust_tests, rust_file_count) = super :: collect_rust_tests ( ) ;
32
+ let ( rust_tests, rust_file_count, focus_run) = super :: collect_rust_tests ( ) ;
33
+ self . focus_run = focus_run;
34
+ if focus_run {
35
+ println ! ( " Focused run -- execute only selected Rust tests." )
36
+ }
32
37
println ! (
33
38
" Rust: found {} tests in {} files." ,
34
39
rust_tests. len( ) ,
35
40
rust_file_count
36
41
) ;
37
- println ! (
38
- " GDScript: found {} tests in {} files." ,
39
- gdscript_tests. len( ) ,
40
- gdscript_file_count
41
- ) ;
42
+ if !focus_run {
43
+ println ! (
44
+ " GDScript: found {} tests in {} files." ,
45
+ gdscript_tests. len( ) ,
46
+ gdscript_file_count
47
+ ) ;
48
+ }
42
49
43
50
let clock = Instant :: now ( ) ;
44
51
self . run_rust_tests ( rust_tests) ;
45
52
let rust_time = clock. elapsed ( ) ;
46
- self . run_gdscript_tests ( gdscript_tests) ;
47
- let gdscript_time = clock. elapsed ( ) - rust_time;
53
+ let gdscript_time = if !focus_run {
54
+ self . run_gdscript_tests ( gdscript_tests) ;
55
+ Some ( clock. elapsed ( ) - rust_time)
56
+ } else {
57
+ None
58
+ } ;
48
59
49
60
self . conclude ( rust_time, gdscript_time)
50
61
}
@@ -76,7 +87,7 @@ impl IntegrationTests {
76
87
}
77
88
}
78
89
79
- fn conclude ( & self , rust_time : Duration , gdscript_time : Duration ) -> bool {
90
+ fn conclude ( & self , rust_time : Duration , gdscript_time : Option < Duration > ) -> bool {
80
91
let Self {
81
92
total,
82
93
passed,
@@ -91,17 +102,25 @@ impl IntegrationTests {
91
102
let outcome = TestOutcome :: from_bool ( all_passed) ;
92
103
93
104
let rust_time = rust_time. as_secs_f32 ( ) ;
94
- let gdscript_time = gdscript_time. as_secs_f32 ( ) ;
95
- let total_time = rust_time + gdscript_time;
105
+ let gdscript_time = gdscript_time. map ( |t| t. as_secs_f32 ( ) ) ;
96
106
97
107
let extra = if skipped > 0 {
98
108
format ! ( ", {skipped} skipped" )
109
+ } else if gdscript_time. is_none ( ) {
110
+ " (focused run)" . to_string ( )
99
111
} else {
100
112
"" . to_string ( )
101
113
} ;
102
114
103
115
println ! ( "\n Test result: {outcome}. {passed} passed; {failed} failed{extra}." ) ;
104
- println ! ( " Time: {total_time:.2}s. (Rust {rust_time:.2}s, GDScript {gdscript_time:.2}s)" ) ;
116
+ if let Some ( gdscript_time) = gdscript_time {
117
+ let total_time = rust_time + gdscript_time;
118
+ println ! (
119
+ " Time: {total_time:.2}s. (Rust {rust_time:.2}s, GDScript {gdscript_time:.2}s)"
120
+ ) ;
121
+ } else {
122
+ println ! ( " Time: {rust_time:.2}s." ) ;
123
+ }
105
124
all_passed
106
125
}
107
126
0 commit comments