diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-06-28 04:55:11 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-06-28 04:55:11 +0900 |
| commit | fb8fa663e4704fda3127919b7946f8beea92ed23 (patch) | |
| tree | 217b8123ec1ef335a32cb19aa3b8a24c2dbddcda /crates/shirabe | |
| parent | 0020a39197a53a14c130ee12759e8cb9002636ef (diff) | |
| download | php-shirabe-fb8fa663e4704fda3127919b7946f8beea92ed23.tar.gz php-shirabe-fb8fa663e4704fda3127919b7946f8beea92ed23.tar.zst php-shirabe-fb8fa663e4704fda3127919b7946f8beea92ed23.zip | |
test(util): port MetadataMinifier expand test
minify is intentionally unported, so only the expand half of
testMinifyExpand() is exercised.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe')
| -rw-r--r-- | crates/shirabe/tests/util/metadata_minifier_test.rs | 67 |
1 files changed, 65 insertions, 2 deletions
diff --git a/crates/shirabe/tests/util/metadata_minifier_test.rs b/crates/shirabe/tests/util/metadata_minifier_test.rs index 85ed507..f0f3e9c 100644 --- a/crates/shirabe/tests/util/metadata_minifier_test.rs +++ b/crates/shirabe/tests/util/metadata_minifier_test.rs @@ -1,7 +1,70 @@ //! ref: composer/tests/Composer/Test/Util/MetadataMinifierTest.php +use indexmap::{IndexMap, indexmap}; +use shirabe::package::ArrayDumper; +use shirabe::package::handle::CompletePackageHandle; +use shirabe_metadata_minifier::MetadataMinifier; +use shirabe_php_shim::PhpMixed; + +// MetadataMinifier::minify is not ported (intentionally absent in metadata_minifier.rs), +// so only the expand half of testMinifyExpand() is exercised here. #[test] -#[ignore = "MetadataMinifier::minify is not ported (intentionally absent in metadata_minifier.rs)"] fn test_minify_expand() { - todo!() + let package1 = CompletePackageHandle::new( + "foo/bar".to_string(), + "2.0.0.0".to_string(), + "2.0.0".to_string(), + ); + package1.set_scripts(IndexMap::from([( + "foo".to_string(), + vec!["bar".to_string()], + )])); + package1.set_license(vec!["MIT".to_string()]); + let package2 = CompletePackageHandle::new( + "foo/bar".to_string(), + "1.2.0.0".to_string(), + "1.2.0".to_string(), + ); + package2.set_license(vec!["GPL".to_string()]); + package2.set_homepage("https://example.org".to_string()); + let package3 = CompletePackageHandle::new( + "foo/bar".to_string(), + "1.0.0.0".to_string(), + "1.0.0".to_string(), + ); + package3.set_license(vec!["GPL".to_string()]); + let dumper = ArrayDumper::new(); + + let minified = vec![ + indexmap! { + "name".to_string() => PhpMixed::String("foo/bar".to_string()), + "version".to_string() => PhpMixed::String("2.0.0".to_string()), + "version_normalized".to_string() => PhpMixed::String("2.0.0.0".to_string()), + "type".to_string() => PhpMixed::String("library".to_string()), + "scripts".to_string() => PhpMixed::Array(indexmap! { + "foo".to_string() => PhpMixed::List(vec![PhpMixed::String("bar".to_string())]), + }), + "license".to_string() => PhpMixed::List(vec![PhpMixed::String("MIT".to_string())]), + }, + indexmap! { + "version".to_string() => PhpMixed::String("1.2.0".to_string()), + "version_normalized".to_string() => PhpMixed::String("1.2.0.0".to_string()), + "license".to_string() => PhpMixed::List(vec![PhpMixed::String("GPL".to_string())]), + "homepage".to_string() => PhpMixed::String("https://example.org".to_string()), + "scripts".to_string() => PhpMixed::String("__unset".to_string()), + }, + indexmap! { + "version".to_string() => PhpMixed::String("1.0.0".to_string()), + "version_normalized".to_string() => PhpMixed::String("1.0.0.0".to_string()), + "homepage".to_string() => PhpMixed::String("__unset".to_string()), + }, + ]; + + let source = vec![ + dumper.dump(package1.into()), + dumper.dump(package2.into()), + dumper.dump(package3.into()), + ]; + + assert_eq!(source, MetadataMinifier::expand(minified)); } |
