gems-status 0.1.0 → 0.2.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/bin/gems-status CHANGED
@@ -1,5 +1,4 @@
1
1
  #!/usr/bin/ruby
2
-
3
2
  $:.unshift File.join(File.dirname(__FILE__), "..", "lib")
4
3
  require "gems_status"
5
4
 
@@ -0,0 +1,21 @@
1
+ require 'rubygems'
2
+ require 'open-uri'
3
+ require 'gem_checker'
4
+
5
+ class ExistsInUpstream < GemChecker
6
+ def ExistsInUpstream.check?(gem)
7
+ $stderr.puts "DEBUG: Looking for #{gem.name}"
8
+ result = nil
9
+ gem_uri = "#{gem.gems_url}/#{gem.name}-#{gem.version}.gem"
10
+ begin
11
+ source = open(gem_uri)
12
+ return true
13
+ rescue
14
+ return false
15
+ end
16
+ end
17
+ def ExistsInUpstream.description
18
+ "This gem does not exist in upstream: "
19
+ end
20
+ end
21
+
@@ -0,0 +1,6 @@
1
+ class GemChecker
2
+ def GemChecker.check?(gem)
3
+ end
4
+ def GemChecker.description
5
+ end
6
+ end
data/lib/gem_simple.rb CHANGED
@@ -1,10 +1,11 @@
1
1
  class GemSimple
2
- attr_reader :name, :version, :md5, :origin
3
- def initialize(name, version, md5, origin)
2
+ attr_reader :name, :version, :md5, :origin, :gems_url
3
+ def initialize(name, version, md5, origin, gems_url=nil )
4
4
  @name = name
5
5
  @version = version
6
6
  @md5 = md5
7
7
  @origin = origin
8
+ @gems_url = gems_url
8
9
  end
9
10
  end
10
11
 
data/lib/gems_command.rb CHANGED
@@ -3,6 +3,7 @@ require "gem_simple"
3
3
 
4
4
  class GemsCommand
5
5
  attr_reader :result
6
+ attr_reader :ident
6
7
  def gem_name(gem)
7
8
  pos = gem.rindex(".gem")
8
9
  if ! pos then
@@ -1,16 +1,26 @@
1
1
  require "gem_simple"
2
2
  require "gems_command"
3
+ require "not_native_gem_checker"
4
+ require "not_rails_checker"
5
+ require "exists_in_upstream"
6
+ require "view_results"
3
7
 
4
8
  class GemsCompositeCommand < GemsCommand
5
- def initialize
9
+ def initialize(target)
6
10
  @commands = []
7
- @results = []
11
+ @checkers = []
12
+ @results = {}
13
+ @target = target
8
14
  end
9
15
 
10
16
  def add_command(command)
11
17
  @commands << command
12
18
  end
13
19
 
20
+ def add_checker(check_class)
21
+ @checkers << check_class
22
+ end
23
+
14
24
  def execute
15
25
  threads = []
16
26
  if !@commands then
@@ -21,15 +31,15 @@ class GemsCompositeCommand < GemsCommand
21
31
  end
22
32
  threads.each { |aThread| aThread.join }
23
33
  @commands.each do |command|
24
- @results << command.result
34
+ @results[command.ident] = command.result
25
35
  end
26
36
  end
27
37
 
28
38
  def common_key?(k)
29
- if !@results or @results.empty?
39
+ if !are_there_results?
30
40
  return false
31
41
  end
32
- @results.each do |result|
42
+ @results.each do |key, result|
33
43
  if !result[k] then
34
44
  return false
35
45
  end
@@ -38,15 +48,15 @@ class GemsCompositeCommand < GemsCommand
38
48
  end
39
49
 
40
50
  def equal_gems?(k)
41
- if !@results or @results.empty?
51
+ if !are_there_results?
42
52
  return false
43
53
  end
44
54
  if !common_key?(k)
45
55
  return false
46
56
  end
47
- version = @results[0][k].version
48
- md5 = @results[0][k].md5
49
- @results.each do |result|
57
+ version = @results[@target][k].version
58
+ md5 = @results[@target][k].md5
59
+ @results.each do |key, result|
50
60
  if result[k].version != version
51
61
  return false
52
62
  end
@@ -60,70 +70,41 @@ class GemsCompositeCommand < GemsCommand
60
70
  end
61
71
 
62
72
  def are_there_results?
63
- if !@results
73
+ if !@results or @results.empty?
64
74
  return false
65
75
  end
66
- if !@results[0]
76
+ if !@results.has_key?(@target)
67
77
  return false
68
78
  end
69
- if !@results[1]
79
+ if @results.length<2
70
80
  return false
71
81
  end
72
82
  return true
73
83
  end
74
84
 
75
- def print_html_diff
85
+ def print
86
+ ViewResults::print_head
87
+ ids = []
88
+ @commands.each { |c| ids << c.ident }
89
+ ViewResults::print_description(ids)
76
90
  if !are_there_results?
77
91
  return
78
92
  end
79
- puts "<table width='100%'>"
80
- @results[0].each do |k,v|
93
+ @results[@target].each do |k,v|
81
94
  if !common_key?(k) then
95
+ $stderr.puts "ERROR: #{k} in #{@target} but not found in all the sources!"
82
96
  next
83
97
  end
84
98
  if equal_gems?(k) then
85
- $stderr.puts "DEBUG: equal gems: #{k}"
86
99
  next
87
100
  end
