test-gem-push 2016.08.09.02.02.43 → 2016.08.09.02.27.01

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.
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