vanagon 0.15.29 → 0.15.30
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/bin/build_requirements +1 -1
- data/bin/render +0 -1
- data/lib/vanagon/common/user.rb +1 -1
- data/lib/vanagon/component/dsl.rb +1 -1
- data/lib/vanagon/component/source/http.rb +1 -1
- data/lib/vanagon/component/source/rewrite.rb +10 -0
- data/lib/vanagon/extensions/set/json.rb +1 -1
- data/lib/vanagon/platform/deb.rb +4 -3
- data/lib/vanagon/platform/dsl.rb +8 -0
- data/lib/vanagon/platform/rpm/sles.rb +1 -1
- data/lib/vanagon/platform/rpm.rb +4 -3
- data/lib/vanagon/platform/solaris_10.rb +1 -3
- data/lib/vanagon/platform.rb +17 -2
- data/lib/vanagon/project.rb +4 -3
- data/lib/vanagon/utilities.rb +8 -5
- data/spec/lib/vanagon/component/rules_spec.rb +1 -1
- data/spec/lib/vanagon/platform/dsl_spec.rb +29 -9
- data/spec/lib/vanagon/platform/windows_spec.rb +9 -5
- data/spec/lib/vanagon/project/dsl_spec.rb +33 -30
- data/spec/lib/vanagon/project_spec.rb +41 -20
- data/spec/lib/vanagon/utilities_spec.rb +23 -0
- metadata +28 -28
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 4917406e87bb1c0bcd88d6ace341e339c44911e20d8247f1db35f647ec410f4e
|
|
4
|
+
data.tar.gz: c537dce6713fe063b707c1f690d6349a21939722d7571229192765071e444c74
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 037d6022077165c30e43d4357a2dac1cfdd231edf3afdb54537e01c29211f8e3229ea95af1d816817f310d3e4c98d2d049c68705fb304ff307d3c9ff5f154a5e
|
|
7
|
+
data.tar.gz: b77851bd99b21a4fcd95ce8e7378305ea79dec14d24851b432fbabc484f62b56ee9bed79ec44fe7072186bac968f5d3d15d943de097ba487fc864b1d3f917d08
|
data/bin/build_requirements
CHANGED
|
@@ -7,7 +7,7 @@ require 'vanagon/extensions/hashable'
|
|
|
7
7
|
load File.expand_path(File.join(File.dirname(__FILE__), "..", "lib", "vanagon.rb"))
|
|
8
8
|
|
|
9
9
|
optparse = Vanagon::OptParse.new("#{File.basename(__FILE__)} <project-name> <platform-name> [options]", %i[workdir configdir engine])
|
|
10
|
-
|
|
10
|
+
optparse.parse! ARGV
|
|
11
11
|
|
|
12
12
|
project = ARGV[0]
|
|
13
13
|
platform = ARGV[1]
|
data/bin/render
CHANGED
data/lib/vanagon/common/user.rb
CHANGED
|
@@ -13,7 +13,7 @@ class Vanagon
|
|
|
13
13
|
# Equality. How does it even work?
|
|
14
14
|
#
|
|
15
15
|
# @return [true, false] true if all attributes have equal values. false otherwise.
|
|
16
|
-
def ==(other)
|
|
16
|
+
def ==(other)
|
|
17
17
|
other.name == self.name && \
|
|
18
18
|
other.group == self.group && \
|
|
19
19
|
other.shell == self.shell && \
|
|
@@ -411,7 +411,7 @@ class Vanagon
|
|
|
411
411
|
# This environment is included in the configure, build and install steps.
|
|
412
412
|
#
|
|
413
413
|
# @param env [Hash] mapping of keys to values to add to the environment for the component
|
|
414
|
-
def environment(*env)
|
|
414
|
+
def environment(*env)
|
|
415
415
|
if env.size == 1 && env.first.is_a?(Hash)
|
|
416
416
|
warn <<-WARNING.undent
|
|
417
417
|
the component DSL method signature #environment({Key => Value}) is deprecated
|
|
@@ -120,7 +120,7 @@ class Vanagon
|
|
|
120
120
|
location = URI.parse(response.header['location'])
|
|
121
121
|
download(uri + location, target_file)
|
|
122
122
|
when Net::HTTPSuccess
|
|
123
|
-
open(File.join(@workdir, target_file), 'w') do |io|
|
|
123
|
+
File.open(File.join(@workdir, target_file), 'w') do |io|
|
|
124
124
|
response.read_body { |chunk| io.write(chunk) }
|
|
125
125
|
end
|
|
126
126
|
else
|
|
@@ -74,6 +74,16 @@ class Vanagon
|
|
|
74
74
|
# @deprecated Please use the component DSL method #mirror(<URI>)
|
|
75
75
|
# instead. This method will be removed before Vanagon 1.0.0.
|
|
76
76
|
def parse_and_rewrite(uri)
|
|
77
|
+
return uri if rewrite_rules.empty?
|
|
78
|
+
if uri.match?(/^git:http/)
|
|
79
|
+
warn <<-HERE.undent
|
|
80
|
+
`fustigit` parsing doesn't get along with how we specify the source
|
|
81
|
+
type by prefixing `git`. As `rewrite_rules` are deprecated, we'll
|
|
82
|
+
replace `git:http` with `http` in your uri. At some point this will
|
|
83
|
+
break.
|
|
84
|
+
HERE
|
|
85
|
+
uri.sub!(/^git:http/, 'http')
|
|
86
|
+
end
|
|
77
87
|
url = URI.parse(uri)
|
|
78
88
|
return url unless url.scheme
|
|
79
89
|
rewrite(url.to_s, url.scheme)
|
data/lib/vanagon/platform/deb.rb
CHANGED
|
@@ -72,11 +72,11 @@ class Vanagon
|
|
|
72
72
|
def add_repo_target(definition)
|
|
73
73
|
if File.extname(definition.path) == '.deb'
|
|
74
74
|
# repo definition is an deb (like puppetlabs-release)
|
|
75
|
-
"curl -o local.deb '#{definition}' && dpkg -i local.deb; rm -f local.deb"
|
|
75
|
+
"#{@curl} -o local.deb '#{definition}' && dpkg -i local.deb; rm -f local.deb"
|
|
76
76
|
else
|
|
77
77
|
reponame = "#{SecureRandom.hex}-#{File.basename(definition.path)}"
|
|
78
78
|
reponame = "#{reponame}.list" if File.extname(reponame) != '.list'
|
|
79
|
-
"curl -o '/etc/apt/sources.list.d/#{reponame}' '#{definition}'"
|
|
79
|
+
"#{@curl} -o '/etc/apt/sources.list.d/#{reponame}' '#{definition}'"
|
|
80
80
|
end
|
|
81
81
|
end
|
|
82
82
|
|
|
@@ -87,7 +87,7 @@ class Vanagon
|
|
|
87
87
|
def add_gpg_key(gpg_key)
|
|
88
88
|
gpgname = "#{SecureRandom.hex}-#{File.basename(gpg_key.path)}"
|
|
89
89
|
gpgname = "#{gpgname}.gpg" if gpgname !~ /\.gpg$/
|
|
90
|
-
"curl -o '/etc/apt/trusted.gpg.d/#{gpgname}' '#{gpg_key}'"
|
|
90
|
+
"#{@curl} -o '/etc/apt/trusted.gpg.d/#{gpgname}' '#{gpg_key}'"
|
|
91
91
|
end
|
|
92
92
|
|
|
93
93
|
# Returns the commands to add a given repo target and optionally a gpg key to the build system
|
|
@@ -140,6 +140,7 @@ class Vanagon
|
|
|
140
140
|
@tar = "tar"
|
|
141
141
|
@patch = "/usr/bin/patch"
|
|
142
142
|
@num_cores = "/usr/bin/nproc"
|
|
143
|
+
@curl = "curl --silent --show-error --fail"
|
|
143
144
|
@valid_operators = ['<', '>', '<=', '>=', '=', '<<', '>>']
|
|
144
145
|
super(name)
|
|
145
146
|
end
|
data/lib/vanagon/platform/dsl.rb
CHANGED
|
@@ -412,6 +412,14 @@ class Vanagon
|
|
|
412
412
|
def add_build_repository(*args)
|
|
413
413
|
@platform.add_build_repository(*args)
|
|
414
414
|
end
|
|
415
|
+
|
|
416
|
+
def setting(name, value)
|
|
417
|
+
@platform.settings[name] = value
|
|
418
|
+
end
|
|
419
|
+
|
|
420
|
+
def settings
|
|
421
|
+
@platform.settings
|
|
422
|
+
end
|
|
415
423
|
end
|
|
416
424
|
end
|
|
417
425
|
end
|
|
@@ -21,7 +21,7 @@ class Vanagon
|
|
|
21
21
|
if definition.scheme =~ /^(http|ftp)/
|
|
22
22
|
if File.extname(definition.path) == '.rpm'
|
|
23
23
|
# repo definition is an rpm (like puppetlabs-release)
|
|
24
|
-
commands << "curl -o local.rpm '#{definition}'; rpm -Uvh local.rpm; rm -f local.rpm"
|
|
24
|
+
commands << "curl --silent --show-error --fail -o local.rpm '#{definition}'; rpm -Uvh local.rpm; rm -f local.rpm"
|
|
25
25
|
else
|
|
26
26
|
commands << "yes | zypper -n --no-gpg-checks #{flag} -t YUM --repo '#{definition}'"
|
|
27
27
|
end
|
data/lib/vanagon/platform/rpm.rb
CHANGED
|
@@ -68,14 +68,14 @@ class Vanagon
|
|
|
68
68
|
if definition.scheme =~ /^(http|ftp)/
|
|
69
69
|
if File.extname(definition.path) == '.rpm'
|
|
70
70
|
# repo definition is an rpm (like puppetlabs-release)
|
|
71
|
-
commands << "curl -o local.rpm '#{definition}'; rpm -Uvh local.rpm; rm -f local.rpm"
|
|
71
|
+
commands << "#{@curl} -o local.rpm '#{definition}'; rpm -Uvh local.rpm; rm -f local.rpm"
|
|
72
72
|
else
|
|
73
73
|
reponame = "#{SecureRandom.hex}-#{File.basename(definition.path)}"
|
|
74
74
|
reponame = "#{reponame}.repo" if File.extname(reponame) != '.repo'
|
|
75
75
|
if is_cisco_wrlinux?
|
|
76
|
-
commands << "curl -o '/etc/yum/repos.d/#{reponame}' '#{definition}'"
|
|
76
|
+
commands << "#{@curl} -o '/etc/yum/repos.d/#{reponame}' '#{definition}'"
|
|
77
77
|
else
|
|
78
|
-
commands << "curl -o '/etc/yum.repos.d/#{reponame}' '#{definition}'"
|
|
78
|
+
commands << "#{@curl} -o '/etc/yum.repos.d/#{reponame}' '#{definition}'"
|
|
79
79
|
end
|
|
80
80
|
end
|
|
81
81
|
end
|
|
@@ -103,6 +103,7 @@ class Vanagon
|
|
|
103
103
|
@patch ||= "/usr/bin/patch"
|
|
104
104
|
@num_cores ||= "/bin/grep -c 'processor' /proc/cpuinfo"
|
|
105
105
|
@rpmbuild ||= "/usr/bin/rpmbuild"
|
|
106
|
+
@curl = "curl --silent --show-error --fail"
|
|
106
107
|
super(name)
|
|
107
108
|
end
|
|
108
109
|
end
|
|
@@ -156,7 +156,7 @@ class Vanagon
|
|
|
156
156
|
if build_dependency =~ /^http.*\.gz/
|
|
157
157
|
# Fetch, unpack, install...this assumes curl is present.
|
|
158
158
|
package = build_dependency.sub(/^http.*\//, '')
|
|
159
|
-
http << "tmpdir=$(#{mktemp}); (cd ${tmpdir} && curl -O #{build_dependency} && gunzip -c #{package} | pkgadd -d /dev/stdin -a /var/tmp/noask all)"
|
|
159
|
+
http << "tmpdir=$(#{mktemp}); (cd ${tmpdir} && curl --silent --show-error --fail -O #{build_dependency} && gunzip -c #{package} | pkgadd -d /dev/stdin -a /var/tmp/noask all)"
|
|
160
160
|
else
|
|
161
161
|
# Opencsw dependencies. At this point we assume that pkgutil is installed.
|
|
162
162
|
pkgutil << build_dependency
|
|
@@ -199,5 +199,3 @@ class Vanagon
|
|
|
199
199
|
end
|
|
200
200
|
end
|
|
201
201
|
end
|
|
202
|
-
|
|
203
|
-
|
data/lib/vanagon/platform.rb
CHANGED
|
@@ -135,9 +135,9 @@ class Vanagon
|
|
|
135
135
|
# Platform names currently contain some information about the platform. Fields
|
|
136
136
|
# within the name are delimited by the '-' character, and this regex can be used to
|
|
137
137
|
# extract those fields.
|
|
138
|
-
PLATFORM_REGEX = /^(.*)-(.*)-(.*)
|
|
138
|
+
PLATFORM_REGEX = /^(.*)-(.*)-(.*)$/.freeze
|
|
139
139
|
|
|
140
|
-
VERSION_REGEX = /^([=<>]+)\s*([^<>=]*)
|
|
140
|
+
VERSION_REGEX = /^([=<>]+)\s*([^<>=]*)$/.freeze
|
|
141
141
|
|
|
142
142
|
# Loads a given platform from the configdir
|
|
143
143
|
#
|
|
@@ -220,6 +220,7 @@ class Vanagon
|
|
|
220
220
|
# @return [Vanagon::Platform] the platform with the given name
|
|
221
221
|
def initialize(name) # rubocop:disable Metrics/AbcSize
|
|
222
222
|
@name = name
|
|
223
|
+
@settings = {}
|
|
223
224
|
@os_name = os_name
|
|
224
225
|
@os_version = os_version
|
|
225
226
|
@architecture = architecture
|
|
@@ -344,6 +345,20 @@ class Vanagon
|
|
|
344
345
|
return !!@name.match(/^fedora-.*$/)
|
|
345
346
|
end
|
|
346
347
|
|
|
348
|
+
# Utility matcher to determine is the platform is a debian variety
|
|
349
|
+
#
|
|
350
|
+
# @return [true, false] true if it is a debian variety, false otherwise
|
|
351
|
+
def is_debian?
|
|
352
|
+
return !!@name.match(/^debian-.*$/)
|
|
353
|
+
end
|
|
354
|
+
|
|
355
|
+
# Utility matcher to determine is the platform is a ubuntu variety
|
|
356
|
+
#
|
|
357
|
+
# @return [true, false] true if it is a ubuntu variety, false otherwise
|
|
358
|
+
def is_ubuntu?
|
|
359
|
+
return !!@name.match(/^ubuntu-.*$/)
|
|
360
|
+
end
|
|
361
|
+
|
|
347
362
|
# Utility matcher to determine is the platform is an aix variety
|
|
348
363
|
#
|
|
349
364
|
# @return [true, false] true if it is an aix variety, false otherwise
|
data/lib/vanagon/project.rb
CHANGED
|
@@ -7,7 +7,7 @@ require 'digest'
|
|
|
7
7
|
require 'ostruct'
|
|
8
8
|
|
|
9
9
|
# Used to parse the vendor field into name and email
|
|
10
|
-
VENDOR_REGEX = /^(.*) <(.*)
|
|
10
|
+
VENDOR_REGEX = /^(.*) <(.*)>$/.freeze
|
|
11
11
|
|
|
12
12
|
class Vanagon
|
|
13
13
|
class Project
|
|
@@ -139,7 +139,7 @@ class Vanagon
|
|
|
139
139
|
@components = []
|
|
140
140
|
@requires = []
|
|
141
141
|
@directories = []
|
|
142
|
-
@settings =
|
|
142
|
+
@settings = platform.settings
|
|
143
143
|
# Environments are like Hashes but with specific constraints
|
|
144
144
|
# around their keys and values.
|
|
145
145
|
@environment = Vanagon::Environment.new
|
|
@@ -756,7 +756,8 @@ class Vanagon
|
|
|
756
756
|
# We don't want to load any of the upstream components, so we're going to
|
|
757
757
|
# pass an array with an empty string as the component list for load_project
|
|
758
758
|
no_components = ['']
|
|
759
|
-
|
|
759
|
+
upstream_platform = Vanagon::Platform.load_platform(platform.name, File.join(working_directory, upstream_source.dirname, "configs", "platforms"))
|
|
760
|
+
upstream_project = Vanagon::Project.load_project(upstream_project_name, File.join(working_directory, upstream_source.dirname, "configs", "projects"), upstream_platform, no_components)
|
|
760
761
|
@settings.merge!(upstream_project.settings)
|
|
761
762
|
upstream_project.cleanup
|
|
762
763
|
end
|
data/lib/vanagon/utilities.rb
CHANGED
|
@@ -34,9 +34,9 @@ class Vanagon
|
|
|
34
34
|
|
|
35
35
|
# If Digest::const_get fails, it'll raise a LoadError when it tries to
|
|
36
36
|
# pull in the subclass `type`. We catch that error, and fail instead.
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
37
|
+
rescue LoadError
|
|
38
|
+
fail "Don't know how to produce a sum of type: '#{type}' for '#{file}'"
|
|
39
|
+
end
|
|
40
40
|
|
|
41
41
|
# Simple wrapper around Net::HTTP. Will make a request of the given type to
|
|
42
42
|
# the given url and return the body as parsed by JSON.
|
|
@@ -112,9 +112,12 @@ class Vanagon
|
|
|
112
112
|
# @return [String, false] Returns either the full path to the command or false if the command cannot be found
|
|
113
113
|
# @raise [RuntimeError] If the command is required and cannot be found
|
|
114
114
|
def find_program_on_path(command, required = true)
|
|
115
|
+
extensions = ENV['PATHEXT'] ? ENV['PATHEXT'].split(';') : ['']
|
|
115
116
|
ENV['PATH'].split(File::PATH_SEPARATOR).each do |path_elem|
|
|
116
|
-
|
|
117
|
-
|
|
117
|
+
extensions.each do |ext|
|
|
118
|
+
location = File.join(path_elem, "#{command}#{ext}")
|
|
119
|
+
return location if FileTest.executable?(location)
|
|
120
|
+
end
|
|
118
121
|
end
|
|
119
122
|
|
|
120
123
|
if required
|
|
@@ -33,14 +33,20 @@ describe 'Vanagon::Platform::DSL' do
|
|
|
33
33
|
expect(SecureRandom).to receive(:hex).and_return(hex_value)
|
|
34
34
|
plat.instance_eval(deb_platform_block)
|
|
35
35
|
plat.apt_repo(apt_definition)
|
|
36
|
-
expect(plat._platform.provisioning).to include(
|
|
36
|
+
expect(plat._platform.provisioning[0]).to include('apt-get', 'install', 'curl')
|
|
37
|
+
expect(plat._platform.provisioning[1]).to include(
|
|
38
|
+
'curl', '--silent', '--show-error', '--fail',
|
|
39
|
+
"-o '/etc/apt/sources.list.d/#{hex_value}-pl-puppet-agent-0.2.1-wheezy.list' '#{apt_definition}'")
|
|
37
40
|
end
|
|
38
41
|
|
|
39
42
|
it "installs a deb when given a deb" do
|
|
40
43
|
plat = Vanagon::Platform::DSL.new('debian-test-fixture')
|
|
41
44
|
plat.instance_eval(deb_platform_block)
|
|
42
45
|
plat.apt_repo(apt_definition_deb)
|
|
43
|
-
expect(plat._platform.provisioning).to include(
|
|
46
|
+
expect(plat._platform.provisioning[0]).to include('apt-get', 'install', 'curl')
|
|
47
|
+
expect(plat._platform.provisioning[1]).to include(
|
|
48
|
+
'curl', '--silent', '--show-error', '--fail',
|
|
49
|
+
"-o local.deb '#{apt_definition_deb}' && dpkg -i local.deb; rm -f local.deb")
|
|
44
50
|
end
|
|
45
51
|
|
|
46
52
|
it "installs a gpg key if given one" do
|
|
@@ -48,7 +54,9 @@ describe 'Vanagon::Platform::DSL' do
|
|
|
48
54
|
expect(SecureRandom).to receive(:hex).and_return(hex_value).twice
|
|
49
55
|
plat.instance_eval(deb_platform_block)
|
|
50
56
|
plat.apt_repo(apt_definition, apt_definition_gpg)
|
|
51
|
-
expect(plat._platform.provisioning).to include(
|
|
57
|
+
expect(plat._platform.provisioning[0]).to include('apt-get', 'install', 'curl')
|
|
58
|
+
expect(plat._platform.provisioning[1]).to include(
|
|
59
|
+
'curl', '--silent', '--show-error', '--fail', "-o '/etc/apt", hex_value)
|
|
52
60
|
end
|
|
53
61
|
end
|
|
54
62
|
|
|
@@ -58,7 +66,10 @@ describe 'Vanagon::Platform::DSL' do
|
|
|
58
66
|
expect(SecureRandom).to receive(:hex).and_return(hex_value)
|
|
59
67
|
plat.instance_eval(el_5_platform_block)
|
|
60
68
|
plat.yum_repo(el_definition)
|
|
61
|
-
expect(plat._platform.provisioning).to include(
|
|
69
|
+
expect(plat._platform.provisioning[0]).to include('rpm -q curl', 'yum -y install curl')
|
|
70
|
+
expect(plat._platform.provisioning[1]).to include(
|
|
71
|
+
'curl', '--silent', '--show-error', '--fail',
|
|
72
|
+
"-o '/etc/yum.repos.d/#{hex_value}-pl-puppet-agent-0.2.1-el-7-x86_64.repo' '#{el_definition}'")
|
|
62
73
|
end
|
|
63
74
|
|
|
64
75
|
it "works for specifically redhat platforms" do
|
|
@@ -66,7 +77,10 @@ describe 'Vanagon::Platform::DSL' do
|
|
|
66
77
|
expect(SecureRandom).to receive(:hex).and_return(hex_value)
|
|
67
78
|
plat.instance_eval(redhat_7_platform_block)
|
|
68
79
|
plat.yum_repo(el_definition)
|
|
69
|
-
expect(plat._platform.provisioning).to include(
|
|
80
|
+
expect(plat._platform.provisioning[0]).to include('rpm -q curl', 'yum -y install curl')
|
|
81
|
+
expect(plat._platform.provisioning[1]).to include(
|
|
82
|
+
'curl','--silent', '--show-error', '--fail',
|
|
83
|
+
"-o '/etc/yum.repos.d/#{hex_value}-pl-puppet-agent-0.2.1-el-7-x86_64.repo' '#{el_definition}'")
|
|
70
84
|
end
|
|
71
85
|
|
|
72
86
|
# This test currently covers wrlinux 5 and 7
|
|
@@ -75,7 +89,10 @@ describe 'Vanagon::Platform::DSL' do
|
|
|
75
89
|
expect(SecureRandom).to receive(:hex).and_return(hex_value)
|
|
76
90
|
plat.instance_eval(cicso_wrlinux_platform_block)
|
|
77
91
|
plat.yum_repo(cisco_wrlinux_definition)
|
|
78
|
-
expect(plat._platform.provisioning).to include(
|
|
92
|
+
expect(plat._platform.provisioning[0]).to include('rpm -q curl', 'yum -y install curl')
|
|
93
|
+
expect(plat._platform.provisioning[1]).to include(
|
|
94
|
+
'curl','--silent', '--show-error', '--fail',
|
|
95
|
+
"-o '/etc/yum/repos.d/#{hex_value}-pl-puppet-agent-0.2.1-cisco-wrlinux-5-x86_64.repo' '#{cisco_wrlinux_definition}'")
|
|
79
96
|
end
|
|
80
97
|
|
|
81
98
|
describe "installs a rpm when given a rpm" do
|
|
@@ -83,8 +100,9 @@ describe 'Vanagon::Platform::DSL' do
|
|
|
83
100
|
plat = Vanagon::Platform::DSL.new('el-5-fixture')
|
|
84
101
|
plat.instance_eval(el_5_platform_block)
|
|
85
102
|
plat.yum_repo(el_definition_rpm)
|
|
86
|
-
expect(plat._platform.provisioning).to include(
|
|
87
|
-
expect(plat._platform.provisioning).to include(
|
|
103
|
+
expect(plat._platform.provisioning[0]).to include('rpm -q curl', 'yum -y install curl')
|
|
104
|
+
expect(plat._platform.provisioning[1]).to include(
|
|
105
|
+
'curl', '--silent', '--show-error', '--fail', "-o local.rpm '#{el_definition_rpm}'; rpm -Uvh local.rpm; rm -f local.rpm")
|
|
88
106
|
end
|
|
89
107
|
end
|
|
90
108
|
end
|
|
@@ -101,7 +119,9 @@ describe 'Vanagon::Platform::DSL' do
|
|
|
101
119
|
plat = Vanagon::Platform::DSL.new('sles-test-fixture')
|
|
102
120
|
plat.instance_eval(sles_platform_block)
|
|
103
121
|
plat.zypper_repo(sles_definition_rpm)
|
|
104
|
-
expect(plat._platform.provisioning).to include(
|
|
122
|
+
expect(plat._platform.provisioning[0]).to include(
|
|
123
|
+
'curl', '--silent', '--show-error', '--fail',
|
|
124
|
+
"-o local.rpm '#{sles_definition_rpm}'; rpm -Uvh local.rpm; rm -f local.rpm")
|
|
105
125
|
end
|
|
106
126
|
end
|
|
107
127
|
|
|
@@ -31,6 +31,10 @@ describe "Vanagon::Platform::Windows" do
|
|
|
31
31
|
},
|
|
32
32
|
]
|
|
33
33
|
|
|
34
|
+
let(:vanagon_platform) do
|
|
35
|
+
OpenStruct.new(:settings => {})
|
|
36
|
+
end
|
|
37
|
+
|
|
34
38
|
platforms.each do |plat|
|
|
35
39
|
context "on #{plat[:name]}" do
|
|
36
40
|
let(:platform) { plat }
|
|
@@ -203,7 +207,7 @@ describe "Vanagon::Platform::Windows" do
|
|
|
203
207
|
describe "generate_wix_dirs" do
|
|
204
208
|
|
|
205
209
|
it "returns one directory with install_service defaults" do
|
|
206
|
-
proj = Vanagon::Project::DSL.new('test-fixture',
|
|
210
|
+
proj = Vanagon::Project::DSL.new('test-fixture', vanagon_platform, [])
|
|
207
211
|
proj.instance_eval(project_block)
|
|
208
212
|
cur_plat.instance_eval(plat[:block])
|
|
209
213
|
comp = Vanagon::Component::DSL.new('service-test', {}, cur_plat._platform)
|
|
@@ -219,7 +223,7 @@ describe "Vanagon::Platform::Windows" do
|
|
|
219
223
|
end
|
|
220
224
|
|
|
221
225
|
it "returns one directory with non-default name" do
|
|
222
|
-
proj = Vanagon::Project::DSL.new('test-fixture',
|
|
226
|
+
proj = Vanagon::Project::DSL.new('test-fixture', vanagon_platform, [])
|
|
223
227
|
proj.instance_eval(project_block)
|
|
224
228
|
cur_plat.instance_eval(plat[:block])
|
|
225
229
|
comp = Vanagon::Component::DSL.new('service-test', {}, cur_plat._platform)
|
|
@@ -235,7 +239,7 @@ describe "Vanagon::Platform::Windows" do
|
|
|
235
239
|
end
|
|
236
240
|
|
|
237
241
|
it "returns nested directory correctly with \\" do
|
|
238
|
-
proj = Vanagon::Project::DSL.new('test-fixture',
|
|
242
|
+
proj = Vanagon::Project::DSL.new('test-fixture', vanagon_platform, [])
|
|
239
243
|
proj.instance_eval(project_block)
|
|
240
244
|
cur_plat.instance_eval(plat[:block])
|
|
241
245
|
comp = Vanagon::Component::DSL.new('service-test', {}, cur_plat._platform)
|
|
@@ -255,7 +259,7 @@ describe "Vanagon::Platform::Windows" do
|
|
|
255
259
|
|
|
256
260
|
|
|
257
261
|
it "adds a second directory for the same input but different components" do
|
|
258
|
-
proj = Vanagon::Project::DSL.new('test-fixture',
|
|
262
|
+
proj = Vanagon::Project::DSL.new('test-fixture', vanagon_platform, [])
|
|
259
263
|
proj.instance_eval(project_block)
|
|
260
264
|
cur_plat.instance_eval(plat[:block])
|
|
261
265
|
comp = Vanagon::Component::DSL.new('service-test', {}, cur_plat._platform)
|
|
@@ -274,7 +278,7 @@ describe "Vanagon::Platform::Windows" do
|
|
|
274
278
|
end
|
|
275
279
|
|
|
276
280
|
it "returns correctly formatted multiple nested directories" do
|
|
277
|
-
proj = Vanagon::Project::DSL.new('test-fixture',
|
|
281
|
+
proj = Vanagon::Project::DSL.new('test-fixture', vanagon_platform, [])
|
|
278
282
|
proj.instance_eval(project_block)
|
|
279
283
|
cur_plat.instance_eval(plat[:block])
|
|
280
284
|
comp = Vanagon::Component::DSL.new('service-test-1', {}, cur_plat._platform)
|
|
@@ -8,11 +8,14 @@ describe 'Vanagon::Project::DSL' do
|
|
|
8
8
|
"project 'test-fixture' do |proj|
|
|
9
9
|
end" }
|
|
10
10
|
let(:configdir) { '/a/b/c' }
|
|
11
|
+
let(:platform) do
|
|
12
|
+
OpenStruct.new(:settings => {})
|
|
13
|
+
end
|
|
11
14
|
|
|
12
15
|
describe '#version_from_git' do
|
|
13
16
|
it 'sets the version based on the git describe' do
|
|
14
17
|
expect(Vanagon::Driver).to receive(:configdir).and_return(configdir)
|
|
15
|
-
proj = Vanagon::Project::DSL.new('test-fixture',
|
|
18
|
+
proj = Vanagon::Project::DSL.new('test-fixture', platform)
|
|
16
19
|
proj.instance_eval(project_block)
|
|
17
20
|
|
|
18
21
|
# Lying is bad. You shouldn't lie. But sometimes when you're
|
|
@@ -35,7 +38,7 @@ end" }
|
|
|
35
38
|
end
|
|
36
39
|
it 'sets the version based on the git describe with multiple dashes' do
|
|
37
40
|
expect(Vanagon::Driver).to receive(:configdir).and_return(configdir)
|
|
38
|
-
proj = Vanagon::Project::DSL.new('test-fixture',
|
|
41
|
+
proj = Vanagon::Project::DSL.new('test-fixture', platform)
|
|
39
42
|
proj.instance_eval(project_block)
|
|
40
43
|
|
|
41
44
|
# See previous description of "indescribable cyclopean obelisk"
|
|
@@ -60,7 +63,7 @@ end" }
|
|
|
60
63
|
log = double
|
|
61
64
|
diff = double
|
|
62
65
|
expect(Vanagon::Driver).to receive(:configdir).and_return(configdir)
|
|
63
|
-
proj = Vanagon::Project::DSL.new('test-fixture',
|
|
66
|
+
proj = Vanagon::Project::DSL.new('test-fixture', platform)
|
|
64
67
|
proj.instance_eval(project_block)
|
|
65
68
|
repo = double("repo")
|
|
66
69
|
expect(::Git)
|
|
@@ -91,7 +94,7 @@ end" }
|
|
|
91
94
|
}
|
|
92
95
|
|
|
93
96
|
expect(Vanagon::Driver).to receive(:configdir).exactly(branches.length).times.and_return(configdir)
|
|
94
|
-
proj = Vanagon::Project::DSL.new('test-fixture',
|
|
97
|
+
proj = Vanagon::Project::DSL.new('test-fixture', platform)
|
|
95
98
|
proj.instance_eval(project_block)
|
|
96
99
|
|
|
97
100
|
branches.each do |branch, version|
|
|
@@ -116,7 +119,7 @@ end" }
|
|
|
116
119
|
]
|
|
117
120
|
|
|
118
121
|
expect(Vanagon::Driver).to receive(:configdir).exactly(branches.length).times.and_return(configdir)
|
|
119
|
-
proj = Vanagon::Project::DSL.new('test-fixture',
|
|
122
|
+
proj = Vanagon::Project::DSL.new('test-fixture', platform)
|
|
120
123
|
proj.instance_eval(project_block)
|
|
121
124
|
|
|
122
125
|
branches.each do |branch|
|
|
@@ -137,7 +140,7 @@ end" }
|
|
|
137
140
|
|
|
138
141
|
describe '#directory' do
|
|
139
142
|
it 'adds a directory to the list of directories' do
|
|
140
|
-
proj = Vanagon::Project::DSL.new('test-fixture',
|
|
143
|
+
proj = Vanagon::Project::DSL.new('test-fixture', platform)
|
|
141
144
|
proj.instance_eval(project_block)
|
|
142
145
|
proj.directory('/a/b/c/d', mode: '0755')
|
|
143
146
|
expect(proj._project.directories).to include(Vanagon::Common::Pathname.new('/a/b/c/d', mode: '0755'))
|
|
@@ -146,7 +149,7 @@ end" }
|
|
|
146
149
|
|
|
147
150
|
describe '#user' do
|
|
148
151
|
it 'sets a user for the project' do
|
|
149
|
-
proj = Vanagon::Project::DSL.new('test-fixture',
|
|
152
|
+
proj = Vanagon::Project::DSL.new('test-fixture', platform)
|
|
150
153
|
proj.instance_eval(project_block)
|
|
151
154
|
proj.user('test-user')
|
|
152
155
|
expect(proj._project.user).to eq(Vanagon::Common::User.new('test-user'))
|
|
@@ -155,7 +158,7 @@ end" }
|
|
|
155
158
|
|
|
156
159
|
describe '#target_repo' do
|
|
157
160
|
it 'sets the target_repo for the project' do
|
|
158
|
-
proj = Vanagon::Project::DSL.new('test-fixture',
|
|
161
|
+
proj = Vanagon::Project::DSL.new('test-fixture', platform)
|
|
159
162
|
proj.instance_eval(project_block)
|
|
160
163
|
proj.target_repo "pc1"
|
|
161
164
|
expect(proj._project.repo).to eq("pc1")
|
|
@@ -164,7 +167,7 @@ end" }
|
|
|
164
167
|
|
|
165
168
|
describe '#noarch' do
|
|
166
169
|
it 'sets noarch on the project to true' do
|
|
167
|
-
proj = Vanagon::Project::DSL.new('test-fixture',
|
|
170
|
+
proj = Vanagon::Project::DSL.new('test-fixture', platform)
|
|
168
171
|
proj.instance_eval(project_block)
|
|
169
172
|
proj.noarch
|
|
170
173
|
expect(proj._project.noarch).to eq(true)
|
|
@@ -173,20 +176,20 @@ end" }
|
|
|
173
176
|
|
|
174
177
|
describe '#generate_source_artifacts' do
|
|
175
178
|
it 'defaults to false' do
|
|
176
|
-
proj = Vanagon::Project::DSL.new('test-fixture',
|
|
179
|
+
proj = Vanagon::Project::DSL.new('test-fixture', platform)
|
|
177
180
|
proj.instance_eval(project_block)
|
|
178
181
|
expect(proj._project.source_artifacts).to eq(false)
|
|
179
182
|
end
|
|
180
183
|
|
|
181
184
|
it 'sets source_artifacts to true' do
|
|
182
|
-
proj = Vanagon::Project::DSL.new('test-fixture',
|
|
185
|
+
proj = Vanagon::Project::DSL.new('test-fixture', platform)
|
|
183
186
|
proj.instance_eval(project_block)
|
|
184
187
|
proj.generate_source_artifacts true
|
|
185
188
|
expect(proj._project.source_artifacts).to eq(true)
|
|
186
189
|
end
|
|
187
190
|
|
|
188
191
|
it 'sets source_artifacts to false' do
|
|
189
|
-
proj = Vanagon::Project::DSL.new('test-fixture',
|
|
192
|
+
proj = Vanagon::Project::DSL.new('test-fixture', platform)
|
|
190
193
|
proj.instance_eval(project_block)
|
|
191
194
|
proj.generate_source_artifacts false
|
|
192
195
|
expect(proj._project.source_artifacts).to eq(false)
|
|
@@ -195,7 +198,7 @@ end" }
|
|
|
195
198
|
|
|
196
199
|
describe '#identifier' do
|
|
197
200
|
it 'sets the identifier for the project' do
|
|
198
|
-
proj = Vanagon::Project::DSL.new('test-fixture',
|
|
201
|
+
proj = Vanagon::Project::DSL.new('test-fixture', platform)
|
|
199
202
|
proj.instance_eval(project_block)
|
|
200
203
|
proj.identifier "com.example"
|
|
201
204
|
expect(proj._project.identifier).to eq("com.example")
|
|
@@ -204,14 +207,14 @@ end" }
|
|
|
204
207
|
|
|
205
208
|
describe '#cleanup_during_build' do
|
|
206
209
|
it 'sets @cleanup to true' do
|
|
207
|
-
proj = Vanagon::Project::DSL.new('test-fixture',
|
|
210
|
+
proj = Vanagon::Project::DSL.new('test-fixture', platform)
|
|
208
211
|
proj.instance_eval(project_block)
|
|
209
212
|
proj.cleanup_during_build
|
|
210
213
|
expect(proj._project.cleanup).to eq(true)
|
|
211
214
|
end
|
|
212
215
|
|
|
213
216
|
it 'defaults to nil' do
|
|
214
|
-
proj = Vanagon::Project::DSL.new('test-fixture',
|
|
217
|
+
proj = Vanagon::Project::DSL.new('test-fixture', platform)
|
|
215
218
|
proj.instance_eval(project_block)
|
|
216
219
|
expect(proj._project.cleanup).to be_nil
|
|
217
220
|
end
|
|
@@ -221,7 +224,7 @@ end" }
|
|
|
221
224
|
let(:version_file) { '/opt/puppetlabs/puppet/VERSION' }
|
|
222
225
|
|
|
223
226
|
it 'sets version_file for the project' do
|
|
224
|
-
proj = Vanagon::Project::DSL.new('test-fixture',
|
|
227
|
+
proj = Vanagon::Project::DSL.new('test-fixture', platform)
|
|
225
228
|
proj.instance_eval(project_block)
|
|
226
229
|
proj.write_version_file(version_file)
|
|
227
230
|
expect(proj._project.version_file.path).to eq(version_file)
|
|
@@ -230,14 +233,14 @@ end" }
|
|
|
230
233
|
|
|
231
234
|
describe "#release" do
|
|
232
235
|
it 'sets the release for the project' do
|
|
233
|
-
proj = Vanagon::Project::DSL.new('test-fixture',
|
|
236
|
+
proj = Vanagon::Project::DSL.new('test-fixture', platform)
|
|
234
237
|
proj.instance_eval(project_block)
|
|
235
238
|
proj.release '12'
|
|
236
239
|
expect(proj._project.release).to eq('12')
|
|
237
240
|
end
|
|
238
241
|
|
|
239
242
|
it 'defaults to 1' do
|
|
240
|
-
proj = Vanagon::Project::DSL.new('test-fixture',
|
|
243
|
+
proj = Vanagon::Project::DSL.new('test-fixture', platform)
|
|
241
244
|
proj.instance_eval(project_block)
|
|
242
245
|
expect(proj._project.release).to eq('1')
|
|
243
246
|
end
|
|
@@ -254,7 +257,7 @@ end" }
|
|
|
254
257
|
end
|
|
255
258
|
|
|
256
259
|
it 'adds the package provide to the list of provides' do
|
|
257
|
-
proj = Vanagon::Project::DSL.new('test-fixture',
|
|
260
|
+
proj = Vanagon::Project::DSL.new('test-fixture', platform)
|
|
258
261
|
proj.instance_eval(project_block)
|
|
259
262
|
proj.provides('thing1')
|
|
260
263
|
proj.provides('thing2')
|
|
@@ -337,7 +340,7 @@ end" }
|
|
|
337
340
|
end
|
|
338
341
|
|
|
339
342
|
it 'adds the package replacement to the list of replacements' do
|
|
340
|
-
proj = Vanagon::Project::DSL.new('test-fixture',
|
|
343
|
+
proj = Vanagon::Project::DSL.new('test-fixture', platform)
|
|
341
344
|
proj.instance_eval(project_block)
|
|
342
345
|
proj.replaces('thing1')
|
|
343
346
|
proj.replaces('thing2')
|
|
@@ -416,7 +419,7 @@ end" }
|
|
|
416
419
|
end
|
|
417
420
|
|
|
418
421
|
it 'adds the package conflict to the list of conflicts' do
|
|
419
|
-
proj = Vanagon::Project::DSL.new('test-fixture',
|
|
422
|
+
proj = Vanagon::Project::DSL.new('test-fixture', platform)
|
|
420
423
|
proj.instance_eval(project_block)
|
|
421
424
|
proj.conflicts('thing1')
|
|
422
425
|
proj.conflicts('thing2')
|
|
@@ -529,19 +532,19 @@ end"
|
|
|
529
532
|
end
|
|
530
533
|
|
|
531
534
|
it 'stores the component in the project if the included components set is empty' do
|
|
532
|
-
proj = Vanagon::Project::DSL.new('test-fixture',
|
|
535
|
+
proj = Vanagon::Project::DSL.new('test-fixture', platform, [])
|
|
533
536
|
proj.instance_eval(project_block)
|
|
534
537
|
expect(proj._project.components).to include(component)
|
|
535
538
|
end
|
|
536
539
|
|
|
537
540
|
it 'stores the component in the project if the component name is listed in the included components set' do
|
|
538
|
-
proj = Vanagon::Project::DSL.new('test-fixture',
|
|
541
|
+
proj = Vanagon::Project::DSL.new('test-fixture', platform, ['some-component'])
|
|
539
542
|
proj.instance_eval(project_block)
|
|
540
543
|
expect(proj._project.components).to include(component)
|
|
541
544
|
end
|
|
542
545
|
|
|
543
546
|
it 'does not store the component if the included components set is not empty and does not include the component name' do
|
|
544
|
-
proj = Vanagon::Project::DSL.new('test-fixture',
|
|
547
|
+
proj = Vanagon::Project::DSL.new('test-fixture', platform, ['some-different-component'])
|
|
545
548
|
proj.instance_eval(project_block)
|
|
546
549
|
expect(proj._project.components).to_not include(component)
|
|
547
550
|
end
|
|
@@ -565,19 +568,19 @@ end"
|
|
|
565
568
|
}
|
|
566
569
|
|
|
567
570
|
it 'has an empty project.fetch_artifact when fetch_artifact is not called' do
|
|
568
|
-
proj = Vanagon::Project::DSL.new('test-fixture',
|
|
571
|
+
proj = Vanagon::Project::DSL.new('test-fixture', platform, [])
|
|
569
572
|
proj.instance_eval(empty_project_block)
|
|
570
573
|
expect(proj._project.artifacts_to_fetch).to eq([])
|
|
571
574
|
end
|
|
572
575
|
|
|
573
576
|
it 'Adds a path to project.fetch_artifact when fetch_artifact is called' do
|
|
574
|
-
proj = Vanagon::Project::DSL.new('test-fixture',
|
|
577
|
+
proj = Vanagon::Project::DSL.new('test-fixture', platform, [])
|
|
575
578
|
proj.instance_eval(project_block)
|
|
576
579
|
expect(proj._project.artifacts_to_fetch).to eq(['foo/bar/baz.file'])
|
|
577
580
|
end
|
|
578
581
|
|
|
579
582
|
it 'Adds multiple paths to project.fetch_artifact when fetch_artifact is called more than once' do
|
|
580
|
-
proj = Vanagon::Project::DSL.new('test-fixture',
|
|
583
|
+
proj = Vanagon::Project::DSL.new('test-fixture', platform, [])
|
|
581
584
|
proj.instance_eval(project_block_multiple)
|
|
582
585
|
expect(proj._project.artifacts_to_fetch).to eq(['foo/bar/baz.file', 'foo/foobar/foobarbaz.file'])
|
|
583
586
|
end
|
|
@@ -600,19 +603,19 @@ end"
|
|
|
600
603
|
}
|
|
601
604
|
|
|
602
605
|
it 'has no_packaging set to false by default' do
|
|
603
|
-
proj = Vanagon::Project::DSL.new('test-fixture',
|
|
606
|
+
proj = Vanagon::Project::DSL.new('test-fixture', platform, [])
|
|
604
607
|
proj.instance_eval(empty_project_block)
|
|
605
608
|
expect(proj._project.no_packaging).to eq(false)
|
|
606
609
|
end
|
|
607
610
|
|
|
608
611
|
it 'sets no_packaging to true when proj.no_packaging true is called' do
|
|
609
|
-
proj = Vanagon::Project::DSL.new('test-fixture',
|
|
612
|
+
proj = Vanagon::Project::DSL.new('test-fixture', platform, [])
|
|
610
613
|
proj.instance_eval(project_block)
|
|
611
614
|
expect(proj._project.no_packaging).to eq(true)
|
|
612
615
|
end
|
|
613
616
|
|
|
614
617
|
it 'sets no_packaging to false when proj.no_packaging false is called' do
|
|
615
|
-
proj = Vanagon::Project::DSL.new('test-fixture',
|
|
618
|
+
proj = Vanagon::Project::DSL.new('test-fixture', platform, [])
|
|
616
619
|
proj.instance_eval(project_block_false)
|
|
617
620
|
expect(proj._project.no_packaging).to eq(false)
|
|
618
621
|
end
|
|
@@ -6,6 +6,12 @@ require 'fakefs/spec_helpers'
|
|
|
6
6
|
describe 'Vanagon::Project' do
|
|
7
7
|
let(:component) { double(Vanagon::Component) }
|
|
8
8
|
let(:configdir) { '/a/b/c' }
|
|
9
|
+
let(:platform) do
|
|
10
|
+
OpenStruct.new(:settings => {})
|
|
11
|
+
end
|
|
12
|
+
let(:upstream_platform) do
|
|
13
|
+
OpenStruct.new(:settings => {})
|
|
14
|
+
end
|
|
9
15
|
|
|
10
16
|
let(:project_block) {
|
|
11
17
|
"project 'test-fixture' do |proj|
|
|
@@ -46,16 +52,18 @@ describe 'Vanagon::Project' do
|
|
|
46
52
|
end"
|
|
47
53
|
}
|
|
48
54
|
|
|
49
|
-
let (:
|
|
55
|
+
let (:dummy_platform_settings) {
|
|
50
56
|
plat = Vanagon::Platform::DSL.new('debian-6-i386')
|
|
51
57
|
plat.instance_eval("platform 'debian-6-i386' do |plat|
|
|
52
58
|
plat.servicetype 'sysv'
|
|
53
59
|
plat.servicedir '/etc/init.d'
|
|
54
60
|
plat.defaultdir '/etc/default'
|
|
61
|
+
settings[:platform_test] = 'debian'
|
|
55
62
|
end")
|
|
56
63
|
plat._platform
|
|
57
64
|
}
|
|
58
65
|
|
|
66
|
+
|
|
59
67
|
describe '#vendor=' do
|
|
60
68
|
dummy_platform = Vanagon::Platform.new('el-7-x86_64')
|
|
61
69
|
good_vendor = 'Puppet Inc. <release@puppet.com>'
|
|
@@ -113,7 +121,7 @@ describe 'Vanagon::Project' do
|
|
|
113
121
|
it 'returns only the highest level directories' do
|
|
114
122
|
test_sets.each do |set|
|
|
115
123
|
expect(component).to receive(:directories).and_return([])
|
|
116
|
-
proj = Vanagon::Project::DSL.new('test-fixture',
|
|
124
|
+
proj = Vanagon::Project::DSL.new('test-fixture', platform, [])
|
|
117
125
|
proj.instance_eval(project_block)
|
|
118
126
|
set[:directories].each {|dir| proj.directory dir }
|
|
119
127
|
expect(proj._project.get_root_directories.sort).to eq(set[:results].sort)
|
|
@@ -130,37 +138,50 @@ describe 'Vanagon::Project' do
|
|
|
130
138
|
expect(git_source).to receive(:fetch).and_return(true)
|
|
131
139
|
|
|
132
140
|
# stubs for the upstream project
|
|
133
|
-
upstream_proj = Vanagon::Project::DSL.new('upstream-test',
|
|
141
|
+
upstream_proj = Vanagon::Project::DSL.new('upstream-test', upstream_platform, [])
|
|
134
142
|
upstream_proj.instance_eval(upstream_project_block)
|
|
135
143
|
expect(Vanagon::Project).to receive(:load_project).and_return(upstream_proj._project)
|
|
144
|
+
expect(Vanagon::Platform).to receive(:load_platform).and_return(upstream_platform)
|
|
136
145
|
end
|
|
137
146
|
|
|
138
147
|
it 'loads upstream settings' do
|
|
139
|
-
inheriting_proj = Vanagon::Project::DSL.new('inheritance-test',
|
|
148
|
+
inheriting_proj = Vanagon::Project::DSL.new('inheritance-test', platform, [])
|
|
140
149
|
inheriting_proj.instance_eval(inheriting_project_block)
|
|
141
150
|
expect(inheriting_proj._project.settings[:test]).to eq('upstream-test')
|
|
142
151
|
end
|
|
143
152
|
|
|
144
153
|
it 'overrides duplicate settings from before the load' do
|
|
145
|
-
inheriting_proj = Vanagon::Project::DSL.new('inheritance-test',
|
|
154
|
+
inheriting_proj = Vanagon::Project::DSL.new('inheritance-test', platform, [])
|
|
146
155
|
inheriting_proj.instance_eval(preset_inheriting_project_block)
|
|
147
156
|
expect(inheriting_proj._project.settings[:test]).to eq('upstream-test')
|
|
148
157
|
end
|
|
149
158
|
|
|
150
159
|
it 'lets you override settings after the load' do
|
|
151
|
-
inheriting_proj = Vanagon::Project::DSL.new('inheritance-test',
|
|
160
|
+
inheriting_proj = Vanagon::Project::DSL.new('inheritance-test', platform, [])
|
|
152
161
|
inheriting_proj.instance_eval(postset_inheriting_project_block)
|
|
153
162
|
expect(inheriting_proj._project.settings[:test]).to eq('inheritance-test')
|
|
154
163
|
end
|
|
155
164
|
|
|
156
165
|
it 'merges settings' do
|
|
157
|
-
inheriting_proj = Vanagon::Project::DSL.new('inheritance-test',
|
|
166
|
+
inheriting_proj = Vanagon::Project::DSL.new('inheritance-test', platform, [])
|
|
158
167
|
inheriting_proj.instance_eval(inheriting_project_block_with_settings)
|
|
159
168
|
expect(inheriting_proj._project.settings[:test]).to eq('upstream-test')
|
|
160
169
|
expect(inheriting_proj._project.settings[:merged]).to eq('yup')
|
|
161
170
|
end
|
|
162
171
|
end
|
|
163
172
|
|
|
173
|
+
describe 'platform settings' do
|
|
174
|
+
before do
|
|
175
|
+
allow(Vanagon::Component).to receive(:load_component).with('some-component', any_args).and_return(component)
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
it 'loads settings set in platforms' do
|
|
179
|
+
settings_proj = Vanagon::Project::DSL.new('settings-test', dummy_platform_settings, [])
|
|
180
|
+
settings_proj.instance_eval(project_block)
|
|
181
|
+
expect(settings_proj._project.settings[:platform_test]).to eq('debian')
|
|
182
|
+
end
|
|
183
|
+
end
|
|
184
|
+
|
|
164
185
|
describe "#load_yaml_settings" do
|
|
165
186
|
subject(:project) do
|
|
166
187
|
project = Vanagon::Project.new('yaml-inheritance-test', Vanagon::Platform.new('aix-7.2-ppc'))
|
|
@@ -237,7 +258,7 @@ describe 'Vanagon::Project' do
|
|
|
237
258
|
# All of the following tests should be run with one project level
|
|
238
259
|
# component that isn't included in the build_deps of another component
|
|
239
260
|
before(:each) do
|
|
240
|
-
@proj = Vanagon::Project.new('test-fixture-with-comps',
|
|
261
|
+
@proj = Vanagon::Project.new('test-fixture-with-comps', platform)
|
|
241
262
|
@not_included_comp = Vanagon::Component.new('test-fixture-not-included', {}, {})
|
|
242
263
|
@proj.components << @not_included_comp
|
|
243
264
|
end
|
|
@@ -306,7 +327,7 @@ describe 'Vanagon::Project' do
|
|
|
306
327
|
|
|
307
328
|
describe '#get_preinstall_actions' do
|
|
308
329
|
it "Collects the preinstall actions for the specified package state" do
|
|
309
|
-
proj = Vanagon::Project.new('action-test',
|
|
330
|
+
proj = Vanagon::Project.new('action-test', platform)
|
|
310
331
|
proj.get_preinstall_actions('upgrade')
|
|
311
332
|
proj.get_preinstall_actions('install')
|
|
312
333
|
expect(proj.get_preinstall_actions('install')).to be_instance_of(String)
|
|
@@ -315,39 +336,39 @@ describe 'Vanagon::Project' do
|
|
|
315
336
|
|
|
316
337
|
describe '#get_trigger_scripts' do
|
|
317
338
|
it "Collects the install triggers for the project for the specified packing state" do
|
|
318
|
-
proj = Vanagon::Project.new('action-test',
|
|
339
|
+
proj = Vanagon::Project.new('action-test', platform)
|
|
319
340
|
expect(proj.get_trigger_scripts('install')).to eq({})
|
|
320
341
|
expect(proj.get_trigger_scripts('upgrade')).to be_instance_of(Hash)
|
|
321
342
|
end
|
|
322
343
|
it 'fails with empty install trigger action' do
|
|
323
|
-
proj = Vanagon::Project.new('action-test',
|
|
344
|
+
proj = Vanagon::Project.new('action-test', platform)
|
|
324
345
|
expect { proj.get_trigger_scripts([]) }.to raise_error(Vanagon::Error)
|
|
325
346
|
end
|
|
326
347
|
it 'fails with incorrect install trigger action' do
|
|
327
|
-
proj = Vanagon::Project.new('action-test',
|
|
348
|
+
proj = Vanagon::Project.new('action-test', platform)
|
|
328
349
|
expect { proj.get_trigger_scripts('foo') }.to raise_error(Vanagon::Error)
|
|
329
350
|
end
|
|
330
351
|
end
|
|
331
352
|
|
|
332
353
|
describe '#get_interest_triggers' do
|
|
333
354
|
it "Collects the interest triggers for the project for the specified packaging state" do
|
|
334
|
-
proj = Vanagon::Project.new('action-test',
|
|
355
|
+
proj = Vanagon::Project.new('action-test', platform)
|
|
335
356
|
expect(proj.get_interest_triggers('install')).to eq([])
|
|
336
357
|
expect(proj.get_interest_triggers('upgrade')).to be_instance_of(Array)
|
|
337
358
|
end
|
|
338
359
|
it 'fails with empty interest trigger action' do
|
|
339
|
-
proj = Vanagon::Project.new('action-test',
|
|
360
|
+
proj = Vanagon::Project.new('action-test', platform)
|
|
340
361
|
expect { proj.get_interest_triggers([]) }.to raise_error(Vanagon::Error)
|
|
341
362
|
end
|
|
342
363
|
it 'fails with incorrect interest trigger action' do
|
|
343
|
-
proj = Vanagon::Project.new('action-test',
|
|
364
|
+
proj = Vanagon::Project.new('action-test', platform)
|
|
344
365
|
expect { proj.get_interest_triggers('foo') }.to raise_error(Vanagon::Error)
|
|
345
366
|
end
|
|
346
367
|
end
|
|
347
368
|
|
|
348
369
|
describe '#get_activate_triggers' do
|
|
349
370
|
it "Collects the activate triggers for the project for the specified packaging state" do
|
|
350
|
-
proj = Vanagon::Project.new('action-test',
|
|
371
|
+
proj = Vanagon::Project.new('action-test', platform)
|
|
351
372
|
expect(proj.get_activate_triggers()).to be_instance_of(Array)
|
|
352
373
|
expect(proj.get_activate_triggers()).to be_instance_of(Array)
|
|
353
374
|
end
|
|
@@ -355,7 +376,7 @@ describe 'Vanagon::Project' do
|
|
|
355
376
|
|
|
356
377
|
describe '#generate_dependencies_info' do
|
|
357
378
|
before(:each) do
|
|
358
|
-
@proj = Vanagon::Project.new('test-project',
|
|
379
|
+
@proj = Vanagon::Project.new('test-project', platform)
|
|
359
380
|
end
|
|
360
381
|
|
|
361
382
|
it "returns a hash of components and their versions" do
|
|
@@ -386,7 +407,7 @@ describe 'Vanagon::Project' do
|
|
|
386
407
|
end
|
|
387
408
|
end
|
|
388
409
|
|
|
389
|
-
@proj = Vanagon::Project.new('test-project',
|
|
410
|
+
@proj = Vanagon::Project.new('test-project', platform)
|
|
390
411
|
end
|
|
391
412
|
|
|
392
413
|
it 'should generate a hash with the expected build metadata' do
|
|
@@ -546,12 +567,12 @@ describe 'Vanagon::Project' do
|
|
|
546
567
|
|
|
547
568
|
describe '#get_rpm_ghost_files' do
|
|
548
569
|
it 'returns an empty array when there are no ghost files' do
|
|
549
|
-
proj = Vanagon::Project.new('test-ghost',
|
|
570
|
+
proj = Vanagon::Project.new('test-ghost', platform)
|
|
550
571
|
expect(proj.get_rpm_ghost_files).to eq([])
|
|
551
572
|
end
|
|
552
573
|
|
|
553
574
|
it 'returns ghost files when some are set' do
|
|
554
|
-
proj = Vanagon::Project.new('test-ghosts',
|
|
575
|
+
proj = Vanagon::Project.new('test-ghosts', platform)
|
|
555
576
|
comp = Vanagon::Component.new('ghosts', {}, {})
|
|
556
577
|
comp.add_rpm_ghost_file('ghost')
|
|
557
578
|
proj.components << comp
|
|
@@ -44,6 +44,29 @@ describe "Vanagon::Utilities" do
|
|
|
44
44
|
|
|
45
45
|
expect(Vanagon::Utilities.find_program_on_path(command, false)).to be(false)
|
|
46
46
|
end
|
|
47
|
+
|
|
48
|
+
it 'finds commands with file extensions' do
|
|
49
|
+
# Set PATHEXT so we can test this outside of windows
|
|
50
|
+
orig_pathext = ENV['PATHEXT']
|
|
51
|
+
ENV['PATHEXT'] = '.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.CPL'
|
|
52
|
+
extensions = ENV['PATHEXT'].split(';')
|
|
53
|
+
|
|
54
|
+
# take a random element from path for testing
|
|
55
|
+
test_path = ENV['PATH'].split(File::PATH_SEPARATOR).sample
|
|
56
|
+
expect(FileTest).to receive(:executable?).with(File.join(test_path, "#{command}.VBS")).and_return(true)
|
|
57
|
+
|
|
58
|
+
# have an `allow` for the negative cases so rspec doesn't fail with unexpected
|
|
59
|
+
# function calls
|
|
60
|
+
ENV['PATH'].split(File::PATH_SEPARATOR).each do |path_elem|
|
|
61
|
+
allow(FileTest).to receive(:executable?).with(File.join(path_elem, command))
|
|
62
|
+
extensions.each do |ext|
|
|
63
|
+
allow(FileTest).to receive(:executable?).with(File.join(path_elem, "#{command}#{ext}"))
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
expect(Vanagon::Utilities.find_program_on_path(command)).to eq(File.join(test_path, "#{command}.VBS"))
|
|
68
|
+
ENV['PATHEXT'] = orig_pathext
|
|
69
|
+
end
|
|
47
70
|
end
|
|
48
71
|
|
|
49
72
|
describe '#local_command' do
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: vanagon
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.15.
|
|
4
|
+
version: 0.15.30
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Puppet Labs
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2019-
|
|
11
|
+
date: 2019-11-12 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: git
|
|
@@ -253,7 +253,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
253
253
|
requirements:
|
|
254
254
|
- - "~>"
|
|
255
255
|
- !ruby/object:Gem::Version
|
|
256
|
-
version: '2.
|
|
256
|
+
version: '2.3'
|
|
257
257
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
258
258
|
requirements:
|
|
259
259
|
- - ">="
|
|
@@ -266,40 +266,40 @@ specification_version: 3
|
|
|
266
266
|
summary: All of your packages will fit into this van with this one simple trick.
|
|
267
267
|
test_files:
|
|
268
268
|
- spec/lib/makefile_spec.rb
|
|
269
|
-
- spec/lib/
|
|
270
|
-
- spec/lib/vanagon/
|
|
271
|
-
- spec/lib/vanagon/
|
|
272
|
-
- spec/lib/vanagon/
|
|
273
|
-
- spec/lib/vanagon/
|
|
269
|
+
- spec/lib/vanagon/component/source/rewrite_spec.rb
|
|
270
|
+
- spec/lib/vanagon/component/source/http_spec.rb
|
|
271
|
+
- spec/lib/vanagon/component/source/local_spec.rb
|
|
272
|
+
- spec/lib/vanagon/component/source/git_spec.rb
|
|
273
|
+
- spec/lib/vanagon/component/dsl_spec.rb
|
|
274
|
+
- spec/lib/vanagon/component/rules_spec.rb
|
|
275
|
+
- spec/lib/vanagon/component/source_spec.rb
|
|
276
|
+
- spec/lib/vanagon/engine/hardware_spec.rb
|
|
274
277
|
- spec/lib/vanagon/engine/base_spec.rb
|
|
275
|
-
- spec/lib/vanagon/engine/ec2_spec.rb
|
|
276
278
|
- spec/lib/vanagon/engine/always_be_scheduling_spec.rb
|
|
277
|
-
- spec/lib/vanagon/engine/
|
|
279
|
+
- spec/lib/vanagon/engine/local_spec.rb
|
|
278
280
|
- spec/lib/vanagon/engine/docker_spec.rb
|
|
279
|
-
- spec/lib/vanagon/engine/
|
|
280
|
-
- spec/lib/vanagon/
|
|
281
|
-
- spec/lib/vanagon/optparse_spec.rb
|
|
282
|
-
- spec/lib/vanagon/environment_spec.rb
|
|
281
|
+
- spec/lib/vanagon/engine/pooler_spec.rb
|
|
282
|
+
- spec/lib/vanagon/engine/ec2_spec.rb
|
|
283
283
|
- spec/lib/vanagon/driver_spec.rb
|
|
284
|
+
- spec/lib/vanagon/platform_spec.rb
|
|
285
|
+
- spec/lib/vanagon/utilities/shell_utilities_spec.rb
|
|
286
|
+
- spec/lib/vanagon/project_spec.rb
|
|
287
|
+
- spec/lib/vanagon/common/user_spec.rb
|
|
288
|
+
- spec/lib/vanagon/common/pathname_spec.rb
|
|
289
|
+
- spec/lib/vanagon/project/dsl_spec.rb
|
|
284
290
|
- spec/lib/vanagon/component_spec.rb
|
|
291
|
+
- spec/lib/vanagon/environment_spec.rb
|
|
285
292
|
- spec/lib/vanagon/utilities_spec.rb
|
|
286
|
-
- spec/lib/vanagon/
|
|
287
|
-
- spec/lib/vanagon/
|
|
288
|
-
- spec/lib/vanagon/component/source_spec.rb
|
|
289
|
-
- spec/lib/vanagon/component/dsl_spec.rb
|
|
290
|
-
- spec/lib/vanagon/component/rules_spec.rb
|
|
291
|
-
- spec/lib/vanagon/component/source/git_spec.rb
|
|
292
|
-
- spec/lib/vanagon/component/source/local_spec.rb
|
|
293
|
-
- spec/lib/vanagon/component/source/rewrite_spec.rb
|
|
294
|
-
- spec/lib/vanagon/component/source/http_spec.rb
|
|
293
|
+
- spec/lib/vanagon/optparse_spec.rb
|
|
294
|
+
- spec/lib/vanagon/platform/windows_spec.rb
|
|
295
295
|
- spec/lib/vanagon/platform/solaris_10_spec.rb
|
|
296
|
-
- spec/lib/vanagon/platform/solaris_11_spec.rb
|
|
297
|
-
- spec/lib/vanagon/platform/rpm/aix_spec.rb
|
|
298
296
|
- spec/lib/vanagon/platform/dsl_spec.rb
|
|
297
|
+
- spec/lib/vanagon/platform/rpm_spec.rb
|
|
299
298
|
- spec/lib/vanagon/platform/deb_spec.rb
|
|
300
|
-
- spec/lib/vanagon/platform/
|
|
299
|
+
- spec/lib/vanagon/platform/rpm/aix_spec.rb
|
|
301
300
|
- spec/lib/vanagon/platform/osx_spec.rb
|
|
302
|
-
- spec/lib/vanagon/platform/
|
|
301
|
+
- spec/lib/vanagon/platform/solaris_11_spec.rb
|
|
302
|
+
- spec/lib/vanagon/extensions/ostruct/json_spec.rb
|
|
303
303
|
- spec/lib/vanagon/extensions/string_spec.rb
|
|
304
304
|
- spec/lib/vanagon/extensions/set/json_spec.rb
|
|
305
|
-
- spec/lib/
|
|
305
|
+
- spec/lib/git/rev_list_spec.rb
|