88
- puts "<tr><td><span style='font-weight:bold;'>#{k}</span></td></tr>"
89
- version = @results[0][k].version
90
- md5 = @results[0][k].md5
91
- @results.each do |result|
92
- puts "<tr>"
93
- puts "<td>"
94
- puts "#{result[k].origin}"
95
- puts "</td>"
96
- puts "<td>"
97
- v_color = "black"
98
- md5_color = "black"
99
- if version != result[k].version then
100
- v_color = "red"
101
- else
102
- if md5 != result[k].md5 then
103
- md5_color = "red"
104
- end
105
- end
106
- puts "<span style='color: #{v_color}'>"
107
- if !version then
108
- puts "error: look error log"
109
- end
110
- puts "#{result[k].version}"
111
- puts "</span>"
112
- puts "</td>"
113
- puts "<td>"
114
- puts "<span style='color: #{md5_color}'>"
115
- if result[k].md5.empty? then
116
- puts "error: look error log"
117
- end
118
- puts "#{result[k].md5}"
119
- puts "</span>"
120
- puts "</td>"
121
- puts "</tr>"
122
- version = result[k].version
123
- md5 = result[k].md5
101
+ ViewResults::print_diff(k, @results, @target)
102
+ end
103
+ @checkers.each do |check_class|
104
+ @results[@target].each do |k, gem|
105
+ ViewResults::print_check(check_class::description, gem.name) unless check_class::check?(gem)
124
106
  end
125
107
  end
126
- puts "</table>"
108
+ ViewResults::print_tail
127
109
  end
128
-
129
110
  end
data/lib/gems_status.rb CHANGED
@@ -1,7 +1,8 @@
1
1
  #!/usr/bin/ruby
2
- #TODO: implement license checker: ninka??
3
- #TODO: do we need other checkers?
4
2
  #TODO: implement a nicer interface
3
+ #
4
+
5
+
5
6
 
6
7
  require "rubygems"
7
8
  require "xmlsimple"
@@ -25,16 +26,18 @@ class GemStatus
25
26
  end
26
27
 
27
28
  def execute
28
- gems_composite_command = GemsCompositeCommand.new
29
- @conf.each do |c|
29
+ gems_composite_command = GemsCompositeCommand.new(@conf["target"])
30
+ @conf["sources"].each do |c|
30
31
  gems = eval(c["classname"]).new(c)
31
32
  gems_composite_command.add_command(gems)
32
33
  end
34
+ if @conf["checkers"]
35
+ @conf["checkers"].each do |c|
36
+ gems_composite_command.add_checker(eval(c["classname"]))
37
+ end
38
+ end
33
39
  gems_composite_command.execute
34
- puts "<html><head></head><body>"
35
- gems_composite_command.print_html_diff
36
- puts "</html"
40
+ gems_composite_command.print
37
41
  end
38
-
39
42
  end
40
43
 
@@ -0,0 +1,3 @@
1
+ module GemsStatusMetadata
2
+ VERSION = "0.2.0"
3
+ end
data/lib/lockfile_gems.rb CHANGED
@@ -10,11 +10,12 @@ require "utils"
10
10
 
11
11
  class LockfileGems < GemsCommand
12
12
  def initialize(conf)
13
- Utils::check_parameters('LockfileGems', conf, ["dirname", "filename", "gems_url"])
13
+ Utils::check_parameters('LockfileGems', conf, ["id", "dirname", "filename", "gems_url"])
14
14
  @dirname = conf['dirname']
15
15
  @filename = conf['filename']
16
16
  @gems_url = conf['gems_url']
17
17
  @result = {}
18
+ @ident = conf['id']
18
19
  end
19
20
 
20
21
  def get_data
@@ -0,0 +1,29 @@
1
+ require 'rubygems/format'
2
+ require 'rubygems/old_format'
3
+ require 'open-uri'
4
+ require 'gem_checker'
5
+
6
+ class NotNativeGemChecker < GemChecker
7
+ def NotNativeGemChecker.check?(gem)
8
+ result = nil
9
+ gem_uri = "#{gem.gems_url}/#{gem.name}-#{gem.version}.gem"
10
+ begin
11
+ source = open(gem_uri, Gem.binary_mode) do |io|
12
+ result = Gem::Format.from_io io
13
+ end
14
+ rescue IOError
15
+ #bug on open-uri:137 on closing strings
16
+ #it should be
17
+ #io.close if io && !io.closed?
18
+ #or is a bug on rubygems???
19
+ rescue => e
20
+ $stderr.puts "ERROR: There was a problem opening #{gem_uri} #{e.class} #{e.message}"
21
+ end
22
+ return false unless result
23
+ return result.spec.extensions.empty?
24
+ end
25
+ def NotNativeGemChecker.description
26
+ "This gem is a native gem or could not get specs: "
27
+ end
28
+ end
29
+
@@ -0,0 +1,33 @@
1
+ require 'rubygems/format'
2
+ require 'rubygems/old_format'
3
+ require 'open-uri'
4
+ require 'gem_checker'
5
+
6
+ class NotRailsChecker < GemChecker
7
+ def NotRailsChecker.check?(gem)
8
+ result = nil
9
+ gem_uri = "#{gem.gems_url}/#{gem.name}-#{gem.version}.gem"
10
+ begin
11
+ source = open(gem_uri, Gem.binary_mode) do |io|
12
+ result = Gem::Format.from_io io
13
+ end
14
+ rescue IOError
15
+ #bug on open-uri:137 on closing strings
16
+ #it should be
17
+ #io.close if io && !io.closed?
18
+ #or is a bug on rubygems???
19
+ rescue => e
20
+ $stderr.puts "ERROR: There was a problem opening #{gem_uri} #{e.class} #{e.message}"
21
+ end
22
+ return false unless result
23
+ result.spec.dependencies.each do |gem|
24
+ return false if gem.name == "rails"
25
+ end
26
+ return true
27
+ end
28
+
29
+ def NotRailsChecker.description
30
+ "This gem depends on rails or could not get spec: "
31
+ end
32
+ end
33
+
data/lib/obs_gems.rb CHANGED
@@ -8,12 +8,13 @@ require "utils"
8
8
 
9
9
  class OBSGems < GemsCommand
10
10
  def initialize(conf)
11
- Utils::check_parameters('OBSGems', conf, ["username", "password", "url", "obs_repo"])
11
+ Utils::check_parameters('OBSGems', conf, ["id", "username", "password", "url", "obs_repo"])
12
12
  @result = {}
