simp-rake-helpers 4.1.1 → 5.0.0

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/lib/simp/yum.rb ADDED
@@ -0,0 +1,209 @@
1
+ module Simp
2
+ # Various utilities for dealing with YUM repos
3
+ class Simp::YUM
4
+
5
+ class Error < StandardError
6
+ end
7
+
8
+ require 'tmpdir'
9
+ require 'facter'
10
+ require 'simp/rpm'
11
+
12
+ attr_reader :yum_conf
13
+
14
+ def initialize(yum_conf, initialize_cache = false)
15
+ if File.exist?(yum_conf)
16
+ @yum_conf = File.absolute_path(yum_conf)
17
+ else
18
+ raise(Error, "Could not find yum configuration at '#{yum_conf}'")
19
+ end
20
+
21
+ # Only need to look these up once!
22
+ @@yum_cmd ||= %x(which yum).strip
23
+ raise(Error, "Error: Could not find 'yum'. Please install and try again.") if @@yum_cmd.empty?
24
+
25
+ tmp_dir = ENV['TMPDIR'] || '/tmp'
26
+
27
+ # Ensure that yumdownloader uses a fresh cache directory for each run of a given platform
28
+ @@yum_cache ||= File.join(tmp_dir, 'yum_cache-' +
29
+ Facter.fact('operatingsystem').value + '-' +
30
+ Facter.fact('operatingsystemmajrelease').value + '-' +
31
+ Facter.fact('architecture').value)
32
+
33
+ FileUtils.mkdir_p(@@yum_cache)
34
+
35
+ @@yum ||= "TMPDIR=#{@@yum_cache} #{@@yum_cmd} -c #{@yum_conf}"
36
+
37
+ @@yumdownloader_cmd ||= %x(which yumdownloader).strip
38
+ raise(Error, "Error: Could not find 'yumdownloader'. Please install and try again.") if @@yumdownloader_cmd.empty?
39
+
40
+ @@yumdownloader ||= "TMPDIR=#{@@yum_cache} #{@@yumdownloader_cmd} -c #{@yum_conf}"
41
+
42
+ @@curl ||= %x(which curl).strip
43
+ raise(Error, "Error: Could not find 'curl'. Please install and try again.") if @@curl.empty?
44
+
45
+ @@file ||= %x(which file).strip
46
+ raise(Error, "Error: Could not find 'file'. Please install and try again.") if @@file.empty?
47
+
48
+ generate_cache if initialize_cache
49
+ end
50
+
51
+ def clean_yum_cache_dir
52
+ # Make this as safe as we can
53
+ if @@yum_cache =~ /yum_cache/
54
+ FileUtils.remove_entry(@@yum_cache)
55
+ end
56
+ end
57
+
58
+ def generate_cache
59
+ puts "Attempting to generate build-specific YUM cache from\n #{@yum_conf}"
60
+
61
+ %x(#{@@yum} clean all 2>/dev/null)
62
+ %x(#{@@yum} makecache 2>/dev/null)
63
+
64
+ unless $?.success?
65
+ puts "WARNING: Unable to generate build-specific YUM cache from #{@yum_conf}"
66
+ end
67
+ end
68
+
69
+ # Create a reasonable YUM config file
70
+ # * yum_tmp => The directory in which to store the YUM DB and any other temporary files
71
+ #
72
+ # Returns the location of the YUM configuration
73
+ def self.generate_yum_conf(yum_dir=nil)
74
+ yum_dir ||= Dir.pwd
75
+
76
+ raise(Error, "Could not find YUM data dir at '#{yum_dir}'") unless File.directory?(yum_dir)
77
+
78
+ yum_conf = nil
79
+ Dir.chdir(yum_dir) do
80
+ # Create the target directory
81
+ yum_tmp = File.join('packages','yum_tmp')
82
+
83
+ FileUtils.mkdir_p(yum_tmp) unless File.directory?(yum_tmp)
84
+
85
+ yum_cache = File.expand_path('yum_cache', yum_tmp)
86
+ FileUtils.mkdir_p(yum_cache) unless File.directory?(yum_cache)
87
+
88
+ yum_logfile = File.expand_path('yum.log', yum_tmp)
89
+
90
+ repo_dirs = []
91
+
92
+ # Add the global directory
93
+ repo_dirs << File.expand_path('../my_repos')
94
+
95
+ if File.directory?('my_repos')
96
+ # Add the local user repos if they exist
97
+ repo_dirs << File.expand_path('my_repos')
98
+ else
99
+ # Add the default Internet repos otherwise
100
+ repo_dirs << File.expand_path('repos')
101
+ end
102
+
103
+ # Create our YUM config file
104
+ yum_conf = File.expand_path('yum.conf', yum_tmp)
105
+
106
+ File.open(yum_conf, 'w') do |fh|
107
+ fh.puts <<-EOM.gsub(/^\s+/,'')
108
+ [main]
109
+ keepcache = 0
110
+ persistdir = #{yum_cache}
111
+ logfile = #{yum_logfile}
112
+ exactarch = 1
113
+ obsoletes = 0
114
+ gpgcheck = 0
115
+ plugins = 1
116
+ reposdir = #{repo_dirs.join(' ')}
117
+ assumeyes = 1
118
+ EOM
119
+ end
120
+ end
121
+
122
+ return yum_conf
123
+ end
124
+
125
+ # Returns the full name of the latest package of the given name
126
+ #
127
+ # Returns nil if nothing found
128
+ def available_package(rpm)
129
+ yum_output = %x(#{@@yum} -C list #{rpm} 2>/dev/null)
130
+
131
+ found_rpm = nil
132
+ if $?.success?
133
+ pkg_name, pkg_version = yum_output.lines.last.strip.split(/\s+/)
134
+ pkg_name, pkg_arch = pkg_name.split('.')
135
+
136
+ found_rpm = %(#{pkg_name}-#{pkg_version}.#{pkg_arch}.rpm)
137
+ end
138
+
139
+ return found_rpm
140
+ end
141
+
142
+ def get_sources(rpm)
143
+ sources = %x(#{@@yumdownloader} --urls #{File.basename(rpm,'.rpm')} 2>/dev/null).split("\n").grep(%r(\.rpm$))
144
+
145
+ raise(Error, "No sources found for '#{rpm}'") if sources.empty?
146
+
147
+ return sources
148
+ end
149
+
150
+ def get_source(rpm, arch=nil)
151
+ sources = get_sources(rpm)
152
+
153
+ if arch
154
+ native_sources = sources.grep(%r((#{arch}|noarch)\.rpm$))
155
+
156
+ if native_sources.size > 1
157
+ # We can't have more than one native source
158
+ raise(Error, "More than one native source found for #{rpm}:\n * #{native_sources.join("\n *")}")
159
+ end
160
+ end
161
+
162
+ return sources.first
163
+ end
164
+
165
+ def download(rpm, opts={:target_dir => nil})
166
+ target_dir = Dir.pwd
167
+
168
+ if opts[:target_dir]
169
+ target_dir = File.absolute_path(opts[:target_dir])
170
+ end
171
+
172
+ Dir.mktmpdir do |dir|
173
+ Dir.chdir(dir) do
174
+ # If just passed an RPM name, use yumdownloader
175
+ if rpm !~ %r(://)
176
+ # In case someone passed a path
177
+ rpm_name = rpm.split(File::SEPARATOR).last
178
+
179
+ #FIXME Should really report stderr output so user can
180
+ # diagnose the problem
181
+ %x(#{@@yumdownloader} #{File.basename(rpm_name, '.rpm')} 2>/dev/null)
182
+ else
183
+ # If passed a URL, curl it and fall back to yumdownloader
184
+ rpm_name = rpm.split('/').last
185
+
186
+ %x(#{@@curl} -L --max-redirs 10 -s -o #{rpm_name} -k #{rpm})
187
+
188
+ # Check what we've just downloaded
189
+ if !(File.exist?(rpm_name) || %x(#{@@file} #{rpm_name}).include('RPM'))
190
+ # Fall back on yumdownloader
191
+ FileUtils.rm_f(rpm_name)
192
+
193
+ %x(#{@@yumdownloader} #{File.basename(rpm_name, '.rpm')} 2> /dev/null)
194
+ end
195
+ end
196
+
197
+ rpms = Dir.glob('*.rpm')
198
+ raise(Error, "Could not find any remote RPMs for #{rpm}") if rpms.empty?
199
+
200
+ # Copy over all of the RPMs
201
+ rpms.each do |new_rpm|
202
+ FileUtils.mkdir_p(target_dir)
203
+ FileUtils.mv(new_rpm, target_dir)
204
+ end
205
+ end
206
+ end
207
+ end
208
+ end
209
+ end
@@ -0,0 +1,42 @@
1
+ Name: testpackage
2
+ Version: 1
3
+ Release: 0%{?dist}
4
+ Summary: dummy test package #2
5
+ BuildArch: noarch
6
+
7
+ License: Apache-2.0
8
+ URL: http://foo.bar
9
+
10
+ %description
11
+ A dummy package used to test Simp::RPM methods
12
+
13
+ %prep
14
+ exit 0
15
+
16
+ %build
17
+ exit 0
18
+
19
+
20
+ %install
21
+ exit 0
22
+
23
+ %clean
24
+ exit 0
25
+
26
+ %files
27
+ %doc
28
+
29
+
30
+ %package doc
31
+ Summary: Documentation for dummy test package #2
32
+ License: Apache-2.0
33
+ Version: 1.0.1
34
+ Release: 2
35
+
36
+ %description doc
37
+ Documentation for the 2nd dummy package used to test Simp::RPM methods
38
+
39
+
40
+ %changelog
41
+ * Wed Jun 10 2015 nobody
42
+ - some comment
@@ -1,4 +1,4 @@
1
- Name: testpackage-multi-1
1
+ Name: testpackage
2
2
  Version: 1
3
3
  Release: 0
4
4
  Summary: dummy test package #2
@@ -27,12 +27,14 @@ exit 0
27
27
  %doc
28
28
 
29
29
 
30
- %package testpackage-multi-2
31
- Summary: dummy test package #2
30
+ %package doc
31
+ Summary: Documentation for dummy test package #2
32
32
  License: Apache-2.0
33
+ Version: 1.0.1
34
+ Release: 2
33
35
 
34
- %description testpackage-multi-2
35
- A dummy package used to test Simp::RPM methods
36
+ %description doc
37
+ Documentation for the 2nd dummy package used to test Simp::RPM methods
36
38
 
37
39
 
38
40
  %changelog
@@ -3,48 +3,323 @@ require 'spec_helper'
3
3
 
4
4
  describe Simp::RPM do
5
5
  before :all do
6
+ Simp::RPM.stubs(:system_dist).returns('.testdist')
7
+
6
8
  dir = File.expand_path( 'files', File.dirname( __FILE__ ) )
7
9
  @spec_file = File.join( dir, 'testpackage.spec' )
8
10
  @spec_obj = Simp::RPM.new( @spec_file )
11
+
9
12
  @m_spec_file = File.join( dir, 'testpackage-multi.spec' )
10
- @m_spec_obj = Simp::RPM.new( @spec_file )
13
+ @m_spec_obj = Simp::RPM.new( @m_spec_file )
14
+
11
15
  @rpm_file = File.join( dir, 'testpackage-1-0.noarch.rpm' )
12
- @rpm_obj = Simp::RPM.new( @spec_file )
16
+ @rpm_obj = Simp::RPM.new( @rpm_file )
17
+
18
+ @d_spec_file = File.join( dir, 'testpackage-dist.spec' )
19
+ @d_spec_obj = Simp::RPM.new( @d_spec_file )
20
+
21
+ @d_rpm_file = File.join( dir, 'testpackage-1-0.el7.noarch.rpm' )
22
+ @d_rpm_obj = Simp::RPM.new( @d_rpm_file )
23
+
24
+ #FIXME
25
+ # @signed_rpm_file = File.join( dir, 'testpackage-1-0.noarch.rpm' )
26
+ # @signed_rpm_obj = Simp::RPM.new( @signed_rpm_file )
13
27
  end
14
28
 
15
- describe "#initialize" do
29
+ describe 'class #initialize' do
16
30
 
17
- it "initializes w/RPM (smoke test)" do
31
+ it 'initializes w/unsigned RPM (smoke test)' do
18
32
  expect( @rpm_obj.class ).to eq Simp::RPM
19
33
  end
20
34
 
21
- it "initializes w/spec file (smoke test)" do
35
+ #FIXME
36
+ # it 'initializes w/signed RPM (smoke test)' do
37
+ # expect( @signed_rpm_obj.class ).to eq Simp::RPM
38
+ # end
39
+
40
+ it 'initializes w/spec file (smoke test)' do
22
41
  expect( @spec_obj.class ).to eq Simp::RPM
23
42
  end
24
43
 
25
- it "initializes w/multi-package spec file (smoke test)" do
44
+ it 'initializes w/multi-package spec file (smoke test)' do
26
45
  expect( @m_spec_obj.class ).to eq Simp::RPM
27
46
  end
28
47
 
48
+ it 'fails to initialize when rpm source cannot be opened' do
49
+ expect{ Simp::RPM.new('/does/not/exist/') }.to raise_error(RuntimeError)
50
+ end
51
+ end
52
+
53
+ describe 'getter methods' do
54
+ context '#packages' do
55
+ it 'returns packages' do
56
+ expect( @rpm_obj.packages ).to eq ['testpackage']
57
+ # expect( @signed_rpm_obj.packages ).to eq ['testpackage']
58
+ expect( @spec_obj.packages ).to eq ['testpackage']
59
+ expect( @m_spec_obj.packages ).to eq ['testpackage','testpackage-doc']
60
+ end
61
+ end
62
+
63
+ context '#basename' do
64
+ it 'returns basename' do
65
+ expect( @rpm_obj.basename ).to eq 'testpackage'
66
+ # expect( @signed_rpm_obj.basename ).to eq 'testpackage'
67
+ expect( @spec_obj.basename ).to eq 'testpackage'
68
+ expect( @m_spec_obj.basename ).to eq 'testpackage'
69
+ expect( @m_spec_obj.basename('testpackage') ).to eq 'testpackage'
70
+ expect( @m_spec_obj.basename('testpackage-doc') ).to eq 'testpackage-doc'
71
+ end
72
+
73
+ it 'fails when invalid package specified' do
74
+ expect { @rpm_obj.basename('oops') }.to raise_error(ArgumentError)
75
+ # expect { @signed_rpm_obj.basename('oops') }.to raise_error(ArgumentError)
76
+ expect { @spec_obj.basename('oops') }.to raise_error(ArgumentError)
77
+ expect { @m_spec_obj.basename('oops') }.to raise_error(ArgumentError)
78
+ end
79
+ end
80
+
81
+ context '#version' do
82
+ it 'returns version' do
83
+ expect( @rpm_obj.version ).to eq '1'
84
+ # expect( @signed_rpm_obj.version ).to eq '1'
85
+ expect( @spec_obj.version ).to eq '1'
86
+ expect( @m_spec_obj.version ).to eq '1'
87
+ expect( @m_spec_obj.version('testpackage') ).to eq '1'
88
+ expect( @m_spec_obj.version('testpackage-doc') ).to eq '1.0.1'
89
+ end
90
+
91
+ it 'fails when invalid package specified' do
92
+ expect { @rpm_obj.version('oops') }.to raise_error(ArgumentError)
93
+ # expect { @signed_rpm_obj.version('oops') }.to raise_error(ArgumentError)
94
+ expect { @spec_obj.version('oops') }.to raise_error(ArgumentError)
95
+ expect { @m_spec_obj.version('oops') }.to raise_error(ArgumentError)
96
+ end
97
+ end
98
+
99
+ context '#release' do
100
+ it 'returns release' do
101
+ expect( @rpm_obj.release ).to eq '0'
102
+ # expect( @signed_rpm_obj.release ).to eq '0'
103
+ expect( @spec_obj.release ).to eq '0'
104
+ expect( @m_spec_obj.release ).to eq '0'
105
+ expect( @m_spec_obj.release('testpackage') ).to eq '0'
106
+ expect( @m_spec_obj.release('testpackage-doc') ).to eq '2'
107
+ end
108
+
109
+ it 'fails when invalid package specified' do
110
+ expect { @rpm_obj.release('oops') }.to raise_error(ArgumentError)
111
+ # expect { @signed_rpm_obj.release('oops') }.to raise_error(ArgumentError)
112
+ expect { @spec_obj.release('oops') }.to raise_error(ArgumentError)
113
+ expect { @m_spec_obj.release('oops') }.to raise_error(ArgumentError)
114
+ end
115
+ end
116
+
117
+ context '#full_version' do
118
+ it 'returns full_version' do
119
+ expect( @rpm_obj.full_version ).to eq '1-0'
120
+ # expect( @signed_rpm_obj.full_version ).to eq '1-0'
121
+ expect( @spec_obj.full_version ).to eq '1-0'
122
+ expect( @m_spec_obj.full_version ).to eq '1-0'
123
+ expect( @m_spec_obj.full_version('testpackage') ).to eq '1-0'
124
+ expect( @m_spec_obj.full_version('testpackage-doc') ).to eq '1.0.1-2'
125
+ end
126
+
127
+ it 'fails when invalid package specified' do
128
+ expect { @rpm_obj.full_version('oops') }.to raise_error(ArgumentError)
129
+ # expect { @signed_rpm_obj.full_version('oops') }.to raise_error(ArgumentError)
130
+ expect { @spec_obj.full_version('oops') }.to raise_error(ArgumentError)
131
+ expect { @m_spec_obj.full_version('oops') }.to raise_error(ArgumentError)
132
+ end
133
+ end
134
+
135
+ context '#name' do
136
+ it 'returns name' do
137
+ expect( @rpm_obj.name ).to eq 'testpackage-1-0'
138
+ # expect( @signed_rpm_obj.name ).to eq 'testpackage-1-0'
139
+ expect( @spec_obj.name ).to eq 'testpackage-1-0'
140
+ expect( @m_spec_obj.name ).to eq 'testpackage-1-0'
141
+ expect( @m_spec_obj.name('testpackage') ).to eq 'testpackage-1-0'
142
+ expect( @m_spec_obj.name('testpackage-doc') ).to eq 'testpackage-doc-1.0.1-2'
143
+ end
144
+
145
+ it 'fails when invalid package specified' do
146
+ expect { @rpm_obj.name('oops') }.to raise_error(ArgumentError)
147
+ # expect { @signed_rpm_obj.name('oops') }.to raise_error(ArgumentError)
148
+ expect { @spec_obj.name('oops') }.to raise_error(ArgumentError)
149
+ expect { @m_spec_obj.name('oops') }.to raise_error(ArgumentError)
150
+ end
151
+ end
152
+
153
+ context '#arch' do
154
+ it 'returns arch' do
155
+ expect( @rpm_obj.arch ).to eq 'noarch'
156
+ # expect( @signed_rpm_obj.arch ).to eq 'noarch'
157
+ expect( @spec_obj.arch ).to eq 'noarch'
158
+ expect( @m_spec_obj.arch ).to eq 'noarch'
159
+ expect( @m_spec_obj.arch('testpackage') ).to eq 'noarch'
160
+ expect( @m_spec_obj.arch('testpackage-doc') ).to eq 'noarch'
161
+ end
162
+
163
+ it 'fails when invalid package specified' do
164
+ expect { @rpm_obj.arch('oops') }.to raise_error(ArgumentError)
165
+ # expect { @signed_rpm_obj.arch('oops') }.to raise_error(ArgumentError)
166
+ expect { @spec_obj.arch('oops') }.to raise_error(ArgumentError)
167
+ expect { @m_spec_obj.arch('oops') }.to raise_error(ArgumentError)
168
+ end
169
+ end
170
+
171
+ context '#signature' do
172
+ it 'returns signature' do
173
+ expect( @rpm_obj.signature ).to be nil
174
+ # expect( @signed_rpm_obj.signature ).to eq 'xxxx'
175
+ expect( @spec_obj.signature ).to be nil
176
+ expect( @m_spec_obj.signature ).to be nil
177
+ expect( @m_spec_obj.signature('testpackage') ).to be nil
178
+ expect( @m_spec_obj.signature('testpackage-doc') ).to be nil
179
+ end
180
+
181
+ it 'fails when invalid package specified' do
182
+ expect { @rpm_obj.signature('oops') }.to raise_error(ArgumentError)
183
+ # expect { @signed_rpm_obj.signature('oops') }.to raise_error(ArgumentError)
184
+ expect { @spec_obj.signature('oops') }.to raise_error(ArgumentError)
185
+ expect { @m_spec_obj.signature('oops') }.to raise_error(ArgumentError)
186
+ end
187
+ end
188
+
189
+ context '#rpm_name' do
190
+ it 'returns rpm_name' do
191
+ expect( @rpm_obj.rpm_name ).to eq 'testpackage-1-0.noarch.rpm'
192
+ # expect( @signed_rpm_obj.rpm_name ).to eq 'testpackage-1-0.noarch.rpm'
193
+ expect( @spec_obj.rpm_name ).to eq 'testpackage-1-0.noarch.rpm'
194
+ expect( @m_spec_obj.rpm_name ).to eq 'testpackage-1-0.noarch.rpm'
195
+ expect( @m_spec_obj.rpm_name('testpackage') ).to eq 'testpackage-1-0.noarch.rpm'
196
+ expect( @m_spec_obj.rpm_name('testpackage-doc') ).to eq 'testpackage-doc-1.0.1-2.noarch.rpm'
197
+ end
198
+
199
+ it 'fails when invalid package specified' do
200
+ expect { @rpm_obj.rpm_name('oops') }.to raise_error(ArgumentError)
201
+ # expect { @signed_rpm_obj.rpm_name('oops') }.to raise_error(ArgumentError)
202
+ expect { @spec_obj.rpm_name('oops') }.to raise_error(ArgumentError)
203
+ expect { @m_spec_obj.rpm_name('oops') }.to raise_error(ArgumentError)
204
+ end
205
+ end
206
+
207
+ context '#has_dist_tag?' do
208
+ it 'returns has_dist_tag?' do
209
+ expect( @rpm_obj.has_dist_tag?).to eq false
210
+ # expect( @signed_rpm_obj.has_dist_tag?).to eq false
211
+ expect( @d_rpm_obj.has_dist_tag?).to eq true
212
+ expect( @spec_obj.has_dist_tag?).to eq false
213
+ expect( @d_spec_obj.has_dist_tag?).to eq true
214
+ end
215
+
216
+ it 'fails when invalid package specified' do
217
+ expect { @rpm_obj.has_dist_tag?('oops') }.to raise_error(ArgumentError)
218
+ # expect { @signed_rpm_obj.has_dist_tag?('oops') }.to raise_error(ArgumentError)
219
+ expect { @d_rpm_obj.has_dist_tag?('oops') }.to raise_error(ArgumentError)
220
+ expect { @spec_obj.has_dist_tag?('oops') }.to raise_error(ArgumentError)
221
+ expect { @m_spec_obj.has_dist_tag?('oops') }.to raise_error(ArgumentError)
222
+ expect { @d_spec_obj.has_dist_tag?('oops') }.to raise_error(ArgumentError)
223
+ end
224
+ end
225
+
226
+ context '#dist' do
227
+ it 'returns dist' do
228
+ expect( @rpm_obj.dist ).to eq '.testdist'
229
+ expect( @d_rpm_obj.dist ).to eq '.el7'
230
+ expect( @spec_obj.dist ).to eq '.testdist'
231
+ expect( @d_spec_obj.dist ).to eq '.testdist'
232
+ end
233
+
234
+ it 'fails when invalid package specified' do
235
+ expect { @rpm_obj.dist('oops') }.to raise_error(ArgumentError)
236
+ # expect { @signed_rpm_obj.dist('oops') }.to raise_error(ArgumentError)
237
+ expect { @d_rpm_obj.dist('oops') }.to raise_error(ArgumentError)
238
+ expect { @spec_obj.dist('oops') }.to raise_error(ArgumentError)
239
+ expect { @m_spec_obj.dist('oops') }.to raise_error(ArgumentError)
240
+ expect { @d_spec_obj.dist('oops') }.to raise_error(ArgumentError)
241
+ end
242
+ end
243
+ end
244
+
245
+ =begin
246
+ describe '#newer? and #package_newer?' do
247
+ end
248
+
249
+ describe '#valid_package?' do
250
+ end
251
+
252
+ describe '.copy_wo_vcs?' do
29
253
  end
30
254
 
31
- describe ".get_info" do
32
- it "extracts correct information from a .spec file" do
255
+ describe '.execute?' do
256
+ end
257
+ =end
258
+
259
+
260
+ describe '.get_info' do
261
+ it 'extracts correct information from a .spec file' do
33
262
  info = Simp::RPM.get_info(@spec_file)
34
- expect( info.fetch( :name ) ).to eq 'testpackage'
263
+ expect( info.fetch( :basename ) ).to eq 'testpackage'
35
264
  expect( info.fetch( :version ) ).to eq '1'
265
+ expect( info.fetch( :release ) ).to eq '0'
266
+ expect( info.fetch( :full_version ) ).to eq '1-0'
267
+ expect( info.fetch( :name ) ).to eq 'testpackage-1-0'
268
+ expect( info.fetch( :arch ) ).to eq 'noarch'
269
+ expect( info[:signature] ).to be nil
270
+ expect( info.fetch( :rpm_name ) ).to eq 'testpackage-1-0.noarch.rpm'
36
271
  end
37
272
 
38
- it "extracts correct information from an .rpm file" do
273
+ it 'extracts correct information from an .rpm file' do
39
274
  info = Simp::RPM.get_info(@rpm_file)
40
- expect( info.fetch( :name ) ).to eq 'testpackage'
275
+ expect( info.fetch( :basename ) ).to eq 'testpackage'
41
276
  expect( info.fetch( :version ) ).to eq '1'
277
+ expect( info.fetch( :release ) ).to eq '0'
278
+ expect( info.fetch( :full_version ) ).to eq '1-0'
279
+ expect( info.fetch( :name ) ).to eq 'testpackage-1-0'
280
+ expect( info.fetch( :arch ) ).to eq 'noarch'
281
+ expect( info[:signature] ).to be nil
282
+ expect( info.fetch( :rpm_name ) ).to eq 'testpackage-1-0.noarch.rpm'
42
283
  end
43
284
 
44
- it "extracts correct information from the first entry from a multi-package .spec file" do
285
+ it 'extracts correct information for all entries from a multi-package .spec file' do
45
286
  info = Simp::RPM.get_info(@m_spec_file)
46
- expect( info.fetch( :name ) ).to eq 'testpackage-multi-1'
47
- expect( info.fetch( :version ) ).to eq '1'
287
+ expect( info.size ).to eq 2
288
+ expect( info[0].fetch( :basename ) ).to eq 'testpackage'
289
+ expect( info[0].fetch( :version ) ).to eq '1'
290
+ expect( info[0].fetch( :release ) ).to eq '0'
291
+ expect( info[0].fetch( :full_version ) ).to eq '1-0'
292
+ expect( info[0].fetch( :name ) ).to eq 'testpackage-1-0'
293
+ expect( info[0].fetch( :arch ) ).to eq 'noarch'
294
+ expect( info[0][:signature] ).to be nil
295
+ expect( info[0].fetch( :rpm_name ) ).to eq 'testpackage-1-0.noarch.rpm'
296
+
297
+ expect( info[1].fetch( :basename ) ).to eq 'testpackage-doc'
298
+ expect( info[1].fetch( :version ) ).to eq '1.0.1'
299
+ expect( info[1].fetch( :release ) ).to eq '2'
300
+ expect( info[1].fetch( :full_version ) ).to eq '1.0.1-2'
301
+ expect( info[1].fetch( :name ) ).to eq 'testpackage-doc-1.0.1-2'
302
+ expect( info[1].fetch( :arch ) ).to eq 'noarch'
303
+ expect( info[1][:signature] ).to be nil
304
+ expect( info[1].fetch( :rpm_name ) ).to eq 'testpackage-doc-1.0.1-2.noarch.rpm'
305
+ end
306
+
307
+ it 'fails to when rpm source cannot be opened ' do
308
+ expect{ Simp::RPM.get_info('/does/not/exist/') }.to raise_error(RuntimeError)
48
309
  end
49
310
  end
311
+
312
+ =begin
313
+ describe '.indent' do
314
+ end
315
+
316
+ describe '.create_rpm_build_metadata' do
317
+ end
318
+
319
+ describe '.load_key' do
320
+ end
321
+
322
+ describe '.signrpm' do
323
+ end
324
+ =end
50
325
  end