summaryrefslogtreecommitdiff
path: root/cli/tools/coverage
diff options
context:
space:
mode:
authorDivy Srivastava <dj.srivastava23@gmail.com>2024-02-13 21:52:30 +0530
committerGitHub <noreply@github.com>2024-02-13 21:52:30 +0530
commita68eb3fcc3997fce8680f87edce46f6450e79635 (patch)
tree6839607033226fdfb2ce1be3187ef93791096507 /cli/tools/coverage
parent492a9fbb9194a24a1f9223f797b4f4df9efde2bd (diff)
feat: denort binary for `deno compile` (#22205)
This introduces the `denort` binary - a slim version of deno without tooling. The binary is used as the default for `deno compile`. Improves `deno compile` final size by ~2.5x (141 MB -> 61 MB) on Linux x86_64.
Diffstat (limited to 'cli/tools/coverage')
-rw-r--r--cli/tools/coverage/mod.rs97
1 files changed, 50 insertions, 47 deletions
diff --git a/cli/tools/coverage/mod.rs b/cli/tools/coverage/mod.rs
index 16c955576..aafef292f 100644
--- a/cli/tools/coverage/mod.rs
+++ b/cli/tools/coverage/mod.rs
@@ -46,6 +46,56 @@ pub struct CoverageCollector {
session: LocalInspectorSession,
}
+#[async_trait::async_trait(?Send)]
+impl crate::worker::CoverageCollector for CoverageCollector {
+ async fn start_collecting(&mut self) -> Result<(), AnyError> {
+ self.enable_debugger().await?;
+ self.enable_profiler().await?;
+ self
+ .start_precise_coverage(cdp::StartPreciseCoverageArgs {
+ call_count: true,
+ detailed: true,
+ allow_triggered_updates: false,
+ })
+ .await?;
+
+ Ok(())
+ }
+
+ async fn stop_collecting(&mut self) -> Result<(), AnyError> {
+ fs::create_dir_all(&self.dir)?;
+
+ let script_coverages = self.take_precise_coverage().await?.result;
+ for script_coverage in script_coverages {
+ // Filter out internal JS files from being included in coverage reports
+ if script_coverage.url.starts_with("ext:")
+ || script_coverage.url.starts_with("[ext:")
+ {
+ continue;
+ }
+
+ let filename = format!("{}.json", Uuid::new_v4());
+ let filepath = self.dir.join(filename);
+
+ let mut out = BufWriter::new(File::create(&filepath)?);
+ let coverage = serde_json::to_string(&script_coverage)?;
+ let formatted_coverage =
+ format_json(&filepath, &coverage, &Default::default())
+ .ok()
+ .flatten()
+ .unwrap_or(coverage);
+
+ out.write_all(formatted_coverage.as_bytes())?;
+ out.flush()?;
+ }
+
+ self.disable_debugger().await?;
+ self.disable_profiler().await?;
+
+ Ok(())
+ }
+}
+
impl CoverageCollector {
pub fn new(dir: PathBuf, session: LocalInspectorSession) -> Self {
Self { dir, session }
@@ -109,53 +159,6 @@ impl CoverageCollector {
Ok(return_object)
}
-
- pub async fn start_collecting(&mut self) -> Result<(), AnyError> {
- self.enable_debugger().await?;
- self.enable_profiler().await?;
- self
- .start_precise_coverage(cdp::StartPreciseCoverageArgs {
- call_count: true,
- detailed: true,
- allow_triggered_updates: false,
- })
- .await?;
-
- Ok(())
- }
-
- pub async fn stop_collecting(&mut self) -> Result<(), AnyError> {
- fs::create_dir_all(&self.dir)?;
-
- let script_coverages = self.take_precise_coverage().await?.result;
- for script_coverage in script_coverages {
- // Filter out internal JS files from being included in coverage reports
- if script_coverage.url.starts_with("ext:")
- || script_coverage.url.starts_with("[ext:")
- {
- continue;
- }
-
- let filename = format!("{}.json", Uuid::new_v4());
- let filepath = self.dir.join(filename);
-
- let mut out = BufWriter::new(File::create(&filepath)?);
- let coverage = serde_json::to_string(&script_coverage)?;
- let formatted_coverage =
- format_json(&filepath, &coverage, &Default::default())
- .ok()
- .flatten()
- .unwrap_or(coverage);
-
- out.write_all(formatted_coverage.as_bytes())?;
- out.flush()?;
- }
-
- self.disable_debugger().await?;
- self.disable_profiler().await?;
-
- Ok(())
- }
}
#[derive(Debug, Clone)]