diff options
author | Casper Beyer <caspervonb@pm.me> | 2020-12-21 21:04:25 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-12-21 14:04:25 +0100 |
commit | 3078fcf55a8aa04d26316ab353d84f2c9512bd47 (patch) | |
tree | 811793f89b88c7bb6294c92583237e7fb03ca46e /cli/main.rs | |
parent | d5ee168468a431140d2903e0a03ea0eeea491874 (diff) |
feat(unstable): record raw coverage into a directory (#8642)
Diffstat (limited to 'cli/main.rs')
-rw-r--r-- | cli/main.rs | 51 |
1 files changed, 29 insertions, 22 deletions
diff --git a/cli/main.rs b/cli/main.rs index b6b6b295b..cd682498e 100644 --- a/cli/main.rs +++ b/cli/main.rs @@ -116,7 +116,7 @@ fn create_web_worker_callback( }); let attach_inspector = program_state.maybe_inspector_server.is_some() - || program_state.flags.coverage; + || program_state.coverage_dir.is_some(); let maybe_inspector_server = program_state.maybe_inspector_server.clone(); let module_loader = CliModuleLoader::new_for_worker(program_state.clone()); @@ -192,7 +192,7 @@ pub fn create_main_worker( let attach_inspector = program_state.maybe_inspector_server.is_some() || program_state.flags.repl - || program_state.flags.coverage; + || program_state.coverage_dir.is_some(); let maybe_inspector_server = program_state.maybe_inspector_server.clone(); let should_break_on_first_statement = program_state.flags.inspect_brk.is_some(); @@ -1018,16 +1018,23 @@ async fn test_command( let mut worker = create_main_worker(&program_state, main_module.clone(), permissions); - let mut maybe_coverage_collector = if flags.coverage { - let session = worker.create_inspector_session(); - let mut coverage_collector = - tools::coverage::CoverageCollector::new(session); - coverage_collector.start_collecting().await?; + if let Some(ref coverage_dir) = flags.coverage_dir { + env::set_var("DENO_UNSTABLE_COVERAGE_DIR", coverage_dir); + } - Some(coverage_collector) - } else { - None - }; + let mut maybe_coverage_collector = + if let Some(ref coverage_dir) = program_state.coverage_dir { + let session = worker.create_inspector_session(); + + let coverage_dir = PathBuf::from(coverage_dir); + let mut coverage_collector = + tools::coverage::CoverageCollector::new(coverage_dir, session); + coverage_collector.start_collecting().await?; + + Some(coverage_collector) + } else { + None + }; let execute_result = worker.execute_module(&main_module).await; execute_result?; @@ -1037,19 +1044,19 @@ async fn test_command( worker.run_event_loop().await?; if let Some(coverage_collector) = maybe_coverage_collector.as_mut() { - let coverages = coverage_collector.collect().await?; coverage_collector.stop_collecting().await?; - let filtered_coverages = tools::coverage::filter_script_coverages( - coverages, - main_module.as_url().clone(), - test_modules, - ); - - let mut coverage_reporter = - tools::coverage::PrettyCoverageReporter::new(quiet); - for coverage in filtered_coverages { - coverage_reporter.visit_coverage(&coverage); + // TODO(caspervonb) extract reporting into it's own subcommand. + // For now, we'll only report for the command that passed --coverage as a flag. + if flags.coverage_dir.is_some() { + let mut exclude = test_modules.clone(); + let main_module_url = main_module.as_url().to_owned(); + exclude.push(main_module_url); + tools::coverage::report_coverages( + &coverage_collector.dir, + quiet, + exclude, + )?; } } |