yes_ship_it 0.0.3 → 0.0.4

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4392d3f5e95dc46ee07c90f82060e192d450961c
4
- data.tar.gz: fca85312702536c2f0a3bdf4e85d87d293be352b
3
+ metadata.gz: 166ad586d456c70e04254032cacb88b08137af90
4
+ data.tar.gz: 0b544b73f9391fa9eabe47e4d9ab1c86e934e7a6
5
5
  SHA512:
6
- metadata.gz: f40cf52945fc8beeac7f925bf14613a2defb151d4d800b0224da6458a41a5ff36d8cd5e0d1c65f328e4949d7cdcdeaecafeb6f3a6184858a6ec91de3c7622dd4
7
- data.tar.gz: 0fcb4cc163dc5e891c95e73bc6cbb61b22d79d0562615ca831de7ceb0f964ef2279c067615ed10aa3a769df564161a63fb4c187a066e59aafb62f778c14333c7
6
+ metadata.gz: 937111a8dbbfcfae794dbd7b49db9520d5fe16923cff77628bfeb16de21f8a48201245b4167b36241de8b4031918e29a93ddb050fd03328e7a075f8b44276338
7
+ data.tar.gz: 1247311f1d7fb9465b8a6a34ae841feb28e8ebe90216466eafa149ac4febcb3023f66743dec4289be37d8dd8aec29e9c2dcd33e65fbcc663da198ee8aba29a4d
data/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # Change log of yes_ship_it
2
2
 
3
+ ## Version 0.0.4
4
+
5
+ * Add yes_it_shipped assertion
6
+
7
+ This assertion publishes the release on a central server we have set up for
8
+ the yes_ship_it project. It currently runs at
9
+ https://yes-it-shipped.herokuapp.com.
10
+
11
+ The assertion is used, if you either explicitly put it in your configuration
12
+ or if you include the `rubygems` template.
13
+
3
14
  ## Version 0.0.3
4
15
 
5
16
  * Implement minimal version of `yes_ship_it init`. The init command is supposed
@@ -0,0 +1,30 @@
1
+ module YSI
2
+ class YesItShipped < Assertion
3
+ def display_name
4
+ "pushed to yes-it-shipped"
5
+ end
6
+
7
+ def check
8
+ begin
9
+ json = RestClient.get("https://yes-it-shipped.herokuapp.com/releases/#{engine.project_name}/#{engine.version}")
10
+ return "#{engine.project_name}-#{engine.version}"
11
+ rescue RestClient::ResourceNotFound
12
+ return nil
13
+ end
14
+ end
15
+
16
+ def assert(dry_run: false)
17
+ if !dry_run
18
+ begin
19
+ RestClient.post("https://yes-it-shipped.herokuapp.com/releases",
20
+ project: engine.project_name, version: engine.version,
21
+ release_date_time: Time.now, project_url: engine.project_url,
22
+ release_url: engine.release_url, ysi_config_url: engine.config_url)
23
+ rescue RestClient::Exception
24
+ return nil
25
+ end
26
+ end
27
+ "#{engine.project_name}-#{engine.version}"
28
+ end
29
+ end
30
+ end
@@ -7,3 +7,4 @@ assertions:
7
7
  - built_gem
8
8
  - published_gem
9
9
  - pushed_tag
10
+ - yes_it_shipped
data/lib/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module YSI
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -59,6 +59,26 @@ module YSI
59
59
  File.basename(Dir.pwd)
60
60
  end
61
61
 
62
+ def github_project_name
63
+ if !@github_project_name
64
+ origin = Git.new.origin
65
+ @github_project_name = origin.match("git@github.com:(.*)")[1]
66
+ end
67
+ @github_project_name
68
+ end
69
+
70
+ def project_url
71
+ "https://github.com/#{github_project_name}"
72
+ end
73
+
74
+ def release_url
75
+ "https://github.com/#{github_project_name}/releases/tag/#{tag}"
76
+ end
77
+
78
+ def config_url
79
+ "https://raw.githubusercontent.com/#{github_project_name}/master/yes_ship_it.conf"
80
+ end
81
+
62
82
  def tag
63
83
  "v#{version}"
64
84
  end
@@ -0,0 +1,11 @@
1
+ module YSI
2
+ class Git
3
+ def run_git(args)
4
+ `git #{args}`
5
+ end
6
+
7
+ def origin
8
+ run_git("remote -v").match(/origin\s+(.*)\s+\(push\)/)[1]
9
+ end
10
+ end
11
+ end
data/lib/yes_ship_it.rb CHANGED
@@ -8,6 +8,7 @@ require "erb"
8
8
  require_relative "yes_ship_it/assertion.rb"
9
9
  require_relative "yes_ship_it/engine.rb"
10
10
  require_relative "yes_ship_it/exceptions.rb"
11
+ require_relative "yes_ship_it/git.rb"
11
12
 
12
13
  assertions_dir = File.expand_path("../../assertions", __FILE__)
13
14
  Dir[File.join(assertions_dir, "*.rb")].each { |f| require(f) }
@@ -164,6 +164,7 @@ Checking built gem: error
164
164
  I need a gemspec: test_project.gemspec