13
13
  @username = conf['username']
14
14
  @password = conf['password']
15
15
  @obs_url = conf['url']
16
16
  @repo = conf['obs_repo']
17
+ @ident = conf['id']
17
18
 
18
19
  end
19
20
 
@@ -11,10 +11,11 @@ require "utils"
11
11
  class RubyGemsGems < GemsCommand
12
12
 
13
13
  def initialize(conf)
14
- Utils::check_parameters('RubyGemsGems', conf, ["url", "specs"])
14
+ Utils::check_parameters('RubyGemsGems', conf, ["id", "url", "specs"])
15
15
  @url = conf['url']
16
16
  @specs = conf['specs']
17
17
  @result = {}
18
+ @ident = conf['id']
18
19
 
19
20
  end
20
21
 
@@ -3,21 +3,23 @@ require "gem_simple"
3
3
  class RubyGemsGems_GemSimple < GemSimple
4
4
 
5
5
  def initialize(name, version, md5, origin, gems_url)
6
- super(name, version, md5, origin)
7
- @gems_url = gems_url
6
+ super(name, version, nil, origin, gems_url)
8
7
  end
9
8
 
10
9
  def md5
10
+ if @md5
11
+ return @md5
12
+ end
11
13
  gem_uri = "#{@gems_url}/#{@name}-#{@version}.gem"
12
14
  $stderr.puts "DEBUG: download and md5 for #{@name} from #{gem_uri}"
13
15
  begin
14
16
  source = open(gem_uri)
15
- digest = Digest::MD5.hexdigest(source.read)
16
- return digest
17
+ @md5 = Digest::MD5.hexdigest(source.read)
18
+ return @md5
17
19
  rescue
18
20
  $stderr.puts "ERROR: There was a problem opening #{gem_uri}"
19
21
  end
20
- return ""
22
+ return nil
21
23
  end
22
24
  end
23
25
 
data/lib/utils.rb CHANGED
@@ -1,17 +1,14 @@
1
1
  class Utils
2
2
  def Utils.check_parameters(classname, conf, parameters)
3
3
  if !conf['classname'] then
4
- $stderr.puts "ERROR: trying to initialize #{classname} when parameter classname does not exists"
5
- exit
4
+ raise "ERROR: trying to initialize #{classname} when parameter classname does not exists"
6
5
  end
7
6
  if conf['classname'] != classname then
8
- $stderr.puts "ERROR: trying to initialize #{classname} when parameter classname is #{conf['classname']}"
9
- exit
7
+ raise "ERROR: trying to initialize #{classname} when parameter classname is #{conf['classname']}"
10
8
  end
11
9
  parameters.each do |p|
12
10
  if !conf[p] then
13
- $stderr.puts "ERROR: parameter #{p} not found for #{classname}"
14
- exit
11
+ raise "ERROR: parameter #{p} not found for #{classname}"
15
12
  end
16
13
  end
17
14
  end
@@ -0,0 +1,162 @@
1
+ require 'rubygems'
2
+ require 'gems_status_metadata'
3
+
4
+ class ViewResults
5
+
6
+ def ViewResults.print_description(ids)
7
+ puts "
8
+ <h1>gems-status</h1>
9
+ <p>This is a comparison between different gem sources:</p>
10
+ <ul>"
11
+ ids.each { |id| puts "<li>#{id}</li>" }
12
+ puts "</ul>
13
+ </p>
14
+ <p>The following table gives you an overview of:</p>
15
+ <ul>
16
+ <li>
17
+ <span class='alert'>patched</span>: gems that have same version but different md5sums
18
+ </li>
19
+ <li>
20
+ <span class='warning'>outdated</span>: gems that have different versions on the different sources
21
+ </li>
22
+ <li>
23
+ <span class='info'>up to date</span>: gems that are up to date in all the sources</span>
24
+ </li>
25
+ </ul>
26
+ <p>
27
+ Note that gems can be patched and outdated at the same time.
28
+ </p>
29
+ <p>
30
+ This information should help you decide which should be your next steps.
31
+ </p>
32
+ <ol>
33
+ <li> Maintain those gems that have been patched but are not outdated
34
+ </li>
35
+ <li> Update does gems that have been patched and are outdated
36
+ </li>
37
+ <li> Update does gems that are outdated
38
+ </li>
39
+ </ol>
40
+ <p>
41
+ After the comparison there are some checks that have been performed. Those checks imply also there is some kind of work to do
42
+ </p>
43
+ <p>
44
+ You should run gems-status periodically until the lists of patched, outdated and checks are gone.
45
+ </p>
46
+ "
47
+ end
48
+
49
+ def ViewResults.print_diff(k, results, target)
50
+ puts "<p>"
51
+ puts "<table width='100%' class='table_results'>"
52
+ version = results[target][k].version
53
+ md5 = results[target][k].md5
54
+ name_color = "info"
55
+ html_string = ""
56
+ results.each do |key, result|
57
+ html_string << "<tr>"
58
+ html_string << "<td>"
59
+ html_string << "#{result[k].origin}"
60
+ html_string << "</td>"
61
+ html_string << "<td>"
62
+ v_color = "info"
63
+ md5_color = "info"
64
+ if version != result[k].version then
65
+ v_color = "warning"
66
+ name_color = "warning" if name_color != "alert"
67
+ else
68
+ if md5 != result[k].md5 then
69
+ md5_color = name_color = "alert"
70
+ end
71
+ end
72
+ html_string << "<span class='#{v_color}'>"
73
+ if !version then
74
+ html_string << "error: look error log"
75
+ end
76
+ html_string << "#{result[k].version}"
77
+ html_string << "</span>"
78
+ html_string << "</td>"
79
+ html_string << "<td>"
80
+ html_string << "<span class='#{md5_color}'>"
81
+ if result[k].md5.empty? then
82
+ html_string << "error: look error log"
83
+ end
84
+ html_string << "#{result[k].md5}"
85
+ html_string << "</span>"
86
+ html_string << "</td>"
87
+ html_string << "</tr>"
88
+ version = result[k].version
89
+ md5 = result[k].md5
90
+ end
91
+ puts "<tr><td><span class='#{name_color}'>#{k}</span></td></tr>"
92
+ puts html_string
93
+ puts "</table>"
94
+ puts "</p>"
95
+ end
96
+
97
+ def ViewResults.print_check(description, name_gem)
98
+ puts "<span class='check'> #{description} #{name_gem}</span><br/>"
99
+ end
100
+
101
+ def ViewResults.print_head
102
+ puts "<html>
103
+ <head>
104
+ <style>
105
+ body
106
+ {
107
+ font-size: 100%;
108
+ }
109
+ h1
110
+ {
111
+ font-size: 110%;
112
+ font-weight: bold;
113
+ }
114
+ .gem_name
115
+ {
116
+ color: #000000;
117
+ font-weight: bold;
118
+ }
119
+ .alert
120
+ {
121
+ color: #ff0000;
122
+ }
123
+ .warning
124
+ {
125
+ color: #ffaa00;
126
+ }
127
+ .info
128
+ {
129
+ color: #000000;
130
+ }
131
+ .info
132
+ {
133
+ color: #000000;
134
+ }
135
+ .footer
136
+ {
137
+ color: #aaaaaa;
138
+ font-size: 60%;
139
+ }
140
+ .check
141
+ {
142
+ font-style: italic;
143
+ color: #ff0000;
144
+ font-size: 80%;
145
+ }
146
+ .table_results
147
+ {
148
+ font-size: 80%;
149
+ }
150
+ </style>
151
+ </head>
152
+ <body>"
153
+ end
154
+
155
+ def ViewResults.print_tail
156
+ date = Time.now.strftime('%F0')
157
+ puts "<p class='footer'>run by <a href=\"https://github.com/jordimassaguerpla/gems-status\">gems-status</a> - #{date} - version: #{GemsStatusMetadata::VERSION}</p>
158
+ </body>
159
+ </html>"
160
+ end
161
+
162
+ end
data/test/Gemfile CHANGED
@@ -1,104 +1,9 @@
1
1
  source 'http://rubygems.org'
