test-gem-push 2016.08.09.02.02.43 → 2016.08.09.02.27.01

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/app.rb +25 -15
  3. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6ff72a2f6ebd0420f01a396bd24449f97142147d
4
- data.tar.gz: 6467cf0d16a349dfa02c67b8d86f646c264e7ea4
3
+ metadata.gz: 6338ffa0b1b774341b9584ef84cbad9ceb967362
4
+ data.tar.gz: db3fdc71ee4551966de2aed3ae6524df23039504
5
5
  SHA512:
6
- metadata.gz: 6716aea0a4b9b63aeb237871ba03917b7604d581753f0322107494ba7b6d2051573f090b021e146fcef0e1b915960f6dd2927836460e3c0af4420acdae2d5114
7
- data.tar.gz: 6cc5fcbc4c2671b46a540bcc614a962ddf3af67ebce7078369faa6e982047274517886b942a60c6bca7b676e1d464a481c4f45b7b9e02c09897c0917386505e7
6
+ metadata.gz: a0f7f8541755361a9f79eb43e076ec070596a27f0e7cc40073c9667d090d1e458aca2f043f608c5312d2fb75793c648143ae4b248f13ba8b01028a1f29032c7e
7
+ data.tar.gz: 5e8fafec594c71e8c0c7d84a99faa09b63c2cc094fcb4eb1db2ac1b7949dc97a7d014c26b026b60b65322154c851d2b24b5936a0845513579309873c19f682b4
data/app.rb CHANGED
@@ -19,13 +19,14 @@ rescue
19
19
  raise "Failed to load JSON from #{host}/#{path}:\n#{json}"
20
20
  end
21
21
 
22
- def push!(name, version)
22
+ def push!(name, version, platform)
23
23
  spec = Gem::Specification.new do |s|
24
24
  s.name = name
25
25
  s.version = version
26
26
  s.authors = ['example@example.com']
27
27
  s.files = [__FILE__]
28
28
  s.summary = 'test'
29
+ s.platform = platform
29
30
  s.required_ruby_version = '~> 2.0'
30
31
  s.required_rubygems_version = '~> 2.6'
31
32
  s.add_dependency 'foo', '~> 1.0'
@@ -53,42 +54,51 @@ post '/' do
53
54
 
54
55
  version = params.fetch('version') { Time.now.strftime('%Y.%m.%d.%H.%M.%S') }
55
56
  gem_name = ENV.fetch('GEM_NAME')
57
+ platform = params.fetch('platform') { 'ruby' }
58
+ platform_string = platform == 'ruby' ? '' : "-#{platform}"
56
59
 
57
60
  dependency_endpoint = get_dependency_api(gem_name)
58
61
  versions = get_versions.lines
59
62
  info = get_info(gem_name).lines
60
63
 
61
- if dependency_endpoint.find { |g| g['version'] == version }
62
- halt 422, "#{gem_name}-#{version} already was pushed"
64
+ if dependency_endpoint.find { |g| g['version'] == version && g['platform'] == platform }
65
+ halt 422, "#{gem_name}-#{version}-#{platform} already was pushed"
63
66
  end
64
67
 
65
68
  begin
66
- push!(gem_name, version)
69
+ push!(gem_name, version, platform)
67
70
  rescue Gem::SystemExitException
68
71
  halt 500, "Failed to push: #{$ERROR_INFO}"
69
72
  end
70
73
 
74
+ errors = []
75
+
71
76
  new_gem = get_dependency_api(gem_name) - dependency_endpoint
72
77
  case new_gem.size
73
- when 0 then halt 404, 'gem not added to dependency API'
78
+ when 0 then errors << 'gem not added to dependency API'
74
79
  when 1
75
- unless new_gem.first.values_at('name', 'number', 'platform', 'dependencies') == [gem_name, version, 'ruby', [['foo', '~> 1.0']]]
76
- halt 404, "wrong gem added: #{new_gem}"
80
+ unless new_gem.first.values_at('name', 'number', 'platform', 'dependencies') == [gem_name, version, platform, [['foo', '~> 1.0']]]
81
+ errors << "wrong gem added: #{new_gem}"
77
82
  end
78
- else halt 404, "too many new gems added: #{new_gem}"
83
+ else errors << "too many new gems added: #{new_gem}"
79
84
  end
80
85
 
81
- new_versions = versions - get_versions.lines
82
- unless new_versions.find { |l| l.start_with?("#{gem_name} #{version}") }
83
- halt 404, 'gem not added to versions file'
86
+ new_versions = get_versions.lines - versions
87
+ unless new_versions.find { |l| l.start_with?("#{gem_name} #{version}#{platform_string}") }
88
+ errors << "gem not added to versions file, new versions: #{new_versions}"
84
89
  end
85
90
 
86
91
  new_info = get_info(gem_name).lines - info
87
92
  case new_info.size
88
- when 0 then halt 404, 'gem not added to dependency API'
89
- when 1 then halt 404, "wrong gem added: #{new_info}" unless new_info =~ /^#{version} /
90
- else halt 404, "too many new gems added: #{new_info}"
93
+ when 0 then errors << 'gem not added to info'
94
+ when 1 then errors << "wrong gem added: #{new_info}" unless new_info.first =~ /^#{version}#{platform_string} /
95
+ else errors << "too many new gems added: #{new_info}"
91
96
  end
92
97
 
93
- halt "successfully pushed #{gem_name}-#{version}"
98
+ if errors.empty?
99
+ halt "successfully pushed #{gem_name}-#{version}-#{platform}"
100
+ else
101
+ errors.unshift "failed to push #{gem_name}-#{version}-#{platform}"
102
+ halt 404, errors.join("\n")
103
+ end
94
104
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: test-gem-push
3
3
  version: !ruby/object:Gem::Version
4
- version: 2016.08.09.02.02.43
4
+ version: 2016.08.09.02.27.01
5
5
  platform: ruby
6
6
  authors:
7
7
  - example@example.com