polisher 0.8.1 → 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml 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