2
2
 
3
- gem 'rake', '>=0.9.2'
4
- gem 'rails', '3.1.1'
5
-
6
- gem 'sqlite3-ruby', '>=1.3.3', :require => 'sqlite3'
7
-
8
- # Use unicorn as the web server
9
- # gem 'unicorn'
10
-
11
- # Deploy with Capistrano
12
- # gem 'capistrano'
13
-
14
- # To use debugger
15
- # gem 'ruby-debug'
16
-
17
- # Bundle the extra gems:
18
- # gem 'bj'
19
- # gem 'nokogiri'
20
- # gem 'sqlite3-ruby', :require => 'sqlite3'
21
- # gem 'aws-s3', :require => 'aws/s3'
22
-
23
- gem 'newrelic_rpm'
24
-
25
- # Bundle gems for the local environment. Make sure to
26
- # put test-only gems in this group so their generators
27
- # and rake tasks are available in development mode:
28
- group :test do
29
- gem 'timecop'
30
- gem 'shoulda'
31
- gem 'ci_reporter'
32
- gem 'factory_girl'
33
- gem 'factory_girl_rails'
34
- gem 'migration_test_helper'
35
- gem 'mocha', :require => false
36
- gem 'webmock', :require => 'webmock/test_unit'
37
- gem 'fakefs', :require => 'fakefs/safe'
38
- end
39
-
40
- group :development do
41
- gem 'parallel_tests'
42
- end
43
-
44
- gem 'multi_db'
45
- gem 'haml'
46
- gem 'sass'
47
- gem 'friendly_id', '~> 3.3.0.rc2'
48
- gem 'uuid_it'
49
- gem 'RedCloth'
50
- gem "gettext", '>=1.9.3'
51
- #gem "gettext_activerecord"
52
- gem "has_alter_ego"
53
- gem 'oauth', '>=0.4.1'
54
- gem "oauth-plugin"
55
- gem 'thinking-sphinx', '~>2.0.5', :require => 'thinking_sphinx'
56
- gem 'memcache-client'
57
3
  gem 'system_timer'
58
- gem 'ruby-openid'
59
- gem 'fastercsv'
60
- gem 'amazon-ec2'
61
- gem 'aws-s3'
62
- gem 'pg'
63
- gem 'gruff'
64
- gem 'rmagick', '=2.12.2'
65
- gem 'awesome_nested_set'
66
- gem 'verification', '>=1.0.2'
67
- #, :git => 'git://github.com/collectiveidea/awesome_nested_set'
68
- gem 'http_accept_language'
69
- #, :git => 'git://github.com/iain/http_accept_language.git'
70
- gem "will_paginate", '~> 3.0.pre4'
71
- gem "net-ssh"
72
- gem 'sass-rails'
73
- gem "uglifier"
74
- gem "yui-compressor"
75
- # We need prototype-rails for the "render :update" blocks
76
- gem 'prototype-rails'
77
- gem 'daemons'
78
- gem 'coffee-rails'
79
4
  gem 'abingo'
80
- gem 'dynamic_form'
81
- gem 'private_pub'
82
- gem 'faye'
83
-
84
- gem "omniauth", '>=0.2.6'
85
- gem "has_mobile_views"
86
-
87
- ## Feedzirra not needed for Onsite or kiosk
88
- #unless OPTS.onsite_mode or OPTS.kiosk_mode
89
- gem 'feedzirra', '>=0.0.24'
90
- #end
91
-
92
- # TODO: Handle those special cases:
93
- #if !OPTS.onsite_mode and OPTS.graylog2['enabled']
94
- gem 'gelf'
95
- #end
96
-
97
- # to work around https://github.com/mikel/mail/issues/260,
98
- # let's use https://github.com/mikel/mail/pull/265/files
99
- gem 'mail'
100
- #, :git => 'git://github.com/zimbatm/mail.git'
5
+ gem 'factory_girl_rails'
6
+ gem 'curb'
7
+ gem 'xml-simple'
8
+ gem 'fakefs'
101
9
 