165
165
  Checking published gem: skip (because dependency errored)
166
166
  Checking pushed tag: skip (because dependency errored)
167
+ Checking pushed to yes-it-shipped: fail
167
168
 
168
169
  Couldn't ship test_project. Help me.
169
170
  EOT
@@ -1,10 +1,3 @@
1
1
  require "cli_tester"
2
- require "given_filesystem/spec_helpers"
3
2
 
4
- def setup_test_git_repo(version, dir)
5
- tarball = "spec/data/red_herring-#{version}.tar.gz"
6
- tarball_path = File.expand_path(tarball)
7
- if !system("cd #{dir}; tar xzf #{tarball_path}")
8
- raise "Unable to extract tarball #{tarball}"
9
- end
10
- end
3
+ require_relative "../spec_helper"
@@ -0,0 +1,9 @@
1
+ require "given_filesystem/spec_helpers"
2
+
3
+ def setup_test_git_repo(version, dir)
4
+ tarball = "spec/data/red_herring-#{version}.tar.gz"
5
+ tarball_path = File.expand_path(tarball)
6
+ if !system("cd #{dir}; tar xzf #{tarball_path}")
7
+ raise "Unable to extract tarball #{tarball}"
8
+ end
9
+ end
@@ -0,0 +1,73 @@
1
+ require_relative "../spec_helper"
2
+
3
+ describe YSI::YesItShipped do
4
+ describe "#check" do
5
+ it "succeeds when release is there" do
6
+ body = <<-EOT
7
+ {
8
+ "id": 2,
9
+ "project": "dummy",
10
+ "project_url": "http://example.com/dummy",
11
+ "version": "1.0.0",
12
+ "release_date_time": "2015-12-07T17:56:00.000Z",
13
+ "release_url": "http://example.com/dummy/v0.1.0",
14
+ "ysi_config_url": "http://example.com/dummy/yes_ship_it.conf",
15
+ "created_at": "2015-12-08T11:37:33.884Z",
16
+ "updated_at": "2015-12-08T11:37:33.884Z"
17
+ }
18
+ EOT
19
+ stub_request(:get, "https://yes-it-shipped.herokuapp.com/releases/dummy/1.0.0").
20
+ with(:headers => {'Accept'=>'*/*; q=0.5, application/xml', 'Accept-Encoding'=>'gzip, deflate', 'User-Agent'=>'Ruby'}).
21
+ to_return(:status => 200, :body => body, :headers => {})
22
+
23
+ engine = YSI::Engine.new
24
+ allow(engine).to receive(:project_name).and_return("dummy")
25
+ engine.version = "1.0.0"
26
+ assertion = YSI::YesItShipped.new(engine)
27
+ expect(assertion.check).to eq("dummy-1.0.0")
28
+ end
29
+
30
+ it "fails when release is not there" do
31
+ stub_request(:get, "https://yes-it-shipped.herokuapp.com/releases/dummy/2.0.0").
32
+ with(:headers => {'Accept'=>'*/*; q=0.5, application/xml', 'Accept-Encoding'=>'gzip, deflate', 'User-Agent'=>'Ruby'}).
33
+ to_return(:status => 404, :body => "", :headers => {})
34
+
35
+ engine = YSI::Engine.new
36
+ allow(engine).to receive(:project_name).and_return("dummy")
37
+ engine.version = "2.0.0"
38
+ assertion = YSI::YesItShipped.new(engine)
39
+ expect(assertion.check).to be_nil
40
+ end
41
+ end
42
+
43
+ describe "#assert" do
44
+ it "pushes release" do
45
+ allow(Time).to receive(:now).and_return(Time.parse("20151208T141655+0100"))
46
+ stub_request(:post, "https://yes-it-shipped.herokuapp.com/releases").
47
+ with(
48
+ :body => {
49
+ "project"=>"dummy",
50
+ "project_url"=>"https://github.com/cornelius/yes_ship_it",
51
+ "release_date_time"=>"2015-12-08 14:16:55 +0100",
52
+ "release_url"=>"https://github.com/cornelius/yes_ship_it/releases/tag/v1.1.1",
53
+ "version"=>"1.1.1",
54
+ "ysi_config_url"=>"https://raw.githubusercontent.com/cornelius/yes_ship_it/master/yes_ship_it.conf"
55
+ },
56
+ :headers => {
57
+ 'Accept'=>'*/*; q=0.5, application/xml',
58
+ 'Accept-Encoding'=>'gzip, deflate',
59
+ 'Content-Length'=>'342',
60
+ 'Content-Type'=>'application/x-www-form-urlencoded',
61
+ 'User-Agent'=>'Ruby'
62
+ }).to_return(:status => 200, :body => "", :headers => {})
63
+
64
+ engine = YSI::Engine.new
65
+ allow(engine).to receive(:project_name).and_return("dummy")
66
+ engine.version = "1.1.1"
67
+
68
+ assertion = YSI::YesItShipped.new(engine)
69
+
70
+ expect(assertion.assert).to eq("dummy-1.1.1")
71
+ end
72
+ end
73
+ end
@@ -118,4 +118,35 @@ EOT
118
118
  expect(engine.dependency_errored?(assertion, errored_assertions)).to be(true)
