gems-status 0.2.7 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/gems_composite_command.rb +1 -27
- data/lib/gems_status_metadata.rb +1 -1
- data/lib/lockfile_gems.rb +18 -13
- data/lib/obs_gems.rb +2 -2
- data/lib/ruby_gems_gems.rb +1 -1
- data/lib/ruby_gems_gems_gem_simple.rb +17 -3
- data/lib/view_results.rb +42 -30
- data/test/Gemfile.lock.test +10 -0
- data/test/test-gems_composite_command.rb +0 -49
- data/test/test-lockfile_gems.rb +24 -12
- data/test/test-obs_gems.rb +3 -3
- data/test/test-ruby_gems_gems.rb +2 -2
- metadata +5 -5
@@ -37,7 +37,7 @@ class GemsCompositeCommand < GemsCommand
|
|
37
37
|
end
|
38
38
|
@checkers.each do |check_class|
|
39
39
|
@results[@target].sort.each do |k, gem|
|
40
|
-
@checker_results[gem.name]
|
40
|
+
@checker_results[gem.name].each { |g| check_class::description + gem.name unless check_class::check?(g) }
|
41
41
|
end
|
42
42
|
end
|
43
43
|
end
|
@@ -54,28 +54,6 @@ class GemsCompositeCommand < GemsCommand
|
|
54
54
|
return true
|
55
55
|
end
|
56
56
|
|
57
|
-
def equal_gems?(k)
|
58
|
-
if !are_there_results?
|
59
|
-
return false
|
60
|
-
end
|
61
|
-
if !common_key?(k)
|
62
|
-
return false
|
63
|
-
end
|
64
|
-
version = @results[@target][k].version
|
65
|
-
md5 = @results[@target][k].md5
|
66
|
-
@results.each do |key, result|
|
67
|
-
if result[k].version != version
|
68
|
-
return false
|
69
|
-
end
|
70
|
-
if result[k].md5 != md5
|
71
|
-
return false
|
72
|
-
end
|
73
|
-
version = result[k].version
|
74
|
-
md5 = result[k].md5
|
75
|
-
end
|
76
|
-
return true
|
77
|
-
end
|
78
|
-
|
79
57
|
def add_comments(comments)
|
80
58
|
@comments = comments
|
81
59
|
end
|
@@ -104,10 +82,6 @@ class GemsCompositeCommand < GemsCommand
|
|
104
82
|
@results[@target].sort.each do |k,v|
|
105
83
|
if !common_key?(k) then
|
106
84
|
Utils::log_error(k, "#{k} in #{@target} but not found in all the sources!")
|
107
|
-
next
|
108
|
-
end
|
109
|
-
if equal_gems?(k) then
|
110
|
-
next
|
111
85
|
end
|
112
86
|
if @checker_results[k]
|
113
87
|
checker_results = @checker_results[k]
|
data/lib/gems_status_metadata.rb
CHANGED
data/lib/lockfile_gems.rb
CHANGED
@@ -31,9 +31,11 @@ class LockfileGems < GemsCommand
|
|
31
31
|
def update_gem_dependencies(gem)
|
32
32
|
Utils::log_debug("updating dependencies for #{gem.name}")
|
33
33
|
changes = false
|
34
|
-
@result.each do |k,
|
35
|
-
|
36
|
-
|
34
|
+
@result.each do |k, gems|
|
35
|
+
gems.each do |gem2|
|
36
|
+
if gem.depends?(gem2)
|
37
|
+
changes = gem.merge_deps(gem2) || changes
|
38
|
+
end
|
37
39
|
end
|
38
40
|
end
|
39
41
|
return changes
|
@@ -41,8 +43,10 @@ class LockfileGems < GemsCommand
|
|
41
43
|
|
42
44
|
def update_dependencies
|
43
45
|
changes = false
|
44
|
-
@result.each do |k,
|
45
|
-
|
46
|
+
@result.each do |k, gems|
|
47
|
+
gems.each do |gem|
|
48
|
+
changes = update_gem_dependencies(gem) || changes
|
49
|
+
end
|
46
50
|
end
|
47
51
|
update_dependencies if changes
|
48
52
|
end
|
@@ -59,16 +63,17 @@ class LockfileGems < GemsCommand
|
|
59
63
|
lockfile.specs.each do |spec|
|
60
64
|
name = spec.name
|
61
65
|
version = Gem::Version.create(spec.version)
|
62
|
-
if @result[name] && @result[name].version != version
|
63
|
-
Utils::log_error(name, "
|
64
|
-
Same gem with different versions:
|
65
|
-
#{name} - #{version} - #{filename}\n
|
66
|
-
#{name} - #{@result[name].version} - #{@result[name].origin} ")
|
67
|
-
end
|
68
66
|
dependencies = spec.dependencies
|
69
67
|
Utils::log_debug "dependencies for #{name} #{dependencies}"
|
70
|
-
|
71
|
-
|
68
|
+
if spec.source.class.name == "Bundler::Source::Git"
|
69
|
+
Utils::log_debug "this comes from git #{name} #{version}"
|
70
|
+
gems_url = spec.source.uri
|
71
|
+
else
|
72
|
+
gems_url = @gems_url
|
73
|
+
end
|
74
|
+
@result[name] = [] if !@result[name]
|
75
|
+
@result[name] << RubyGemsGems_GemSimple.new(name, version , '', filename,
|
76
|
+
gems_url, dependencies)
|
72
77
|
end
|
73
78
|
update_dependencies
|
74
79
|
end
|
data/lib/obs_gems.rb
CHANGED
@@ -83,8 +83,8 @@ class OBSGems < GemsCommand
|
|
83
83
|
name = gem_name(entry['name'])
|
84
84
|
version = Gem::Version.new(gem_version(entry['name']))
|
85
85
|
md5 = entry['md5']
|
86
|
-
if !@result[name] || @result[name].version < version
|
87
|
-
@result[name] = GemSimple.new(name, version, md5, url)
|
86
|
+
if !@result[name] || @result[name][0].version < version
|
87
|
+
@result[name] = [GemSimple.new(name, version, md5, url)]
|
88
88
|
end
|
89
89
|
end
|
90
90
|
end
|
data/lib/ruby_gems_gems.rb
CHANGED
@@ -42,7 +42,7 @@ class RubyGemsGems < GemsCommand
|
|
42
42
|
name = line[0]
|
43
43
|
version = Gem::Version.new(line[1])
|
44
44
|
gems_url = "#{@url}/gems"
|
45
|
-
@result[name] = RubyGemsGems_GemSimple.new(name, version,'' , @url, gems_url)
|
45
|
+
@result[name] = [RubyGemsGems_GemSimple.new(name, version,'' , @url, gems_url)]
|
46
46
|
end
|
47
47
|
end
|
48
48
|
|
@@ -10,10 +10,20 @@ class RubyGemsGems_GemSimple < GemSimple
|
|
10
10
|
if @md5
|
11
11
|
return @md5
|
12
12
|
end
|
13
|
-
|
14
|
-
|
13
|
+
if from_git?
|
14
|
+
return nil
|
15
|
+
end
|
16
|
+
gem_uri = URI.parse("#{@gems_url}/#{@name}-#{@version}.gem")
|
17
|
+
uri_debug = gem_uri.clone
|
18
|
+
uri_debug.password = "********" if uri_debug.password
|
19
|
+
Utils::log_debug "download and md5 for #{@name} from #{uri_debug}"
|
15
20
|
begin
|
16
|
-
|
21
|
+
if gem_uri.user && gem_uri.password
|
22
|
+
source = open(gem_uri.scheme + "://" + gem_uri.host + "/" + gem_uri.path,
|
23
|
+
:http_basic_authentication=>[gem_uri.user, gem_uri.password])
|
24
|
+
else
|
25
|
+
source = open(gem_uri)
|
26
|
+
end
|
17
27
|
@md5 = Digest::MD5.hexdigest(source.read)
|
18
28
|
return @md5
|
19
29
|
rescue
|
@@ -21,5 +31,9 @@ class RubyGemsGems_GemSimple < GemSimple
|
|
21
31
|
end
|
22
32
|
return nil
|
23
33
|
end
|
34
|
+
|
35
|
+
def from_git?
|
36
|
+
return @gems_url.start_with?("git://")
|
37
|
+
end
|
24
38
|
end
|
25
39
|
|
data/lib/view_results.rb
CHANGED
@@ -52,44 +52,56 @@ class ViewResults
|
|
52
52
|
def ViewResults.print_results(k, results, target, checker_results, comments)
|
53
53
|
puts "<p>"
|
54
54
|
puts "<table width='100%' class='table_results'>"
|
55
|
-
version = results[target][k].version
|
56
|
-
md5 = results[target][k].md5
|
55
|
+
version = results[target][k][0].version
|
56
|
+
md5 = results[target][k][0].md5
|
57
57
|
name_color = "info"
|
58
58
|
html_string = ""
|
59
59
|
results.each do |key, result|
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
html_string << "</td>"
|
64
|
-
html_string << "<td>"
|
60
|
+
if !result[k]
|
61
|
+
next
|
62
|
+
end
|
65
63
|
v_color = "info"
|
66
64
|
md5_color = "info"
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
65
|
+
result[k].each do |gem|
|
66
|
+
html_string << "<tr>"
|
67
|
+
html_string << "<td>"
|
68
|
+
html_string << "#{gem.origin}"
|
69
|
+
html_string << "</td>"
|
70
|
+
html_string << "<td>"
|
71
|
+
if gem.from_git? then
|
72
72
|
md5_color = name_color = "alert"
|
73
73
|
end
|
74
|
+
if version != gem.version then
|
75
|
+
v_color = "warning"
|
76
|
+
name_color = "warning" if name_color != "alert"
|
77
|
+
else
|
78
|
+
if !gem.md5 || md5 != gem.md5 then
|
79
|
+
md5_color = name_color = "alert"
|
80
|
+
end
|
81
|
+
end
|
82
|
+
html_string << "<span class='#{v_color}'>"
|
83
|
+
if !version then
|
84
|
+
html_string << "error: look error log"
|
85
|
+
end
|
86
|
+
html_string << "#{gem.version}"
|
87
|
+
html_string << "</span>"
|
88
|
+
html_string << "</td>"
|
89
|
+
html_string << "<td>"
|
90
|
+
html_string << "<span class='#{md5_color}'>"
|
91
|
+
if !gem.md5 || gem.md5.empty? then
|
92
|
+
if gem.from_git? then
|
93
|
+
html_string << "this comes from #{gem.gems_url}"
|
94
|
+
else
|
95
|
+
html_string << "error: look error log"
|
96
|
+
end
|
97
|
+
end
|
98
|
+
html_string << "#{gem.md5}"
|
99
|
+
html_string << "</span>"
|
100
|
+
html_string << "</td>"
|
101
|
+
html_string << "</tr>"
|
102
|
+
version = gem.version
|
103
|
+
md5 = gem.md5
|
74
104
|
end
|
75
|
-
html_string << "<span class='#{v_color}'>"
|
76
|
-
if !version then
|
77
|
-
html_string << "error: look error log"
|
78
|
-
end
|
79
|
-
html_string << "#{result[k].version}"
|
80
|
-
html_string << "</span>"
|
81
|
-
html_string << "</td>"
|
82
|
-
html_string << "<td>"
|
83
|
-
html_string << "<span class='#{md5_color}'>"
|
84
|
-
if !result[k].md5 || result[k].md5.empty? then
|
85
|
-
html_string << "error: look error log"
|
86
|
-
end
|
87
|
-
html_string << "#{result[k].md5}"
|
88
|
-
html_string << "</span>"
|
89
|
-
html_string << "</td>"
|
90
|
-
html_string << "</tr>"
|
91
|
-
version = result[k].version
|
92
|
-
md5 = result[k].md5
|
93
105
|
end
|
94
106
|
puts "<tr><td width='50%'><span class='#{name_color}'>#{k.upcase}</span></td><td width='10%'>version</td><td width='40%'>md5</td></tr>"
|
95
107
|
puts html_string
|
data/test/Gemfile.lock.test
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
GIT
|
2
|
+
remote: git://github.com/openSUSE/from_git.git
|
3
|
+
revision: 11111111
|
4
|
+
tag: 1.0.3.p1
|
5
|
+
specs:
|
6
|
+
from_git (1.0.3)
|
7
|
+
dep_from_git (1.0.0)
|
8
|
+
|
1
9
|
GEM
|
2
10
|
remote: http://rubygems.org/
|
3
11
|
specs:
|
@@ -9,10 +17,12 @@ GEM
|
|
9
17
|
test4 (1.2.3)
|
10
18
|
test4 (1.2.3)
|
11
19
|
test2 (1.2.3)
|
20
|
+
dep_from_git (1.0.0)
|
12
21
|
|
13
22
|
PLATFORMS
|
14
23
|
ruby
|
15
24
|
|
16
25
|
DEPENDENCIES
|
17
26
|
test
|
27
|
+
from_git (= 1.0.3)!
|
18
28
|
|
@@ -45,53 +45,4 @@ class TestGemsCompositeCommand < Test::Unit::TestCase
|
|
45
45
|
result = gemscompositecommand.common_key?("a key")
|
46
46
|
assert(result)
|
47
47
|
end
|
48
|
-
def test_equals_when_no_common_keys
|
49
|
-
gemscompositecommand = GemsCompositeCommandTest.new('id')
|
50
|
-
gem1 = GemSimple.new("foo_name","foo_version","md5","origin1")
|
51
|
-
gem2 = GemSimple.new("foo_name","foo_version","md5","origin2")
|
52
|
-
gem3 = GemSimple.new("bar_name","bar_version","md5","origin3")
|
53
|
-
gemscompositecommand.results['id']= {"foo"=>gem1}
|
54
|
-
gemscompositecommand.results['id2']= {"foo"=>gem2}
|
55
|
-
gemscompositecommand.results['id3']= {"bar"=>gem3}
|
56
|
-
result = gemscompositecommand.equal_gems?("foo")
|
57
|
-
assert(!result)
|
58
|
-
end
|
59
|
-
def test_equals_when_version_not_equals
|
60
|
-
gemscompositecommand = GemsCompositeCommandTest.new('id')
|
61
|
-
gem1 = GemSimple.new("foo_name","foo_version","md5","origin1")
|
62
|
-
gem2 = GemSimple.new("foo_name","foo_version","md5","origin2")
|
63
|
-
gem3 = GemSimple.new("foo_name","bar_version","md5","origin3")
|
64
|
-
gemscompositecommand.results['id']= {"foo"=>gem1}
|
65
|
-
gemscompositecommand.results['id2']= {"foo"=>gem2}
|
66
|
-
gemscompositecommand.results['id3']= {"foo"=>gem3}
|
67
|
-
result = gemscompositecommand.equal_gems?("foo")
|
68
|
-
assert(!result)
|
69
|
-
end
|
70
|
-
def test_equals_when_md5_not_equals
|
71
|
-
gemscompositecommand = GemsCompositeCommandTest.new('id')
|
72
|
-
gem1 = GemSimple.new("foo_name","foo_version","md5","origin1")
|
73
|
-
gem2 = GemSimple.new("foo_name","foo_version","md5","origin2")
|
74
|
-
gem3 = GemSimple.new("foo_name","foo_version","md5_2","origin3")
|
75
|
-
gemscompositecommand.results['id']= {"foo"=>gem1}
|
76
|
-
gemscompositecommand.results['id2']= {"foo"=>gem2}
|
77
|
-
gemscompositecommand.results['id3']= {"foo"=>gem3}
|
78
|
-
result = gemscompositecommand.equal_gems?("foo")
|
79
|
-
assert(!result)
|
80
|
-
end
|
81
|
-
def test_equals_when_equals
|
82
|
-
gemscompositecommand = GemsCompositeCommandTest.new('id')
|
83
|
-
gem1 = GemSimple.new("foo_name","foo_version","md5","origin1")
|
84
|
-
gem2 = GemSimple.new("foo_name","foo_version","md5","origin2")
|
85
|
-
gem3 = GemSimple.new("foo_name","foo_version","md5","origin3")
|
86
|
-
gemscompositecommand.results['id']= {"foo"=>gem1}
|
87
|
-
gemscompositecommand.results['id2']= {"foo"=>gem2}
|
88
|
-
gemscompositecommand.results['id3']= {"foo"=>gem3}
|
89
|
-
result = gemscompositecommand.equal_gems?("foo")
|
90
|
-
assert(result)
|
91
|
-
end
|
92
|
-
def test_equals_when_no_results
|
93
|
-
gemscompositecommand = GemsCompositeCommandTest.new('id')
|
94
|
-
result = gemscompositecommand.equal_gems?("foo")
|
95
|
-
assert(!result)
|
96
|
-
end
|
97
48
|
end
|
data/test/test-lockfile_gems.rb
CHANGED
@@ -17,33 +17,37 @@ class TestLockfileGems < Test::Unit::TestCase
|
|
17
17
|
def test_get_rubygems_names
|
18
18
|
lockfilegems = LockfileGemsTest.new
|
19
19
|
lockfilegems.execute
|
20
|
-
assert(lockfilegems.result.length ==
|
21
|
-
result = lockfilegems.result["test"].name
|
20
|
+
assert(lockfilegems.result.length == 6)
|
21
|
+
result = lockfilegems.result["test"][0].name
|
22
22
|
assert_equal("test",result)
|
23
|
-
result = lockfilegems.result["test"].version
|
23
|
+
result = lockfilegems.result["test"][0].version
|
24
24
|
assert_equal(Gem::Version.new("0.8.6"), result)
|
25
|
-
result = lockfilegems.result["test2"].name
|
25
|
+
result = lockfilegems.result["test2"][0].name
|
26
26
|
assert_equal("test2",result)
|
27
|
-
result = lockfilegems.result["test2"].version
|
27
|
+
result = lockfilegems.result["test2"][0].version
|
28
28
|
assert_equal(Gem::Version.new("1.2.3"), result)
|
29
|
-
result = lockfilegems.result["test3"].name
|
29
|
+
result = lockfilegems.result["test3"][0].name
|
30
30
|
assert_equal("test3",result)
|
31
|
-
result = lockfilegems.result["test3"].version
|
31
|
+
result = lockfilegems.result["test3"][0].version
|
32
32
|
assert_equal(Gem::Version.new("1.2.3"), result)
|
33
|
-
result = lockfilegems.result["test4"].name
|
33
|
+
result = lockfilegems.result["test4"][0].name
|
34
34
|
assert_equal("test4",result)
|
35
|
-
result = lockfilegems.result["test4"].version
|
35
|
+
result = lockfilegems.result["test4"][0].version
|
36
36
|
assert_equal(Gem::Version.new("1.2.3"), result)
|
37
|
+
result = lockfilegems.result["from_git"][0].version
|
38
|
+
assert_equal(Gem::Version.new("1.0.3"), result)
|
39
|
+
result = lockfilegems.result["dep_from_git"][0].version
|
40
|
+
assert_equal(Gem::Version.new("1.0.0"), result)
|
37
41
|
end
|
38
42
|
|
39
43
|
def test_get_rubygems_dependencies
|
40
44
|
lockfilegems = LockfileGemsTest.new
|
41
45
|
lockfilegems.execute
|
42
|
-
result = lockfilegems.result["test"].dependencies
|
46
|
+
result = lockfilegems.result["test"][0].dependencies
|
43
47
|
assert(result)
|
44
|
-
result = lockfilegems.result["test"].dependencies.length
|
48
|
+
result = lockfilegems.result["test"][0].dependencies.length
|
45
49
|
assert_equal(3, result)
|
46
|
-
result = lockfilegems.result["test"].dependencies
|
50
|
+
result = lockfilegems.result["test"][0].dependencies
|
47
51
|
assert_equal(
|
48
52
|
Gem::Dependency.new("test2", Gem::Requirement.new(["= 1.2.3"])),
|
49
53
|
result[0])
|
@@ -54,5 +58,13 @@ class TestLockfileGems < Test::Unit::TestCase
|
|
54
58
|
Gem::Dependency.new("test4", Gem::Requirement.new(["= 1.2.3"])),
|
55
59
|
result[2])
|
56
60
|
end
|
61
|
+
|
62
|
+
def test_from_git
|
63
|
+
lockfilegems = LockfileGemsTest.new
|
64
|
+
lockfilegems.execute
|
65
|
+
result = lockfilegems.result["from_git"][0].gems_url
|
66
|
+
assert(result.start_with?("git://"))
|
67
|
+
assert(lockfilegems.result["from_git"][0].from_git?)
|
68
|
+
end
|
57
69
|
end
|
58
70
|
|
data/test/test-obs_gems.rb
CHANGED
@@ -25,11 +25,11 @@ class TestObsGems < Test::Unit::TestCase
|
|
25
25
|
def test_get_rubygem_data
|
26
26
|
obsgems = OBSGemsTest.new
|
27
27
|
obsgems.execute
|
28
|
-
result = obsgems.result["test"].name
|
28
|
+
result = obsgems.result["test"][0].name
|
29
29
|
assert_equal("test", result)
|
30
|
-
result = obsgems.result["test"].version
|
30
|
+
result = obsgems.result["test"][0].version
|
31
31
|
assert_equal(Gem::Version.new("0.8.6"), result)
|
32
|
-
result = obsgems.result["test"].md5
|
32
|
+
result = obsgems.result["test"][0].md5
|
33
33
|
assert_equal("123", result)
|
34
34
|
end
|
35
35
|
end
|
data/test/test-ruby_gems_gems.rb
CHANGED
@@ -19,9 +19,9 @@ class TestRubyGemsGems < Test::Unit::TestCase
|
|
19
19
|
rubygemsgems = RubyGemsGemsTest.new
|
20
20
|
rubygemsgems.execute
|
21
21
|
rubygemsgems.result.each {|k,v| puts "k: #{k} v: #{v}"}
|
22
|
-
result = rubygemsgems.result["test"].name
|
22
|
+
result = rubygemsgems.result["test"][0].name
|
23
23
|
assert_equal("test",result)
|
24
|
-
result = rubygemsgems.result["test"].version
|
24
|
+
result = rubygemsgems.result["test"][0].version
|
25
25
|
assert_equal(Gem::Version.new("0.8.6"), result)
|
26
26
|
end
|
27
27
|
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:
|
4
|
+
hash: 19
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
8
|
+
- 3
|
9
|
+
- 0
|
10
|
+
version: 0.3.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-
|
18
|
+
date: 2012-03-01 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: xml-simple
|