102
- group :test do
103
- gem "rcov"
104
- end
data/test/Gemfile.lock CHANGED
@@ -1,340 +1,15 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
- POpen4 (0.1.4)
5
- Platform (>= 0.4.0)
6
- open4
7
- Platform (0.4.0)
8
- RedCloth (4.2.7)
9
- XMLCanonicalizer (1.0.1)
10
- log4r (>= 1.0.4)
4
+ gem 'fakefs'
5
+ system_timer (1.2.4)
11
6
  abingo (1.0.3)
12
- actionmailer (3.1.1)
13
- actionpack (= 3.1.1)
14
- mail (~> 2.3.0)
15
- actionpack (3.1.1)
16
- activemodel (= 3.1.1)
17
- activesupport (= 3.1.1)
18
- builder (~> 3.0.0)
19
- erubis (~> 2.7.0)
20
- i18n (~> 0.6)
21
- rack (~> 1.3.2)
22
- rack-cache (~> 1.1)
23
- rack-mount (~> 0.8.2)
24
- rack-test (~> 0.6.1)
25
- sprockets (~> 2.0.2)
26
- activemodel (3.1.1)
27
- activesupport (= 3.1.1)
28
- builder (~> 3.0.0)
29
- i18n (~> 0.6)
30
- activerecord (3.1.1)
31
- activemodel (= 3.1.1)
32
- activesupport (= 3.1.1)
33
- arel (~> 2.2.1)
34
- tzinfo (~> 0.3.29)
35
- activeresource (3.1.1)
36
- activemodel (= 3.1.1)
37
- activesupport (= 3.1.1)
38
- activesupport (3.1.1)
39
- multi_json (~> 1.0)
40
- addressable (2.2.6)
41
- amazon-ec2 (0.9.17)
42
- xml-simple (>= 1.0.12)
43
- arel (2.2.1)
44
- awesome_nested_set (2.0.1)
45
- activerecord (>= 3.0.0)
46
- aws-s3 (0.6.2)
47
- builder
48
- mime-types
49
- xml-simple
50
- babosa (0.3.5)
51
- builder (3.0.0)
52
- ci_reporter (1.6.5)
53
- builder (>= 2.1.2)
54
- coffee-rails (3.1.1)
55
- coffee-script (>= 2.2.0)
56
- railties (~> 3.1.0)
57
- coffee-script (2.2.0)
58
- coffee-script-source
59
- execjs
60
- coffee-script-source (1.1.2)
61
- crack (0.1.7)
62
- curb (0.7.15)
63
- daemons (1.0.10)
64
- dynamic_form (1.1.4)
65
- em-hiredis (0.1.0)
66
- hiredis (~> 0.3.0)
67
- em-http-request (0.3.0)
68
- addressable (>= 2.0.0)
69
- escape_utils
70
- eventmachine (>= 0.12.9)
71
- erubis (2.7.0)
72
- escape_utils (0.2.4)
73
- eventmachine (0.12.10)
74
- execjs (1.2.0)
75
- multi_json (~> 1.0)
76
- factory_girl (2.1.2)
77
- activesupport
78
7
  factory_girl_rails (1.2.0)