119
119
  end
120
120
  end
121
+
122
+ describe "release attributes" do
123
+ before(:each) do
124
+ @checkout_dir = given_directory
125
+ setup_test_git_repo("005", @checkout_dir)
126
+ @pwd = Dir.pwd
127
+ Dir.chdir(File.join(@checkout_dir, "red_herring"))
128
+ @engine = YSI::Engine.new
129
+ @engine.version = "1.0.0"
130
+ end
131
+
132
+ after(:each) do
133
+ Dir.chdir(@pwd)
134
+ end
135
+
136
+ it "#project_name" do
137
+ expect(@engine.project_name).to eq("red_herring")
138
+ end
139
+
140
+ it "#project_url" do
141
+ expect(@engine.project_url).to eq("https://github.com/cornelius/red_herring")
142
+ end
143
+
144
+ it "#release_url" do
145
+ expect(@engine.release_url).to eq("https://github.com/cornelius/red_herring/releases/tag/v1.0.0")
146
+ end
147
+
148
+ it "#config_url" do
149
+ expect(@engine.config_url).to eq("https://raw.githubusercontent.com/cornelius/red_herring/master/yes_ship_it.conf")
150
+ end
151
+ end
121
152
  end
@@ -0,0 +1,13 @@
1
+ require_relative "spec_helper"
2
+
3
+ describe YSI::Git do
4
+ it "#origin" do
5
+ allow(subject).to receive(:run_git).with("remote -v").and_return(<<EOT
6
+ origin git@github.com:cornelius/red_herring (fetch)
7
+ origin git@github.com:cornelius/red_herring (push)
8
+ EOT
9
+ )
10
+
11
+ expect(subject.origin).to eq("git@github.com:cornelius/red_herring")
12
+ end
13
+ end
@@ -1,7 +1,8 @@
1
+ require "webmock/rspec"
2
+
1
3
  require_relative "../../lib/yes_ship_it.rb"
2
4
 
3
- require "given_filesystem/spec_helpers"
5
+ require_relative "../spec_helper.rb"
4
6
 
5
7
  support = File.expand_path("../support", __FILE__) + "/*.rb"
6
-
7
8
  Dir[support].each { |f| require f }
data/yes_ship_it.gemspec CHANGED
@@ -22,6 +22,7 @@ Gem::Specification.new do |s|
22
22
  s.add_development_dependency "given_filesystem"
23
23
  s.add_development_dependency "cli_tester", ">= 0.0.2"
24
24
  s.add_development_dependency "httpotemkin"
25
+ s.add_development_dependency "webmock"
25
26
 
26
27
  s.files = `git ls-files`.split("\n")
27
28
  s.require_path = 'lib'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yes_ship_it
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cornelius Schumacher
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-12-07 00:00:00.000000000 Z
11
+ date: 2015-12-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: inifile
@@ -94,6 +94,20 @@ dependencies:
94
94
  - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: webmock
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
97
111
  description: Whenever the answer is 'Yes, ship it!' you will need yes_ship_it. It
98
112
  is the ultimate helper in releasing software..
99
113
  email:
@@ -119,6 +133,7 @@ files:
119
133
  - assertions/tag.rb
120
134
  - assertions/version.rb
121
135
  - assertions/working_directory.rb
136
+ - assertions/yes_it_shipped.rb
122
137
  - bin/yes_ship_it
123
138
  - configs/ruby_gem.conf
124
139
  - lib/version.rb
@@ -126,6 +141,7 @@ files:
126
141
  - lib/yes_ship_it/assertion.rb
127
142
  - lib/yes_ship_it/engine.rb
128
143
  - lib/yes_ship_it/exceptions.rb
144
+ - lib/yes_ship_it/git.rb
129
145
  - spec/data/obs/mycroft.spec.erb
130
146
  - spec/data/obs/oscrc
131
147
  - spec/data/red_herring-000.tar.gz
@@ -142,6 +158,7 @@ files:
142
158
  - spec/data/yes_ship_it.unknown.conf
143
159
  - spec/integration/cli_spec.rb
144
160
  - spec/integration/spec_helper.rb
161
+ - spec/spec_helper.rb
145
162
  - spec/system/data/red_herring-checkout-build.tar.gz
146
163
  - spec/system/data/red_herring-checkout-not-push.tar.gz
147
164
  - spec/system/data/red_herring-checkout-push.tar.gz
@@ -156,8 +173,10 @@ files:
156
173
  - spec/unit/assertions/submitted_rpm_spec.rb
157
174
  - spec/unit/assertions/version_spec.rb
158
175
  - spec/unit/assertions/working_directory_spec.rb
176
+ - spec/unit/assertions/yes_it_shipped_spec.rb
159
177
  - spec/unit/assertions_spec.rb
160
178
  - spec/unit/engine_spec.rb
179
+ - spec/unit/git_spec.rb
161
180
  - spec/unit/spec_helper.rb
162
181
  - spec/unit/support/assertion_examples.rb
163
182
  - yes_ship_it-0.0.1.gem