diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-06-21 01:07:32 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-06-21 01:07:32 +0900 |
| commit | e59a53e31ce8e864853ee4e0fbdda51ca04a9d0b (patch) | |
| tree | a60ba1945678481402ae49e4d2b95710bd7f38d2 /crates/shirabe/tests/package/complete_package_test.rs | |
| parent | a6eec8ceb2f2f400fea28193fb1608b4bc968016 (diff) | |
| download | php-shirabe-e59a53e31ce8e864853ee4e0fbdda51ca04a9d0b.tar.gz php-shirabe-e59a53e31ce8e864853ee4e0fbdda51ca04a9d0b.tar.zst php-shirabe-e59a53e31ce8e864853ee4e0fbdda51ca04a9d0b.zip | |
test(package): port CompletePackageTest
All four cases pass: naming/versioning/marshalling semantics across the
versioning-scheme provider, and target-dir normalization.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe/tests/package/complete_package_test.rs')
| -rw-r--r-- | crates/shirabe/tests/package/complete_package_test.rs | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/crates/shirabe/tests/package/complete_package_test.rs b/crates/shirabe/tests/package/complete_package_test.rs index b47a4aa..4414aba 100644 --- a/crates/shirabe/tests/package/complete_package_test.rs +++ b/crates/shirabe/tests/package/complete_package_test.rs @@ -1 +1,79 @@ //! ref: composer/tests/Composer/Test/Package/CompletePackageTest.php + +use shirabe::package::package::Package; +use shirabe::package::package_interface::PackageInterface; +use shirabe_semver::version_parser::VersionParser; + +/// Memory package naming, versioning, and marshalling semantics provider +/// demonstrates several versioning schemes +fn provider_versioning_schemes() -> Vec<(&'static str, &'static str)> { + vec![ + ("foo", "1-beta"), + ("node", "0.5.6"), + ("li3", "0.10"), + ("mongodb_odm", "1.0.0BETA3"), + ("DoctrineCommon", "2.2.0-DEV"), + ] +} + +#[test] +fn test_package_has_expected_naming_semantics() { + for (name, version) in provider_versioning_schemes() { + let version_parser = VersionParser; + let norm_version = version_parser.normalize(version, None).unwrap(); + let package = Package::new(name.to_string(), norm_version, version.to_string()); + assert_eq!(name.to_ascii_lowercase(), package.get_name()); + } +} + +#[test] +fn test_package_has_expected_versioning_semantics() { + for (name, version) in provider_versioning_schemes() { + let version_parser = VersionParser; + let norm_version = version_parser.normalize(version, None).unwrap(); + let package = Package::new(name.to_string(), norm_version.clone(), version.to_string()); + assert_eq!(version, package.get_pretty_version()); + assert_eq!(norm_version, package.get_version()); + } +} + +#[test] +fn test_package_has_expected_marshalling_semantics() { + for (name, version) in provider_versioning_schemes() { + let version_parser = VersionParser; + let norm_version = version_parser.normalize(version, None).unwrap(); + let package = Package::new(name.to_string(), norm_version.clone(), version.to_string()); + assert_eq!( + format!("{}-{}", name.to_ascii_lowercase(), norm_version), + package.to_string() + ); + } +} + +#[test] +fn test_get_target_dir() { + let mut package = Package::new("a".to_string(), "1.0.0.0".to_string(), "1.0".to_string()); + + assert_eq!(None, package.get_target_dir()); + + package.set_target_dir(Some("./../foo/".to_string())); + assert_eq!(Some("foo/".to_string()), package.get_target_dir()); + + package.set_target_dir(Some("foo/../../../bar/".to_string())); + assert_eq!(Some("foo/bar/".to_string()), package.get_target_dir()); + + package.set_target_dir(Some("../..".to_string())); + assert_eq!(Some(String::new()), package.get_target_dir()); + + package.set_target_dir(Some("..".to_string())); + assert_eq!(Some(String::new()), package.get_target_dir()); + + package.set_target_dir(Some("/..".to_string())); + assert_eq!(Some(String::new()), package.get_target_dir()); + + package.set_target_dir(Some("/foo/..".to_string())); + assert_eq!(Some("foo/".to_string()), package.get_target_dir()); + + package.set_target_dir(Some("/foo/..//bar".to_string())); + assert_eq!(Some("foo/bar".to_string()), package.get_target_dir()); +} |