79
- factory_girl (~> 2.1.0)
80
- railties (>= 3.0.0)
81
- fakefs (0.4.0)
82
- faraday (0.7.5)
83
- addressable (~> 2.2.6)
84
- multipart-post (~> 1.1.3)
85
- rack (>= 1.1.0, < 2)
86
- fastercsv (1.5.4)
87
- faye (0.6.7)
88
- em-hiredis (>= 0.0.1)
89
- em-http-request (~> 0.3)
90
- eventmachine (~> 0.12.0)
91
- json (>= 1.0)
92
- rack (>= 1.0)
93
- thin (~> 1.2)
94
- feedzirra (0.1.1)
95
- activesupport (>= 3.0.8)
96
- builder (>= 2.1.2)
97
- curb (~> 0.7.15)
98
- i18n (>= 0.5.0)
99
- loofah (~> 1.2.0)
100
- nokogiri (>= 1.4.4)
101
- rake (>= 0.8.7)
102
- rdoc (~> 3.8)
103
- sax-machine (~> 0.1.0)
104
- friendly_id (3.3.0.rc2)
105
- babosa (~> 0.3.0)
106
- gelf (1.1.3)
107
- json
108
- gettext (2.1.0)
109
- locale (>= 2.0.5)
110
- gruff (0.3.6)
111
- haml (3.1.2)
112
- has_alter_ego (0.0.9)
113
- has_mobile_views (0.0.3)
114
- hike (1.2.1)
115
- hiredis (0.3.2)
116
- http_accept_language (1.0.3)
117
- i18n (0.6.0)
118
- json (1.6.1)
119
- locale (2.0.5)
120
- log4r (1.1.9)
121
- loofah (1.2.0)
122
- nokogiri (>= 1.4.4)
123
- macaddr (1.0.0)
124
- mail (2.3.0)
125
- i18n (>= 0.4.0)
126
- mime-types (~> 1.16)
127
- treetop (~> 1.4.8)
128
- memcache-client (1.8.3)
129
- metaclass (0.0.1)
130
- migration_test_helper (1.3.3)
131
- mime-types (1.16)
132
- mocha (0.10.0)
133
- metaclass (~> 0.0.1)
134
- multi_db (0.3.0)
135
- activerecord (>= 2.1.0)
136
- tlattr_accessors (>= 0.0.3)
137
- multi_json (1.0.3)
138
- multi_xml (0.4.1)
139
- multipart-post (1.1.3)
140
- net-ldap (0.2.2)
141
- net-ssh (2.0.23)
142
- newrelic_rpm (3.3.0)
143
- nokogiri (1.5.0)
144
- oa-basic (0.3.0)
145
- oa-core (= 0.3.0)
146
- rest-client (~> 1.6.0)
147
- oa-core (0.3.0)
148
- oa-enterprise (0.3.0)
149
- XMLCanonicalizer (~> 1.0.1)
150
- addressable (~> 2.2.6)
151
- net-ldap (~> 0.2.2)
152
- nokogiri (~> 1.5.0)
153
- oa-core (= 0.3.0)
154
- pyu-ruby-sasl (~> 0.0.3.1)
155
- rubyntlm (~> 0.1.1)
156
- uuid
157
- oa-more (0.3.0)
158
- multi_json (~> 1.0.0)
159
- oa-core (= 0.3.0)
160
- rest-client (~> 1.6.0)
161
- oa-oauth (0.3.0)
162
- faraday (~> 0.7.3)
163
- multi_json (~> 1.0.0)
164
- multi_xml (~> 0.4.0)
165
- oa-core (= 0.3.0)
166
- oauth (~> 0.4.0)
167
- oauth2 (~> 0.5.0)
168
- oa-openid (0.3.0)
169
- oa-core (= 0.3.0)
170
- rack-openid (~> 1.3.1)
171
- ruby-openid-apps-discovery (~> 1.2.0)
172
- oauth (0.4.5)
173
- oauth-plugin (0.3.14)
174
- oauth (>= 0.3.5)
175
- oauth2 (0.5.1)
176
- faraday (~> 0.7.4)
177
- multi_json (~> 1.0.3)
178
- omniauth (0.3.0)
179
- oa-basic (= 0.3.0)
180
- oa-core (= 0.3.0)
181
- oa-enterprise (= 0.3.0)
182
- oa-more (= 0.3.0)
183
- oa-oauth (= 0.3.0)
184
- oa-openid (= 0.3.0)
185
- open4 (1.0.1)
186
- parallel (0.5.11)
187
- parallel_tests (0.6.12)
188
- parallel
189
- pg (0.11.0)
190
- polyglot (0.3.2)
191
- private_pub (0.2.0)
192
- prototype-rails (3.1.0)
193
- rails (~> 3.1)
194
- pyu-ruby-sasl (0.0.3.2)
195
- rack (1.3.5)
196
- rack-cache (1.1)
197
- rack (>= 0.4)
198
- rack-mount (0.8.3)
199
- rack (>= 1.0.0)
200
- rack-openid (1.3.1)
201
- rack (>= 1.1.0)
202
- ruby-openid (>= 2.1.8)
203
- rack-ssl (1.3.2)
204
- rack
205
- rack-test (0.6.1)
206
- rack (>= 1.0)
207
- rails (3.1.1)
208
- actionmailer (= 3.1.1)
209
- actionpack (= 3.1.1)
210
- activerecord (= 3.1.1)
211
- activeresource (= 3.1.1)
212
- activesupport (= 3.1.1)
213
- bundler (~> 1.0)
214
- railties (= 3.1.1)
215
- railties (3.1.1)
216
- actionpack (= 3.1.1)
217
- activesupport (= 3.1.1)
218
- rack-ssl (~> 1.3.2)
219
- rake (>= 0.8.7)
220
- rdoc (~> 3.4)
221
- thor (~> 0.14.6)
222
- rake (0.9.2)
223
- rcov (0.9.10)
224
- rdoc (3.9.1)
225
- rest-client (1.6.7)
226
- mime-types (>= 1.16)
227
- riddle (1.3.3)
228
- rmagick (2.12.2)
229
- ruby-openid (2.1.8)
230
- ruby-openid-apps-discovery (1.2.0)
231
- ruby-openid (>= 2.1.7)
232
- rubyntlm (0.1.1)
233
- sass (3.1.10)
234
- sass-rails (3.1.4)
235
- actionpack (~> 3.1.0)
236
- railties (~> 3.1.0)
237
- sass (>= 3.1.4)
238
- sprockets (~> 2.0.0)
239
- tilt (~> 1.3.2)
240
- sax-machine (0.1.0)
241
- nokogiri (> 0.0.0)
242
- shoulda (2.11.3)
243
- sprockets (2.0.2)
244
- hike (~> 1.2)
245
- rack (~> 1.0)
246
- tilt (~> 1.1, != 1.3.0)
247
- sqlite3 (1.3.4)
248
- sqlite3-ruby (1.3.3)
249
- sqlite3 (>= 1.3.3)
250
- system_timer (1.2.4)
251
- thin (1.2.11)
252
- daemons (>= 1.0.9)
253
- eventmachine (>= 0.12.6)
254
- rack (>= 1.0.0)
255
- thinking-sphinx (2.0.5)
256
- activerecord (>= 3.0.3)
257
- riddle (>= 1.3.3)
258
- thor (0.14.6)
259
- tilt (1.3.3)
260
- timecop (0.3.5)
261
- tlattr_accessors (0.0.3)
262
- treetop (1.4.9)
263
- polyglot (>= 0.3.1)
264
- tzinfo (0.3.30)
265
- uglifier (1.0.0)
266
- execjs (>= 0.3.0)
267
- multi_json (>= 1.0.2)
268
- uuid (2.3.2)
269
- macaddr (~> 1.0)
270
- uuid_it (0.1.0)
271
- verification (1.0.2)
272
- actionpack (>= 3.0.0, < 3.2.0)
273
- activesupport (>= 3.0.0, < 3.2.0)
274
- webmock (1.7.7)
275
- addressable (~> 2.2, > 2.2.5)
276
- crack (>= 0.1.7)
277
- will_paginate (3.0.0)
8
+ curb (0.7.15)
278
9
  xml-simple (1.0.12)
279
- yui-compressor (0.9.6)
280
- POpen4 (>= 0.1.4)
10
+ fakefs (0.4.0)
281
11
 
