-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
/
fixture.rs
54 lines (42 loc) · 1.39 KB
/
fixture.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
use std::path::PathBuf;
use swc_css_ast::Stylesheet;
use swc_css_codegen::{
writer::basic::{BasicCssWriter, BasicCssWriterConfig},
CodeGenerator, CodegenConfig, Emit,
};
use swc_css_minifier::minify;
use swc_css_parser::parse_file;
use testing::NormalizedOutput;
#[testing::fixture("tests/fixture/**/input.css")]
fn minify_fixtures(input: PathBuf) {
let dir = input.parent().unwrap();
let output = dir.join(format!(
"output.min.{}",
input.extension().unwrap().to_string_lossy()
));
testing::run_test(false, |cm, handler| {
let fm = cm.load_file(&input).unwrap();
let mut errors = vec![];
let res: Result<Stylesheet, _> = parse_file(&fm, Default::default(), &mut errors);
for err in errors {
err.to_diagnostics(handler).emit();
}
if handler.has_errors() {
return Err(());
}
let mut ss = res.unwrap();
// Apply transforms
minify(&mut ss, Default::default());
let mut css_str = String::new();
{
let wr = BasicCssWriter::new(&mut css_str, None, BasicCssWriterConfig::default());
let mut gen = CodeGenerator::new(wr, CodegenConfig { minify: true });
gen.emit(&ss).unwrap();
}
NormalizedOutput::from(css_str)
.compare_to_file(&output)
.unwrap();
Ok(())
})
.unwrap();
}