boxgrinder-core 0.1.1 → 0.1.2

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.
data/CHANGELOG CHANGED
@@ -1,4 +1,9 @@
1
1
 
2
+ v0.1.2
3
+
4
+ * [BGBUILD-87] Set default filesystem to ext4 for Fedora 13+
5
+ * [BGBUILD-65] Allow to specify own repos overriding default repos provided for selected OS
6
+
2
7
  v0.1.1
3
8
 
4
9
  * [BGBUILD-65] Allow to specify own repos overriding default repos provided for selected OS
data/Manifest CHANGED
@@ -0,0 +1,32 @@
1
+ CHANGELOG
2
+ LICENSE
3
+ Manifest
4
+ README
5
+ Rakefile
6
+ boxgrinder-core.gemspec
7
+ lib/boxgrinder-core.rb
8
+ lib/boxgrinder-core/defaults.rb
9
+ lib/boxgrinder-core/helpers/appliance-config-helper.rb
10
+ lib/boxgrinder-core/helpers/appliance-helper.rb
11
+ lib/boxgrinder-core/helpers/exec-helper.rb
12
+ lib/boxgrinder-core/helpers/log-helper.rb
13
+ lib/boxgrinder-core/helpers/queue-helper.rb
14
+ lib/boxgrinder-core/models/appliance-config.rb
15
+ lib/boxgrinder-core/models/config.rb
16
+ lib/boxgrinder-core/models/task.rb
17
+ lib/boxgrinder-core/validators/appliance-config-validator.rb
18
+ lib/boxgrinder-core/validators/errors.rb
19
+ lib/openhash/openhash.rb
20
+ rubygem-boxgrinder-core.spec
21
+ spec/helpers/appliance-config-helper-spec.rb
22
+ spec/helpers/appliance-helper-spec.rb
23
+ spec/helpers/exec-helper-spec.rb
24
+ spec/helpers/log-helper-spec.rb
25
+ spec/helpers/queue-helper-spec.rb
26
+ spec/rspec/ls/one
27
+ spec/rspec/ls/two
28
+ spec/rspec/rspec-config-helper.rb
29
+ spec/rspec/src/appliances/ephemeral-repo.appl
30
+ spec/rspec/src/appliances/full.appl
31
+ spec/rspec/src/appliances/repo.appl
32
+ spec/validators/appliance-config-validator-spec.rb
data/Rakefile CHANGED
@@ -16,6 +16,8 @@
16
16
  # Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
17
17
  # 02110-1301 USA, or see the FSF site: http://www.fsf.org.
18
18
 
19
+ require 'rubygems'
20
+ require 'spec/rake/spectask'
19
21
  require 'echoe'
20
22
 
21
23
  Echoe.new("boxgrinder-core") do |p|
@@ -26,3 +28,50 @@ Echoe.new("boxgrinder-core") do |p|
26
28
  p.email = "info@boxgrinder.org"
27
29
  p.runtime_dependencies = ['open4 >=1.0.0']
28
30
  end
31
+
32
+ desc "Run all tests"
33
+ Spec::Rake::SpecTask.new('spec') do |t|
34
+ t.rcov = false
35
+ t.spec_files = FileList["spec/**/*-spec.rb"]
36
+ t.spec_opts = ['--colour', '--format', 'specdoc', '-b']
37
+ t.verbose = true
38
+ end
39
+
40
+ desc "Run all tests and generate code coverage report"
41
+ Spec::Rake::SpecTask.new('spec:coverage') do |t|
42
+ t.spec_files = FileList["spec/**/*-spec.rb"]
43
+ t.spec_opts = ['--colour', '--format', 'html:pkg/rspec_report.html', '-b']
44
+ t.rcov = true
45
+ t.rcov_opts = ['--exclude', 'spec,teamcity/*,/usr/lib/ruby/,.gem/ruby,/boxgrinder-build/,/gems/']
46
+ t.verbose = true
47
+ end
48
+
49
+ topdir = "#{Dir.pwd}/pkg/rpmbuild"
50
+ directory "#{topdir}/SOURCES"
51
+
52
+ task 'gem:copy' => [:clean, :manifest, :gem, 'rpm:topdir'] do
53
+ Dir["**/pkg/*.gem"].each { |gem| FileUtils.cp(gem, "#{topdir}/SOURCES", :verbose => true) }
54
+ end
55
+
56
+ task 'rpm:topdir' do
57
+ FileUtils.mkdir_p(["#{topdir}/SOURCES", "#{topdir}/RPMS", "#{topdir}/BUILD", "#{topdir}/SPECS", "#{topdir}/SRPMS"], :verbose => true)
58
+ end
59
+
60
+ desc "Create RPM"
61
+ task 'rpm' => ['gem:copy'] do
62
+ Dir["**/rubygem-*.spec"].each do |spec|
63
+ `rpmbuild --define '_topdir #{topdir}' -ba #{spec}`
64
+ exit 1 unless $? == 0
65
+ end
66
+ end
67
+
68
+ desc "Install RPM"
69
+ task 'rpm:install' => ['rpm'] do
70
+ puts "sudo yum -y remove rubygem-boxgrinder-core"
71
+ system "sudo yum -y remove rubygem-boxgrinder-core"
72
+ exit 1 unless $? == 0
73
+
74
+ puts "sudo yum -y --nogpgcheck localinstall #{topdir}/RPMS/noarch/*.rpm"
75
+ system "sudo yum -y --nogpgcheck localinstall #{topdir}/RPMS/noarch/*.rpm"
76
+ exit 1 unless $? == 0
77
+ end
@@ -2,15 +2,15 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{boxgrinder-core}
5
- s.version = "0.1.1"
5
+ s.version = "0.1.2"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Marek Goldmann"]
9
- s.date = %q{2010-11-02}
9
+ s.date = %q{2010-11-11}
10
10
  s.description = %q{Core library for BoxGrinder}
