mirror of
https://github.com/denoland/deno.git
synced 2025-12-23 08:48:24 +00:00
102 lines
2.9 KiB
Rust
102 lines
2.9 KiB
Rust
// Copyright 2018-2025 the Deno authors. MIT license.
|
|
|
|
use std::num::NonZeroUsize;
|
|
use std::sync::Arc;
|
|
|
|
use file_test_runner::RunOptions;
|
|
use file_test_runner::TestResult;
|
|
use file_test_runner::collection::CollectOptions;
|
|
use file_test_runner::collection::CollectedTest;
|
|
use file_test_runner::collection::collect_tests_or_exit;
|
|
use file_test_runner::collection::strategies::TestPerFileCollectionStrategy;
|
|
use test_util as util;
|
|
use test_util::test_runner::FlakyTestTracker;
|
|
use test_util::test_runner::Parallelism;
|
|
use test_util::test_runner::flaky_test_ci;
|
|
use test_util::tests_path;
|
|
use util::deno_config_path;
|
|
use util::env_vars_for_npm_tests;
|
|
|
|
fn main() {
|
|
let category = collect_tests_or_exit(CollectOptions {
|
|
base: tests_path().join("unit_node").to_path_buf(),
|
|
strategy: Box::new(TestPerFileCollectionStrategy {
|
|
file_pattern: Some(".*_test\\.ts$".to_string()),
|
|
}),
|
|
filter_override: None,
|
|
});
|
|
if category.is_empty() {
|
|
return;
|
|
}
|
|
let parallelism = Parallelism::default();
|
|
let flaky_test_tracker = Arc::new(FlakyTestTracker::default());
|
|
let _g = util::http_server();
|
|
// Run the crypto category tests separately without concurrency because they run in Deno with --parallel
|
|
let (crypto_category, category) =
|
|
category.partition(|test| test.name.contains("::crypto::"));
|
|
let reporter = test_util::test_runner::get_test_reporter(
|
|
"unit_node",
|
|
flaky_test_tracker.clone(),
|
|
);
|
|
file_test_runner::run_tests(
|
|
&category,
|
|
RunOptions {
|
|
parallelism: parallelism.max_parallelism(),
|
|
reporter: reporter.clone(),
|
|
},
|
|
{
|
|
let flaky_test_tracker = flaky_test_tracker.clone();
|
|
move |test| {
|
|
flaky_test_ci(
|
|
&test.name,
|
|
&flaky_test_tracker,
|
|
Some(¶llelism),
|
|
|| run_test(test),
|
|
)
|
|
}
|
|
},
|
|
);
|
|
file_test_runner::run_tests(
|
|
&crypto_category,
|
|
RunOptions {
|
|
parallelism: NonZeroUsize::new(1).unwrap(),
|
|
reporter: reporter.clone(),
|
|
},
|
|
move |test| {
|
|
flaky_test_ci(&test.name, &flaky_test_tracker, None, || run_test(test))
|
|
},
|
|
);
|
|
}
|
|
|
|
fn run_test(test: &CollectedTest) -> TestResult {
|
|
let mut deno = util::deno_cmd()
|
|
.disable_diagnostic_logging()
|
|
.current_dir(util::root_path())
|
|
.arg("test")
|
|
.arg("--config")
|
|
.arg(deno_config_path())
|
|
.arg("--no-lock")
|
|
.arg("--unstable-net")
|
|
.arg("-A");
|
|
|
|
// Some tests require the root CA cert file to be loaded.
|
|
if test.name.ends_with("::http2_test")
|
|
|| test.name.ends_with("::http_test")
|
|
|| test.name.ends_with("::https_test")
|
|
{
|
|
deno = deno.arg("--cert=./tests/testdata/tls/RootCA.pem");
|
|
}
|
|
|
|
// Parallel tests for crypto
|
|
if test.name.contains("::crypto::") {
|
|
deno = deno.arg("--parallel");
|
|
}
|
|
|
|
deno
|
|
.arg(test.path.clone())
|
|
.envs(env_vars_for_npm_tests())
|
|
.piped_output()
|
|
.spawn()
|
|
.expect("failed to spawn script")
|
|
.wait_to_test_result(&test.name)
|
|
}
|