282
12
  PLATFORMS
283
13
  ruby
284
14
 
285
15
  DEPENDENCIES
286
- RedCloth
287
- abingo
288
- amazon-ec2
289
- awesome_nested_set
290
- aws-s3
291
- ci_reporter
292
- coffee-rails
293
- daemons
294
- dynamic_form
295
- factory_girl
296
- factory_girl_rails
297
- fakefs
298
- fastercsv
299
- faye
300
- feedzirra (>= 0.0.24)
301
- friendly_id (~> 3.3.0.rc2)
302
- gelf
303
- gettext (>= 1.9.3)
304
- gruff
305
- haml
306
- has_alter_ego
307
- has_mobile_views
308
- http_accept_language
309
- mail
310
- memcache-client
311
- migration_test_helper
312
- mocha
313
- multi_db
314
- net-ssh
315
- newrelic_rpm
316
- oauth (>= 0.4.1)
317
- oauth-plugin
318
- omniauth (>= 0.2.6)
319
- parallel_tests
320
- pg
321
- private_pub
322
- prototype-rails
323
- rails (= 3.1.1)
324
- rake (>= 0.9.2)
325
- rcov
326
- rmagick (= 2.12.2)
327
- ruby-openid
328
- sass
329
- sass-rails
330
- shoulda
331
- sqlite3-ruby (>= 1.3.3)
332
- system_timer
333
- thinking-sphinx (~> 2.0.5)
334
- timecop
335
- uglifier
336
- uuid_it
337
- verification (>= 1.0.2)
338
- webmock
339
- will_paginate (~> 3.0.pre4)
340
- yui-compressor
@@ -8,78 +8,89 @@ end
8
8
 
9
9
  class TestGemsCompositeCommand < Test::Unit::TestCase
10
10
  def test_common_key_in_empty_results
11
- gemscompositecommand = GemsCompositeCommand.new
11
+ gemscompositecommand = GemsCompositeCommand.new('id')
12
12
  result = gemscompositecommand.common_key?("this key does not exists")
13
13
  assert(!result)
14
14
  end
15
15
  def test_common_key_in_zero_coincidences_one_result
16
- gemscompositecommand = GemsCompositeCommandTest.new
17
- gemscompositecommand.results = [{"a key"=>"a value"}]
16
+ gemscompositecommand = GemsCompositeCommandTest.new('id')
17
+ gemscompositecommand.results['id'] = {"a key"=>"a value"}
18
18
  result = gemscompositecommand.common_key?("this key does not exists")
19
19
  assert(!result)
20
20
  end
21
21
  def test_common_key_in_zero_coincidences_two_results
22
- gemscompositecommand = GemsCompositeCommandTest.new
23
- gemscompositecommand.results = [{"a key"=>"a value"},{"another key"=>"another value"}]
22
+ gemscompositecommand = GemsCompositeCommandTest.new('id')
23
+ gemscompositecommand.results['id'] = {"a key"=>"a value"}
24
+ gemscompositecommand.results['id2'] = {"another key"=>"another value"}
24
25
  result = gemscompositecommand.common_key?("this key does not exists")
25
26
  assert(!result)
26
27
  end
27
28
  def test_common_key_in_one_coincidence_one_results
28
- gemscompositecommand = GemsCompositeCommandTest.new
29
- gemscompositecommand.results = [{"a key"=>"a value"}]
29
+ gemscompositecommand = GemsCompositeCommandTest.new('id')
30
+ gemscompositecommand.results['id']= {"a key"=>"a value"}
30
31
  result = gemscompositecommand.common_key?("a key")
31
- assert(result)
32
+ assert(!result)
32
33
  end
33
34
  def test_common_key_in_one_coincidence_two_results
34
- gemscompositecommand = GemsCompositeCommandTest.new
35
- gemscompositecommand.results = [{"a key"=>"a value"},{"another key"=>"another value"}]
35
+ gemscompositecommand = GemsCompositeCommandTest.new('id')
36
+ gemscompositecommand.results['id']= {"a key"=>"a value"}
37
+ gemscompositecommand.results['id2']= {"another key"=>"another value"}
36
38
  result = gemscompositecommand.common_key?("a key")
37
39
  assert(!result)
38
40
  end
39
41
  def test_common_key_in_two_coincidence_two_results
40
- gemscompositecommand = GemsCompositeCommandTest.new
41
- gemscompositecommand.results = [{"a key"=>"a value"},{"a key"=>"another value"}]
42
+ gemscompositecommand = GemsCompositeCommandTest.new('id')
43
+ gemscompositecommand.results['id']= {"a key"=>"a value"}
44
+ gemscompositecommand.results['id2']= {"a key"=>"another value"}
42
45
  result = gemscompositecommand.common_key?("a key")
43
46
  assert(result)
44
47
  end
45
48
  def test_equals_when_no_common_keys
46
- gemscompositecommand = GemsCompositeCommandTest.new
49
+ gemscompositecommand = GemsCompositeCommandTest.new('id')
47
50
  gem1 = GemSimple.new("foo_name","foo_version","md5","origin1")
48
51
  gem2 = GemSimple.new("foo_name","foo_version","md5","origin2")
49
52
  gem3 = GemSimple.new("bar_name","bar_version","md5","origin3")
50
- gemscompositecommand.results = [{"foo"=>gem1},{"foo"=>gem2},{"bar"=>gem3}]
53
+ gemscompositecommand.results['id']= {"foo"=>gem1}
54
+ gemscompositecommand.results['id2']= {"foo"=>gem2}
55
+ gemscompositecommand.results['id3']= {"bar"=>gem3}
51
56
  result = gemscompositecommand.equal_gems?("foo")
52
57
  assert(!result)
53
58
  end
54
59
  def test_equals_when_version_not_equals
55
- gemscompositecommand = GemsCompositeCommandTest.new
60
+ gemscompositecommand = GemsCompositeCommandTest.new('id')
56
61
  gem1 = GemSimple.new("foo_name","foo_version","md5","origin1")
