Skip to content

Commit

Permalink
test(plugin/runner): Share target directory (#7544)
Browse files Browse the repository at this point in the history
**Description:**

This will reduce CI time greatly.
  • Loading branch information
kdy1 committed Jun 19, 2023
1 parent 2f2a15f commit aa82e5f
Show file tree
Hide file tree
Showing 6 changed files with 86 additions and 12 deletions.
43 changes: 38 additions & 5 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 2 additions & 3 deletions crates/swc_plugin_runner/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,6 @@ plugin_transform_host_js = [
]
plugin_transform_host_native = [
"wasmer/default",
# wasmer-wasix/default except networking, to avoid unexpected openssl-sys build failure on certain platforms.
# [TODO]: revert to /default once issue is resolved"wasmer-wasix/sys",
"wasmer-wasix/sys",
"wasmer-wasix/logging",
"wasmer-wasix/host-fs",
Expand Down Expand Up @@ -73,7 +71,8 @@ wasmer-cache = { version = "3.3.0", optional = true }
wasmer-compiler-cranelift = { version = "3.3.0", default-features = false }

[dev-dependencies]
criterion = "0.3"
cargo_metadata = "0.15.4"
criterion = "0.3"

swc_atoms = { version = "0.5.6", path = '../swc_atoms' }
swc_css_ast = { version = "0.137.12", path = "../swc_css_ast", features = [
Expand Down
13 changes: 12 additions & 1 deletion crates/swc_plugin_runner/tests/css_rkyv.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,21 @@ use swc_common::{
};
use tracing::info;

static TARGET_DIR: Lazy<PathBuf> = Lazy::new(|| {
cargo_metadata::MetadataCommand::new()
.no_deps()
.exec()
.unwrap()
.target_directory
.into()
});

/// Returns the path to the built plugin
fn build_plugin(dir: &Path) -> Result<PathBuf, Error> {
{
let mut cmd = Command::new("cargo");
cmd.env("CARGO_TARGET_DIR", &*TARGET_DIR);

cmd.current_dir(dir);
cmd.args(["build", "--target=wasm32-wasi", "--release"])
.stderr(Stdio::inherit());
Expand All @@ -34,7 +45,7 @@ fn build_plugin(dir: &Path) -> Result<PathBuf, Error> {
}
}

for entry in fs::read_dir(&dir.join("target").join("wasm32-wasi").join("release"))? {
for entry in fs::read_dir(&TARGET_DIR.join("wasm32-wasi").join("release"))? {
let entry = entry?;

let s = entry.file_name().to_string_lossy().into_owned();
Expand Down
12 changes: 11 additions & 1 deletion crates/swc_plugin_runner/tests/ecma_integration.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,20 @@ use swc_ecma_ast::{CallExpr, Callee, EsVersion, Expr, Lit, MemberExpr, Program,
use swc_ecma_parser::{parse_file_as_program, Syntax};
use swc_ecma_visit::{Visit, VisitWith};

static TARGET_DIR: Lazy<PathBuf> = Lazy::new(|| {
cargo_metadata::MetadataCommand::new()
.no_deps()
.exec()
.unwrap()
.target_directory
.into()
});

/// Returns the path to the built plugin
fn build_plugin(dir: &Path) -> Result<PathBuf, Error> {
{
let mut cmd = Command::new("cargo");
cmd.env("CARGO_TARGET_DIR", &*TARGET_DIR);
cmd.current_dir(dir);
cmd.args(["build", "--target=wasm32-wasi"])
.stderr(Stdio::inherit());
Expand All @@ -37,7 +47,7 @@ fn build_plugin(dir: &Path) -> Result<PathBuf, Error> {
}
}

for entry in fs::read_dir(&dir.join("target").join("wasm32-wasi").join("debug"))? {
for entry in fs::read_dir(&TARGET_DIR.join("wasm32-wasi").join("debug"))? {
let entry = entry?;

let s = entry.file_name().to_string_lossy().into_owned();
Expand Down
12 changes: 11 additions & 1 deletion crates/swc_plugin_runner/tests/ecma_rkyv.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,20 @@ use swc_ecma_ast::{EsVersion, Program};
use swc_ecma_parser::{parse_file_as_program, Syntax, TsConfig};
use tracing::info;

static TARGET_DIR: Lazy<PathBuf> = Lazy::new(|| {
cargo_metadata::MetadataCommand::new()
.no_deps()
.exec()
.unwrap()
.target_directory
.into()
});

/// Returns the path to the built plugin
fn build_plugin(dir: &Path) -> Result<PathBuf, Error> {
{
let mut cmd = Command::new("cargo");
cmd.env("CARGO_TARGET_DIR", &*TARGET_DIR);
cmd.current_dir(dir);
cmd.args(["build", "--target=wasm32-wasi", "--release"])
.stderr(Stdio::inherit());
Expand All @@ -36,7 +46,7 @@ fn build_plugin(dir: &Path) -> Result<PathBuf, Error> {
}
}

for entry in fs::read_dir(&dir.join("target").join("wasm32-wasi").join("release"))? {
for entry in fs::read_dir(&TARGET_DIR.join("wasm32-wasi").join("release"))? {
let entry = entry?;

let s = entry.file_name().to_string_lossy().into_owned();
Expand Down
13 changes: 12 additions & 1 deletion crates/swc_plugin_runner/tests/issues.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ use std::{
};

use anyhow::{anyhow, Error};
use once_cell::sync::Lazy;
use serde_json::json;
#[cfg(feature = "__rkyv")]
use swc_common::plugin::serialized::PluginSerializedBytes;
Expand All @@ -16,10 +17,20 @@ use swc_ecma_ast::{CallExpr, Callee, EsVersion, Expr, Lit, MemberExpr, Program,
use swc_ecma_parser::{parse_file_as_program, Syntax};
use swc_ecma_visit::Visit;

static TARGET_DIR: Lazy<PathBuf> = Lazy::new(|| {
cargo_metadata::MetadataCommand::new()
.no_deps()
.exec()
.unwrap()
.target_directory
.into()
});

/// Returns the path to the built plugin
fn build_plugin(dir: &Path, crate_name: &str) -> Result<PathBuf, Error> {
{
let mut cmd = Command::new("cargo");
cmd.env("CARGO_TARGET_DIR", &*TARGET_DIR);
cmd.current_dir(dir);
cmd.args(["build", "--release", "--target=wasm32-wasi"])
.stderr(Stdio::inherit());
Expand All @@ -34,7 +45,7 @@ fn build_plugin(dir: &Path, crate_name: &str) -> Result<PathBuf, Error> {
}
}

for entry in fs::read_dir(&dir.join("target").join("wasm32-wasi").join("release"))? {
for entry in fs::read_dir(&TARGET_DIR.join("wasm32-wasi").join("release"))? {
let entry = entry?;

let s = entry.file_name().to_string_lossy().into_owned();
Expand Down

2 comments on commit aa82e5f

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark

Benchmark suite Current: aa82e5f Previous: 70bc605 Ratio
es/full/bugs-1 363079 ns/iter (± 11814) 304199 ns/iter (± 6581) 1.19
es/full/minify/libraries/antd 1993656963 ns/iter (± 28957343) 1439814531 ns/iter (± 7262457) 1.38
es/full/minify/libraries/d3 418864620 ns/iter (± 4370522) 313150469 ns/iter (± 3752562) 1.34
es/full/minify/libraries/echarts 1558923692 ns/iter (± 9646271) 1173063382 ns/iter (± 3341247) 1.33
es/full/minify/libraries/jquery 122014677 ns/iter (± 2470425) 94547919 ns/iter (± 135886) 1.29
es/full/minify/libraries/lodash 143914526 ns/iter (± 1362583) 111966766 ns/iter (± 162436) 1.29
es/full/minify/libraries/moment 67763219 ns/iter (± 665844) 55658535 ns/iter (± 71732) 1.22
es/full/minify/libraries/react 23768987 ns/iter (± 973411) 19985574 ns/iter (± 73783) 1.19
es/full/minify/libraries/terser 329282889 ns/iter (± 7284627) 244572228 ns/iter (± 761159) 1.35
es/full/minify/libraries/three 590700177 ns/iter (± 3474828) 426653001 ns/iter (± 1646735) 1.38
es/full/minify/libraries/typescript 3715218782 ns/iter (± 15954074) 2958527994 ns/iter (± 12193246) 1.26
es/full/minify/libraries/victory 866099095 ns/iter (± 7137192) 623712851 ns/iter (± 2536883) 1.39
es/full/minify/libraries/vue 175543457 ns/iter (± 1889732) 135370111 ns/iter (± 875137) 1.30
es/full/codegen/es3 41027 ns/iter (± 113) 36847 ns/iter (± 123) 1.11
es/full/codegen/es5 41108 ns/iter (± 70) 36724 ns/iter (± 74) 1.12
es/full/codegen/es2015 41120 ns/iter (± 74) 36898 ns/iter (± 79) 1.11
es/full/codegen/es2016 41117 ns/iter (± 61) 36791 ns/iter (± 135) 1.12
es/full/codegen/es2017 41100 ns/iter (± 84) 36747 ns/iter (± 149) 1.12
es/full/codegen/es2018 41158 ns/iter (± 316) 36800 ns/iter (± 81) 1.12
es/full/codegen/es2019 41160 ns/iter (± 101) 36743 ns/iter (± 103) 1.12
es/full/codegen/es2020 41123 ns/iter (± 54) 36825 ns/iter (± 104) 1.12
es/full/all/es3 209837249 ns/iter (± 2275763) 179891074 ns/iter (± 1106912) 1.17
es/full/all/es5 201769917 ns/iter (± 4239686) 170692695 ns/iter (± 963417) 1.18
es/full/all/es2015 156905555 ns/iter (± 2033357) 126160643 ns/iter (± 622825) 1.24
es/full/all/es2016 155194189 ns/iter (± 2357830) 125187741 ns/iter (± 1359043) 1.24
es/full/all/es2017 152967344 ns/iter (± 2289956) 125989472 ns/iter (± 868363) 1.21
es/full/all/es2018 152957551 ns/iter (± 2679832) 122991589 ns/iter (± 694641) 1.24
es/full/all/es2019 151950449 ns/iter (± 1906579) 121076518 ns/iter (± 771812) 1.25
es/full/all/es2020 147089435 ns/iter (± 2555020) 118055843 ns/iter (± 451379) 1.25
es/full/parser 617873 ns/iter (± 12163) 525377 ns/iter (± 5867) 1.18
es/full/base/fixer 25992 ns/iter (± 54) 18454 ns/iter (± 36) 1.41
es/full/base/resolver_and_hygiene 105854 ns/iter (± 113) 92874 ns/iter (± 166) 1.14
serialization of serde 257 ns/iter (± 0) 332 ns/iter (± 0) 0.77
css/minify/libraries/bootstrap 37900624 ns/iter (± 348865) 31368297 ns/iter (± 61876) 1.21
css/visitor/compare/clone 2391968 ns/iter (± 29790) 2046151 ns/iter (± 35701) 1.17
css/visitor/compare/visit_mut_span 2561206 ns/iter (± 17164) 2148790 ns/iter (± 16768) 1.19
css/visitor/compare/visit_mut_span_panic 2666603 ns/iter (± 31425) 2216437 ns/iter (± 12582) 1.20
css/visitor/compare/fold_span 3361886 ns/iter (± 13851) 2903453 ns/iter (± 15344) 1.16
css/visitor/compare/fold_span_panic 3510011 ns/iter (± 27808) 3110942 ns/iter (± 25571) 1.13
css/lexer/bootstrap_5_1_3 5569410 ns/iter (± 2390) 4826438 ns/iter (± 957) 1.15
css/lexer/foundation_6_7_4 4697432 ns/iter (± 2187) 4068584 ns/iter (± 1991) 1.15
css/lexer/tailwind_3_1_1 893433 ns/iter (± 615) 770317 ns/iter (± 640) 1.16
css/parser/bootstrap_5_1_3 24910884 ns/iter (± 69833) 20517038 ns/iter (± 12057) 1.21
css/parser/foundation_6_7_4 19864740 ns/iter (± 31921) 16512165 ns/iter (± 36908) 1.20
css/parser/tailwind_3_1_1 3707647 ns/iter (± 5239) 3197016 ns/iter (± 2680) 1.16
es/codegen/colors 729009 ns/iter (± 395773) 732127 ns/iter (± 398157) 1.00
es/codegen/large 3085019 ns/iter (± 1616339) 3207523 ns/iter (± 1688124) 0.96
es/codegen/with-parser/colors 57273 ns/iter (± 457) 48523 ns/iter (± 252) 1.18
es/codegen/with-parser/large 581774 ns/iter (± 804) 527009 ns/iter (± 1086) 1.10
es/minify/libraries/antd 1738357525 ns/iter (± 15719100) 1281012067 ns/iter (± 8660010) 1.36
es/minify/libraries/d3 365094083 ns/iter (± 2844927) 276618934 ns/iter (± 2751696) 1.32
es/minify/libraries/echarts 1354852938 ns/iter (± 7147202) 1017399499 ns/iter (± 2746771) 1.33
es/minify/libraries/jquery 102568371 ns/iter (± 1199553) 83153585 ns/iter (± 1035512) 1.23
es/minify/libraries/lodash 130014074 ns/iter (± 2072571) 102292774 ns/iter (± 235018) 1.27
es/minify/libraries/moment 60029905 ns/iter (± 950276) 49177168 ns/iter (± 69547) 1.22
es/minify/libraries/react 21403027 ns/iter (± 213954) 18026397 ns/iter (± 60099) 1.19
es/minify/libraries/terser 279274226 ns/iter (± 5230245) 210248733 ns/iter (± 257980) 1.33
es/minify/libraries/three 510535864 ns/iter (± 6628454) 361359277 ns/iter (± 904799) 1.41
es/minify/libraries/typescript 3202044049 ns/iter (± 8948284) 2555846414 ns/iter (± 6449740) 1.25
es/minify/libraries/victory 762551680 ns/iter (± 7137991) 529937945 ns/iter (± 1587428) 1.44
es/minify/libraries/vue 160079214 ns/iter (± 3254365) 122919073 ns/iter (± 212128) 1.30
es/visitor/compare/clone 2492561 ns/iter (± 40440) 2081091 ns/iter (± 6998) 1.20
es/visitor/compare/visit_mut_span 2922430 ns/iter (± 50669) 2426024 ns/iter (± 4885) 1.20
es/visitor/compare/visit_mut_span_panic 2927353 ns/iter (± 49521) 2465664 ns/iter (± 5510) 1.19
es/visitor/compare/fold_span 4045796 ns/iter (± 108339) 3471720 ns/iter (± 6078) 1.17
es/visitor/compare/fold_span_panic 4275170 ns/iter (± 59060) 3602446 ns/iter (± 4438) 1.19
es/lexer/colors 15197 ns/iter (± 28) 13335 ns/iter (± 70) 1.14
es/lexer/angular 7176985 ns/iter (± 5115) 6217144 ns/iter (± 33533) 1.15
es/lexer/backbone 873062 ns/iter (± 518) 829141 ns/iter (± 3795) 1.05
es/lexer/jquery 4886952 ns/iter (± 5851) 4626709 ns/iter (± 5643) 1.06
es/lexer/jquery mobile 7553183 ns/iter (± 3204) 7083694 ns/iter (± 7307) 1.07
es/lexer/mootools 3805778 ns/iter (± 33213) 3666738 ns/iter (± 3666) 1.04
es/lexer/underscore 721228 ns/iter (± 433) 687503 ns/iter (± 653) 1.05
es/lexer/three 22706363 ns/iter (± 18915) 21799294 ns/iter (± 51997) 1.04
es/lexer/yui 4358937 ns/iter (± 2416) 4117968 ns/iter (± 2367) 1.06
es/parser/colors 33780 ns/iter (± 87) 28749 ns/iter (± 99) 1.17
es/parser/angular 18232739 ns/iter (± 243538) 14304820 ns/iter (± 149984) 1.27
es/parser/backbone 2430981 ns/iter (± 14474) 2129184 ns/iter (± 8642) 1.14
es/parser/jquery 14326342 ns/iter (± 364724) 11649953 ns/iter (± 44324) 1.23
es/parser/jquery mobile 22390532 ns/iter (± 213884) 17601473 ns/iter (± 53110) 1.27
es/parser/mootools 10363790 ns/iter (± 130004) 8885116 ns/iter (± 16379) 1.17
es/parser/underscore 2067037 ns/iter (± 12449) 1856039 ns/iter (± 5237) 1.11
es/parser/three 62815045 ns/iter (± 286679) 49426461 ns/iter (± 185180) 1.27
es/parser/yui 10733247 ns/iter (± 161364) 8933952 ns/iter (± 61828) 1.20
es/preset-env/usage/builtin_type 151658 ns/iter (± 32946) 147995 ns/iter (± 32493) 1.02
es/preset-env/usage/property 28716 ns/iter (± 55) 19963 ns/iter (± 30) 1.44
es/resolver/typescript 126492543 ns/iter (± 3930180) 95790495 ns/iter (± 952757) 1.32
es/fixer/typescript 86992950 ns/iter (± 1882147) 67281567 ns/iter (± 320083) 1.29
es/hygiene/typescript 198752828 ns/iter (± 3091498) 145355419 ns/iter (± 1431268) 1.37
es/resolver_with_hygiene/typescript 413631572 ns/iter (± 1685474) 300884216 ns/iter (± 1595618) 1.37
es/visitor/base-perf/module_clone 86305 ns/iter (± 409) 64336 ns/iter (± 254) 1.34
es/visitor/base-perf/fold_empty 95364 ns/iter (± 488) 67581 ns/iter (± 231) 1.41
es/visitor/base-perf/fold_noop_impl_all 95762 ns/iter (± 181) 67353 ns/iter (± 587) 1.42
es/visitor/base-perf/fold_noop_impl_vec 95809 ns/iter (± 490) 67243 ns/iter (± 266) 1.42
es/visitor/base-perf/boxing_boxed_clone 63 ns/iter (± 0) 55 ns/iter (± 0) 1.15
es/visitor/base-perf/boxing_unboxed_clone 44 ns/iter (± 0) 41 ns/iter (± 0) 1.07
es/visitor/base-perf/boxing_boxed 105 ns/iter (± 0) 107 ns/iter (± 0) 0.98
es/visitor/base-perf/boxing_unboxed 81 ns/iter (± 0) 78 ns/iter (± 0) 1.04
es/visitor/base-perf/visit_contains_this 3636 ns/iter (± 73) 2571 ns/iter (± 7) 1.41
es/base/parallel/resolver/typescript 7181712193 ns/iter (± 444160655) 4601497273 ns/iter (± 288806650) 1.56
es/base/parallel/hygiene/typescript 2212843237 ns/iter (± 31839549) 1599938382 ns/iter (± 9927258) 1.38
misc/visitors/time-complexity/time 5 106 ns/iter (± 0) 106 ns/iter (± 0) 1
misc/visitors/time-complexity/time 10 343 ns/iter (± 5) 280 ns/iter (± 0) 1.23
misc/visitors/time-complexity/time 15 689 ns/iter (± 1) 550 ns/iter (± 30) 1.25
misc/visitors/time-complexity/time 20 1268 ns/iter (± 9) 986 ns/iter (± 19) 1.29
misc/visitors/time-complexity/time 40 6867 ns/iter (± 32) 3763 ns/iter (± 149) 1.82
misc/visitors/time-complexity/time 60 17560 ns/iter (± 76) 7939 ns/iter (± 33) 2.21
es/full-target/es2016 271467 ns/iter (± 423) 240865 ns/iter (± 1137) 1.13
es/full-target/es2017 262077 ns/iter (± 621) 228696 ns/iter (± 520) 1.15
es/full-target/es2018 250332 ns/iter (± 568) 216097 ns/iter (± 864) 1.16
es2020_nullish_coalescing 99345 ns/iter (± 370) 73463 ns/iter (± 438) 1.35
es2020_optional_chaining 88924 ns/iter (± 267) 65465 ns/iter (± 338) 1.36
es2022_class_properties 157790 ns/iter (± 263) 121240 ns/iter (± 374) 1.30
es2018_object_rest_spread 100500 ns/iter (± 119) 77739 ns/iter (± 288) 1.29
es2019_optional_catch_binding 89159 ns/iter (± 252) 66565 ns/iter (± 172) 1.34
es2017_async_to_generator 90044 ns/iter (± 235) 65612 ns/iter (± 142) 1.37
es2016_exponentiation 95824 ns/iter (± 171) 72434 ns/iter (± 405) 1.32
es2015_arrow 99472 ns/iter (± 271) 74462 ns/iter (± 174) 1.34
es2015_block_scoped_fn 97427 ns/iter (± 247) 71607 ns/iter (± 172) 1.36
es2015_block_scoping 185546 ns/iter (± 324) 132228 ns/iter (± 484) 1.40

This comment was automatically generated by workflow using github-action-benchmark.

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Performance Alert ⚠️

Possible performance regression was detected for benchmark.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 2.

Benchmark suite Current: aa82e5f Previous: 70bc605 Ratio
misc/visitors/time-complexity/time 60 17560 ns/iter (± 76) 7939 ns/iter (± 33) 2.21

This comment was automatically generated by workflow using github-action-benchmark.

CC: @kdy1

Please sign in to comment.