aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/tests/package/base_package_test.rs
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-06-24 00:47:20 +0900
committernsfisis <nsfisis@gmail.com>2026-06-24 00:47:53 +0900
commit340164c64e90d44b1bdf620b514166db1f76cc98 (patch)
tree86195fe5ff8582b64e0324e9f40619e36c04948f /crates/shirabe/tests/package/base_package_test.rs
parent8fe3390d064303b86133a1d2983144a4818a7121 (diff)
downloadphp-shirabe-340164c64e90d44b1bdf620b514166db1f76cc98.tar.gz
php-shirabe-340164c64e90d44b1bdf620b514166db1f76cc98.tar.zst
php-shirabe-340164c64e90d44b1bdf620b514166db1f76cc98.zip
test: port more unimplemented tests
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe/tests/package/base_package_test.rs')
-rw-r--r--crates/shirabe/tests/package/base_package_test.rs41
1 files changed, 35 insertions, 6 deletions
diff --git a/crates/shirabe/tests/package/base_package_test.rs b/crates/shirabe/tests/package/base_package_test.rs
index 1056de1..16d3a5b 100644
--- a/crates/shirabe/tests/package/base_package_test.rs
+++ b/crates/shirabe/tests/package/base_package_test.rs
@@ -1,7 +1,10 @@
//! ref: composer/tests/Composer/Test/Package/BasePackageTest.php
+use shirabe::package::DisplayMode;
use shirabe::package::base_package::package_names_to_regexp;
+use shirabe::package::handle::PackageHandle;
use shirabe::repository::{ArrayRepository, RepositoryInterfaceHandle};
+use shirabe_semver::version_parser::VersionParser;
use crate::test_case::get_package;
@@ -31,14 +34,40 @@ fn test_set_another_repository() {
assert!(package.set_repository(repository2.clone()).is_err());
}
-// In PHP this mocks isDev()/getSourceType()/getPrettyVersion()/getSourceReference()
-// on an abstract BasePackage to drive getFullPrettyVersion(). Reproducing those exact
-// getter values requires mocking; a real package cannot carry the pretty version
-// "PrettyVersion" together with isDev() == true.
-#[ignore = "requires mocking isDev/getSourceType/getPrettyVersion/getSourceReference on an abstract BasePackage; no mock infrastructure exists and a real package cannot carry prettyVersion \"PrettyVersion\" with isDev() == true"]
+// PHP mocks isDev()/getSourceType()/getPrettyVersion()/getSourceReference() on an abstract
+// BasePackage. A real Package reproduces the same observable getters: a "dev-master" version makes
+// isDev() true, while the pretty version is an independent constructor argument.
#[test]
fn test_format_version_for_dev_package() {
- todo!()
+ let cases: Vec<(&str, bool, &str)> = vec![
+ ("v2.1.0-RC2", true, "PrettyVersion v2.1.0-RC2"),
+ (
+ "bbf527a27356414bfa9bf520f018c5cb7af67c77",
+ true,
+ "PrettyVersion bbf527a",
+ ),
+ ("v1.0.0", false, "PrettyVersion v1.0.0"),
+ (
+ "bbf527a27356414bfa9bf520f018c5cb7af67c77",
+ false,
+ "PrettyVersion bbf527a27356414bfa9bf520f018c5cb7af67c77",
+ ),
+ ];
+
+ for (source_reference, truncate, expected) in cases {
+ let package = PackageHandle::new(
+ "dummy/pkg".to_string(),
+ VersionParser.normalize("dev-master", None).unwrap(),
+ "PrettyVersion".to_string(),
+ );
+ package.__set_source_type(Some("git".to_string()));
+ package.set_source_reference(Some(source_reference.to_string()));
+
+ assert_eq!(
+ expected,
+ package.get_full_pretty_version(truncate, DisplayMode::SourceRefIfDev)
+ );
+ }
}
#[test]