summaryrefslogtreecommitdiff
path: root/tests/specs/mod.rs
diff options
context:
space:
mode:
authorDavid Sherret <dsherret@users.noreply.github.com>2024-06-05 11:04:16 -0400
committerGitHub <noreply@github.com>2024-06-05 17:04:16 +0200
commit7ed90a20d04982ae15a52ae2378cbffd4b6839df (patch)
tree3297d6f7227fbf1cf80e17a2a376ef4dfa52e6ad /tests/specs/mod.rs
parent0544d60012006b1c7799d8b6eafacec9567901ad (diff)
fix: better handling of npm resolution occurring on workers (#24094)
Closes https://github.com/denoland/deno/issues/24063
Diffstat (limited to 'tests/specs/mod.rs')
-rw-r--r--tests/specs/mod.rs36
1 files changed, 29 insertions, 7 deletions
diff --git a/tests/specs/mod.rs b/tests/specs/mod.rs
index a153322db..3a52ab29e 100644
--- a/tests/specs/mod.rs
+++ b/tests/specs/mod.rs
@@ -17,6 +17,7 @@ use file_test_runner::collection::CollectTestsError;
use file_test_runner::collection::CollectedCategoryOrTest;
use file_test_runner::collection::CollectedTest;
use file_test_runner::collection::CollectedTestCategory;
+use file_test_runner::SubTestResult;
use file_test_runner::TestResult;
use serde::Deserialize;
use test_util::tests_path;
@@ -109,6 +110,8 @@ struct MultiStepMetaData {
#[serde(default)]
pub envs: HashMap<String, String>,
#[serde(default)]
+ pub repeat: Option<usize>,
+ #[serde(default)]
pub steps: Vec<StepMetaData>,
}
@@ -119,6 +122,8 @@ struct SingleTestMetaData {
pub base: Option<String>,
#[serde(default)]
pub temp_dir: bool,
+ #[serde(default)]
+ pub repeat: Option<usize>,
#[serde(flatten)]
pub step: StepMetaData,
}
@@ -128,6 +133,7 @@ impl SingleTestMetaData {
MultiStepMetaData {
base: self.base,
temp_dir: self.temp_dir,
+ repeat: self.repeat,
envs: Default::default(),
steps: vec![self.step],
}
@@ -213,8 +219,26 @@ fn run_test(test: &CollectedTest<serde_json::Value>) -> TestResult {
let cwd = PathRef::new(&test.path).parent();
let metadata_value = test.data.clone();
let diagnostic_logger = Rc::new(RefCell::new(Vec::<u8>::new()));
- let result = TestResult::from_maybe_panic(AssertUnwindSafe(|| {
- run_test_inner(metadata_value, &cwd, diagnostic_logger.clone())
+ let result = TestResult::from_maybe_panic_or_result(AssertUnwindSafe(|| {
+ let metadata = deserialize_value(metadata_value);
+ if let Some(repeat) = metadata.repeat {
+ TestResult::SubTests(
+ (0..repeat)
+ .map(|i| {
+ let diagnostic_logger = diagnostic_logger.clone();
+ SubTestResult {
+ name: format!("run {}", i + 1),
+ result: TestResult::from_maybe_panic(AssertUnwindSafe(|| {
+ run_test_inner(&metadata, &cwd, diagnostic_logger);
+ })),
+ }
+ })
+ .collect(),
+ )
+ } else {
+ run_test_inner(&metadata, &cwd, diagnostic_logger.clone());
+ TestResult::Passed
+ }
}));
match result {
TestResult::Failed {
@@ -232,15 +256,13 @@ fn run_test(test: &CollectedTest<serde_json::Value>) -> TestResult {
}
fn run_test_inner(
- metadata_value: serde_json::Value,
+ metadata: &MultiStepMetaData,
cwd: &PathRef,
diagnostic_logger: Rc<RefCell<Vec<u8>>>,
) {
- let metadata = deserialize_value(metadata_value);
-
- let context = test_context_from_metadata(&metadata, cwd, diagnostic_logger);
+ let context = test_context_from_metadata(metadata, cwd, diagnostic_logger);
for step in metadata.steps.iter().filter(|s| should_run_step(s)) {
- let run_func = || run_step(step, &metadata, cwd, &context);
+ let run_func = || run_step(step, metadata, cwd, &context);
if step.flaky {
run_flaky(run_func);
} else {