blob: 1056de101907f3bc77baed027046fd1b35471278 (
plain)
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
|
//! ref: composer/tests/Composer/Test/Package/BasePackageTest.php
use shirabe::package::base_package::package_names_to_regexp;
use shirabe::repository::{ArrayRepository, RepositoryInterfaceHandle};
use crate::test_case::get_package;
fn empty_repository() -> RepositoryInterfaceHandle {
RepositoryInterfaceHandle::new(ArrayRepository::new(vec![]).unwrap())
}
#[test]
fn test_set_same_repository() {
let package = get_package("foo", "1.0.0");
let repository = empty_repository();
package.set_repository(repository.clone()).unwrap();
// Set against the same repository is allowed.
package.set_repository(repository.clone()).unwrap();
}
#[test]
fn test_set_another_repository() {
let package = get_package("foo", "1.0.0");
let repository1 = empty_repository();
let repository2 = empty_repository();
// The package stores the repository as a weak ref, so keep both strong handles
// alive for the "already in another repository" check to fire.
package.set_repository(repository1.clone()).unwrap();
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"]
#[test]
fn test_format_version_for_dev_package() {
todo!()
}
#[test]
fn test_package_names_to_regexp() {
// The PHP data provider yields a single row whose extra elements are ignored,
// so only the first (packageNames, wrap, expected) triple is exercised.
let regexp = package_names_to_regexp(
&["ext-*".to_string(), "monolog/monolog".to_string()],
"{^%s$}i",
);
assert_eq!("{^ext\\-.*|monolog/monolog$}i", regexp);
}
|