gems-status 0.2.7 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|