omnibus 1.0.3 → 1.0.4
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 +8 -8
- data/.yardopts +0 -1
- data/CHANGELOG.md +19 -0
- data/README.md +6 -0
- data/lib/omnibus.rb +3 -6
- data/lib/omnibus/artifact.rb +151 -0
- data/lib/omnibus/cli/application.rb +4 -0
- data/lib/omnibus/cli/base.rb +6 -2
- data/lib/omnibus/cli/release.rb +49 -0
- data/lib/omnibus/config.rb +29 -0
- data/lib/omnibus/exceptions.rb +59 -0
- data/lib/omnibus/health_check.rb +17 -1
- data/lib/omnibus/library.rb +9 -17
- data/lib/omnibus/package_release.rb +163 -0
- data/lib/omnibus/project.rb +162 -66
- data/lib/omnibus/reports.rb +5 -5
- data/lib/omnibus/software.rb +6 -6
- data/lib/omnibus/version.rb +1 -1
- data/omnibus.gemspec +1 -1
- data/spec/artifact_spec.rb +106 -0
- data/spec/package_release_spec.rb +197 -0
- metadata +13 -6
data/lib/omnibus/reports.rb
CHANGED
@@ -22,7 +22,7 @@ module Omnibus
|
|
22
22
|
|
23
23
|
|
24
24
|
PADDING = 3
|
25
|
-
|
25
|
+
|
26
26
|
# Determine how wide a column should be, taking into account both
|
27
27
|
# the column name as well as all data in that column. If no data
|
28
28
|
# will be stored in the column, the width is 0 (i.e., nothing
|
@@ -43,9 +43,9 @@ module Omnibus
|
|
43
43
|
|
44
44
|
def pretty_version_map(project)
|
45
45
|
out = ""
|
46
|
-
version_map =
|
46
|
+
version_map = project.library.version_map
|
47
|
+
|
47
48
|
|
48
|
-
|
49
49
|
# Pull out data to print out
|
50
50
|
versions = non_nil_values(version_map.values, :version)
|
51
51
|
guids = non_nil_values(version_map.values, :version_guid)
|
@@ -55,7 +55,7 @@ module Omnibus
|
|
55
55
|
# overridden, but nothing if no packages were changed
|
56
56
|
overridden_versions = non_nil_values(version_map.values.select{|v| v[:overridden]},
|
57
57
|
:given_version)
|
58
|
-
|
58
|
+
|
59
59
|
|
60
60
|
# Determine how wide the printed table columns need to be
|
61
61
|
name_width = column_width(version_map.keys, "Component")
|
@@ -65,7 +65,7 @@ module Omnibus
|
|
65
65
|
|
66
66
|
total_width = name_width + version_width + guid_width + override_width
|
67
67
|
divider = "-" * total_width
|
68
|
-
|
68
|
+
|
69
69
|
# Print out the column headers
|
70
70
|
out << "Component".ljust(name_width)
|
71
71
|
out << "Installed Version".ljust(version_width)
|
data/lib/omnibus/software.rb
CHANGED
@@ -89,7 +89,7 @@ module Omnibus
|
|
89
89
|
|
90
90
|
# Set override information after the DSL file has been consumed
|
91
91
|
@override_version = overrides[name]
|
92
|
-
|
92
|
+
|
93
93
|
render_tasks
|
94
94
|
end
|
95
95
|
|
@@ -233,7 +233,7 @@ module Omnibus
|
|
233
233
|
#
|
234
234
|
# @return [String] an absolute filesystem path
|
235
235
|
def build_dir
|
236
|
-
"#{config.build_dir}/#{
|
236
|
+
"#{config.build_dir}/#{@project.name}"
|
237
237
|
end
|
238
238
|
|
239
239
|
# @todo Why the different name (i.e. *_dir instead of *_path, or
|
@@ -368,7 +368,7 @@ module Omnibus
|
|
368
368
|
#
|
369
369
|
(@dependencies - [@name]).uniq.each do |dep|
|
370
370
|
task @name => dep
|
371
|
-
file manifest_file => manifest_file_from_name(dep)
|
371
|
+
file manifest_file => manifest_file_from_name(dep)
|
372
372
|
end
|
373
373
|
|
374
374
|
directory source_dir
|
@@ -395,8 +395,8 @@ module Omnibus
|
|
395
395
|
end
|
396
396
|
end
|
397
397
|
|
398
|
-
else
|
399
|
-
# if fetch has occurred, or the component is configured to
|
398
|
+
else
|
399
|
+
# if fetch has occurred, or the component is configured to
|
400
400
|
# always build, do a clean and build.
|
401
401
|
execute_build(fetcher)
|
402
402
|
end
|
@@ -414,7 +414,7 @@ module Omnibus
|
|
414
414
|
|
415
415
|
file manifest_file => (file latest_file)
|
416
416
|
|
417
|
-
file fetch_file => "#{name}:fetch"
|
417
|
+
file fetch_file => "#{name}:fetch"
|
418
418
|
file manifest_file => "#{name}:build"
|
419
419
|
|
420
420
|
file fetch_file => (file @source_config)
|
data/lib/omnibus/version.rb
CHANGED
data/omnibus.gemspec
CHANGED
@@ -25,7 +25,7 @@ Gem::Specification.new do |gem|
|
|
25
25
|
gem.add_dependency "mixlib-config", "~> 1.1.2"
|
26
26
|
gem.add_dependency "ohai", ">= 0.6.12"
|
27
27
|
gem.add_dependency "rake", ">= 0.9"
|
28
|
-
gem.add_dependency "fpm", "
|
28
|
+
gem.add_dependency "fpm", "~> 0.4.33"
|
29
29
|
gem.add_dependency "uber-s3"
|
30
30
|
gem.add_dependency "thor", ">= 0.16.0"
|
31
31
|
|
@@ -0,0 +1,106 @@
|
|
1
|
+
#
|
2
|
+
# Copyright:: Copyright (c) 2012 Opscode, Inc.
|
3
|
+
# License:: Apache License, Version 2.0
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
# you may not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
#
|
17
|
+
|
18
|
+
require 'omnibus/artifact'
|
19
|
+
require 'spec_helper'
|
20
|
+
|
21
|
+
describe Omnibus::Artifact do
|
22
|
+
|
23
|
+
let(:path) { "build_os=centos-5,machine_architecture=x86,role=oss-builder/pkg/demoproject-11.4.0-1.el5.x86_64.rpm" }
|
24
|
+
|
25
|
+
let(:content) { StringIO.new("this is the package content\n") }
|
26
|
+
|
27
|
+
let(:md5) { "d41d8cd98f00b204e9800998ecf8427e" }
|
28
|
+
|
29
|
+
let(:sha256) { "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" }
|
30
|
+
|
31
|
+
let(:platforms) { [ [ "el", "5", "x86_64" ], [ "sles","11.2","x86_64" ] ] }
|
32
|
+
|
33
|
+
let(:artifact) { Omnibus::Artifact.new(path, platforms, { :version => "11.4.0-1" }) }
|
34
|
+
|
35
|
+
it "has the path to the package" do
|
36
|
+
artifact.path.should == path
|
37
|
+
end
|
38
|
+
|
39
|
+
it "has a list of platforms the package supports" do
|
40
|
+
artifact.platforms.should == platforms
|
41
|
+
end
|
42
|
+
|
43
|
+
it "generates a MD5 of an artifact" do
|
44
|
+
File.should_receive(:open).with(path).and_return(content)
|
45
|
+
artifact.md5.should == md5
|
46
|
+
end
|
47
|
+
|
48
|
+
it "generates a SHA256 of an artifact" do
|
49
|
+
File.should_receive(:open).with(path).and_return(content)
|
50
|
+
artifact.sha256.should == sha256
|
51
|
+
end
|
52
|
+
|
53
|
+
it "generates 'flat' metadata" do
|
54
|
+
File.should_receive(:open).twice.with(path).and_return(content)
|
55
|
+
flat_metadata = artifact.flat_metadata
|
56
|
+
flat_metadata["platform"].should == "el"
|
57
|
+
flat_metadata["platform_version"].should == "5"
|
58
|
+
flat_metadata["arch"].should == "x86_64"
|
59
|
+
flat_metadata["version"].should == "11.4.0-1"
|
60
|
+
flat_metadata["basename"].should == "demoproject-11.4.0-1.el5.x86_64.rpm"
|
61
|
+
flat_metadata["md5"].should == md5
|
62
|
+
flat_metadata["sha256"].should == sha256
|
63
|
+
end
|
64
|
+
|
65
|
+
it "adds the package to a release manifest" do
|
66
|
+
expected = {
|
67
|
+
"el" => {
|
68
|
+
"5" => { "x86_64" => { "11.4.0-1" => "/el/5/x86_64/demoproject-11.4.0-1.el5.x86_64.rpm" } }
|
69
|
+
},
|
70
|
+
"sles" => {
|
71
|
+
"11.2" => { "x86_64" => { "11.4.0-1" => "/el/5/x86_64/demoproject-11.4.0-1.el5.x86_64.rpm" } }
|
72
|
+
}
|
73
|
+
}
|
74
|
+
|
75
|
+
manifest = artifact.add_to_release_manifest!({})
|
76
|
+
manifest.should == expected
|
77
|
+
end
|
78
|
+
|
79
|
+
it "adds the package to a v2 release manifest" do
|
80
|
+
File.should_receive(:open).with(path).twice.and_return(content)
|
81
|
+
expected = {
|
82
|
+
"el" => {
|
83
|
+
"5" => { "x86_64" => { "11.4.0-1" => {
|
84
|
+
"relpath" => "/el/5/x86_64/demoproject-11.4.0-1.el5.x86_64.rpm",
|
85
|
+
"md5" => md5,
|
86
|
+
"sha256" => sha256
|
87
|
+
}
|
88
|
+
}
|
89
|
+
}
|
90
|
+
},
|
91
|
+
"sles" => {
|
92
|
+
"11.2" => { "x86_64" => { "11.4.0-1" => {
|
93
|
+
"relpath" => "/el/5/x86_64/demoproject-11.4.0-1.el5.x86_64.rpm",
|
94
|
+
"md5" => md5,
|
95
|
+
"sha256" => sha256
|
96
|
+
}
|
97
|
+
}
|
98
|
+
}
|
99
|
+
}
|
100
|
+
}
|
101
|
+
v2_manifest = artifact.add_to_v2_release_manifest!({})
|
102
|
+
v2_manifest.should == expected
|
103
|
+
end
|
104
|
+
|
105
|
+
end
|
106
|
+
|
@@ -0,0 +1,197 @@
|
|
1
|
+
#
|
2
|
+
# Copyright:: Copyright (c) 2012 Opscode, Inc.
|
3
|
+
# License:: Apache License, Version 2.0
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
# you may not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
#
|
17
|
+
|
18
|
+
require 'omnibus/package_release'
|
19
|
+
require 'spec_helper'
|
20
|
+
|
21
|
+
describe Omnibus::PackageRelease do
|
22
|
+
let(:s3_key) { "s3key" }
|
23
|
+
let(:s3_secret) { "hey-bezos-store-my-stuff" }
|
24
|
+
let(:s3_bucket) { "myorg-omnibus-packages" }
|
25
|
+
let(:pkg_path) { "pkg/chef_11.4.0-183-g2c0040c-0.el6.x86_64.rpm" }
|
26
|
+
let(:pkg_metadata_path) { "#{pkg_path}.metadata.json" }
|
27
|
+
|
28
|
+
let(:config) do
|
29
|
+
{
|
30
|
+
:release_s3_access_key => s3_key,
|
31
|
+
:release_s3_secret_key => s3_secret,
|
32
|
+
:release_s3_bucket => s3_bucket
|
33
|
+
}
|
34
|
+
end
|
35
|
+
subject(:package_release) do
|
36
|
+
Omnibus::PackageRelease.new(pkg_path)
|
37
|
+
end
|
38
|
+
|
39
|
+
it "has a package path" do
|
40
|
+
package_release.package_path.should == pkg_path
|
41
|
+
end
|
42
|
+
|
43
|
+
it "defaults to `:private' access policy" do
|
44
|
+
package_release.access_policy.should == :private
|
45
|
+
end
|
46
|
+
|
47
|
+
describe "validating configuration" do
|
48
|
+
|
49
|
+
before do
|
50
|
+
Omnibus.stub!(:config).and_return(config)
|
51
|
+
end
|
52
|
+
|
53
|
+
it "validates that the s3 key is set" do
|
54
|
+
config.delete(:release_s3_access_key)
|
55
|
+
lambda { package_release.validate_config! }.should raise_error(Omnibus::InvalidS3ReleaseConfiguration)
|
56
|
+
end
|
57
|
+
|
58
|
+
it "validates that the s3 secret key is set" do
|
59
|
+
config.delete(:release_s3_secret_key)
|
60
|
+
lambda { package_release.validate_config! }.should raise_error(Omnibus::InvalidS3ReleaseConfiguration)
|
61
|
+
end
|
62
|
+
|
63
|
+
it "validates that the s3 bucket is set" do
|
64
|
+
config.delete(:release_s3_bucket)
|
65
|
+
lambda { package_release.validate_config! }.should raise_error(Omnibus::InvalidS3ReleaseConfiguration)
|
66
|
+
end
|
67
|
+
|
68
|
+
it "does not error on a valid configuration" do
|
69
|
+
lambda { package_release.validate_config! }.should_not raise_error
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
describe "validating package for upload" do
|
74
|
+
it "ensures that the package file exists" do
|
75
|
+
lambda { package_release.validate_package! }.should raise_error(Omnibus::NoPackageFile)
|
76
|
+
end
|
77
|
+
|
78
|
+
it "ensures that there is a metadata file for the package" do
|
79
|
+
File.should_receive(:exist?).with(pkg_path).and_return(true)
|
80
|
+
File.should_receive(:exist?).with(pkg_metadata_path).and_return(false)
|
81
|
+
lambda { package_release.validate_package! }.should raise_error(Omnibus::NoPackageMetadataFile)
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
context "with a valid config and package" do
|
86
|
+
|
87
|
+
let(:basename) { "chef_11.4.0-183-g2c0040c-0.el6.x86_64.rpm" }
|
88
|
+
let(:md5) { "016f2e0854c69901b3f0ad8f99ffdb75" }
|
89
|
+
let(:platform_path) { "el/6/x86_64" }
|
90
|
+
let(:pkg_content) { "expected package content" }
|
91
|
+
|
92
|
+
let(:metadata_json) do
|
93
|
+
<<-E
|
94
|
+
{
|
95
|
+
"platform": "el",
|
96
|
+
"platform_version": "6",
|
97
|
+
"arch": "x86_64",
|
98
|
+
"version": "11.4.0-183-g2c0040c",
|
99
|
+
"basename": "#{basename}",
|
100
|
+
"md5": "#{md5}",
|
101
|
+
"sha256": "21191ab698d1663a5e738e470fad16a2c6efee05ed597002f2e846ec80ade38c"
|
102
|
+
}
|
103
|
+
E
|
104
|
+
end
|
105
|
+
|
106
|
+
before do
|
107
|
+
package_release.stub!(:config).and_return(config)
|
108
|
+
File.stub(:exist?).with(pkg_metadata_path).and_return(true)
|
109
|
+
File.stub(:exist?).with(pkg_path).and_return(true)
|
110
|
+
IO.stub(:read).with(pkg_metadata_path).and_return(metadata_json)
|
111
|
+
IO.stub(:read).with(pkg_path).and_return(pkg_content)
|
112
|
+
end
|
113
|
+
|
114
|
+
it "configures s3 with the given credentials" do
|
115
|
+
expected_s3_config = {
|
116
|
+
:access_key => s3_key,
|
117
|
+
:secret_access_key => s3_secret,
|
118
|
+
:bucket => s3_bucket,
|
119
|
+
:adaper => :net_http
|
120
|
+
}
|
121
|
+
UberS3.should_receive(:new).with(expected_s3_config)
|
122
|
+
package_release.s3_client
|
123
|
+
end
|
124
|
+
|
125
|
+
it "generates the relative path for the package s3 key" do
|
126
|
+
package_release.platform_path.should == platform_path
|
127
|
+
end
|
128
|
+
|
129
|
+
|
130
|
+
it "uploads the package and metadata" do
|
131
|
+
package_release.s3_client.should_receive(:store).with(
|
132
|
+
"#{platform_path}/#{basename}.metadata.json",
|
133
|
+
metadata_json,
|
134
|
+
:access => :private
|
135
|
+
)
|
136
|
+
package_release.s3_client.should_receive(:store).with(
|
137
|
+
"#{platform_path}/#{basename}",
|
138
|
+
pkg_content,
|
139
|
+
:access => :private,
|
140
|
+
:content_md5 => md5
|
141
|
+
)
|
142
|
+
package_release.release
|
143
|
+
end
|
144
|
+
|
145
|
+
context "and a callback is given for after upload" do
|
146
|
+
let(:upload_records) { [] }
|
147
|
+
|
148
|
+
subject(:package_release) do
|
149
|
+
Omnibus::PackageRelease.new(pkg_path) do |uploaded|
|
150
|
+
upload_records << uploaded
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
154
|
+
it "fires the after_upload callback for each item uploaded" do
|
155
|
+
package_release.s3_client.should_receive(:store).with(
|
156
|
+
"#{platform_path}/#{basename}.metadata.json",
|
157
|
+
metadata_json,
|
158
|
+
:access => :private
|
159
|
+
)
|
160
|
+
package_release.s3_client.should_receive(:store).with(
|
161
|
+
"#{platform_path}/#{basename}",
|
162
|
+
pkg_content,
|
163
|
+
:access => :private,
|
164
|
+
:content_md5 => md5
|
165
|
+
)
|
166
|
+
package_release.release
|
167
|
+
|
168
|
+
upload_records.should == [ "#{platform_path}/#{basename}.metadata.json",
|
169
|
+
"#{platform_path}/#{basename}" ]
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
173
|
+
context "and the package is public" do
|
174
|
+
|
175
|
+
subject(:package_release) do
|
176
|
+
Omnibus::PackageRelease.new(pkg_path, :access => :public_read)
|
177
|
+
end
|
178
|
+
|
179
|
+
it "uploads the package and metadata" do
|
180
|
+
package_release.s3_client.should_receive(:store).with(
|
181
|
+
"#{platform_path}/#{basename}.metadata.json",
|
182
|
+
metadata_json,
|
183
|
+
:access => :public_read
|
184
|
+
)
|
185
|
+
package_release.s3_client.should_receive(:store).with(
|
186
|
+
"#{platform_path}/#{basename}",
|
187
|
+
pkg_content,
|
188
|
+
:access => :public_read,
|
189
|
+
:content_md5 => md5
|
190
|
+
)
|
191
|
+
package_release.release
|
192
|
+
end
|
193
|
+
end
|
194
|
+
|
195
|
+
end
|
196
|
+
|
197
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: omnibus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Opscode
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-05-
|
11
|
+
date: 2013-05-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mixlib-shellout
|
@@ -70,16 +70,16 @@ dependencies:
|
|
70
70
|
name: fpm
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - ~>
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: 0.
|
75
|
+
version: 0.4.33
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - ~>
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: 0.
|
82
|
+
version: 0.4.33
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: uber-s3
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -157,6 +157,7 @@ files:
|
|
157
157
|
- bin/makeself.sh
|
158
158
|
- bin/omnibus
|
159
159
|
- lib/omnibus.rb
|
160
|
+
- lib/omnibus/artifact.rb
|
160
161
|
- lib/omnibus/build_version.rb
|
161
162
|
- lib/omnibus/builder.rb
|
162
163
|
- lib/omnibus/clean_tasks.rb
|
@@ -165,6 +166,7 @@ files:
|
|
165
166
|
- lib/omnibus/cli/base.rb
|
166
167
|
- lib/omnibus/cli/build.rb
|
167
168
|
- lib/omnibus/cli/cache.rb
|
169
|
+
- lib/omnibus/cli/release.rb
|
168
170
|
- lib/omnibus/config.rb
|
169
171
|
- lib/omnibus/exceptions.rb
|
170
172
|
- lib/omnibus/fetcher.rb
|
@@ -176,6 +178,7 @@ files:
|
|
176
178
|
- lib/omnibus/health_check.rb
|
177
179
|
- lib/omnibus/library.rb
|
178
180
|
- lib/omnibus/overrides.rb
|
181
|
+
- lib/omnibus/package_release.rb
|
179
182
|
- lib/omnibus/project.rb
|
180
183
|
- lib/omnibus/reports.rb
|
181
184
|
- lib/omnibus/s3_cacher.rb
|
@@ -196,6 +199,7 @@ files:
|
|
196
199
|
- lib/omnibus/util.rb
|
197
200
|
- lib/omnibus/version.rb
|
198
201
|
- omnibus.gemspec
|
202
|
+
- spec/artifact_spec.rb
|
199
203
|
- spec/build_version_spec.rb
|
200
204
|
- spec/data/overrides/bad_line.overrides
|
201
205
|
- spec/data/overrides/good.overrides
|
@@ -203,6 +207,7 @@ files:
|
|
203
207
|
- spec/data/software/erchef.rb
|
204
208
|
- spec/fetchers/net_fetcher_spec.rb
|
205
209
|
- spec/overrides_spec.rb
|
210
|
+
- spec/package_release_spec.rb
|
206
211
|
- spec/software_spec.rb
|
207
212
|
- spec/spec_helper.rb
|
208
213
|
homepage: https://github.com/opscode/omnibus-ruby
|
@@ -230,6 +235,7 @@ signing_key:
|
|
230
235
|
specification_version: 4
|
231
236
|
summary: Omnibus helps you build self-installing, full-stack software builds.
|
232
237
|
test_files:
|
238
|
+
- spec/artifact_spec.rb
|
233
239
|
- spec/build_version_spec.rb
|
234
240
|
- spec/data/overrides/bad_line.overrides
|
235
241
|
- spec/data/overrides/good.overrides
|
@@ -237,6 +243,7 @@ test_files:
|
|
237
243
|
- spec/data/software/erchef.rb
|
238
244
|
- spec/fetchers/net_fetcher_spec.rb
|
239
245
|
- spec/overrides_spec.rb
|
246
|
+
- spec/package_release_spec.rb
|
240
247
|
- spec/software_spec.rb
|
241
248
|
- spec/spec_helper.rb
|
242
249
|
has_rdoc:
|