diff options
author | Casper Beyer <caspervonb@pm.me> | 2021-07-06 09:20:33 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-05 21:20:33 -0400 |
commit | e8258e0210c4690a1fbbcefe0e6a859da8efc19b (patch) | |
tree | 75c56efb39d917d3d697eea4879d3e48acdc657e /cli/tools/test_runner.rs | |
parent | bdeb4f430b387ebdacce7c68bb1f316830856c39 (diff) |
feat(test): add --shuffle flag to randomize test ordering (#11163)
Diffstat (limited to 'cli/tools/test_runner.rs')
-rw-r--r-- | cli/tools/test_runner.rs | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/cli/tools/test_runner.rs b/cli/tools/test_runner.rs index 96b101fa3..d1a0c6d65 100644 --- a/cli/tools/test_runner.rs +++ b/cli/tools/test_runner.rs @@ -21,6 +21,9 @@ use deno_core::serde_json::json; use deno_core::url::Url; use deno_core::ModuleSpecifier; use deno_runtime::permissions::Permissions; +use rand::rngs::SmallRng; +use rand::seq::SliceRandom; +use rand::SeedableRng; use regex::Regex; use serde::Deserialize; use std::path::Path; @@ -343,8 +346,19 @@ pub async fn run_tests( quiet: bool, allow_none: bool, filter: Option<String>, + shuffle: Option<u64>, concurrent_jobs: usize, ) -> Result<bool, AnyError> { + let test_modules = if let Some(seed) = shuffle { + let mut rng = SmallRng::seed_from_u64(seed); + let mut test_modules = test_modules.clone(); + test_modules.sort(); + test_modules.shuffle(&mut rng); + test_modules + } else { + test_modules + }; + if !doc_modules.is_empty() { let mut test_programs = Vec::new(); @@ -450,6 +464,7 @@ pub async fn run_tests( let test_options = json!({ "disableLog": quiet, "filter": filter, + "shuffle": shuffle, }); let test_module = deno_core::resolve_path("$deno$test.js")?; |