autoproj 2.0.0.b7 → 2.0.0.rc1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitattributes +1 -0
- data/.gitignore +8 -0
- data/.travis.yml +5 -0
- data/Gemfile +6 -0
- data/README.md +4 -0
- data/Rakefile +40 -81
- data/autoproj.gemspec +29 -0
- data/lib/autoproj/cli/cache.rb +7 -2
- data/lib/autoproj/cli/main.rb +46 -25
- data/lib/autoproj/cli/main_test.rb +6 -4
- data/lib/autoproj/cli/status.rb +2 -2
- data/lib/autoproj/configuration.rb +5 -0
- data/lib/autoproj/git_server_configuration.rb +117 -0
- data/lib/autoproj/osdeps.rb +14 -914
- data/lib/autoproj/package_managers/apt_dpkg_manager.rb +70 -0
- data/lib/autoproj/package_managers/emerge_manager.rb +14 -0
- data/lib/autoproj/package_managers/gem_manager.rb +313 -0
- data/lib/autoproj/package_managers/homebrew_manager.rb +44 -0
- data/lib/autoproj/package_managers/manager.rb +45 -0
- data/lib/autoproj/package_managers/pacman_manager.rb +14 -0
- data/lib/autoproj/package_managers/pip_manager.rb +86 -0
- data/lib/autoproj/package_managers/pkg_manager.rb +14 -0
- data/lib/autoproj/package_managers/port_manager.rb +14 -0
- data/lib/autoproj/package_managers/shell_script_manager.rb +207 -0
- data/lib/autoproj/package_managers/unknown_os_manager.rb +42 -0
- data/lib/autoproj/package_managers/yum_manager.rb +56 -0
- data/lib/autoproj/package_managers/zypper_manager.rb +43 -0
- data/lib/autoproj/package_manifest.rb +1 -1
- data/lib/autoproj/test.rb +13 -14
- data/lib/autoproj/variable_expansion.rb +4 -2
- data/lib/autoproj/version.rb +1 -1
- data/lib/autoproj/workspace.rb +5 -1
- data/manifest.xml +20 -0
- metadata +73 -87
- data/.gemtest +0 -0
- data/Manifest.txt +0 -105
- data/test/data/empty_manifest.xml +0 -2
- data/test/data/full_manifest.xml +0 -19
- data/test/data/invalid_manifest.xml +0 -3
- data/test/data/os_release.with_complex_version_field +0 -3
- data/test/data/os_release.with_duplicate_values +0 -3
- data/test/data/os_release.with_missing_optional_fields +0 -2
- data/test/data/os_release.with_quoted_and_unquoted_fields +0 -2
- data/test/data/test_manifest/autoproj/local_set/local.autobuild +0 -0
- data/test/data/test_manifest/autoproj/local_set/source.yml +0 -1
- data/test/data/test_manifest/autoproj/manifest +0 -7
- data/test/ops/test_configuration.rb +0 -20
- data/test/ops/test_snapshot.rb +0 -26
- data/test/package_managers/apt-dpkg-status +0 -41
- data/test/package_managers/apt-dpkg-status.installed-last +0 -27
- data/test/package_managers/apt-dpkg-status.noninstalled-last +0 -12
- data/test/package_managers/test_apt_dpkg_manager.rb +0 -41
- data/test/package_managers/test_gem.rb +0 -156
- data/test/package_managers/test_pip.rb +0 -42
- data/test/test_manifest.rb +0 -48
- data/test/test_os_dependencies.rb +0 -586
- data/test/test_package.rb +0 -30
- data/test/test_package_manifest.rb +0 -65
- data/test/test_vcs_definition.rb +0 -46
@@ -1,42 +0,0 @@
|
|
1
|
-
$LOAD_PATH.unshift File.expand_path('../lib', File.dirname(__FILE__))
|
2
|
-
require 'test/unit'
|
3
|
-
require 'autoproj'
|
4
|
-
require 'flexmock/test_unit'
|
5
|
-
|
6
|
-
class TC_OSDependencies_Pip < Test::Unit::TestCase
|
7
|
-
include Autoproj
|
8
|
-
|
9
|
-
attr_reader :pip_manager
|
10
|
-
|
11
|
-
def setup
|
12
|
-
Autoproj::OSDependencies.operating_system = [['test', 'debian', 'default'], ['v1.0', 'v1', 'default']]
|
13
|
-
|
14
|
-
@pip_manager = PackageManagers::PipManager.new
|
15
|
-
Autobuild.programs['pip'] = 'mypip'
|
16
|
-
super
|
17
|
-
end
|
18
|
-
|
19
|
-
def teardown
|
20
|
-
super
|
21
|
-
Autobuild.programs['pip'] = nil
|
22
|
-
end
|
23
|
-
|
24
|
-
def test_install_packages
|
25
|
-
subprocess = flexmock(Autobuild::Subprocess)
|
26
|
-
|
27
|
-
packages = ['pkg0', 'pkg1', 'pkg2']
|
28
|
-
subprocess.should_receive(:run).
|
29
|
-
with(any, any, 'mypip', 'install', '--user', 'pkg0', 'pkg1','pkg2').once
|
30
|
-
pip_manager.install(packages)
|
31
|
-
end
|
32
|
-
|
33
|
-
def test_install_packaes_disabled_and_not_silent
|
34
|
-
subprocess = flexmock(Autobuild::Subprocess)
|
35
|
-
|
36
|
-
pip_manager.enabled = false
|
37
|
-
pip_manager.silent = false
|
38
|
-
subprocess.should_receive(:run).never
|
39
|
-
flexmock(STDIN).should_receive(:readline).once.and_return
|
40
|
-
pip_manager.install([['pkg0']])
|
41
|
-
end
|
42
|
-
end
|
data/test/test_manifest.rb
DELETED
@@ -1,48 +0,0 @@
|
|
1
|
-
$LOAD_PATH.unshift File.expand_path('../lib', File.dirname(__FILE__))
|
2
|
-
require 'test/unit'
|
3
|
-
require 'autoproj'
|
4
|
-
require 'flexmock/test_unit'
|
5
|
-
require 'set'
|
6
|
-
|
7
|
-
class TC_Manifest < Test::Unit::TestCase
|
8
|
-
DATA_DIR = File.expand_path('data', File.dirname(__FILE__))
|
9
|
-
include Autoproj
|
10
|
-
|
11
|
-
def test_each_package_set
|
12
|
-
Dir.chdir(File.join(DATA_DIR, 'test_manifest', 'autoproj')) do
|
13
|
-
manifest = Manifest.load(File.join(DATA_DIR, 'test_manifest', 'autoproj', 'manifest'))
|
14
|
-
sources = manifest.each_package_set(false).to_set
|
15
|
-
|
16
|
-
test_data = "#{DATA_DIR}/test_manifest"
|
17
|
-
test_data_name = test_data.gsub '/', '_'
|
18
|
-
|
19
|
-
local_set = sources.find { |pkg_set| pkg_set.name == 'local_set' }
|
20
|
-
assert local_set
|
21
|
-
assert_equal "#{test_data}/autoproj/local_set", local_set.raw_local_dir
|
22
|
-
assert local_set.local?
|
23
|
-
|
24
|
-
remote_set = sources.find { |pkg_set| pkg_set.name == "git:remote2.git branch=next"}
|
25
|
-
assert remote_set, "available package sets: #{sources.map(&:name)}"
|
26
|
-
assert_equal "#{test_data}/.remotes/git__home_doudou_dev_rock_master_tools_autoproj_test_data_test_manifest_remote2_git", remote_set.raw_local_dir
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
def test_single_expansion_uses_provided_definitions
|
31
|
-
flexmock(Autoproj).should_receive(:user_config).never
|
32
|
-
assert_equal "a_variable=val", Autoproj.single_expansion("a_variable=$CONST", 'CONST' => 'val')
|
33
|
-
assert_equal "val", Autoproj.single_expansion("$CONST", 'CONST' => 'val')
|
34
|
-
end
|
35
|
-
|
36
|
-
def test_single_expansion_uses_user_config
|
37
|
-
flexmock(Autoproj).should_receive(:user_config).with("CONST").and_return("val")
|
38
|
-
assert_equal "a_variable=val", Autoproj.single_expansion("a_variable=$CONST", Hash.new)
|
39
|
-
assert_equal "val", Autoproj.single_expansion("$CONST", Hash.new)
|
40
|
-
end
|
41
|
-
|
42
|
-
def test_single_expansion_handle_quoted_dollar_sign
|
43
|
-
flexmock(Autoproj).should_receive(:user_config).with("CONST").and_return("val")
|
44
|
-
assert_equal "a_variable=$CONST", Autoproj.single_expansion("a_variable=\\$CONST", Hash.new)
|
45
|
-
assert_equal "$CONST", Autoproj.single_expansion("\\$CONST", Hash.new)
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
@@ -1,586 +0,0 @@
|
|
1
|
-
$LOAD_PATH.unshift File.expand_path('../lib', File.dirname(__FILE__))
|
2
|
-
$LOAD_PATH.unshift File.expand_path('../', File.dirname(__FILE__))
|
3
|
-
require 'test/unit'
|
4
|
-
require 'autoproj'
|
5
|
-
require 'flexmock/test_unit'
|
6
|
-
|
7
|
-
require 'test/package_managers/test_gem'
|
8
|
-
|
9
|
-
class TC_OSDependencies < Test::Unit::TestCase
|
10
|
-
include Autoproj
|
11
|
-
FOUND_PACKAGES = Autoproj::OSDependencies::FOUND_PACKAGES
|
12
|
-
FOUND_NONEXISTENT = Autoproj::OSDependencies::FOUND_NONEXISTENT
|
13
|
-
|
14
|
-
def setup
|
15
|
-
Autoproj::OSDependencies.operating_system = [['test', 'debian', 'default'], ['v1.0', 'v1', 'default']]
|
16
|
-
end
|
17
|
-
|
18
|
-
def test_supported_operating_system
|
19
|
-
Autoproj::OSDependencies.operating_system = [['test', 'debian', 'default'], ['v1.0', 'v1', 'default']]
|
20
|
-
assert(Autoproj::OSDependencies.supported_operating_system?)
|
21
|
-
Autoproj::OSDependencies.operating_system = [['test', 'default'], ['v1.0', 'v1', 'default']]
|
22
|
-
assert(!Autoproj::OSDependencies.supported_operating_system?)
|
23
|
-
end
|
24
|
-
|
25
|
-
def create_osdep(data)
|
26
|
-
osdeps = OSDependencies.new(data)
|
27
|
-
# Mock the package handlers
|
28
|
-
osdeps.os_package_handler = flexmock(PackageManagers::Manager.new(['apt-dpkg']))
|
29
|
-
osdeps.package_handlers.clear
|
30
|
-
osdeps.package_handlers['apt-dpkg'] = osdeps.os_package_handler
|
31
|
-
osdeps.package_handlers['gem'] = flexmock(PackageManagers::Manager.new(['gem']))
|
32
|
-
osdeps.package_handlers['pip'] = flexmock(PackageManagers::Manager.new(['pip']))
|
33
|
-
flexmock(osdeps)
|
34
|
-
end
|
35
|
-
|
36
|
-
def test_resolve_package_calls_specific_formatting
|
37
|
-
data = { 'pkg' => {
|
38
|
-
'test' => {
|
39
|
-
'v1.0' => 'pkg1.0 blabla',
|
40
|
-
'v1.1' => 'pkg1.1 bloblo',
|
41
|
-
'default' => 'pkgdef'
|
42
|
-
}
|
43
|
-
} }
|
44
|
-
osdeps = create_osdep(data)
|
45
|
-
osdeps.os_package_handler.should_receive(:parse_package_entry).
|
46
|
-
and_return { |arg| arg.split(" ") }.once
|
47
|
-
|
48
|
-
expected = [[osdeps.os_package_handler, FOUND_PACKAGES, [['pkg1.0', 'blabla']]]]
|
49
|
-
assert_equal expected, osdeps.resolve_package('pkg')
|
50
|
-
end
|
51
|
-
|
52
|
-
def test_resolve_package_applies_aliases
|
53
|
-
data = { 'pkg' => {
|
54
|
-
'test' => {
|
55
|
-
'v1.0' => 'pkg1.0',
|
56
|
-
'v1.1' => 'pkg1.1',
|
57
|
-
'default' => 'pkgdef'
|
58
|
-
}
|
59
|
-
} }
|
60
|
-
Autoproj::OSDependencies.alias('pkg', 'bla')
|
61
|
-
osdeps = create_osdep(data)
|
62
|
-
expected = [[osdeps.os_package_handler, FOUND_PACKAGES, ['pkg1.0']]]
|
63
|
-
assert_equal expected, osdeps.resolve_package('bla')
|
64
|
-
end
|
65
|
-
|
66
|
-
def test_resolve_specific_os_name_and_version_single_package
|
67
|
-
data = { 'pkg' => {
|
68
|
-
'test' => {
|
69
|
-
'v1.0' => 'pkg1.0',
|
70
|
-
'v1.1' => 'pkg1.1',
|
71
|
-
'default' => 'pkgdef'
|
72
|
-
}
|
73
|
-
} }
|
74
|
-
osdeps = create_osdep(data)
|
75
|
-
|
76
|
-
expected = [[osdeps.os_package_handler, FOUND_PACKAGES, ['pkg1.0']]]
|
77
|
-
assert_equal expected, osdeps.resolve_package('pkg')
|
78
|
-
end
|
79
|
-
|
80
|
-
def test_resolve_specific_os_name_and_version_package_list
|
81
|
-
data = { 'pkg' => {
|
82
|
-
'test' => {
|
83
|
-
'v1.0' => ['pkg1.0', 'other_pkg'],
|
84
|
-
'v1.1' => 'pkg1.1',
|
85
|
-
'default' => 'pkgdef'
|
86
|
-
}
|
87
|
-
} }
|
88
|
-
osdeps = create_osdep(data)
|
89
|
-
|
90
|
-
expected = [[osdeps.os_package_handler, FOUND_PACKAGES, ['pkg1.0', 'other_pkg']]]
|
91
|
-
assert_equal expected, osdeps.resolve_package('pkg')
|
92
|
-
end
|
93
|
-
|
94
|
-
def test_resolve_specific_os_name_and_version_ignore
|
95
|
-
data = { 'pkg' => {
|
96
|
-
'test' => {
|
97
|
-
'v1.0' => 'ignore',
|
98
|
-
'v1.1' => 'pkg1.1',
|
99
|
-
'default' => 'pkgdef'
|
100
|
-
}
|
101
|
-
} }
|
102
|
-
osdeps = create_osdep(data)
|
103
|
-
|
104
|
-
expected = [[osdeps.os_package_handler, FOUND_PACKAGES, []]]
|
105
|
-
assert_equal expected, osdeps.resolve_package('pkg')
|
106
|
-
end
|
107
|
-
|
108
|
-
def test_resolve_specific_os_name_and_version_fallback
|
109
|
-
data = { 'pkg' =>
|
110
|
-
{ 'test' =>
|
111
|
-
{ 'v1.1' => 'pkg1.1',
|
112
|
-
'default' => 'pkgdef'
|
113
|
-
}
|
114
|
-
}
|
115
|
-
}
|
116
|
-
osdeps = create_osdep(data)
|
117
|
-
|
118
|
-
expected = [[osdeps.os_package_handler, FOUND_PACKAGES, ['pkgdef']]]
|
119
|
-
assert_equal expected, osdeps.resolve_package('pkg')
|
120
|
-
end
|
121
|
-
|
122
|
-
def test_resolve_specific_os_name_and_version_nonexistent
|
123
|
-
data = { 'pkg' => {
|
124
|
-
'test' => {
|
125
|
-
'v1.0' => 'nonexistent',
|
126
|
-
'v1.1' => 'pkg1.1',
|
127
|
-
'default' => 'pkgdef'
|
128
|
-
}
|
129
|
-
} }
|
130
|
-
osdeps = create_osdep(data)
|
131
|
-
|
132
|
-
expected = [[osdeps.os_package_handler, FOUND_NONEXISTENT, []]]
|
133
|
-
assert_equal expected, osdeps.resolve_package('pkg')
|
134
|
-
end
|
135
|
-
|
136
|
-
def test_resolve_specific_os_name_and_version_not_found
|
137
|
-
data = { 'pkg' => {
|
138
|
-
'test' => { 'v1.1' => 'pkg1.1', }
|
139
|
-
} }
|
140
|
-
osdeps = create_osdep(data)
|
141
|
-
assert_equal [], osdeps.resolve_package('pkg')
|
142
|
-
end
|
143
|
-
|
144
|
-
def test_resolve_specific_os_name_single_package
|
145
|
-
data = { 'pkg' => { 'test' => 'pkg1.0', 'other_test' => 'pkg1.1', 'default' => 'pkgdef' } }
|
146
|
-
osdeps = create_osdep(data)
|
147
|
-
|
148
|
-
expected = [[osdeps.os_package_handler, FOUND_PACKAGES, ['pkg1.0']]]
|
149
|
-
assert_equal expected, osdeps.resolve_package('pkg')
|
150
|
-
end
|
151
|
-
|
152
|
-
def test_resolve_specific_os_name_package_list
|
153
|
-
data = { 'pkg' => { 'test' => ['pkg1.0', 'other_pkg'], 'other_test' => 'pkg1.1', 'default' => 'pkgdef' } }
|
154
|
-
osdeps = create_osdep(data)
|
155
|
-
|
156
|
-
expected = [[osdeps.os_package_handler, FOUND_PACKAGES, ['pkg1.0', 'other_pkg']]]
|
157
|
-
assert_equal expected, osdeps.resolve_package('pkg')
|
158
|
-
end
|
159
|
-
|
160
|
-
def test_resolve_specific_os_name_ignore
|
161
|
-
data = { 'pkg' => { 'test' => 'ignore', 'other_test' => 'pkg1.1', 'default' => 'pkgdef' } }
|
162
|
-
osdeps = create_osdep(data)
|
163
|
-
|
164
|
-
expected = [[osdeps.os_package_handler, FOUND_PACKAGES, []]]
|
165
|
-
assert_equal expected, osdeps.resolve_package('pkg')
|
166
|
-
end
|
167
|
-
|
168
|
-
def test_resolve_specific_os_name_fallback
|
169
|
-
data = { 'pkg' => { 'other_test' => 'pkg1.1', 'default' => 'pkgdef' } }
|
170
|
-
osdeps = create_osdep(data)
|
171
|
-
|
172
|
-
expected = [[osdeps.os_package_handler, FOUND_PACKAGES, ['pkgdef']]]
|
173
|
-
assert_equal expected, osdeps.resolve_package('pkg')
|
174
|
-
end
|
175
|
-
|
176
|
-
def test_resolve_specific_os_name_and_version_nonexistent
|
177
|
-
data = { 'pkg' => { 'test' => 'nonexistent', 'other_test' => 'pkg1.1' } }
|
178
|
-
osdeps = create_osdep(data)
|
179
|
-
|
180
|
-
expected = [[osdeps.os_package_handler, FOUND_NONEXISTENT, []]]
|
181
|
-
assert_equal expected, osdeps.resolve_package('pkg')
|
182
|
-
end
|
183
|
-
|
184
|
-
def test_resolve_specific_os_name_and_version_not_found
|
185
|
-
data = { 'pkg' => { 'other_test' => 'pkg1.1' } }
|
186
|
-
osdeps = create_osdep(data)
|
187
|
-
|
188
|
-
assert_equal [], osdeps.resolve_package('pkg')
|
189
|
-
end
|
190
|
-
|
191
|
-
def test_resolve_os_name_global_and_specific_packages
|
192
|
-
data = { 'pkg' => [
|
193
|
-
'global_pkg1', 'global_pkg2',
|
194
|
-
{ 'test' => 'pkg1.1',
|
195
|
-
'other_test' => 'pkg1.1',
|
196
|
-
'default' => 'nonexistent'
|
197
|
-
}
|
198
|
-
]}
|
199
|
-
osdeps = create_osdep(data)
|
200
|
-
|
201
|
-
expected = [[osdeps.os_package_handler, FOUND_PACKAGES, ['global_pkg1', 'global_pkg2', 'pkg1.1']]]
|
202
|
-
assert_equal expected, osdeps.resolve_package('pkg')
|
203
|
-
end
|
204
|
-
|
205
|
-
def test_resolve_os_name_global_and_specific_does_not_exist
|
206
|
-
data = { 'pkg' => [
|
207
|
-
'global_pkg1', 'global_pkg2',
|
208
|
-
{
|
209
|
-
'other_test' => 'pkg1.1',
|
210
|
-
}
|
211
|
-
]}
|
212
|
-
osdeps = create_osdep(data)
|
213
|
-
|
214
|
-
expected = [[osdeps.os_package_handler, FOUND_PACKAGES, ['global_pkg1', 'global_pkg2']]]
|
215
|
-
assert_equal expected, osdeps.resolve_package('pkg')
|
216
|
-
end
|
217
|
-
|
218
|
-
def test_resolve_os_name_global_and_nonexistent
|
219
|
-
data = { 'pkg' => [
|
220
|
-
'global_pkg1', 'global_pkg2',
|
221
|
-
{ 'test' => 'nonexistent',
|
222
|
-
'other_test' => 'pkg1.1'
|
223
|
-
}
|
224
|
-
]}
|
225
|
-
osdeps = create_osdep(data)
|
226
|
-
|
227
|
-
expected = [[osdeps.os_package_handler, FOUND_NONEXISTENT, ['global_pkg1', 'global_pkg2']]]
|
228
|
-
assert_equal expected, osdeps.resolve_package('pkg')
|
229
|
-
end
|
230
|
-
|
231
|
-
def test_resolve_os_name_global_and_ignore
|
232
|
-
data = { 'pkg' => [
|
233
|
-
'global_pkg1', 'global_pkg2',
|
234
|
-
{ 'test' => 'ignore',
|
235
|
-
'other_test' => 'pkg1.1'
|
236
|
-
}
|
237
|
-
]}
|
238
|
-
osdeps = create_osdep(data)
|
239
|
-
|
240
|
-
expected = [[osdeps.os_package_handler, FOUND_PACKAGES, ['global_pkg1', 'global_pkg2']]]
|
241
|
-
assert_equal expected, osdeps.resolve_package('pkg')
|
242
|
-
end
|
243
|
-
|
244
|
-
def test_resolve_os_version_global_and_specific_packages
|
245
|
-
data = { 'pkg' => [
|
246
|
-
'global_pkg1', 'global_pkg2',
|
247
|
-
{ 'test' => ['pkg0', 'pkg1', { 'v1.0' => 'pkg1.0' }],
|
248
|
-
'other_test' => 'pkg1.1',
|
249
|
-
'default' => 'nonexistent'
|
250
|
-
}
|
251
|
-
]}
|
252
|
-
osdeps = create_osdep(data)
|
253
|
-
|
254
|
-
expected = [[osdeps.os_package_handler, FOUND_PACKAGES, ['global_pkg1', 'global_pkg2', 'pkg0', 'pkg1', 'pkg1.0']]]
|
255
|
-
assert_equal expected, osdeps.resolve_package('pkg')
|
256
|
-
end
|
257
|
-
|
258
|
-
def test_resolve_os_version_global_and_specific_nonexistent
|
259
|
-
data = { 'pkg' => [
|
260
|
-
'global_pkg1', 'global_pkg2',
|
261
|
-
{ 'test' => ['pkg0', 'pkg1', { 'v1.0' => 'nonexistent' }],
|
262
|
-
'other_test' => 'pkg1.1',
|
263
|
-
'default' => 'nonexistent'
|
264
|
-
}
|
265
|
-
]}
|
266
|
-
osdeps = create_osdep(data)
|
267
|
-
|
268
|
-
expected = [[osdeps.os_package_handler, FOUND_NONEXISTENT, ['global_pkg1', 'global_pkg2', 'pkg0', 'pkg1']]]
|
269
|
-
assert_equal expected, osdeps.resolve_package('pkg')
|
270
|
-
end
|
271
|
-
|
272
|
-
def test_resolve_os_version_global_and_specific_ignore
|
273
|
-
data = { 'pkg' => [
|
274
|
-
'global_pkg1', 'global_pkg2',
|
275
|
-
{ 'test' => ['pkg0', 'pkg1', { 'v1.0' => 'ignore' }],
|
276
|
-
'other_test' => 'pkg1.1',
|
277
|
-
'default' => 'nonexistent'
|
278
|
-
}
|
279
|
-
]}
|
280
|
-
osdeps = create_osdep(data)
|
281
|
-
|
282
|
-
expected = [[osdeps.os_package_handler, FOUND_PACKAGES, ['global_pkg1', 'global_pkg2', 'pkg0', 'pkg1']]]
|
283
|
-
assert_equal expected, osdeps.resolve_package('pkg')
|
284
|
-
end
|
285
|
-
|
286
|
-
def test_resolve_os_version_global_and_specific_does_not_exist
|
287
|
-
data = { 'pkg' => [
|
288
|
-
'global_pkg1', 'global_pkg2',
|
289
|
-
{ 'test' => ['pkg0', 'pkg1', { 'v1.1' => 'pkg1.1' }],
|
290
|
-
'other_test' => 'pkg1.1',
|
291
|
-
'default' => 'nonexistent'
|
292
|
-
}
|
293
|
-
]}
|
294
|
-
osdeps = create_osdep(data)
|
295
|
-
|
296
|
-
expected = [[osdeps.os_package_handler, FOUND_PACKAGES, ['global_pkg1', 'global_pkg2', 'pkg0', 'pkg1']]]
|
297
|
-
assert_equal expected, osdeps.resolve_package('pkg')
|
298
|
-
end
|
299
|
-
|
300
|
-
def test_resolve_osindep_packages_global
|
301
|
-
data = { 'pkg' => 'gem' }
|
302
|
-
osdeps = create_osdep(data)
|
303
|
-
expected = [[osdeps.package_handlers['gem'], FOUND_PACKAGES, ['pkg']]]
|
304
|
-
assert_equal expected, osdeps.resolve_package('pkg')
|
305
|
-
|
306
|
-
data = { 'pkg' => { 'gem' => 'gempkg' }}
|
307
|
-
osdeps = create_osdep(data)
|
308
|
-
expected = [[osdeps.package_handlers['gem'], FOUND_PACKAGES, ['gempkg']]]
|
309
|
-
assert_equal expected, osdeps.resolve_package('pkg')
|
310
|
-
|
311
|
-
data = { 'pkg' => { 'gem' => ['gempkg', 'gempkg1'] }}
|
312
|
-
osdeps = create_osdep(data)
|
313
|
-
expected = [[osdeps.package_handlers['gem'], FOUND_PACKAGES, ['gempkg', 'gempkg1']]]
|
314
|
-
assert_equal expected, osdeps.resolve_package('pkg')
|
315
|
-
|
316
|
-
data = { 'pkg' => 'pip' }
|
317
|
-
osdeps = create_osdep(data)
|
318
|
-
expected = [[osdeps.package_handlers['pip'], FOUND_PACKAGES, ['pkg']]]
|
319
|
-
assert_equal expected, osdeps.resolve_package('pkg')
|
320
|
-
end
|
321
|
-
|
322
|
-
def test_resolve_osindep_packages_specific
|
323
|
-
data = { 'pkg' => ['gem', { 'test' => { 'gem' => 'gempkg' } } ] }
|
324
|
-
osdeps = create_osdep(data)
|
325
|
-
expected = [[osdeps.package_handlers['gem'], FOUND_PACKAGES, ['pkg', 'gempkg']]]
|
326
|
-
assert_equal expected, osdeps.resolve_package('pkg')
|
327
|
-
end
|
328
|
-
|
329
|
-
def test_specific_os_version_supersedes_nonspecific_one
|
330
|
-
data = { 'pkg' =>
|
331
|
-
{
|
332
|
-
'debian' => 'binary_package',
|
333
|
-
'test' => { 'gem' => 'gempkg' }
|
334
|
-
}
|
335
|
-
}
|
336
|
-
osdeps = create_osdep(data)
|
337
|
-
expected = [[osdeps.package_handlers['gem'], FOUND_PACKAGES, ['gempkg']]]
|
338
|
-
assert_equal expected, osdeps.resolve_package('pkg')
|
339
|
-
|
340
|
-
data = { 'pkg' =>
|
341
|
-
{
|
342
|
-
'default' => { 'gem' => 'gem_package' },
|
343
|
-
'test' => 'binary_package'
|
344
|
-
}
|
345
|
-
}
|
346
|
-
osdeps = create_osdep(data)
|
347
|
-
expected = [[osdeps.os_package_handler, FOUND_PACKAGES, ['binary_package']]]
|
348
|
-
assert_equal expected, osdeps.resolve_package('pkg')
|
349
|
-
end
|
350
|
-
|
351
|
-
def test_resolve_mixed_os_and_osindep_dependencies
|
352
|
-
data = { 'pkg' =>
|
353
|
-
{ 'test' => { 'default' => 'ospkg', 'gem' => 'gempkg' }
|
354
|
-
}
|
355
|
-
}
|
356
|
-
|
357
|
-
osdeps = create_osdep(data)
|
358
|
-
expected = [
|
359
|
-
[osdeps.os_package_handler, FOUND_PACKAGES, ['ospkg']],
|
360
|
-
[osdeps.package_handlers['gem'], FOUND_PACKAGES, ['gempkg']]
|
361
|
-
].to_set
|
362
|
-
assert_equal expected, osdeps.resolve_package('pkg').to_set
|
363
|
-
end
|
364
|
-
|
365
|
-
def test_availability_of
|
366
|
-
osdeps = flexmock(OSDependencies.new)
|
367
|
-
osdeps.should_receive(:resolve_package).with('pkg0').once.and_return(
|
368
|
-
[[osdeps.os_package_handler, FOUND_PACKAGES, ['pkg1']],
|
369
|
-
[osdeps.package_handlers['gem'], FOUND_PACKAGES, ['gempkg1']]])
|
370
|
-
assert_equal OSDependencies::AVAILABLE, osdeps.availability_of('pkg0')
|
371
|
-
|
372
|
-
osdeps.should_receive(:resolve_package).with('pkg0').once.and_return(
|
373
|
-
[[osdeps.os_package_handler, FOUND_PACKAGES, []],
|
374
|
-
[osdeps.package_handlers['gem'], FOUND_PACKAGES, ['gempkg1']]])
|
375
|
-
assert_equal OSDependencies::AVAILABLE, osdeps.availability_of('pkg0')
|
376
|
-
|
377
|
-
osdeps.should_receive(:resolve_package).with('pkg0').once.and_return(
|
378
|
-
[[osdeps.os_package_handler, FOUND_PACKAGES, []],
|
379
|
-
[osdeps.package_handlers['gem'], FOUND_PACKAGES, []]])
|
380
|
-
assert_equal OSDependencies::IGNORE, osdeps.availability_of('pkg0')
|
381
|
-
|
382
|
-
osdeps.should_receive(:resolve_package).with('pkg0').once.and_return(
|
383
|
-
[[osdeps.os_package_handler, FOUND_PACKAGES, ['pkg1']],
|
384
|
-
[osdeps.package_handlers['gem'], FOUND_NONEXISTENT, []]])
|
385
|
-
assert_equal OSDependencies::NONEXISTENT, osdeps.availability_of('pkg0')
|
386
|
-
|
387
|
-
osdeps.should_receive(:resolve_package).with('pkg0').once.and_return([])
|
388
|
-
assert_equal OSDependencies::WRONG_OS, osdeps.availability_of('pkg0')
|
389
|
-
|
390
|
-
osdeps.should_receive(:resolve_package).with('pkg0').once.and_return(nil)
|
391
|
-
assert_equal OSDependencies::NO_PACKAGE, osdeps.availability_of('pkg0')
|
392
|
-
end
|
393
|
-
|
394
|
-
def test_has_p
|
395
|
-
osdeps = flexmock(OSDependencies.new)
|
396
|
-
osdeps.should_receive(:availability_of).with('pkg0').once.
|
397
|
-
and_return(OSDependencies::AVAILABLE)
|
398
|
-
assert(osdeps.has?('pkg0'))
|
399
|
-
|
400
|
-
osdeps.should_receive(:availability_of).with('pkg0').once.
|
401
|
-
and_return(OSDependencies::IGNORE)
|
402
|
-
assert(osdeps.has?('pkg0'))
|
403
|
-
|
404
|
-
osdeps.should_receive(:availability_of).with('pkg0').once.
|
405
|
-
and_return(OSDependencies::UNKNOWN_OS)
|
406
|
-
assert(!osdeps.has?('pkg0'))
|
407
|
-
|
408
|
-
osdeps.should_receive(:availability_of).with('pkg0').once.
|
409
|
-
and_return(OSDependencies::WRONG_OS)
|
410
|
-
assert(!osdeps.has?('pkg0'))
|
411
|
-
|
412
|
-
osdeps.should_receive(:availability_of).with('pkg0').once.
|
413
|
-
and_return(OSDependencies::NONEXISTENT)
|
414
|
-
assert(!osdeps.has?('pkg0'))
|
415
|
-
|
416
|
-
osdeps.should_receive(:availability_of).with('pkg0').once.
|
417
|
-
and_return(OSDependencies::NO_PACKAGE)
|
418
|
-
assert(!osdeps.has?('pkg0'))
|
419
|
-
end
|
420
|
-
|
421
|
-
def test_resolve_os_dependencies
|
422
|
-
osdeps = flexmock(OSDependencies.new)
|
423
|
-
osdeps.should_receive(:resolve_package).with('pkg0').once.and_return(
|
424
|
-
[[osdeps.os_package_handler, FOUND_PACKAGES, ['pkg0']]])
|
425
|
-
osdeps.should_receive(:resolve_package).with('pkg1').once.and_return(
|
426
|
-
[[osdeps.os_package_handler, FOUND_PACKAGES, ['pkg1']],
|
427
|
-
[osdeps.package_handlers['gem'], FOUND_PACKAGES, ['gempkg1']]])
|
428
|
-
osdeps.should_receive(:resolve_package).with('pkg2').once.and_return(
|
429
|
-
[[osdeps.package_handlers['gem'], FOUND_PACKAGES, ['gempkg2']]])
|
430
|
-
expected =
|
431
|
-
[[osdeps.os_package_handler, ['pkg0', 'pkg1']],
|
432
|
-
[osdeps.package_handlers['gem'], ['gempkg1', 'gempkg2']]]
|
433
|
-
assert_equal expected, osdeps.resolve_os_dependencies(['pkg0', 'pkg1', 'pkg2'])
|
434
|
-
|
435
|
-
osdeps.should_receive(:resolve_package).with('pkg0').once.and_return(
|
436
|
-
[[osdeps.os_package_handler, FOUND_PACKAGES, ['pkg0']]])
|
437
|
-
osdeps.should_receive(:resolve_package).with('pkg1').once.and_return(
|
438
|
-
[[osdeps.os_package_handler, FOUND_PACKAGES, []]])
|
439
|
-
osdeps.should_receive(:resolve_package).with('pkg2').once.and_return(
|
440
|
-
[[osdeps.package_handlers['gem'], FOUND_PACKAGES, ['gempkg2']]])
|
441
|
-
expected =
|
442
|
-
[[osdeps.os_package_handler, ['pkg0']],
|
443
|
-
[osdeps.package_handlers['gem'], ['gempkg2']]]
|
444
|
-
assert_equal expected, osdeps.resolve_os_dependencies(['pkg0', 'pkg1', 'pkg2'])
|
445
|
-
|
446
|
-
osdeps.should_receive(:resolve_package).with('pkg0').once.and_return(nil)
|
447
|
-
osdeps.should_receive(:resolve_package).with('pkg1').never
|
448
|
-
osdeps.should_receive(:resolve_package).with('pkg2').never
|
449
|
-
assert_raises(Autoproj::OSDependencies::MissingOSDep) { osdeps.resolve_os_dependencies(['pkg0', 'pkg1', 'pkg2']) }
|
450
|
-
|
451
|
-
osdeps.should_receive(:resolve_package).with('pkg0').once.and_return(
|
452
|
-
[[osdeps.os_package_handler, FOUND_PACKAGES, ['pkg0']]])
|
453
|
-
osdeps.should_receive(:resolve_package).with('pkg1').once.and_return(
|
454
|
-
[[osdeps.os_package_handler, FOUND_PACKAGES, ['pkg1']],
|
455
|
-
[osdeps.package_handlers['gem'], FOUND_PACKAGES, ['gempkg1']]])
|
456
|
-
osdeps.should_receive(:resolve_package).with('pkg2').once.and_return(nil)
|
457
|
-
expected =
|
458
|
-
[[osdeps.os_package_handler, ['pkg0']],
|
459
|
-
[osdeps.package_handlers['gem'], ['gempkg1', 'gempkg2']]]
|
460
|
-
assert_raises(Autoproj::OSDependencies::MissingOSDep) { osdeps.resolve_os_dependencies(['pkg0', 'pkg1', 'pkg2']) }
|
461
|
-
|
462
|
-
osdeps.should_receive(:resolve_package).with('pkg0').once.and_return(
|
463
|
-
[[osdeps.os_package_handler, FOUND_NONEXISTENT, ['pkg0']]])
|
464
|
-
osdeps.should_receive(:resolve_package).with('pkg1').never
|
465
|
-
osdeps.should_receive(:resolve_package).with('pkg2').never
|
466
|
-
assert_raises(Autoproj::OSDependencies::MissingOSDep) { osdeps.resolve_os_dependencies(['pkg0', 'pkg1', 'pkg2']) }
|
467
|
-
|
468
|
-
osdeps.should_receive(:resolve_package).with('pkg0').once.and_return(
|
469
|
-
[[osdeps.os_package_handler, FOUND_PACKAGES, ['pkg0']]])
|
470
|
-
osdeps.should_receive(:resolve_package).with('pkg1').once.and_return(
|
471
|
-
[[osdeps.os_package_handler, FOUND_PACKAGES, ['pkg1']],
|
472
|
-
[osdeps.package_handlers['gem'], FOUND_NONEXISTENT, ['gempkg1']]])
|
473
|
-
osdeps.should_receive(:resolve_package).with('pkg2').never
|
474
|
-
assert_raises(Autoproj::OSDependencies::MissingOSDep) { osdeps.resolve_os_dependencies(['pkg0', 'pkg1', 'pkg2']) }
|
475
|
-
end
|
476
|
-
|
477
|
-
def test_install
|
478
|
-
osdeps = create_osdep(Hash.new)
|
479
|
-
osdeps.should_receive(:resolve_os_dependencies).
|
480
|
-
once.with(['pkg0', 'pkg1', 'pkg2'].to_set).
|
481
|
-
and_return([[osdeps.os_package_handler, ['os0.1', 'os0.2', 'os1']],
|
482
|
-
[osdeps.package_handlers['gem'], [['gem2', '>= 0.9']]]])
|
483
|
-
osdeps.os_package_handler.should_receive(:filter_uptodate_packages).
|
484
|
-
with(['os0.1', 'os0.2', 'os1']).and_return(['os0.1', 'os1']).once
|
485
|
-
# Do not add filter_uptodate_packages to the gem handler to check that
|
486
|
-
# #install deals with that just fine
|
487
|
-
osdeps.os_package_handler.should_receive(:install).
|
488
|
-
with(['os0.1', 'os1'])
|
489
|
-
osdeps.package_handlers['gem'].should_receive(:install).
|
490
|
-
with([['gem2', '>= 0.9']])
|
491
|
-
|
492
|
-
osdeps.osdeps_mode = 'all'
|
493
|
-
osdeps.install(['pkg0', 'pkg1', 'pkg2'])
|
494
|
-
end
|
495
|
-
|
496
|
-
def test_resolve_os_dependencies_unsupported_os_non_existent_dependency
|
497
|
-
osdeps = create_osdep(Hash.new)
|
498
|
-
flexmock(OSDependencies).should_receive(:supported_operating_system?).and_return(false)
|
499
|
-
assert_raises(OSDependencies::MissingOSDep) { osdeps.resolve_os_dependencies(['a_package']) }
|
500
|
-
end
|
501
|
-
|
502
|
-
def test_resolve_package_availability_unsupported_os_non_existent_dependency
|
503
|
-
osdeps = create_osdep(Hash.new)
|
504
|
-
flexmock(OSDependencies).should_receive(:supported_operating_system?).and_return(false)
|
505
|
-
assert_equal OSDependencies::NO_PACKAGE, osdeps.availability_of('a_package')
|
506
|
-
end
|
507
|
-
|
508
|
-
def test_resolve_package_availability_unsupported_os_existent_dependency
|
509
|
-
osdeps = create_osdep({ 'a_package' => { 'an_os' => 'bla' }})
|
510
|
-
flexmock(OSDependencies).should_receive(:supported_operating_system?).and_return(false)
|
511
|
-
assert_equal OSDependencies::AVAILABLE, osdeps.availability_of('a_package')
|
512
|
-
end
|
513
|
-
|
514
|
-
def test_resolve_os_dependencies_unsupported_os_existent_dependency
|
515
|
-
osdeps = create_osdep({ 'a_package' => { 'an_os' => 'bla' }})
|
516
|
-
flexmock(OSDependencies).should_receive(:supported_operating_system?).and_return(false)
|
517
|
-
assert_equal [[osdeps.os_package_handler, ['a_package']]], osdeps.resolve_os_dependencies(['a_package'])
|
518
|
-
end
|
519
|
-
|
520
|
-
DATA_DIR = File.expand_path('data', File.dirname(__FILE__))
|
521
|
-
def test_os_from_os_release_returns_nil_if_the_os_release_file_is_not_found
|
522
|
-
assert !Autoproj::OSDependencies.os_from_os_release('does_not_exist')
|
523
|
-
end
|
524
|
-
def test_os_from_os_release_handles_quoted_and_unquoted_fields
|
525
|
-
names, versions = Autoproj::OSDependencies.os_from_os_release(
|
526
|
-
File.join(DATA_DIR, 'os_release.with_missing_optional_fields'))
|
527
|
-
assert_equal ['name'], names
|
528
|
-
assert_equal ['version_id'], versions
|
529
|
-
end
|
530
|
-
def test_os_from_os_release_handles_optional_fields
|
531
|
-
names, versions = Autoproj::OSDependencies.os_from_os_release(
|
532
|
-
File.join(DATA_DIR, 'os_release.with_missing_optional_fields'))
|
533
|
-
assert_equal ['name'], names
|
534
|
-
assert_equal ['version_id'], versions
|
535
|
-
end
|
536
|
-
def test_os_from_os_release_parses_the_version_field
|
537
|
-
_, versions = Autoproj::OSDependencies.os_from_os_release(
|
538
|
-
File.join(DATA_DIR, 'os_release.with_complex_version_field'))
|
539
|
-
assert_equal ['version_id', 'version', 'codename', 'codename_bis'], versions
|
540
|
-
end
|
541
|
-
def test_os_from_os_release_removes_duplicate_values
|
542
|
-
names, versions = Autoproj::OSDependencies.os_from_os_release(
|
543
|
-
File.join(DATA_DIR, 'os_release.with_duplicate_values'))
|
544
|
-
assert_equal ['id'], names
|
545
|
-
assert_equal ['version_id', 'codename'], versions
|
546
|
-
end
|
547
|
-
def test_os_from_lsb_returns_nil_if_lsb_release_is_not_found_in_path
|
548
|
-
flexmock(ENV).should_receive('[]').with('PATH').and_return('')
|
549
|
-
assert !Autoproj::OSDependencies.os_from_lsb
|
550
|
-
end
|
551
|
-
|
552
|
-
def test_merge_issues_a_warning_if_two_definitions_differ_by_the_operating_system_packages
|
553
|
-
Autoproj::OSDependencies.operating_system = [['os0'], []]
|
554
|
-
osdeps0 = Autoproj::OSDependencies.new
|
555
|
-
osdeps0.definitions['pkg'] = Hash['os0' => ['osdep0'], 'gem' => ['gem0']]
|
556
|
-
osdeps0.sources['pkg'] = 'bla/bla'
|
557
|
-
osdeps1 = Autoproj::OSDependencies.new
|
558
|
-
osdeps1.definitions['pkg'] = Hash['os0' => ['osdep1'], 'gem' => ['gem0']]
|
559
|
-
osdeps1.sources['pkg'] = 'bla/bla'
|
560
|
-
flexmock(Autoproj).should_receive(:warn).once
|
561
|
-
osdeps0.merge(osdeps1)
|
562
|
-
end
|
563
|
-
def test_merge_issues_a_warning_if_two_definitions_differ_by_an_os_independent_package
|
564
|
-
Autoproj::OSDependencies.operating_system = [['os0'], []]
|
565
|
-
osdeps0 = Autoproj::OSDependencies.new
|
566
|
-
osdeps0.definitions['pkg'] = Hash['os0' => ['osdep0'], 'gem' => ['gem0']]
|
567
|
-
osdeps0.sources['pkg'] = 'bla/bla'
|
568
|
-
osdeps1 = Autoproj::OSDependencies.new
|
569
|
-
osdeps1.definitions['pkg'] = Hash['os0' => ['osdep0'], 'gem' => ['gem1']]
|
570
|
-
osdeps1.sources['pkg'] = 'bla/bla'
|
571
|
-
flexmock(Autoproj).should_receive(:warn).once
|
572
|
-
osdeps0.merge(osdeps1)
|
573
|
-
end
|
574
|
-
def test_merge_does_not_issue_a_warning_if_two_definitions_are_identical_for_the_local_operating_system
|
575
|
-
Autoproj::OSDependencies.operating_system = [['os0'], []]
|
576
|
-
osdeps0 = Autoproj::OSDependencies.new
|
577
|
-
osdeps0.definitions['pkg'] = Hash['os0' => ['osdep0'], 'gem' => ['gem0'], 'os1' => ['osdep0']]
|
578
|
-
osdeps0.sources['pkg'] = 'bla/bla'
|
579
|
-
osdeps1 = Autoproj::OSDependencies.new
|
580
|
-
osdeps1.definitions['pkg'] = Hash['os0' => ['osdep0'], 'gem' => ['gem0'], 'os1' => ['osdep1']]
|
581
|
-
osdeps1.sources['pkg'] = 'bla/bla'
|
582
|
-
flexmock(Autoproj).should_receive(:warn).never
|
583
|
-
osdeps0.merge(osdeps1)
|
584
|
-
end
|
585
|
-
end
|
586
|
-
|