11
11
  s.email = %q{info@boxgrinder.org}
12
12
  s.extra_rdoc_files = ["CHANGELOG", "LICENSE", "README", "lib/boxgrinder-core.rb", "lib/boxgrinder-core/defaults.rb", "lib/boxgrinder-core/helpers/appliance-config-helper.rb", "lib/boxgrinder-core/helpers/appliance-helper.rb", "lib/boxgrinder-core/helpers/exec-helper.rb", "lib/boxgrinder-core/helpers/log-helper.rb", "lib/boxgrinder-core/helpers/queue-helper.rb", "lib/boxgrinder-core/models/appliance-config.rb", "lib/boxgrinder-core/models/config.rb", "lib/boxgrinder-core/models/task.rb", "lib/boxgrinder-core/validators/appliance-config-validator.rb", "lib/boxgrinder-core/validators/errors.rb", "lib/openhash/openhash.rb"]
13
- s.files = ["CHANGELOG", "LICENSE", "Manifest", "README", "Rakefile", "lib/boxgrinder-core.rb", "lib/boxgrinder-core/defaults.rb", "lib/boxgrinder-core/helpers/appliance-config-helper.rb", "lib/boxgrinder-core/helpers/appliance-helper.rb", "lib/boxgrinder-core/helpers/exec-helper.rb", "lib/boxgrinder-core/helpers/log-helper.rb", "lib/boxgrinder-core/helpers/queue-helper.rb", "lib/boxgrinder-core/models/appliance-config.rb", "lib/boxgrinder-core/models/config.rb", "lib/boxgrinder-core/models/task.rb", "lib/boxgrinder-core/validators/appliance-config-validator.rb", "lib/boxgrinder-core/validators/errors.rb", "lib/openhash/openhash.rb", "rubygem-boxgrinder-core.spec", "spec/Rakefile", "spec/helpers/appliance-config-helper-spec.rb", "spec/helpers/appliance-helper-spec.rb", "spec/helpers/exec-helper-spec.rb", "spec/helpers/log-helper-spec.rb", "spec/helpers/queue-helper-spec.rb", "spec/rspec/ls/one", "spec/rspec/ls/two", "spec/rspec/rspec-config-helper.rb", "spec/rspec/src/appliances/ephemeral-repo.appl", "spec/rspec/src/appliances/full.appl", "spec/rspec/src/appliances/repo.appl", "spec/validators/appliance-config-validator-spec.rb", "boxgrinder-core.gemspec"]
13
+ s.files = ["CHANGELOG", "LICENSE", "Manifest", "README", "Rakefile", "boxgrinder-core.gemspec", "lib/boxgrinder-core.rb", "lib/boxgrinder-core/defaults.rb", "lib/boxgrinder-core/helpers/appliance-config-helper.rb", "lib/boxgrinder-core/helpers/appliance-helper.rb", "lib/boxgrinder-core/helpers/exec-helper.rb", "lib/boxgrinder-core/helpers/log-helper.rb", "lib/boxgrinder-core/helpers/queue-helper.rb", "lib/boxgrinder-core/models/appliance-config.rb", "lib/boxgrinder-core/models/config.rb", "lib/boxgrinder-core/models/task.rb", "lib/boxgrinder-core/validators/appliance-config-validator.rb", "lib/boxgrinder-core/validators/errors.rb", "lib/openhash/openhash.rb", "rubygem-boxgrinder-core.spec", "spec/helpers/appliance-config-helper-spec.rb", "spec/helpers/appliance-helper-spec.rb", "spec/helpers/exec-helper-spec.rb", "spec/helpers/log-helper-spec.rb", "spec/helpers/queue-helper-spec.rb", "spec/rspec/ls/one", "spec/rspec/ls/two", "spec/rspec/rspec-config-helper.rb", "spec/rspec/src/appliances/ephemeral-repo.appl", "spec/rspec/src/appliances/full.appl", "spec/rspec/src/appliances/repo.appl", "spec/validators/appliance-config-validator-spec.rb"]
14
14
  s.homepage = %q{http://www.jboss.org/boxgrinder}
15
15
  s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Boxgrinder-core", "--main", "README"]
16
16
  s.require_paths = ["lib"]
@@ -76,8 +76,8 @@ module BoxGrinder
76
76
  var = resolve_stack.last
77
77
  refs = @appliance_config.variables.keys.delete_if { |k|
78
78
  @appliance_config.variables[k].nil? ||
79
- @appliance_config.variables[k].index("##{k}#").nil? ||
80
- resolve_stack.index(k).nil?
79
+ @appliance_config.variables[k].index("##{k}#").nil? ||
80
+ resolve_stack.index(k).nil?
81
81
  }
82
82
  refs.each do |ref|
83
83
  resolve(Arrays.new(resolve_stack).push(ref), resolved_set) unless resolved_set.include?(ref)
@@ -111,17 +111,42 @@ module BoxGrinder
111
111
  unless partition['type'].nil?
112
112
  partitions[root].delete('options') if partitions[root]['type'] != partition['type']
113
113
  partitions[root]['type'] = partition['type']
114
+ else
115
+ partitions[root]['type'] = default_filesystem_type
114
116
  end
115
- partitions[root]['options'] = partition['options'] unless partition['options'].nil? and partitions[root]['type'] == partition['type']
116
117
  else
117
- partitions[root] = partition
118
+ partitions[root] = {}
119
+ partitions[root]['size'] = partition['size']
120
+
121
+ unless partition['type'].nil?
122
+ partitions[root]['type'] = partition['type']
123
+ else
124
+ partitions[root]['type'] = default_filesystem_type
125
+ end
118
126
  end
127
+
128
+ partitions[root]['options'] = partition['options'] unless partition['options'].nil?
119
129
  end
120
130
  end
121
131
 
122
132
  @appliance_config.hardware.partitions = partitions
123
133
  end
124
134
 
135
+ def default_filesystem_type
136
+ fs = 'ext3'
137
+
138
+ case @appliance_config.os.name
139
+ when 'fedora'
140
+
141
+ case @appliance_config.os.version
142
+ when '13', '14'
143
+ fs = 'ext4'
144
+ end
145
+ end
146
+
147
+ fs
148
+ end
149
+
125
150
  def merge_memory
126
151
  merge_field('hardware.memory') { |memory| @appliance_config.hardware.memory = memory if memory > @appliance_config.hardware.memory }
127
152
  end
@@ -16,6 +16,7 @@
16
16
  # Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
17
17
  # 02110-1301 USA, or see the FSF site: http://www.fsf.org.
18
18
 
19
+ require 'boxgrinder-core/models/appliance-config'
19
20
  require 'yaml'
20
21
 
21
22
  module BoxGrinder
@@ -61,7 +62,7 @@ module BoxGrinder
61
62
  def read_yaml(file)
62
63
  begin
63
64
  definition = YAML.load_file(file)
64
- raise if definition.nil?
65
+ raise if definition.nil? or definition == false
65
66
  rescue
66
67
  raise "File '#{file}' could not be read."
67
68
  end
@@ -78,8 +79,13 @@ module BoxGrinder
78
79
  appliance_config.appliances = definition['appliances'] unless definition['appliances'].nil?
79
80
  appliance_config.repos = definition['repos'] unless definition['repos'].nil?
80
81
 
81
- appliance_config.version = definition['version'].to_s unless definition['version'].nil?
82
- appliance_config.release = definition['release'].to_s unless definition['release'].nil?
82
+ appliance_config.version = definition['version'].to_s unless definition['version'].nil?
83
+ appliance_config.release = definition['release'].to_s unless definition['release'].nil?
84
+
85
+ unless definition['default_repos'].nil?
86
+ appliance_config.default_repos = definition['default_repos']
87
+ raise "#{File.basename(file)}: default_repos should be set to true or false" unless appliance_config.default_repos.is_a?(TrueClass) or appliance_config.default_repos.is_a?(FalseClass)
88
+ end
83
89
 
84
90
  unless definition['packages'].nil?
85
91
  appliance_config.packages.includes = definition['packages']['includes'] unless definition['packages']['includes'].nil?
@@ -5,12 +5,13 @@
5
5
 
6
6
  Summary: Core library for BoxGrinder
7
7
  Name: rubygem-%{gemname}
8
- Version: 0.1.1
8
+ Version: 0.1.2
9
9
  Release: 1%{?dist}
10
10
  Group: Development/Languages
11
- License: LGPL
11
+ License: LGPLv3+
12
12
  URL: http://www.jboss.org/boxgrinder
13
13
  Source0: http://rubygems.org/gems/%{gemname}-%{version}.gem
14
+ Buildroot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
14
15
 
15
16
  Requires: ruby(abi) = %{rubyabi}
16
17
  Requires: rubygems >= 1.2
@@ -25,6 +26,14 @@ Provides: rubygem(%{gemname}) = %{version}
25
26
  %description
26
27
  Core library containing files required by BoxGrinder family of projects
27
28
 
29
+ %package doc
30
+ Summary: Documentation for %{name}
31
+ Group: Documentation
32
+ Requires:%{name} = %{version}-%{release}
33
+
34
+ %description doc
35
+ Documentation for %{name}
36
+
28
37
  %prep
29
38
 
30
39
  %build
@@ -35,6 +44,12 @@ mkdir -p %{buildroot}%{gemdir}
35
44
  gem install --local --install-dir %{buildroot}%{gemdir} \
36
45
  --force --rdoc %{SOURCE0}
37
46
 
47
+ %check
48
+ pushd %{buildroot}/%{geminstdir}
49
+ rake spec
50
+ rm -rf log
51
+ popd
52
+
38
53
  %clean
39
54
  rm -rf %{buildroot}
40
55
 
@@ -42,18 +57,29 @@ rm -rf %{buildroot}
42
57
  %defattr(-, root, root, -)
43
58
  %dir %{geminstdir}
44
59
  %{geminstdir}/lib
45
- %doc %{gemdir}/doc/%{gemname}-%{version}
46
- %doc %{geminstdir}/%{gemname}.gemspec
47
- %doc %{geminstdir}/rubygem-%{gemname}.spec
48
60
  %doc %{geminstdir}/CHANGELOG
49
61
  %doc %{geminstdir}/LICENSE
50
62
  %doc %{geminstdir}/README
51
63
  %doc %{geminstdir}/Manifest
52
- %doc %{geminstdir}/Rakefile
53
- %doc %{geminstdir}/spec
54
64
  %{gemdir}/cache/%{gemname}-%{version}.gem
55
65
  %{gemdir}/specifications/%{gemname}-%{version}.gemspec
56
66
 
67
+ %files doc
68
+ %defattr(-, root, root, -)
69
+ %{geminstdir}/spec
70
+ %{geminstdir}/Rakefile
71
+ %{geminstdir}/rubygem-%{gemname}.spec
72
+ %{geminstdir}/%{gemname}.gemspec
73
+ %{gemdir}/doc/%{gemname}-%{version}
74
+
57
75
  %changelog
76
+ * Tue Nov 09 2010 <mgoldman@redhat.com> - 0.1.2-1
77
+ - [BGBUILD-87] Set default filesystem to ext4 for Fedora 13+
78
+ - [BGBUILD-65] Allow to specify own repos overriding default repos provided for selected OS
79
+
80
+ * Tue Nov 09 2010 <mgoldman@redhat.com> - 0.1.1-2
81
+ - [BGBUILD-85] Adjust BoxGrinder spec files for review
82
+ - Added 'check' section that executes tests
83
+
58
84
  * Mon Oct 18 2010 <mgoldman@redhat.com> - 0.1.1-1
59
85
  - Initial package
@@ -17,12 +17,9 @@
17
17
  # 02110-1301 USA, or see the FSF site: http://www.fsf.org.
18
18
 
19
19
  require 'boxgrinder-core/helpers/appliance-config-helper'
20
- require 'rspec/rspec-config-helper'
21
20
 
22
21
  module BoxGrinder
23
22
  describe ApplianceConfigHelper do
24
- include RSpecConfigHelper
25
-
26
23
  before(:all) do
27
24
  @arch = `uname -m`.chomp.strip
28
25
  @base_arch = @arch.eql?("x86_64") ? "x86_64" : "i386"
@@ -103,11 +100,11 @@ module BoxGrinder
103
100
  config_c2.post['base'] = ["5_1", "5_2"]
104
101
 
105
102
  prepare_helper([
106
- config_a,
107
- config_b1,
108
- config_c1,
109
- config_b2,
110
- config_c2
103
+ config_a,
104
+ config_b1,
105
+ config_c1,
106
+ config_b2,
107
+ config_c2
111
108
  ])
112
109
  @helper.instance_variable_set(:@appliance_config, config_a.clone)
113
110
 
@@ -140,15 +137,43 @@ module BoxGrinder
140
137
  config.post['ec2'].should == ['2_1', '2_2']
141
138
  end
142
139
 
143
- it "should merge partitions" do
140
+ it "should merge partitions for default fs_types without options for Fedora 13 (ext4)" do
144
141
  config_a = ApplianceConfig.new
145
142
  config_a.name = 'a'
146
143
  config_a.appliances << 'b'
147
144
  config_a.hardware.partitions = {"/" => {'size' => '2'}}
145
+ config_a.os.name = 'fedora'
146
+ config_a.os.version = '13'
148
147
 
149
148
  config_b = ApplianceConfig.new
150
149
  config_b.name = 'b'
151
150
  config_b.hardware.partitions = {"/" => {'size' => '4'}, "/home" => {'size' => '2'}}
151
+ config_b.os.name = 'fedora'
152
+ config_b.os.version = '13'
153
+
154
+ prepare_helper([config_a, config_b])
155
+ @helper.instance_variable_set(:@appliance_config, config_a.clone)
156
+
157
+ @helper.merge_partitions
158
+
159
+ config = @helper.instance_variable_get(:@appliance_config)
160
+ config.hardware.partitions.size.should == 2
161
+ config.hardware.partitions.should == {"/" => {'size' => '4', 'type' => 'ext4'}, "/home" => {'size' => '2', 'type' => 'ext4'}}
162
+ end
163
+
164
+ it "should merge partitions for default fs_types without options for Fedora 13 (ext4) and specified options" do
165
+ config_a = ApplianceConfig.new
166
+ config_a.name = 'a'
167
+ config_a.appliances << 'b'
168
+ config_a.hardware.partitions = {"/" => {'size' => '2'}}
169
+ config_a.os.name = 'fedora'
170
+ config_a.os.version = '13'
171
+
172
+ config_b = ApplianceConfig.new
173
+ config_b.name = 'b'
174
+ config_b.hardware.partitions = {"/" => {'size' => '4', 'options' => 'barrier=0,nodelalloc,nobh,noatime'}, "/home" => {'size' => '2'}}
175
+ config_b.os.name = 'fedora'
176
+ config_b.os.version = '13'
152
177
 
153
178
  prepare_helper([config_a, config_b])
154
179
  @helper.instance_variable_set(:@appliance_config, config_a.clone)
@@ -157,7 +182,31 @@ module BoxGrinder
157
182
 
158
183
  config = @helper.instance_variable_get(:@appliance_config)
159
184
  config.hardware.partitions.size.should == 2
160
- config.hardware.partitions.should == {"/" => {'size' => '4'}, "/home" => {'size' => '2'}}
185
+ config.hardware.partitions.should == {"/" => {'size' => '4', 'type' => 'ext4', "options"=>"barrier=0,nodelalloc,nobh,noatime"}, "/home" => {'size' => '2', 'type' => 'ext4'}}
186
+ end
187
+
188
+ it "should merge partitions for default fs_types without options for Fedora 11 (ext3)" do
189
+ config_a = ApplianceConfig.new
190
+ config_a.name = 'a'
191
+ config_a.appliances << 'b'
192
+ config_a.hardware.partitions = {"/" => {'size' => '2'}}
193
+ config_a.os.name = 'fedora'
194
+ config_a.os.version = '11'
195
+
196
+ config_b = ApplianceConfig.new
197
+ config_b.name = 'b'
198
+ config_b.hardware.partitions = {"/" => {'size' => '4'}, "/home" => {'size' => '2'}}
199
+ config_b.os.name = 'fedora'
200
+ config_b.os.version = '11'
201
+
202
+ prepare_helper([config_a, config_b])
203
+ @helper.instance_variable_set(:@appliance_config, config_a.clone)
204
+
205
+ @helper.merge_partitions
206
+
207
+ config = @helper.instance_variable_get(:@appliance_config)
208
+ config.hardware.partitions.size.should == 2
209
+ config.hardware.partitions.should == {"/" => {'size' => '4', 'type' => 'ext3'}, "/home" => {'size' => '2', 'type' => 'ext3'}}
161
210
  end
162
211
 
163
212
  it "should merge partitions with different filesystem types" do
@@ -165,10 +214,14 @@ module BoxGrinder
165
214
  config_a.name = 'a'
166
215
  config_a.appliances << 'b'
167
216
  config_a.hardware.partitions = {"/" => {'size' => '2', 'type' => 'ext4'}}
217
+ config_a.os.name = 'fedora'
218
+ config_a.os.version = '12'
168
219
 
169
220
  config_b = ApplianceConfig.new
170
221
  config_b.name = 'b'
171
222
  config_b.hardware.partitions = {"/" => {'size' => '4', 'type' => 'ext3'}, "/home" => {'size' => '2'}}
223
+ config_b.os.name = 'fedora'
224
+ config_b.os.version = '11'
172
225
 
173
226
  prepare_helper([config_a, config_b])
174
227
  @helper.instance_variable_set(:@appliance_config, config_a.clone)
@@ -177,7 +230,7 @@ module BoxGrinder
177
230
 
178
231
  config = @helper.instance_variable_get(:@appliance_config)
179
232
  config.hardware.partitions.size.should == 2
180
- config.hardware.partitions.should == {"/" => {'size' => '4', 'type' => 'ext4'}, "/home" => {'size' => '2'}}
233
+ config.hardware.partitions.should == {"/" => {'size' => '4', 'type' => 'ext4'}, "/home" => {'size' => '2', 'type' => 'ext3'}}
181
234
  end
182
235
 
183
236
  it "should merge partitions with different options" do
@@ -185,10 +238,14 @@ module BoxGrinder
185
238
  config_a.name = 'a'
186
239
  config_a.appliances << 'b'
187
240
  config_a.hardware.partitions = {"/" => {'size' => '2', 'type' => 'ext4', 'options' => 'barrier=0,nodelalloc,nobh,noatime'}}
241
+ config_a.os.name = 'fedora'
242
+ config_a.os.version = '13'
188
243
 
189
244
  config_b = ApplianceConfig.new
190
245
  config_b.name = 'b'
191
246
  config_b.hardware.partitions = {"/" => {'size' => '4', 'type' => 'ext3', 'options' => 'shouldnt appear'}, "/home" => {'size' => '2'}}
247
+ config_b.os.name = 'fedora'
248
+ config_b.os.version = '13'
192
249
 
193
250
  prepare_helper([config_a, config_b])
194
251
  @helper.instance_variable_set(:@appliance_config, config_a.clone)
@@ -197,7 +254,7 @@ module BoxGrinder
197
254
 
198
255
  config = @helper.instance_variable_get(:@appliance_config)
199
256
  config.hardware.partitions.size.should == 2
200
- config.hardware.partitions.should == {"/" => {'size' => '4', 'type' => 'ext4', 'options' => 'barrier=0,nodelalloc,nobh,noatime'}, "/home" => {'size' => '2'}}
257
+ config.hardware.partitions.should == {"/" => {'size' => '4', 'type' => 'ext4', 'options' => 'barrier=0,nodelalloc,nobh,noatime'}, "/home" => {'size' => '2', 'type' => 'ext4'}}
201
258
  end
202
259
 
203
260
  it "should merge partitions with different options, another case where type is changing - options should be vanished" do
@@ -205,10 +262,14 @@ module BoxGrinder
205
262
  config_a.name = 'a'
206
263
  config_a.appliances << 'b'
207
264
  config_a.hardware.partitions = {"/" => {'size' => '2', 'type' => 'ext4'}}
265
+ config_a.os.name = 'fedora'
266
+ config_a.os.version = '13'
208
267
 
209
268
  config_b = ApplianceConfig.new
210
269
  config_b.name = 'b'
211
270
  config_b.hardware.partitions = {"/" => {'size' => '4', 'type' => 'ext3', 'options' => 'shouldnt appear'}, "/home" => {'size' => '2'}}
271
+ config_b.os.name = 'fedora'
272
+ config_b.os.version = '13'
212
273
 
213
274
  prepare_helper([config_a, config_b])
214
275
  @helper.instance_variable_set(:@appliance_config, config_a.clone)
@@ -217,7 +278,7 @@ module BoxGrinder
217
278
 
218
279
  config = @helper.instance_variable_get(:@appliance_config)
219
280
  config.hardware.partitions.size.should == 2
220
- config.hardware.partitions.should == {"/" => {'size' => '4', 'type' => 'ext4'}, "/home" => {'size' => '2'}}
281
+ config.hardware.partitions.should == {"/" => {'size' => '4', 'type' => 'ext4'}, "/home" => {'size' => '2', 'type' => 'ext4'}}
221
282
  end
222
283
 
223
284
  it "should substitute variables in repos" do
@@ -17,20 +17,18 @@
17
17
  # 02110-1301 USA, or see the FSF site: http://www.fsf.org.
18
18
 
19
19
  require 'boxgrinder-core/helpers/appliance-helper'
20
- require 'rspec/rspec-config-helper'
21
20
 
22
21
  module BoxGrinder
23
22
  describe ApplianceHelper do
24
- include RSpecConfigHelper
25
23
 
26
24
  before(:each) do
27
- @helper = ApplianceHelper.new( :log => Logger.new('/dev/null') )
25
+ @helper = ApplianceHelper.new(:log => Logger.new('/dev/null'))
28
26
  end
29
27
 
30
28
  it "should read definition from one file" do
31
29
  appliance_config = ApplianceConfig.new
32
- @helper.should_receive(:read_yaml).with('file.appl').and_return( appliance_config )
33
- @helper.read_definitions( "file.appl" ).should == [ [ appliance_config ], appliance_config ]
30
+ @helper.should_receive(:read_yaml).with('file.appl').and_return(appliance_config)
31
+ @helper.read_definitions("file.appl").should == [[appliance_config], appliance_config]
34
32
  end
35
33
 
36
34
  it "should read definition from two files" do
@@ -41,10 +39,10 @@ module BoxGrinder
41
39
  appliance_b = ApplianceConfig.new
42
40
  appliance_b.name = 'b'
43
41
 
44
- @helper.should_receive(:read_yaml).ordered.with('a.appl').and_return( appliance_a )
45
- @helper.should_receive(:read_yaml).ordered.with('./b.appl').and_return( appliance_b )
42
+ @helper.should_receive(:read_yaml).ordered.with('a.appl').and_return(appliance_a)
43
+ @helper.should_receive(:read_yaml).ordered.with('./b.appl').and_return(appliance_b)
46
44
 
47
- @helper.read_definitions( "a.appl" ).should == [ [ appliance_a, appliance_b ], appliance_a ]
45
+ @helper.read_definitions("a.appl").should == [[appliance_a, appliance_b], appliance_a]
48
46
  end
49
47
 
50
48
  it "should read definitions from a tree file structure" do
@@ -67,14 +65,41 @@ module BoxGrinder
67
65
  appliance_c2 = ApplianceConfig.new
68
66
  appliance_c2.name = 'c2'
69
67
 
70
- @helper.should_receive(:read_yaml).ordered.with('a.appl').and_return( appliance_a )
71
- @helper.should_receive(:read_yaml).ordered.with('./b2.appl').and_return( appliance_b2 )
72
- @helper.should_receive(:read_yaml).ordered.with('./c2.appl').and_return( appliance_c2 )
73
- @helper.should_receive(:read_yaml).ordered.with('./b1.appl').and_return( appliance_b1 )
74
- @helper.should_receive(:read_yaml).ordered.with('./c1.appl').and_return( appliance_c1 )
68
+ @helper.should_receive(:read_yaml).ordered.with('a.appl').and_return(appliance_a)
69
+ @helper.should_receive(:read_yaml).ordered.with('./b2.appl').and_return(appliance_b2)
70
+ @helper.should_receive(:read_yaml).ordered.with('./c2.appl').and_return(appliance_c2)
71
+ @helper.should_receive(:read_yaml).ordered.with('./b1.appl').and_return(appliance_b1)
72
+ @helper.should_receive(:read_yaml).ordered.with('./c1.appl').and_return(appliance_c1)
75
73
 
76
- @helper.read_definitions( "a.appl" ).should == [ [ appliance_a, appliance_b2, appliance_c2, appliance_b1, appliance_c1 ], appliance_a ]
74
+ @helper.read_definitions("a.appl").should == [[appliance_a, appliance_b2, appliance_c2, appliance_b1, appliance_c1], appliance_a]
77
75
  end
78
76
 
77
+ describe "read_yaml" do
78
+ it "should read default_repos and set to false" do
79
+ YAML.should_receive(:load_file).with('default_repos_false.appl').and_return({'default_repos'=>false})
80
+ @helper.read_yaml('default_repos_false.appl').default_repos.should == false
81
+ end
82
+
83
+ it "should read default_repos and set to true" do
84
+ YAML.should_receive(:load_file).with('default_repos_true.appl').and_return({'default_repos'=>true})
85
+ @helper.read_yaml('default_repos_true.appl').default_repos.should == true
86
+ end
87
+
88
+ it "should read default_repos but not set it" do
89
+ YAML.should_receive(:load_file).with('default_repos_empty.appl').and_return({})
90
+ @helper.read_yaml('default_repos_empty.appl').default_repos.should == nil
91
+ end
92
+
93
+ it "should read default_repos and raise" do
94
+ YAML.should_receive(:load_file).with('default_repos_bad.appl').and_return({'default_repos'=>'something'})
95
+
96
+ begin
97
+ @helper.read_yaml("default_repos_bad.appl")
98
+ raise 'Should raise'
99
+ rescue => e
100
+ e.message.should == 'default_repos_bad.appl: default_repos should be set to true or false'
101
+ end
102
+ end
103
+ end
79
104
  end
80
105
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: boxgrinder-core
3
3
  version: !ruby/object:Gem::Version
4
- hash: 25
4
+ hash: 31
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 1
10
- version: 0.1.1
9
+ - 2
10
+ version: 0.1.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Marek Goldmann
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-11-02 00:00:00 +01:00
18
+ date: 2010-11-11 00:00:00 +01:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -63,6 +63,7 @@ files:
63
63
  - Manifest
64
64
  - README
65
65
  - Rakefile
66
+ - boxgrinder-core.gemspec
66
67
  - lib/boxgrinder-core.rb
67
68
  - lib/boxgrinder-core/defaults.rb
68
69
  - lib/boxgrinder-core/helpers/appliance-config-helper.rb
@@ -77,7 +78,6 @@ files:
77
78
  - lib/boxgrinder-core/validators/errors.rb
78
79
  - lib/openhash/openhash.rb
79
80
  - rubygem-boxgrinder-core.spec
80
- - spec/Rakefile
81
81
  - spec/helpers/appliance-config-helper-spec.rb
82
82
  - spec/helpers/appliance-helper-spec.rb
83
83
  - spec/helpers/exec-helper-spec.rb
@@ -90,7 +90,6 @@ files:
90
90
  - spec/rspec/src/appliances/full.appl
91
91
  - spec/rspec/src/appliances/repo.appl
92
92
  - spec/validators/appliance-config-validator-spec.rb
93
- - boxgrinder-core.gemspec
94
93
  has_rdoc: true
95
94
  homepage: http://www.jboss.org/boxgrinder
96
95
  licenses: []
data/spec/Rakefile DELETED
@@ -1,28 +0,0 @@
1
- #
2
- # Copyright 2010 Red Hat, Inc.
3
- #
4
- # This is free software; you can redistribute it and/or modify it
5
- # under the terms of the GNU Lesser General Public License as
6
- # published by the Free Software Foundation; either version 3 of
7
- # the License, or (at your option) any later version.
8
- #
9
- # This software is distributed in the hope that it will be useful,
10
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
11
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12
- # Lesser General Public License for more details.
13
- #
14
- # You should have received a copy of the GNU Lesser General Public
15
- # License along with this software; if not, write to the Free
16
- # Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
17
- # 02110-1301 USA, or see the FSF site: http://www.fsf.org.
18
-
19
- require 'rake'
20
- require 'spec/rake/spectask'
21
-
22
- desc "Run all examples"
23
- Spec::Rake::SpecTask.new(:default) do |t|
24
- t.spec_files = FileList['**/*-spec.rb']
25
- t.rcov = true
26
- t.spec_opts = ['--colour', '--format', 'nested']
27
- t.rcov_opts = ['--exclude', 'spec']
28
- end