polisher 0.8.1 → 0.9.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cde437d4b30595528a08d2127ed32d64458b9910
4
- data.tar.gz: 2124dcabfc9cfda82bc6a481163e17e0ef0e6774
3
+ metadata.gz: 407eada91bec23c5a2cbd22754e8b726be64a761
4
+ data.tar.gz: 0de716cd95ae868f6800743752b59a537aedef9f
5
5
  SHA512:
6
- metadata.gz: 46ed5242624caa97426ee83c6b37a21f14253ceab0ccaa026e2154c8936d9594e79c0383cfdb409ddc6a045129a62154b7ee5c695178ac402a9562b858644292
7
- data.tar.gz: 029682eb264075bf04c12a8922bc58a3da54622d48bdac446501c87e58b9fe70a87e2ad3bb798c15f2b82a4b8278054e9bc65174b41c0497c078113a4b4184c6
6
+ metadata.gz: ae609d0fd5197edd33fdef131c8d142f6b0ab5667f823232d457c84a1ab68e7cd99c358a582b45de25d2c95c020889cecf6dc5f005e0fa3b66f8a642006b3111
7
+ data.tar.gz: 74548b607ed70c04d835ecf254d7bde099b849f2d54471f12ff88f2737270c725e02ea191b242b62da44716e4d2d99687084ea4122252f24972bc826bfdc0d7a
data/README.md CHANGED
@@ -1,25 +1,32 @@
1
- Polisher
2
- ======================
1
+ # Polisher
2
+
3
+ [![Gem Version](https://badge.fury.io/rb/polisher.png)](http://badge.fury.io/rb/polisher)
4
+ [![Build Status](https://travis-ci.org/ManageIQ/polisher.png)](https://travis-ci.org/ManageIQ/polisher)
5
+ [![Code Climate](https://codeclimate.com/github/ManageIQ/polisher.png)](https://codeclimate.com/github/ManageIQ/polisher)
6
+ [![Coverage Status](https://coveralls.io/repos/ManageIQ/polisher/badge.png?branch=master)](https://coveralls.io/r/ManageIQ/polisher)
7
+ [![Dependency Status](https://gemnasium.com/ManageIQ/polisher.png)](https://gemnasium.com/ManageIQ/polisher)
8
+
9
+
3
10
  Ruby Post-Publishing Processor - Polish your Ruby projects with ease!
4
11
 
5
12
  <pre>
6
- .77 7.
7
- +$ =~
8
- +?ZZZII .Z$$$$$$
9
- $~~:,.$Z $~~:,.7
10
- ?~:,, .......................................redmine...............=~:,,.
11
- ~::,..rails.......................................................~~:,.
12
- ~~:,, .........rack................json...........................=~:,,
13
- =~::,.....................sass............activerecord..............~::,.
14
- ~~:,.=....eruby...................................................~~:,.~
15
- +~:,,.................haml......................eventmachine.......?~::,.
16
- ~::,. ........................rspec................................~~:,.:
17
- =~:,,:.........................................bundler.............~~:,,
18
- ~I7I..........rvm..................rake...........................,~7?II
19
- $$$$$$$O $$$$$$$$
20
- .ZO7Z, .+ZIZ.
21
- 7 7
22
- $I ZI
13
+ .77 7.
14
+ +$ =~
15
+ +?ZZZII .Z$$$$$$
16
+ $~~:,.$Z $~~:,.7
17
+ ?~:,, .......................................redmine...............=~:,,.
18
+ ~::,..rails.......................................................~~:,.
19
+ ~~:,, .........rack................json...........................=~:,,
20
+ =~::,.....................sass............activerecord..............~::,.
21
+ ~~:,.=....eruby...................................................~~:,.~
22
+ +~:,,.................haml......................eventmachine.......?~::,.
23
+ ~::,. ........................rspec................................~~:,.:
24
+ =~:,,:.........................................bundler.............~~:,,
25
+ ~I7I..........rvm..................rake...........................,~7?II
26
+ $$$$$$$O $$$$$$$$
27
+ .ZO7Z, .+ZIZ.
28
+ 7 7
29
+ $I ZI
23
30
  </pre>
24
31
 
25
32
  Polisher is a Ruby module and set of utilities aimed to assisting the post-publishing
@@ -55,7 +62,6 @@ Various polisher subcomponents depend on various command line utilities, these i
55
62
  * /usr/bin/git - to checkout git repos
56
63
  * /usr/bin/koji - to query and build against koji
57
64
  * /usr/bin/yum - to query yum
58
- * /usr/bin/sed - to manipulated metadata
59
65
  * /usr/bin/md5sum - to generate required metadata
60
66
  * /usr/bin/fedpkg - to query fedora
61
67
 
@@ -70,7 +76,7 @@ To install the latest release and all ruby dependencies simply run:
70
76
  gem install polisher
71
77
 
72
78
  See the bin/ directory for all executables available, pass '-h' to any to
73
- see specific command line options. To run any command from a local git checkout
79
+ see specific command line options. To run any command from a local git checkout
74
80
  of polisher, run the following beforehand:
75
81
 
76
82
  export RUBYLIB='lib'
@@ -100,6 +106,16 @@ Simply specify the name of the gem to update like so:
100
106
  Alternatively if "-u" is specified with a Fedora username, all the packages the
101
107
  user owns will be checked out and updated.
102
108
 
109
+ ### git_gem_diff
110
+
111
+ A script that does a source comparison between a gem maintained in git against
112
+ its corresponding rubygems.org gem.
113
+
114
+ Simply specify the url to the git repo and the tool will automatically detect
115
+ the version of the gem to retrieve and run the diff on
116
+
117
+ git_gem_diff.rb -g https://github.com/ManageIQ/polisher.git
118
+
103
119
  ### ruby_rpm_spec_updater
104
120
 
105
121
  A tool to update a given ruby gem or application based rpm spec to the specified
@@ -111,10 +127,15 @@ to STDOUT.
111
127
 
112
128
  ruby_rpm_spec_updater.rb ~/rpmbuild/SPECS/rubygem-rails.spec rails-5.0.0.gem
113
129
 
114
- ### Other
130
+ ### check_ruby_spec
131
+
132
+ A tool to compare the given ruby based rpm spec against the specified source
133
+ and/or the corresponding gem retrieved from rubygems.org
134
+
135
+ check_ruby_spec.rb ~/rpmbuild/SPECS/rubygem-polisher.spec
115
136
 
116
- There are various other tools and utilities provided and in conceptual phases.
117
- See the bin dir and TODO document for more detailed listing.
137
+ This will retrieve the gem and check the spec for consistency, reporting
138
+ any discrepancies.
118
139
 
119
140
  ### polisher
120
141
 
data/Rakefile CHANGED
@@ -5,11 +5,9 @@
5
5
 
6
6
  begin
7
7
  require "rspec/core/rake_task"
8
- desc "Run all specs"
9
- RSpec::Core::RakeTask.new(:spec) do |spec|
10
- spec.pattern = 'specs/**/*_spec.rb'
11
- spec.rspec_opts = ['--backtrace', '-fd', '-c']
12
- end
8
+ RSpec::Core::RakeTask.new(:spec)
9
+ task :test => :spec
10
+ task :default => :spec
13
11
  rescue LoadError
14
12
  end
15
13
 
@@ -21,20 +21,21 @@ require 'polisher/gemfile'
21
21
 
22
22
  ##########################################################
23
23
 
24
- conf = { :gemfile => './Gemfile',
25
- :gemspec => nil,
26
- :gemname => nil,
27
- :groups => [],
28
- :devel_deps => false,
29
- :highlight_missing => false,
30
- :check_fedora => false,
31
- :check_git => false,
32
- :check_koji => false,
33
- :check_rhn => false,
34
- :check_yum => false,
35
- :check_bugzilla => false,
36
- :check_errata => false,
37
- :check_bodhi => false}
24
+ conf = {:format => nil,
25
+ :gemfile => './Gemfile',
26
+ :gemspec => nil,
27
+ :gemname => nil,
28
+ :groups => [],
29
+ :devel_deps => false,
30
+ :highlight_missing => false,
31
+ :check_fedora => false,
32
+ :check_git => false,
33
+ :check_koji => false,
34
+ :check_rhn => false,
35
+ :check_yum => false,
36
+ :check_bugzilla => false,
37
+ :check_errata => false,
38
+ :check_bodhi => false}
38
39
 
39
40
  optparse = OptionParser.new do |opts|
40
41
  opts.on('-h', '--help', 'Display this help screen') do
@@ -42,6 +43,10 @@ optparse = OptionParser.new do |opts|
42
43
  exit
43
44
  end
44
45
 
46
+ opts.on("--format val", 'Format which to render output') do |f|
47
+ conf[:format] = f
48
+ end
49
+
45
50
  opts.on('--gemfile file', 'Location of the gemfile to parse') do |g|
46
51
  conf[:gemfile] = g
47
52
  end
@@ -127,22 +132,83 @@ targets << Polisher::VersionChecker::BODHI_TARGET if conf[:check_bodhi]
127
132
  targets = Polisher::VersionChecker::ALL_TARGETS if targets.empty?
128
133
  Polisher::VersionChecker.check targets
129
134
 
135
+ @format = conf[:format]
136
+
137
+ def format_dep(dep)
138
+ if @format.nil?
139
+ dep.to_s.blue.bold
140
+ elsif @format == 'xml'
141
+ "<#{dep}>"
142
+ elsif @format == 'json'
143
+ "'#{dep}':{"
144
+ end
145
+ end
146
+
147
+ def format_end_dep(dep)
148
+ if @format.nil?
149
+ "\n"
150
+ elsif @format == 'xml'
151
+ "\n</#{dep}>"
152
+ elsif @format == 'json'
153
+ "\n}"
154
+ end
155
+ end
156
+
157
+ def format_tgt(tgt)
158
+ if @format.nil?
159
+ "#{tgt.to_s.red.bold} "
160
+ elsif @format == 'xml'
161
+ "<#{tgt}/>"
162
+ elsif @format == 'json'
163
+ "'#{tgt}':null,"
164
+ end
165
+ end
166
+
167
+ def format_tgt_with_versions(tgt, versions)
168
+ if @format.nil?
169
+ "#{tgt.to_s.green.bold}: #{versions.join(', ').yellow} "
170
+ elsif @format == 'xml'
171
+ "<#{tgt}>#{versions.join(', ')}</#{tgt}>"
172
+ elsif @format == 'json'
173
+ "'#{tgt}':['#{versions.join('\', \'')}'],"
174
+ end
175
+ end
176
+
177
+ def print_header
178
+ if @format == 'xml'
179
+ puts '<dependencies>'
180
+ elsif @format == 'json'
181
+ puts '{'
182
+ end
183
+ end
184
+
185
+ def print_footer
186
+ if @format == 'xml'
187
+ puts "</dependencies>"
188
+ elsif @format == 'json'
189
+ puts "}"
190
+ end
191
+ end
192
+
130
193
  def print_dep(tgt, dep, versions)
131
194
  # XXX little bit hacky but works for now
132
195
  @last_dep ||= nil
133
196
  if @last_dep != dep
134
- puts "\n#{dep}".blue.bold
197
+ puts format_end_dep(@last_dep) unless @last_dep.nil?
198
+ puts format_dep(dep)
135
199
  @last_dep = dep
136
200
  end
137
201
 
138
202
  if versions.nil? || versions.empty? ||
139
203
  versions.size == 1 && versions[0].nil?
140
- print " #{tgt.to_s.red.bold} "
204
+ print format_tgt(tgt)
141
205
  else
142
- print " #{tgt.to_s.green.bold}: #{versions.join(', ').yellow}"
206
+ print format_tgt_with_versions(tgt, versions)
143
207
  end
144
208
  end
145
209
 
210
+ print_header
211
+
146
212
  if conf[:gemname]
147
213
  gem = Polisher::Gem.retrieve(conf[:gemname])
148
214
  gem.versions(:recursive => true, :dev_deps => true) do |tgt, dep, versions|
@@ -169,3 +235,6 @@ elsif conf[:gemfile]
169
235
  print_dep(tgt, dep, versions)
170
236
  end
171
237
  end
238
+
239
+ puts format_end_dep(@last_dep) unless @last_dep.nil? # XXX
240
+ print_footer
@@ -3,14 +3,6 @@
3
3
  # Licensed under the MIT license
4
4
  # Copyright (C) 2013-2014 Red Hat, Inc.
5
5
 
6
- class Object
7
- def eigenclass
8
- class << self
9
- self
10
- end
11
- end
12
- end
13
-
14
6
  module ConfHelpers
15
7
  # Defines a 'config attribute' or attribute on the class
16
8
  # which this is defined in. Accessors to the single shared
@@ -33,8 +25,8 @@ module ConfHelpers
33
25
  nvar = "@#{name}".intern
34
26
  current = self.instance_variable_get(nvar)
35
27
  envk = "POLISHER_#{name.to_s.upcase}"
36
- self.instance_variable_set(nvar, default) unless current
37
- self.instance_variable_set(ENV[envk]) if ENV.has_key?(envk)
28
+ instance_variable_set(nvar, default) unless current
29
+ instance_variable_set(nvar, ENV[envk]) if ENV.key?(envk)
38
30
  # TODO also allow vars to be able to be set from a conf file
39
31
  self.instance_variable_set(nvar, args.first) unless args.empty?
40
32
  self.instance_variable_get(nvar)
@@ -46,8 +38,6 @@ module ConfHelpers
46
38
  end
47
39
  end
48
40
 
49
- require 'polisher/rpm/spec'
50
-
51
41
  class String
52
42
  # Return bool indicating if self is a path to a gem
53
43
  def gem?
@@ -68,6 +58,7 @@ class String
68
58
  # macro correspondents. If no rpm macro is specified macro will
69
59
  # simply be removed
70
60
  def unrpmize
61
+ require 'polisher/rpm/spec'
71
62
  fmm = Polisher::RPM::Spec::FILE_MACRO_MATCHERS
72
63
  fmr = Polisher::RPM::Spec::FILE_MACRO_REPLACEMENTS
73
64
  f = fmm.inject(self) { |file, matcher| file.gsub(matcher, '') }
@@ -78,6 +69,7 @@ class String
78
69
  # Replace all occurrances of non-rpm macro strings in self
79
70
  # with their macro correspondences
80
71
  def rpmize
72
+ require 'polisher/rpm/spec'
81
73
  fmr = Polisher::RPM::Spec::FILE_MACRO_REPLACEMENTS.invert
82
74
  fmr.keys.inject(self) { |file, r| file.gsub(r, fmr[r]) }
83
75
  end
@@ -6,30 +6,50 @@
6
6
  require 'json'
7
7
  require 'curb'
8
8
 
9
+ require 'polisher/core'
10
+
9
11
  module Polisher
10
12
  class Errata
11
- # Initialize/return singleton curl handle to
12
- # query errata and set url
13
- def self.client(url)
13
+ extend ConfHelpers
14
+
15
+ conf_attr :advisory_url, ''
16
+ conf_attr :package_prefix, 'rubygem-'
17
+
18
+ # Initialize/return singleton curl handle to query errata
19
+ def self.client
14
20
  @curl ||= begin
15
- c = Curl::Easy.new
16
- c.ssl_verify_peer = false
17
- c.ssl_verify_host = false
18
- c.http_auth_types = :negotiate
19
- c.userpwd = ':'
21
+ curl = Curl::Easy.new
22
+ curl.ssl_verify_peer = false
23
+ curl.ssl_verify_host = false
24
+ curl.http_auth_types = :negotiate
25
+ curl.userpwd = ':'
26
+ curl
20
27
  end
28
+ end
21
29
 
22
- @curl.url = url
23
- @curl
30
+ def self.clear!
31
+ @cached_url = nil
32
+ @cached_builds = nil
33
+ self
24
34
  end
25
35
 
26
- def self.versions_for(advisory_url, name, &bl)
27
- result = self.client("#{advisory_url}/builds").get
28
- versions =
29
- JSON.parse(result.body_str).collect { |tag, builds|
30
- ErrataBuild.builds_matching(builds, name)
31
- }.flatten
36
+ def self.builds
37
+ @cached_url ||= advisory_url
38
+ @cached_builds ||= nil
39
+
40
+ if @cached_url != advisory_url || @cached_builds.nil?
41
+ client.url = "#{advisory_url}/builds"
42
+ @cached_builds = client.get
43
+ @cached_builds = JSON.parse(client.body_str)
44
+ end
45
+
46
+ @cached_builds
47
+ end
32
48
 
49
+ def self.versions_for(name, &bl)
50
+ versions = builds.collect do |tag, builds|
51
+ ErrataBuild.builds_matching(builds, name)
52
+ end.flatten
33
53
  bl.call(:errata, name, versions) unless(bl.nil?)
34
54
  versions
35
55
  end
@@ -44,12 +64,12 @@ module Polisher
44
64
 
45
65
  def self.build_matches?(build, name)
46
66
  pkg,meta = *build.flatten
47
- pkg =~ /^rubygem-#{name}-([^-]*)-.*$/
67
+ pkg =~ /^#{Errata.package_prefix}#{name}-([^-]*)-.*$/
48
68
  end
49
69
 
50
70
  def self.build_version(build, name)
51
71
  pkg,meta = *build.flatten
52
- pkg.split('-')[2]
72
+ pkg.gsub(Errata.package_prefix, '').split('-')[1]
53
73
  end
54
74
  end
55
75
  end
@@ -61,7 +61,9 @@ module Polisher
61
61
  # @param [Callable] bl optional block to invoke with versions retrieved
62
62
  # @return [Array<String>] list of versions of gem installed locally
63
63
  def self.local_versions_for(name, &bl)
64
- @local_db ||= ::Gem::Specification.all
64
+ silence_warnings do
65
+ @local_db ||= ::Gem::Specification.all
66
+ end
65
67
  versions = @local_db.select { |s| s.name == name }.collect { |s| s.version }
66
68
  bl.call(:local_gem, name, versions) unless(bl.nil?)
67
69
  versions
@@ -22,6 +22,8 @@ module Polisher
22
22
  # always empty array, for interface compatability
23
23
  attr_accessor :file_paths
24
24
 
25
+ attr_accessor :definition
26
+
25
27
  def initialize(args={})
26
28
  @version = nil
27
29
  @deps = args[:deps]
@@ -50,7 +52,6 @@ module Polisher
50
52
  metadata = {}
51
53
  metadata[:deps] =
52
54
  definition.dependencies.select { |d|
53
- d.groups.include?(:default) || # dep in all groups
54
55
  groups.nil? || groups.empty? || # groups not specified
55
56
  groups.any? { |g| d.groups.include?(g.intern) } # dep in any group
56
57
  }.collect { |d| d.name }
@@ -123,7 +123,9 @@ module Polisher
123
123
  # Update git ignore to ignore gem
124
124
  def ignore(gem)
125
125
  in_repo do
126
- File.open(".gitignore", "w") { |f| f.write "#{gem.name}-#{gem.version}.gem" }
126
+ nl = File.exists?('.gitignore') ? "\n" : ''
127
+ content = "#{nl}#{gem.name}-#{gem.version}.gem"
128
+ File.open(".gitignore", 'a') { |f| f.write content }
127
129
  end
128
130
  end
129
131
 
@@ -4,8 +4,11 @@
4
4
  # Copyright (C) 2013-2014 Red Hat, Inc.
5
5
 
6
6
  require 'xmlrpc/client'
7
- XMLRPC::Config::ENABLE_NIL_PARSER = true
8
- XMLRPC::Config::ENABLE_NIL_CREATE = true
7
+ require 'active_support/core_ext/kernel/reporting'
8
+ silence_warnings do
9
+ XMLRPC::Config::ENABLE_NIL_PARSER = true
10
+ XMLRPC::Config::ENABLE_NIL_CREATE = true
11
+ end
9
12
 
10
13
  require 'polisher/core'
11
14
 
@@ -15,10 +18,13 @@ module Polisher
15
18
 
16
19
  # TODO Koji#build (on class or instance?)
17
20
 
18
- # TODO Koji#diff(tag1, tag2)
19
-
20
21
  conf_attr :koji_url, 'koji.fedoraproject.org/kojihub'
21
22
  conf_attr :koji_tag, 'f21'
23
+ conf_attr :package_prefix, 'rubygem-'
24
+
25
+ def self.koji_tags
26
+ [koji_tag].flatten
27
+ end
22
28
 
23
29
  # Retrieve shared instance of xmlrpc client to use
24
30
  def self.client
@@ -45,20 +51,56 @@ module Polisher
45
51
  }
46
52
  end
47
53
 
48
- # Retrieve list of the version of the specified package in koji
54
+ # Return list of tags for which a package exists
55
+ #
56
+ # @param [String] name of package to lookup
57
+ # @return [Hash<String,String>] hash of tag names to package versions for tags
58
+ # which package was found in
59
+ def self.tagged_in(name)
60
+ # tagid userid pkgid prefix inherit with_dups
61
+ pkgs = client.call('listPackages', nil, nil, "rubygem-#{name}", nil, false, true)
62
+ pkgs.collect { |pkg| pkg['tag_name'] }
63
+ end
64
+
65
+ # Retrieve list of the versions of the specified package in koji
49
66
  #
50
67
  # @param [String] name name of package to lookup
51
68
  # @param [Callable] bl optional block to invoke with versions retrieved
52
- # @return [String] versions retrieved, or nil if none found
69
+ # @return [Array<String>] versions retrieved, empty array if none found
53
70
  def self.versions_for(name, &bl)
54
71
  # koji xmlrpc call
55
72
  builds =
56
- self.client.call('listTagged',
57
- koji_tag, nil, false, nil, false,
58
- "rubygem-#{name}")
73
+ koji_tags.collect do |tag|
74
+ client.call('listTagged', tag, nil, false, nil, false,
75
+ "#{package_prefix}#{name}")
76
+ end.flatten
59
77
  versions = builds.collect { |b| b['version'] }
60
78
  bl.call(:koji, name, versions) unless(bl.nil?)
61
79
  versions
62
80
  end
81
+
82
+ # Return diff between list of packages in two tags in koji
83
+ def self.diff(tag1, tag2)
84
+ builds1 = client.call('listTagged', tag1, nil, false, nil, false)
85
+ builds2 = client.call('listTagged', tag2, nil, false, nil, false)
86
+ builds = {}
87
+ builds1.each do |build|
88
+ name = build['package_name']
89
+ build2 = builds2.find { |b| b['name'] == name }
90
+ version1 = build['version']
91
+ version2 = build2 && build2['version']
92
+ builds[name] = {tag1 => version1, tag2 => version2}
93
+ end
94
+
95
+ builds2.each do |build|
96
+ name = build['package_name']
97
+ next if builds.key?(name)
98
+
99
+ version = build['version']
100
+ builds[name] = {tag1 => nil, tag2 => version}
101
+ end
102
+
103
+ builds
104
+ end
63
105
  end
64
106
  end
@@ -0,0 +1,12 @@
1
+ # Polisher "Missing" Component
2
+ #
3
+ # Licensed under the MIT license
4
+ # Copyright (C) 2014 Red Hat, Inc.
5
+
6
+ module Polisher
7
+ class MissingComponent
8
+ def method_missing(method_id, *args, &bl)
9
+ raise "polisher is missing a dependency - cannot invoke #{method_id} on #{self}"
10
+ end
11
+ end # class MissingComponent
12
+ end # module Polisher
@@ -1,3 +1,3 @@
1
1
  module Polisher
2
- VERSION = "0.8.1"
2
+ VERSION = "0.9.1"
3
3
  end
@@ -4,11 +4,6 @@
4
4
  # Copyright (C) 2013-2014 Red Hat, Inc.
5
5
 
6
6
  require 'polisher/gem'
7
- require 'polisher/fedora'
8
- require 'polisher/koji'
9
- require 'polisher/git/pkg'
10
- require 'polisher/bodhi'
11
- require 'polisher/yum'
12
7
 
13
8
  module Polisher
14
9
  class VersionChecker
@@ -17,19 +12,15 @@ module Polisher
17
12
  FEDORA_TARGET = :fedora
18
13
  GIT_TARGET = :git
19
14
  YUM_TARGET = :yum
20
- BODHI_TARGET = :bodhi # fedora dispatches to bodhi to not enabled by default
15
+ BODHI_TARGET = :bodhi # fedora dispatches to bodhi so not enabled by default
16
+ ERRATA_TARGET = :errata # not enabled by default
21
17
  ALL_TARGETS = [GEM_TARGET, KOJI_TARGET, FEDORA_TARGET,
22
18
  GIT_TARGET, YUM_TARGET]
23
19
 
24
20
  # Enable the specified target(s) in the list of target to check
25
- def self.check(target)
21
+ def self.check(*target)
26
22
  @check_list ||= []
27
- if target.is_a?(Array)
28
- target.each { |t| self.check(t) }
29
- return
30
- end
31
-
32
- @check_list << target
23
+ target.each { |t| @check_list << t }
33
24
  end
34
25
 
35
26
  def self.should_check?(target)
@@ -53,27 +44,34 @@ module Polisher
53
44
  end
54
45
 
55
46
  if should_check?(FEDORA_TARGET)
47
+ require 'polisher/fedora'
56
48
  versions.merge! :fedora => Fedora.versions_for(name, &bl)
57
49
  end
58
50
 
59
51
  if should_check?(KOJI_TARGET)
52
+ require 'polisher/koji'
60
53
  versions.merge! :koji => Koji.versions_for(name, &bl)
61
54
  end
62
55
 
63
56
  if should_check?(GIT_TARGET)
57
+ require 'polisher/git/pkg'
64
58
  versions.merge! :git => [Git::Pkg.version_for(name, &bl)]
65
59
  end
66
60
 
67
61
  if should_check?(YUM_TARGET)
62
+ require 'polisher/yum'
68
63
  versions.merge! :yum => [Yum.version_for(name, &bl)]
69
64
  end
70
65
 
71
66
  if should_check?(BODHI_TARGET)
67
+ require 'polisher/bodhi'
72
68
  versions.merge! :bodhi => Bodhi.versions_for(name, &bl)
73
69
  end
74
70
 
75
- #bodhi_version = Bodhi.versions_for(name, &bl)
76
- #errata_version = Errata.version_for('url?', name, &bl)
71
+ if should_check?(ERRATA_TARGET)
72
+ require 'polisher/errata'
73
+ versions.merge! :errata => Errata.versions_for(name, &bl)
74
+ end
77
75
 
78
76
  versions
79
77
  end
@@ -97,11 +95,12 @@ module Polisher
97
95
  # of gem names representing component dependencies. List
98
96
  # will be iterated over, versions will be looked up
99
97
  # recursively and returned
100
- def dependency_versions(&bl)
98
+ def dependency_versions(args = {}, &bl)
99
+ args = {:recursive => true, :dev_deps => true}.merge(args)
101
100
  versions = {}
102
101
  self.deps.each do |dep|
103
102
  gem = Polisher::Gem.retrieve(dep)
104
- versions.merge!(gem.versions(:recursive => true, :dev_deps => true, &bl))
103
+ versions.merge!(gem.versions(args, &bl))
105
104
  end
106
105
  versions
107
106
  end
@@ -9,34 +9,43 @@ module Polisher
9
9
  describe Errata do
10
10
  describe "#versions_for" do
11
11
  before(:each) do
12
- @result = double(Curl::Easy.new)
13
- @result.should_receive(:body_str).and_return({'tag' => [['rubygem-rails-1.0.0-1']]}.to_json)
12
+ @result = {'tag' => [['rubygem-rails-1.0.0-1']]}.to_json
13
+ @orig_url = described_class.advisory_url
14
+ end
15
+
16
+ after(:each) do
17
+ described_class.advisory_url @orig_url
18
+ described_class.clear!
14
19
  end
15
20
 
16
21
  it "uses curl to retreive updates" do
17
22
  client = Curl::Easy.new
18
- described_class.should_receive(:client).with('http://errata.url/builds').and_return(client)
19
- client.should_receive(:get).and_return(@result)
23
+ described_class.should_receive(:client).at_least(:once).and_return(client)
24
+ client.should_receive(:url=).with('http://errata.url/builds')
25
+ client.should_receive(:get)
26
+ client.should_receive(:body_str).and_return(@result)
20
27
 
21
- described_class.versions_for('http://errata.url', 'rails')
28
+ described_class.advisory_url 'http://errata.url'
29
+ described_class.versions_for('rails')
22
30
  end
23
31
 
24
32
  it "returns versions" do
25
33
  client = Curl::Easy.new
26
- described_class.should_receive(:client).and_return(client)
27
- client.should_receive(:get).and_return(@result)
28
-
29
- described_class.versions_for('http://errata.url', 'rails').should == ['1.0.0']
34
+ described_class.should_receive(:client).at_least(:once).and_return(client)
35
+ client.stub(:get)
36
+ client.should_receive(:body_str).and_return(@result)
37
+ described_class.versions_for('rails').should == ['1.0.0']
30
38
  end
31
39
 
32
40
  it "invokes block with versions" do
33
41
  client = Curl::Easy.new
34
- described_class.should_receive(:client).and_return(client)
35
- client.should_receive(:get).and_return(@result)
42
+ described_class.should_receive(:client).at_least(:once).and_return(client)
43
+ client.stub(:get)
44
+ client.should_receive(:body_str).and_return(@result)
36
45
 
37
46
  cb = proc {}
38
47
  cb.should_receive(:call).with(:errata, 'rails', ['1.0.0'])
39
- described_class.versions_for('http://errata.url', 'rails', &cb)
48
+ described_class.versions_for('rails', &cb)
40
49
  end
41
50
  end
42
51
  end # describe Koji
@@ -4,6 +4,7 @@
4
4
  # Copyright (C) 2013-2014 Red Hat, Inc.
5
5
 
6
6
  require 'polisher/git'
7
+ require 'pathname'
7
8
 
8
9
  module Polisher
9
10
  describe Git::Repo do
@@ -61,10 +62,12 @@ module Polisher
61
62
  repo = described_class.new
62
63
  Dir.mktmpdir do |dir|
63
64
  repo.should_receive(:path).and_return(dir)
65
+
66
+ expected = Pathname.new(dir).realpath.to_s
64
67
  invoked = false
65
68
  orig = Dir.pwd
66
69
  repo.in_repo do
67
- Dir.pwd.should == dir
70
+ Dir.pwd.should == expected
68
71
  invoked = true
69
72
  end
70
73
  Dir.pwd.should == orig
@@ -39,12 +39,31 @@ module Polisher
39
39
  end
40
40
  end
41
41
 
42
- describe "#versions_for" do
42
+ describe "#tagged_in" do
43
43
  before(:each) do
44
44
  @client = double(XMLRPC::Client)
45
45
  described_class.should_receive(:client).and_return(@client)
46
46
  end
47
47
 
48
+ it "uses xmlrpc client to retrieve packages" do
49
+ expected = ['listPackages', nil, nil, "rubygem-rails", nil, false, true]
50
+ @client.should_receive(:call).with(*expected).and_return([])
51
+ described_class.tagged_in 'rails'
52
+ end
53
+
54
+ it "returns tags" do
55
+ tags = [{'tag_name' => 'tag1'}, {'tag_name' => 'tag2'}]
56
+ @client.should_receive(:call).and_return(tags)
57
+ described_class.tagged_in('rails').should == ['tag1', 'tag2']
58
+ end
59
+ end
60
+
61
+ describe "#versions_for" do
62
+ before(:each) do
63
+ @client = double(XMLRPC::Client)
64
+ described_class.should_receive(:client).at_least(:once).and_return(@client)
65
+ end
66
+
48
67
  it "uses xmlrpc client to retreive versions" do
49
68
  expected = ['listTagged', described_class.koji_tag, nil, false,
50
69
  nil, false, "rubygem-rails"]
@@ -52,6 +71,17 @@ module Polisher
52
71
  described_class.versions_for 'rails'
53
72
  end
54
73
 
74
+ it "handles multiple koji tags" do
75
+ described_class.should_receive(:koji_tags).and_return(['tag1', 'tag2'])
76
+ expected1 = ['listTagged', 'tag1', nil, false,
77
+ nil, false, "rubygem-rails"]
78
+ expected2 = ['listTagged', 'tag2', nil, false,
79
+ nil, false, "rubygem-rails"]
80
+ @client.should_receive(:call).with(*expected1).and_return([])
81
+ @client.should_receive(:call).with(*expected2).and_return([])
82
+ described_class.versions_for 'rails'
83
+ end
84
+
55
85
  it "returns versions" do
56
86
  versions = [{'version' => '1.0.0'}]
57
87
  @client.should_receive(:call).and_return(versions)
@@ -1,15 +1,15 @@
1
- # Polisher RPMSpec Specs
1
+ # Polisher RPM Requirement Specs
2
2
  #
3
3
  # Licensed under the MIT license
4
- # Copyright (C) 2013-2014 Red Hat, Inc.
4
+ # Copyright (C) 2014 Red Hat, Inc.
5
5
 
6
6
  require 'spec_helper'
7
7
 
8
- require 'polisher/rpm/spec'
8
+ require 'polisher/rpm/requirement'
9
9
  require 'polisher/gem'
10
10
 
11
- module Polisher
12
- describe RPM::Requirement do
11
+ module Polisher::RPM
12
+ describe Requirement do
13
13
  describe "#str" do
14
14
  it "returns requirement in string format" do
15
15
  req = described_class.new :name => 'rubygem(activesupport)'
@@ -343,198 +343,5 @@ module Polisher
343
343
  end
344
344
  end
345
345
  end
346
- end
347
-
348
- describe RPM::Spec do
349
- describe "#initialize" do
350
- it "sets gem metadata" do
351
- spec = Polisher::RPM::Spec.new :version => '1.0.0'
352
- spec.metadata.should == {:version => '1.0.0'}
353
- end
354
- end
355
-
356
- describe "#method_missing" do
357
- it "proxies lookup to metadata" do
358
- spec = Polisher::RPM::Spec.new :version => '1.0.0'
359
- spec.version.should == '1.0.0'
360
- end
361
- end
362
-
363
- describe "#has_check?" do
364
- context "package spec has %check section" do
365
- it "returns true" do
366
- spec = described_class.new :has_check => true
367
- spec.has_check?.should be_true
368
- end
369
- end
370
-
371
- context "package spec does not have a %check section" do
372
- it "returns false" do
373
- spec = described_class.new
374
- spec.has_check?.should be_false
375
- end
376
- end
377
- end
378
-
379
-
380
- describe "#requirements_for_gem" do
381
- it "returns requirements for specified gem name" do
382
- spec = Polisher::RPM::Spec.new :requires =>
383
- [Polisher::RPM::Requirement.new(:name => 'rubygem(rake)')]
384
- spec.requirements_for_gem('rake').should == [spec.requires.first]
385
- end
386
-
387
- context "spec has no requirement with specified name" do
388
- it "returns empty array" do
389
- spec = Polisher::RPM::Spec.new
390
- spec.requirements_for_gem('rake').should be_empty
391
- end
392
- end
393
- end
394
-
395
- describe "#parse" do
396
- before(:each) do
397
- @spec = Polisher::Test::RPM_SPEC
398
- end
399
-
400
- it "returns new rpmspec instance" do
401
- pspec = Polisher::RPM::Spec.parse @spec[:contents]
402
- pspec.should be_an_instance_of(Polisher::RPM::Spec)
403
- end
404
-
405
- it "parses contents from spec" do
406
- pspec = Polisher::RPM::Spec.parse @spec[:contents]
407
- pspec.contents.should == @spec[:contents]
408
- end
409
-
410
- it "parses name from spec" do
411
- pspec = Polisher::RPM::Spec.parse @spec[:contents]
412
- pspec.gem_name.should == @spec[:name]
413
- end
414
-
415
- it "parses version from spec" do
416
- pspec = Polisher::RPM::Spec.parse @spec[:contents]
417
- pspec.version.should == @spec[:version]
418
- end
419
-
420
- it "parses release from spec" do
421
- pspec = Polisher::RPM::Spec.parse @spec[:contents]
422
- pspec.release.should == @spec[:release]
423
- end
424
-
425
- it "parses requires from spec" do
426
- pspec = Polisher::RPM::Spec.parse @spec[:contents]
427
- pspec.requires.should == @spec[:requires]
428
- end
429
-
430
- it "parses build requires from spec" do
431
- pspec = Polisher::RPM::Spec.parse @spec[:contents]
432
- pspec.build_requires.should == @spec[:build_requires]
433
- end
434
-
435
- it "parses changelog from spec"
436
-
437
- it "parses unrpmized files from spec" do
438
- pspec = Polisher::RPM::Spec.parse @spec[:contents]
439
- pspec.files.should == @spec[:files]
440
- end
441
-
442
- it "parses %check from spec" do
443
- pspec = Polisher::RPM::Spec.parse @spec[:contents]
444
- pspec.has_check?.should be_true
445
-
446
- pspec = Polisher::RPM::Spec.parse ""
447
- pspec.has_check?.should be_false
448
- end
449
- end
450
-
451
- describe "#update_to" do
452
- it "updates dependencies from gem" do
453
- spec = Polisher::RPM::Spec.new :requires => [Polisher::RPM::Requirement.parse('rubygem(rake)'),
454
- Polisher::RPM::Requirement.parse('rubygem(activerecord)')],
455
- :build_requires => []
456
- gem = Polisher::Gem.new :deps => [::Gem::Dependency.new('rake'),
457
- ::Gem::Dependency.new('rails', '~> 10')],
458
- :dev_deps => [::Gem::Dependency.new('rspec', :development)]
459
-
460
- spec.should_receive(:update_files_from) # stub out files update
461
- spec.update_to(gem)
462
- spec.requires.should == [Polisher::RPM::Requirement.parse('rubygem(activerecord)'),
463
- Polisher::RPM::Requirement.parse('rubygem(rake) >= 0'),
464
- Polisher::RPM::Requirement.parse('rubygem(rails) => 10'),
465
- Polisher::RPM::Requirement.parse('rubygem(rails) < 11')]
466
- spec.build_requires.should == [Polisher::RPM::Requirement.parse('rubygem(rspec) >= 0', :br => true)]
467
- end
468
-
469
- it "adds new files from gem" do
470
- spec = Polisher::RPM::Spec.new :files => {'pkg' => ['/foo']}
471
- gem = Polisher::Gem.new
472
- gem.should_receive(:file_paths).at_least(:once).
473
- and_return(['/foo', '/foo/bar', '/baz'])
474
- spec.update_to(gem)
475
- spec.new_files.should == ['/baz']
476
- end
477
-
478
- it "updates metadata from gem" do
479
- spec = Polisher::RPM::Spec.new
480
- gem = Polisher::Gem.new :version => '1.0.0'
481
- spec.should_receive(:update_files_from) # stub out files update
482
- spec.update_to(gem)
483
- spec.version.should == '1.0.0'
484
- spec.release.should == '1%{?dist}'
485
- end
486
-
487
- it "adds changelog entry"
488
- end
489
-
490
- describe "#to_string" do
491
- it "returns string representation of spec"
492
- end
493
-
494
- describe "#compare" do
495
- it "returns requirements in spec but not in gem" do
496
- req = Polisher::RPM::Requirement.parse 'rubygem(rails) > 3.0.0'
497
- spec = Polisher::RPM::Spec.new :requires => [req]
498
- gem = Polisher::Gem.new
499
-
500
- spec.compare(gem).should ==
501
- {:same => {}, :diff => {'rails' =>
502
- {:spec => '> 3.0.0', :upstream => nil}}}
503
- end
504
-
505
- it "returns requirements in gem but not in spec" do
506
- req = ::Gem::Dependency.new('rails', '> 3.0.0')
507
- spec = Polisher::RPM::Spec.new
508
- gem = Polisher::Gem.new :deps => [req]
509
-
510
- spec.compare(gem).should ==
511
- {:same => {}, :diff => {'rails' =>
512
- {:spec => nil, :upstream => '> 3.0.0'}}}
513
- end
514
-
515
- it "returns shared requirements with different specifiers" do
516
- greq = ::Gem::Dependency.new('rails', '< 5.0.0')
517
- gem = Polisher::Gem.new :deps => [greq]
518
-
519
- sreq = Polisher::RPM::Requirement.parse 'rubygem(rails) > 3.0.0'
520
- spec = Polisher::RPM::Spec.new :requires => [sreq]
521
-
522
- spec.compare(gem).should ==
523
- {:same => {}, :diff => {'rails' =>
524
- {:spec => '> 3.0.0', :upstream => '< 5.0.0'}}}
525
- end
526
-
527
- it "returns shared requirements" do
528
- greq = ::Gem::Dependency.new('rails', '< 3.0.0')
529
- gem = Polisher::Gem.new :deps => [greq]
530
-
531
- sreq = Polisher::RPM::Requirement.parse 'rubygem(rails) < 3.0.0'
532
- spec = Polisher::RPM::Spec.new :requires => [sreq]
533
-
534
- spec.compare(gem).should ==
535
- {:diff => {}, :same => {'rails' =>
536
- {:spec => '< 3.0.0', :upstream => '< 3.0.0'}}}
537
- end
538
- end
539
- end # describe RPM::Spec
540
- end # module Polisher
346
+ end # describe Requirement
347
+ end # module Polisher::RPM
@@ -0,0 +1,204 @@
1
+ # Polisher RPM Spec Specs
2
+ #
3
+ # Licensed under the MIT license
4
+ # Copyright (C) 2014 Red Hat, Inc.
5
+
6
+ require 'spec_helper'
7
+
8
+ require 'polisher/rpm/spec'
9
+ require 'polisher/gem'
10
+
11
+ module Polisher::RPM
12
+ describe Spec do
13
+ describe "#initialize" do
14
+ it "sets gem metadata" do
15
+ spec = described_class.new :version => '1.0.0'
16
+ spec.metadata.should == {:version => '1.0.0'}
17
+ end
18
+ end
19
+
20
+ describe "#method_missing" do
21
+ it "proxies lookup to metadata" do
22
+ spec = described_class.new :version => '1.0.0'
23
+ spec.version.should == '1.0.0'
24
+ end
25
+ end
26
+
27
+ describe "#has_check?" do
28
+ context "package spec has %check section" do
29
+ it "returns true" do
30
+ spec = described_class.new :has_check => true
31
+ spec.has_check?.should be_true
32
+ end
33
+ end
34
+
35
+ context "package spec does not have a %check section" do
36
+ it "returns false" do
37
+ spec = described_class.new
38
+ spec.has_check?.should be_false
39
+ end
40
+ end
41
+ end
42
+
43
+
44
+ describe "#requirements_for_gem" do
45
+ it "returns requirements for specified gem name" do
46
+ spec = described_class.new :requires =>
47
+ [Requirement.new(:name => 'rubygem(rake)')]
48
+ spec.requirements_for_gem('rake').should == [spec.requires.first]
49
+ end
50
+
51
+ context "spec has no requirement with specified name" do
52
+ it "returns empty array" do
53
+ spec = described_class.new
54
+ spec.requirements_for_gem('rake').should be_empty
55
+ end
56
+ end
57
+ end
58
+
59
+ describe "#parse" do
60
+ before(:each) do
61
+ @spec = Polisher::Test::RPM_SPEC
62
+ end
63
+
64
+ it "returns new rpmspec instance" do
65
+ pspec = described_class.parse @spec[:contents]
66
+ pspec.should be_an_instance_of(described_class)
67
+ end
68
+
69
+ it "parses contents from spec" do
70
+ pspec = described_class.parse @spec[:contents]
71
+ pspec.contents.should == @spec[:contents]
72
+ end
73
+
74
+ it "parses name from spec" do
75
+ pspec = described_class.parse @spec[:contents]
76
+ pspec.gem_name.should == @spec[:name]
77
+ end
78
+
79
+ it "parses version from spec" do
80
+ pspec = described_class.parse @spec[:contents]
81
+ pspec.version.should == @spec[:version]
82
+ end
83
+
84
+ it "parses release from spec" do
85
+ pspec = described_class.parse @spec[:contents]
86
+ pspec.release.should == @spec[:release]
87
+ end
88
+
89
+ it "parses requires from spec" do
90
+ pspec = described_class.parse @spec[:contents]
91
+ pspec.requires.should == @spec[:requires]
92
+ end
93
+
94
+ it "parses build requires from spec" do
95
+ pspec = described_class.parse @spec[:contents]
96
+ pspec.build_requires.should == @spec[:build_requires]
97
+ end
98
+
99
+ it "parses changelog from spec"
100
+
101
+ it "parses unrpmized files from spec" do
102
+ pspec = described_class.parse @spec[:contents]
103
+ pspec.files.should == @spec[:files]
104
+ end
105
+
106
+ it "parses %check from spec" do
107
+ pspec = described_class.parse @spec[:contents]
108
+ pspec.has_check?.should be_true
109
+
110
+ pspec = described_class.parse ""
111
+ pspec.has_check?.should be_false
112
+ end
113
+ end
114
+
115
+ describe "#update_to" do
116
+ it "updates dependencies from gem" do
117
+ spec = described_class.new :requires => [Requirement.parse('rubygem(rake)'),
118
+ Requirement.parse('rubygem(activerecord)')],
119
+ :build_requires => []
120
+ gem = Polisher::Gem.new :deps => [::Gem::Dependency.new('rake'),
121
+ ::Gem::Dependency.new('rails', '~> 10')],
122
+ :dev_deps => [::Gem::Dependency.new('rspec', :development)]
123
+
124
+ spec.should_receive(:update_files_from) # stub out files update
125
+ spec.update_to(gem)
126
+ spec.requires.should == [Requirement.parse('rubygem(activerecord)'),
127
+ Requirement.parse('rubygem(rake) >= 0'),
128
+ Requirement.parse('rubygem(rails) => 10'),
129
+ Requirement.parse('rubygem(rails) < 11')]
130
+ spec.build_requires.should == [Requirement.parse('rubygem(rspec) >= 0', :br => true)]
131
+ end
132
+
133
+ it "adds new files from gem" do
134
+ spec = described_class.new :files => {'pkg' => ['/foo']}
135
+ gem = Polisher::Gem.new
136
+ gem.should_receive(:file_paths).at_least(:once).
137
+ and_return(['/foo', '/foo/bar', '/baz'])
138
+ spec.update_to(gem)
139
+ spec.new_files.should == ['/baz']
140
+ end
141
+
142
+ it "updates metadata from gem" do
143
+ spec = described_class.new
144
+ gem = Polisher::Gem.new :version => '1.0.0'
145
+ spec.should_receive(:update_files_from) # stub out files update
146
+ spec.update_to(gem)
147
+ spec.version.should == '1.0.0'
148
+ spec.release.should == '1%{?dist}'
149
+ end
150
+
151
+ it "adds changelog entry"
152
+ end
153
+
154
+ describe "#to_string" do
155
+ it "returns string representation of spec"
156
+ end
157
+
158
+ describe "#compare" do
159
+ it "returns requirements in spec but not in gem" do
160
+ req = Requirement.parse 'rubygem(rails) > 3.0.0'
161
+ spec = described_class.new :requires => [req]
162
+ gem = Polisher::Gem.new
163
+
164
+ spec.compare(gem).should ==
165
+ {:same => {}, :diff => {'rails' =>
166
+ {:spec => '> 3.0.0', :upstream => nil}}}
167
+ end
168
+
169
+ it "returns requirements in gem but not in spec" do
170
+ req = ::Gem::Dependency.new('rails', '> 3.0.0')
171
+ spec = described_class.new
172
+ gem = Polisher::Gem.new :deps => [req]
173
+
174
+ spec.compare(gem).should ==
175
+ {:same => {}, :diff => {'rails' =>
176
+ {:spec => nil, :upstream => '> 3.0.0'}}}
177
+ end
178
+
179
+ it "returns shared requirements with different specifiers" do
180
+ greq = ::Gem::Dependency.new('rails', '< 5.0.0')
181
+ gem = Polisher::Gem.new :deps => [greq]
182
+
183
+ sreq = Requirement.parse 'rubygem(rails) > 3.0.0'
184
+ spec = described_class.new :requires => [sreq]
185
+
186
+ spec.compare(gem).should ==
187
+ {:same => {}, :diff => {'rails' =>
188
+ {:spec => '> 3.0.0', :upstream => '< 5.0.0'}}}
189
+ end
190
+
191
+ it "returns shared requirements" do
192
+ greq = ::Gem::Dependency.new('rails', '< 3.0.0')
193
+ gem = Polisher::Gem.new :deps => [greq]
194
+
195
+ sreq = Requirement.parse 'rubygem(rails) < 3.0.0'
196
+ spec = described_class.new :requires => [sreq]
197
+
198
+ spec.compare(gem).should ==
199
+ {:diff => {}, :same => {'rails' =>
200
+ {:spec => '< 3.0.0', :upstream => '< 3.0.0'}}}
201
+ end
202
+ end
203
+ end # describe Spec
204
+ end # module Polisher::RPM
@@ -5,10 +5,22 @@
5
5
 
6
6
  SPEC_DIR = File.expand_path File.dirname(__FILE__)
7
7
 
8
+ begin
9
+ require 'coveralls'
10
+ Coveralls.wear!
11
+ rescue LoadError
12
+ end
13
+
8
14
  require 'polisher/rpm/spec'
9
15
  require 'polisher/gem_cache'
10
16
 
11
17
  RSpec.configure do |config|
18
+ # Run specs in random order to surface order dependencies. If you find an
19
+ # order dependency and want to debug it, you can fix the order by providing
20
+ # the seed, which is printed after each run.
21
+ # --seed 1234
22
+ config.order = 'random'
23
+
12
24
  config.after do
13
25
  Polisher::GemCache.clear!
14
26
  end
metadata CHANGED
@@ -1,17 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: polisher
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.1
4
+ version: 0.9.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jason Frey
8
8
  - Mo Morsi
9
9
  - Joe Rafaniello
10
10
  - Ken Dreyer
11
+ - Achilleas Pipinellis
11
12
  autorequire:
12
13
  bindir: bin
13
14
  cert_chain: []
14
- date: 2014-02-27 00:00:00.000000000 Z
15
+ date: 2014-04-17 00:00:00.000000000 Z
15
16
  dependencies:
16
17
  - !ruby/object:Gem::Dependency
17
18
  name: json
@@ -167,13 +168,28 @@ dependencies:
167
168
  - - '>='
168
169
  - !ruby/object:Gem::Version
169
170
  version: 2.0.0
171
+ - !ruby/object:Gem::Dependency
172
+ name: coveralls
173
+ requirement: !ruby/object:Gem::Requirement
174
+ requirements:
175
+ - - '>='
176
+ - !ruby/object:Gem::Version
177
+ version: '0'
178
+ type: :development
179
+ prerelease: false
180
+ version_requirements: !ruby/object:Gem::Requirement
181
+ requirements:
182
+ - - '>='
183
+ - !ruby/object:Gem::Version
184
+ version: '0'
170
185
  description: General API and utility scripts to manipulate and query ruby gems and
171
186
  projects after being published
172
187
  email:
173
- - Fryguy@users.noreply.github.com
188
+ - fryguy9@gmail.com
174
189
  - mo@morsi.org
175
190
  - jrafanie@redhat.com
176
191
  - ktdreyer@ktdreyer.com
192
+ - axilleas@archlinux.gr
177
193
  executables:
178
194
  - binary_gem_resolver.rb
179
195
  - gem_dependency_checker.rb
@@ -206,6 +222,7 @@ files:
206
222
  - lib/polisher/koji.rb
207
223
  - lib/polisher/gem_cache.rb
208
224
  - lib/polisher/rhn.rb
225
+ - lib/polisher/missing.rb
209
226
  - lib/polisher/yum.rb
210
227
  - lib/polisher.rb
211
228
  - spec/git_spec.rb
@@ -213,11 +230,12 @@ files:
213
230
  - spec/spec_helper.rb
214
231
  - spec/errata_spec.rb
215
232
  - spec/gemfile_spec.rb
233
+ - spec/rpm/spec_spec.rb
234
+ - spec/rpm/requirement_spec.rb
216
235
  - spec/koji_spec.rb
217
236
  - spec/gem_spec.rb
218
237
  - spec/yum_spec.rb
219
238
  - spec/upstream_spec.rb
220
- - spec/rpmspec_spec.rb
221
239
  - spec/vendor_spec.rb
222
240
  - spec/fedora_spec.rb
223
241
  - spec/core_spec.rb
@@ -254,7 +272,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
254
272
  version: '0'
255
273
  requirements: []
256
274
  rubyforge_project:
257
- rubygems_version: 2.0.11
275
+ rubygems_version: 2.0.14
258
276
  signing_key:
259
277
  specification_version: 4
260
278
  summary: Ruby Project Post-Publishing Processor