Skip to content

Commit f90574d

Browse files
authored
test(es/minfiier): Improve comment testing (#9164)
**Description:** This is required for #8907
1 parent d620ea5 commit f90574d

File tree

187 files changed

+107149
-26082
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

187 files changed

+107149
-26082
lines changed

crates/swc_ecma_minifier/tests/benches-full/d3.js

+473-113
Large diffs are not rendered by default.

crates/swc_ecma_minifier/tests/benches-full/echarts.js

+9,671-2,150
Large diffs are not rendered by default.

crates/swc_ecma_minifier/tests/benches-full/jquery.js

+1,764-326
Large diffs are not rendered by default.

crates/swc_ecma_minifier/tests/benches-full/lodash.js

+8,333-531
Large diffs are not rendered by default.

crates/swc_ecma_minifier/tests/benches-full/moment.js

+401-104
Large diffs are not rendered by default.

crates/swc_ecma_minifier/tests/benches-full/react.js

+393-73
Large diffs are not rendered by default.

crates/swc_ecma_minifier/tests/benches-full/terser.js

+1,235-148
Large diffs are not rendered by default.

crates/swc_ecma_minifier/tests/benches-full/three.js

+2,124-663
Large diffs are not rendered by default.

crates/swc_ecma_minifier/tests/benches-full/victory.js

+7,472-3,354
Large diffs are not rendered by default.

crates/swc_ecma_minifier/tests/benches-full/vue.js

+1,168-330
Large diffs are not rendered by default.

crates/swc_ecma_minifier/tests/compress.rs

+81-19
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ use anyhow::Error;
1616
use once_cell::sync::Lazy;
1717
use serde::Deserialize;
1818
use swc_common::{
19-
comments::SingleThreadedComments,
19+
comments::{Comments, SingleThreadedComments},
2020
errors::{Handler, HANDLER},
2121
sync::Lrc,
2222
util::take::Take,
@@ -144,6 +144,7 @@ fn run(
144144
handler: &Handler,
145145
input: &Path,
146146
config: &str,
147+
comments: Option<&dyn Comments>,
147148
mangle: Option<TestMangleOptions>,
148149
skip_hygiene: bool,
149150
) -> Option<Program> {
@@ -153,7 +154,6 @@ fn run(
153154
let (_module, mut config) = parse_compressor_config(cm.clone(), config);
154155

155156
let fm = cm.load_file(input).expect("failed to load input.js");
156-
let comments = SingleThreadedComments::default();
157157

158158
eprintln!("---- {} -----\n{}", Color::Green.paint("Input"), fm.src);
159159

@@ -315,6 +315,8 @@ fn custom_fixture(input: PathBuf) {
315315
eprintln!("---- {} -----\n{}", Color::Green.paint("Config"), config);
316316

317317
testing::run_test2(false, |cm, handler| {
318+
let comments = SingleThreadedComments::default();
319+
318320
let mangle = dir.join("mangle.json");
319321
let mangle = read_to_string(mangle).ok();
320322
if let Some(mangle) = &mangle {
@@ -327,13 +329,21 @@ fn custom_fixture(input: PathBuf) {
327329
let mangle: Option<TestMangleOptions> =
328330
mangle.map(|s| serde_json::from_str(&s).expect("failed to deserialize mangle.json"));
329331

330-
let output = run(cm.clone(), &handler, &input, &config, mangle, false);
332+
let output = run(
333+
cm.clone(),
334+
&handler,
335+
&input,
336+
&config,
337+
Some(&comments),
338+
mangle,
339+
false,
340+
);
331341
let output_module = match output {
332342
Some(v) => v,
333343
None => return Ok(()),
334344
};
335345

336-
let output = print(cm, &[output_module], false, false);
346+
let output = print(cm, &[output_module], Some(&comments), false, false);
337347

338348
eprintln!("---- {} -----\n{}", Color::Green.paint("Output"), output);
339349

@@ -356,13 +366,23 @@ fn projects(input: PathBuf) {
356366
eprintln!("---- {} -----\n{}", Color::Green.paint("Config"), config);
357367

358368
testing::run_test2(false, |cm, handler| {
359-
let output = run(cm.clone(), &handler, &input, &config, None, false);
369+
let comments = SingleThreadedComments::default();
370+
371+
let output = run(
372+
cm.clone(),
373+
&handler,
374+
&input,
375+
&config,
376+
Some(&comments),
377+
None,
378+
false,
379+
);
360380
let output_module = match output {
361381
Some(v) => v,
362382
None => return Ok(()),
363383
};
364384

365-
let output = print(cm.clone(), &[output_module], false, false);
385+
let output = print(cm.clone(), &[output_module], Some(&comments), false, false);
366386

367387
eprintln!("---- {} -----\n{}", Color::Green.paint("Output"), output);
368388

@@ -374,6 +394,7 @@ fn projects(input: PathBuf) {
374394
&handler,
375395
&input,
376396
r#"{ "defaults": true, "toplevel": true, "passes": 3 }"#,
397+
Some(&comments),
377398
Some(TestMangleOptions::Normal(MangleOptions {
378399
top_level: Some(true),
379400
..Default::default()
@@ -385,7 +406,7 @@ fn projects(input: PathBuf) {
385406
None => return Ok(()),
386407
};
387408

388-
print(cm, &[output_module], true, true)
409+
print(cm, &[output_module], Some(&comments), true, true)
389410
};
390411

391412
eprintln!(
@@ -422,11 +443,14 @@ fn projects_bench(input: PathBuf) {
422443
.join("benches-full");
423444

424445
testing::run_test2(false, |cm, handler| {
446+
let comments = SingleThreadedComments::default();
447+
425448
let output = run(
426449
cm.clone(),
427450
&handler,
428451
&input,
429452
r#"{ "defaults": true, "toplevel": false, "passes": 3 }"#,
453+
Some(&comments),
430454
None,
431455
false,
432456
);
@@ -435,7 +459,7 @@ fn projects_bench(input: PathBuf) {
435459
None => return Ok(()),
436460
};
437461

438-
let output = print(cm, &[output_module], false, false);
462+
let output = print(cm, &[output_module], Some(&comments), false, false);
439463

440464
eprintln!("---- {} -----\n{}", Color::Green.paint("Output"), output);
441465

@@ -473,15 +497,31 @@ fn fixture(input: PathBuf) {
473497
);
474498
}
475499

500+
let comments = SingleThreadedComments::default();
501+
476502
let mangle: Option<TestMangleOptions> = mangle.map(|s| TestMangleOptions::parse(&s));
477503

478-
let output = run(cm.clone(), &handler, &input, &config, mangle, false);
504+
let output = run(
505+
cm.clone(),
506+
&handler,
507+
&input,
508+
&config,
509+
Some(&comments),
510+
mangle,
511+
false,
512+
);
479513
let output_program = match output {
480514
Some(v) => v,
481515
None => return Ok(()),
482516
};
483517

484-
let output = print(cm.clone(), &[output_program.clone()], false, false);
518+
let output = print(
519+
cm.clone(),
520+
&[output_program.clone()],
521+
Some(&comments),
522+
false,
523+
false,
524+
);
485525

486526
eprintln!("---- {} -----\n{}", Color::Green.paint("Output"), output);
487527

@@ -521,13 +561,19 @@ fn fixture(input: PathBuf) {
521561
return Ok(());
522562
}
523563

524-
if print(cm.clone(), &[actual], false, false)
525-
== print(cm.clone(), &[normalized_expected], false, false)
564+
if print(cm.clone(), &[actual], Some(&comments), false, false)
565+
== print(
566+
cm.clone(),
567+
&[normalized_expected],
568+
Some(&comments),
569+
false,
570+
false,
571+
)
526572
{
527573
return Ok(());
528574
}
529575

530-
print(cm.clone(), &[expected], false, false)
576+
print(cm.clone(), &[expected], Some(&comments), false, false)
531577
};
532578
{
533579
// Check output.teraer.js
@@ -570,13 +616,19 @@ fn fixture(input: PathBuf) {
570616
return Some(());
571617
}
572618

573-
if print(cm.clone(), &[actual], false, false)
574-
== print(cm.clone(), &[normalized_expected], false, false)
619+
if print(cm.clone(), &[actual], Some(&comments), false, false)
620+
== print(
621+
cm.clone(),
622+
&[normalized_expected],
623+
Some(&comments),
624+
false,
625+
false,
626+
)
575627
{
576628
return Some(());
577629
}
578630

579-
print(cm.clone(), &[expected], false, false)
631+
print(cm.clone(), &[expected], Some(&comments), false, false)
580632
};
581633

582634
if output == expected {
@@ -623,7 +675,13 @@ fn fixture(input: PathBuf) {
623675
}
624676
}
625677

626-
let output_str = print(cm, &[drop_span(output_program)], false, false);
678+
let output_str = print(
679+
cm,
680+
&[drop_span(output_program)],
681+
Some(&comments),
682+
false,
683+
false,
684+
);
627685

628686
if env::var("UPDATE").map(|s| s == "1").unwrap_or(false) {
629687
let _ = catch_unwind(|| {
@@ -643,6 +701,7 @@ fn fixture(input: PathBuf) {
643701
fn print<N: swc_ecma_codegen::Node>(
644702
cm: Lrc<SourceMap>,
645703
nodes: &[N],
704+
comments: Option<&dyn Comments>,
646705
minify: bool,
647706
skip_semi: bool,
648707
) -> String {
@@ -657,7 +716,7 @@ fn print<N: swc_ecma_codegen::Node>(
657716
let mut emitter = Emitter {
658717
cfg: swc_ecma_codegen::Config::default().with_minify(minify),
659718
cm,
660-
comments: None,
719+
comments,
661720
wr,
662721
};
663722

@@ -675,12 +734,15 @@ fn full(input: PathBuf) {
675734
let config = find_config(dir);
676735
eprintln!("---- {} -----\n{}", Color::Green.paint("Config"), config);
677736

737+
let comments = SingleThreadedComments::default();
738+
678739
testing::run_test2(false, |cm, handler| {
679740
let output = run(
680741
cm.clone(),
681742
&handler,
682743
&input,
683744
&config,
745+
Some(&comments),
684746
Some(TestMangleOptions::Normal(MangleOptions {
685747
top_level: Some(true),
686748
..Default::default()
@@ -692,7 +754,7 @@ fn full(input: PathBuf) {
692754
None => return Ok(()),
693755
};
694756

695-
let output = print(cm, &[output_module], true, true);
757+
let output = print(cm, &[output_module], Some(&comments), true, true);
696758

697759
eprintln!("---- {} -----\n{}", Color::Green.paint("Output"), output);
698760

crates/swc_ecma_minifier/tests/fixture/check/1/output.js

+6
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,9 @@ let foobar = "foo";
33
export const foo = foobar;
44
let foobarCopy = foobar += "bar";
55
foobar += "foo", console.log(foobarCopy);
6+
// export function external1() {
7+
// return internal() + foobar;
8+
// }
9+
// export function external2() {
10+
// foobar += ".";
11+
// }

crates/swc_ecma_minifier/tests/fixture/issues/2011/actual/output.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ var ClassB, obj, value;
22
function _classCallCheck(instance, Constructor) {
33
if (!(instance instanceof Constructor)) throw TypeError("Cannot call a class as a function");
44
}
5-
module.exports = (obj = ClassB = function() {
5+
module.exports = (obj = ClassB = /*#__PURE__*/ function() {
66
"use strict";
77
var protoProps;
88
function ClassB() {

0 commit comments

Comments
 (0)