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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
//! ref: composer/tests/Composer/Test/Package/Version/VersionParserTest.php
use indexmap::IndexMap;
use shirabe::package::version::version_parser::VersionParser;
fn pairs(items: &[&str]) -> Vec<String> {
items.iter().map(|s| s.to_string()).collect()
}
fn entry(fields: &[(&str, &str)]) -> IndexMap<String, String> {
fields
.iter()
.map(|(k, v)| (k.to_string(), v.to_string()))
.collect()
}
#[test]
#[ignore = "parseNameVersionPairs uses a lookbehind/lookahead pattern the regex crate cannot compile"]
fn test_parse_name_version_pairs() {
for (input, result) in provide_parse_name_version_pairs_data() {
let version_parser = VersionParser::new();
assert_eq!(
result,
version_parser.parse_name_version_pairs(input).unwrap()
);
}
}
fn provide_parse_name_version_pairs_data() -> Vec<(Vec<String>, Vec<IndexMap<String, String>>)> {
vec![
(
pairs(&["php:^7.0"]),
vec![entry(&[("name", "php"), ("version", "^7.0")])],
),
(
pairs(&["php", "^7.0"]),
vec![entry(&[("name", "php"), ("version", "^7.0")])],
),
(
pairs(&["php", "ext-apcu"]),
vec![entry(&[("name", "php")]), entry(&[("name", "ext-apcu")])],
),
(
pairs(&["foo/*", "bar*", "acme/baz", "*@dev"]),
vec![
entry(&[("name", "foo/*")]),
entry(&[("name", "bar*")]),
entry(&[("name", "acme/baz"), ("version", "*@dev")]),
],
),
(
pairs(&["php", "*"]),
vec![entry(&[("name", "php"), ("version", "*")])],
),
]
}
#[test]
#[ignore = "VersionParser::is_upgrade reaches a todo!() in the php-shim"]
fn test_is_upgrade() {
for (from, to, expected) in provide_is_upgrade_tests() {
assert_eq!(expected, VersionParser::is_upgrade(&from, &to).unwrap());
}
}
fn provide_is_upgrade_tests() -> Vec<(String, String, bool)> {
vec![
("0.9.0.0".to_string(), "1.0.0.0".to_string(), true),
("1.0.0.0".to_string(), "0.9.0.0".to_string(), false),
(
"1.0.0.0".to_string(),
VersionParser::DEFAULT_BRANCH_ALIAS.to_string(),
true,
),
(
VersionParser::DEFAULT_BRANCH_ALIAS.to_string(),
VersionParser::DEFAULT_BRANCH_ALIAS.to_string(),
true,
),
(
VersionParser::DEFAULT_BRANCH_ALIAS.to_string(),
"1.0.0.0".to_string(),
false,
),
("1.0.0.0".to_string(), "dev-foo".to_string(), true),
("dev-foo".to_string(), "dev-foo".to_string(), true),
("dev-foo".to_string(), "1.0.0.0".to_string(), true),
]
}
|