57
62
  gem2 = GemSimple.new("foo_name","foo_version","md5","origin2")
58
63
  gem3 = GemSimple.new("foo_name","bar_version","md5","origin3")
59
- gemscompositecommand.results = [{"foo"=>gem1},{"foo"=>gem2},{"foo"=>gem3}]
64
+ gemscompositecommand.results['id']= {"foo"=>gem1}
65
+ gemscompositecommand.results['id2']= {"foo"=>gem2}
66
+ gemscompositecommand.results['id3']= {"foo"=>gem3}
60
67
  result = gemscompositecommand.equal_gems?("foo")
61
68
  assert(!result)
62
69
  end
63
70
  def test_equals_when_md5_not_equals
64
- gemscompositecommand = GemsCompositeCommandTest.new
71
+ gemscompositecommand = GemsCompositeCommandTest.new('id')
65
72
  gem1 = GemSimple.new("foo_name","foo_version","md5","origin1")
66
73
  gem2 = GemSimple.new("foo_name","foo_version","md5","origin2")
67
74
  gem3 = GemSimple.new("foo_name","foo_version","md5_2","origin3")
68
- gemscompositecommand.results = [{"foo"=>gem1},{"foo"=>gem2},{"foo"=>gem3}]
75
+ gemscompositecommand.results['id']= {"foo"=>gem1}
76
+ gemscompositecommand.results['id2']= {"foo"=>gem2}
77
+ gemscompositecommand.results['id3']= {"foo"=>gem3}
69
78
  result = gemscompositecommand.equal_gems?("foo")
70
79
  assert(!result)
71
80
  end
72
81
  def test_equals_when_equals
73
- gemscompositecommand = GemsCompositeCommandTest.new
82
+ gemscompositecommand = GemsCompositeCommandTest.new('id')
74
83
  gem1 = GemSimple.new("foo_name","foo_version","md5","origin1")
75
84
  gem2 = GemSimple.new("foo_name","foo_version","md5","origin2")
76
85
  gem3 = GemSimple.new("foo_name","foo_version","md5","origin3")
77
- gemscompositecommand.results = [{"foo"=>gem1},{"foo"=>gem2},{"foo"=>gem3}]
86
+ gemscompositecommand.results['id']= {"foo"=>gem1}
87
+ gemscompositecommand.results['id2']= {"foo"=>gem2}
88
+ gemscompositecommand.results['id3']= {"foo"=>gem3}
78
89
  result = gemscompositecommand.equal_gems?("foo")
79
90
  assert(result)
80
91
  end
81
92
  def test_equals_when_no_results
82
- gemscompositecommand = GemsCompositeCommandTest.new
93
+ gemscompositecommand = GemsCompositeCommandTest.new('id')
83
94
  result = gemscompositecommand.equal_gems?("foo")
84
95
  assert(!result)
85
96
  end
@@ -0,0 +1,51 @@
1
+ $:.unshift File.join(File.dirname(__FILE__), "..", "lib")
2
+ require 'test/unit'
3
+ require 'rubygems'
4
+ require 'utils'
5
+
6
+ class TestUtils < Test::Unit::TestCase
7
+ def test_check_parameters_no_classname
8
+ begin
9
+ Utils::check_parameters("classname", {}, [])
10
+ assert(false)
11
+ rescue RuntimeError
12
+ assert(true)
13
+ end
14
+ end
15
+ def test_check_parameters_different_class_name
16
+ begin
17
+ Utils::check_parameters("classname", { "classname" => "wrong_classname" },
18
+ [])
19
+ assert(false)
20
+ rescue RuntimeError
21
+ assert(true)
22
+ end
23
+ end
24
+ def test_check_parameters_equal_class_name
25
+ begin
26
+ Utils::check_parameters("classname", { "classname" => "classname" },
27
+ [])
28
+ assert(true)
29
+ rescue RuntimeError
30
+ assert(false)
31
+ end
32
+ end
33
+ def test_check_parameters_wrong_parameters
34
+ begin
35
+ Utils::check_parameters("classname", { "classname" => "classname" },
36
+ [ "parameter" ])
37
+ assert(false)
38
+ rescue RuntimeError
39
+ assert(true)
40
+ end
41
+ end
42
+ def test_check_parameters_rigth_parameters
43
+ begin
44
+ Utils::check_parameters("classname", { "classname" => "classname",
45
+ "parameter" => "value" }, [ "parameter" ])
46
+ assert(true)
47
+ rescue RuntimeError
48
+ assert(false)
49
+ end
50
+ end
51
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gems-status
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 23
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 1
8
+ - 2
9
9
  - 0
10
- version: 0.1.0
10
+ version: 0.2.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Jordi Massaguer Pla
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-02-02 00:00:00 Z
18
+ date: 2012-02-03 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: xml-simple
@@ -59,7 +59,13 @@ files:
59
59
  - lib/gem_simple.rb
60
60
  - lib/lockfile_gems.rb
61
61
  - lib/ruby_gems_gems_gem_simple.rb
62
+ - lib/not_native_gem_checker.rb
62
63
  - lib/gems_composite_command.rb
64
+ - lib/gems_status_metadata.rb
65
+ - lib/gem_checker.rb
66
+ - lib/exists_in_upstream.rb
67
+ - lib/not_rails_checker.rb
68
+ - lib/view_results.rb
63
69
  - lib/obs_gems.rb
64
70
  - lib/gems_command.rb
65
71
  - lib/gems_status.rb
@@ -68,6 +74,7 @@ files:
68
74
  - test/Gemfile.lock.test
69
75
  - test/test-gems_composite_command.rb
70
76
  - test/test-gems_command.rb
77
+ - test/test-utils.rb
71
78
  - test/test-ruby_gems_gems.rb
72
79
  - test/test-lockfile_gems.rb
73
80
  - test/test-obs_gems.rb