forked from os-autoinst/os-autoinst-distri-opensuse
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path01_version_utils.t
113 lines (87 loc) · 4.74 KB
/
01_version_utils.t
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
use strict;
use warnings;
use Test::More;
use Test::Exception;
use Test::Warnings;
use testapi qw(check_var get_var set_var);
subtest 'check_version' => sub {
# compare versions if possible
ok version_utils::check_version($_, '15.5'), "check $_, 15.5" for qw(>15.0 <15.10);
ok !version_utils::check_version($_, '15.5'), "check $_, 15.5" for qw(=15.50 >=15.10);
# compare strings if not
ok version_utils::check_version($_, 'klm'), "check $_, klm" for qw(abc+ 1+ =KLM);
# die if regex does not match
for (qw(1.3+ 11-sp1+)) {
dies_ok { version_utils::check_version($_, '12-sp3', qr/^\d{2}/) } "check $_, 12-sp3, ^\\d{2}";
}
# die if compare symbols are wrong
for (qw(=1.3+ >1.3+ <>1.3 > 12 abc)) {
dies_ok { version_utils::check_version($_, '12-sp3') } "check $_, 12-sp3";
}
ok version_utils::check_version($_, '10.5.0-Maria'), "check $_, 15.5" for qw(>10.4.4 10.4+ >=10.4-Maria >10.3.0-MySQL);
ok !version_utils::check_version($_, '10.5.1'), "check $_, 10.5.1" for qw(=10.4.9 <10.5.0);
};
subtest 'is_microos' => sub {
use version_utils 'is_microos';
set_var('DISTRI', 'microos');
ok is_microos;
set_var('DISTRI', undef);
ok !is_microos;
};
subtest 'is_leap' => sub {
use version_utils 'is_leap';
set_var('DISTRI', 'opensuse');
ok !is_leap, "check !is_leap";
set_var('VERSION', '42.3');
ok is_leap, "check is_leap";
ok is_leap($_), "check $_" for qw(=42.3 <=15.0 >42.1 >=42.3);
ok !is_leap($_), "check $_" for qw(=15.0 >42.3 <42.3 <13.0);
dies_ok { is_leap $_ } "check $_" for (qw(13+ <=15 =42 42+ 42.1:S:A+ =42.3:S:A));
set_var('VERSION', '42.3:S:A');
ok is_leap($_), "check $_" for qw(=42.3 <=15.0);
};
subtest 'is_sle' => sub {
use version_utils 'is_sle';
set_var('DISTRI', 'opensuse');
ok !is_sle, "check !is_sle";
set_var('DISTRI', 'sle');
ok is_sle, "check is_sle";
set_var('VERSION', '12');
ok is_sle, "check is_sle";
ok is_sle($_), "check $_" for qw(=12 >=12 <=12 12+ <12-sp1 <=15-sp2 <15 11+ >11 >=11 11-sp1+);
ok !is_sle($_), "check $_" for qw(>12 <12 >12-sp1 15-sp1+ >=15 <=11 <11-sp2);
dies_ok { is_sle $_ } "check $_" for (qw(12 15- =12+ >1 1-sp1+ <15+ 15-sp1));
set_var('VERSION', '12-SP2');
ok is_sle($_), "check $_" for qw(=12-sp2 =12-sP2 <=15 >11-sp3 <12-sp3 >12-sp1 <12-SP3 >12-SP1);
};
subtest 'package_version_cmp' => sub {
use version_utils 'package_version_cmp';
ok(package_version_cmp('1.2.3-4.5', '1.2.3-4.5') == 0, '1.2.3-4.5 == 1.2.3-4.5');
ok(package_version_cmp('1.2.3-4.5.0', '1.2.3-4.5') == 0, '1.2.3-4.5.0 == 1.2.3-4.5');
ok(package_version_cmp('1.2.3-4.5', '1.2.3-4.5.0') == 0, '1.2.3-4.5 == 1.2.3-4.5.0');
ok(package_version_cmp('1.2.3-4.5.1', '1.2.3-4.5') > 0, '1.2.3-4.5.1 > 1.2.3-4.5');
ok(package_version_cmp('1.2.3-4.5', '1.2.3-4.5.1') < 0, '1.2.3-4.5 < 1.2.3-4.5.1');
ok(package_version_cmp('1.2.3-4.6', '1.2.3-4.5') > 0, '1.2.3-4.6 > 1.2.3-4.5');
ok(package_version_cmp('1.2.3-4.5', '1.2.3-4.6') < 0, '1.2.3-4.5 < 1.2.3-4.6');
ok(package_version_cmp('1.2.3-5.1', '1.2.3-4.5') > 0, '1.2.3-5.1 > 1.2.3-4.5');
ok(package_version_cmp('1.2.3-4.5', '1.2.3-5.1') < 0, '1.2.3-4.5 < 1.2.3-5.1');
ok(package_version_cmp('1.2.0-4.5', '1.2-4.5') == 0, '1.2.0-4.5 == 1.2-4.5');
ok(package_version_cmp('1.2-4.5', '1.2.0-4.5') == 0, '1.2-4.5 == 1.2.0-4.5');
ok(package_version_cmp('1.2.3.1-4.5', '1.2.3-4.5') > 0, '1.2.3.1-4.5 > 1.2.3-4.5');
ok(package_version_cmp('1.2.3-4.5', '1.2.3.1-4.5') < 0, '1.2.3-4.5 < 1.2.3.1-4.5');
ok(package_version_cmp('1.2.4-4.5', '1.2.3-4.5') > 0, '1.2.4-4.5 > 1.2.3-4.5');
ok(package_version_cmp('1.2.3-4.5', '1.2.4-4.5') < 0, '1.2.3-4.5 < 1.2.4-4.5');
ok(package_version_cmp('1.2.3.4-4', '1.2.3-4.5') > 0, '1.2.3-4.5 > 1.2.3-4.5');
ok(package_version_cmp('1.2.3-4.5', '1.2.3.4-4') < 0, '1.2.3-4.5 < 1.2.3-4.5');
ok(package_version_cmp('1.2.3-4.5a', '1.2.3-4.5a') == 0, '1.2.3-4.5a == 1.2.3-4.5a');
ok(package_version_cmp('1.2.3-4.5a', '1.2.3-4.5b') < 0, '1.2.3-4.5a < 1.2.3-4.5b');
ok(package_version_cmp('1.2.3-4.5b', '1.2.3-4.5a') > 0, '1.2.3-4.5b > 1.2.3-4.5a');
ok(package_version_cmp('1.2.3a-4.5', '1.2.3a-4.5') == 0, '1.2.3a-4.5 == 1.2.3-4.5');
ok(package_version_cmp('1.2.3a-4.5', '1.2.3b-4.5') < 0, '1.2.3a-4.5 < 1.2.3-4.5');
ok(package_version_cmp('1.2.3b-4.5', '1.2.3a-4.5') > 0, '1.2.3a-4.5 > 1.2.3-4.5');
ok(package_version_cmp('5.3.18-198.1.g6b7890d', '5.3.18-200.1.g3e09edd') < 0,
'5.3.18-198.1.g6b7890d < 5.3.18-200.1.g3e09edd ');
ok(package_version_cmp('5.3.18-200.1.g3e09edd ', '5.3.18-198.1.g6b7890d') > 0,
'5.3.18-200.1.g3e09edd > 5.3.18-198.1.g6b7890d');
};
done_testing;