bummr 0.3.1 → 0.6.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.
@@ -0,0 +1,49 @@
1
+ require "spec_helper"
2
+
3
+ describe Bummr::Prompt do
4
+ let(:parent_class) do
5
+ Class.new do
6
+ def yes?(message)
7
+ "called parent with #{message}"
8
+ end
9
+ end
10
+ end
11
+ let(:object_class) { Class.new(parent_class) }
12
+ let(:object) { object_class.new }
13
+
14
+ before do
15
+ object.extend(Bummr::Prompt)
16
+ end
17
+
18
+ describe "#yes?" do
19
+ context "when HEADLESS is false" do
20
+ it "calls super" do
21
+ stub_const("HEADLESS", false)
22
+
23
+ expect(
24
+ object.yes?("foo")
25
+ ).to eq "called parent with foo"
26
+ end
27
+ end
28
+
29
+ context "when HEADLESS is nil" do
30
+ it "calls super" do
31
+ stub_const("HEADLESS", nil)
32
+
33
+ expect(
34
+ object.yes?("foo")
35
+ ).to eq "called parent with foo"
36
+ end
37
+ end
38
+
39
+ context "when HEADLESS is true" do
40
+ it "returns true and skips asking for user input" do
41
+ stub_const("HEADLESS", true)
42
+
43
+ expect(
44
+ object.yes?("foo")
45
+ ).to eq true
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,31 @@
1
+ require "spec_helper"
2
+
3
+ describe Bummr::Remover do
4
+ let(:remover) { Bummr::Remover.instance }
5
+ let(:git) { Bummr::Git.instance }
6
+ let(:sha) { "testsha" }
7
+
8
+ before do
9
+ allow(remover).to receive(:log)
10
+ allow(remover).to receive(:system)
11
+ allow(remover).to receive(:yes?).and_return(true)
12
+ end
13
+
14
+ describe "#remove_commit" do
15
+ it "logs the bad commit" do
16
+ allow(git).to receive(:message).and_return("commit message")
17
+
18
+ remover.remove_commit(sha)
19
+
20
+ expect(remover).to have_received(:log).with(
21
+ "Bad commit: commit message, #{sha}".color(:red)
22
+ )
23
+ end
24
+
25
+ it "resets the bisection" do
26
+ remover.remove_commit(sha)
27
+
28
+ expect(remover).to have_received(:system).with("git bisect reset")
29
+ end
30
+ end
31
+ end
@@ -14,6 +14,7 @@ describe Bummr::Updater do
14
14
  let(:installed) { outdated_gems[0][:installed] }
15
15
  let(:intermediate_version) { "0.3.4" }
16
16
  let(:update_cmd) { "bundle update #{gem[:name]}" }
17
+ let(:git) { Bummr::Git.instance }
17
18
 
18
19
  describe "#update_gems" do
19
20
  it "calls update_gem on each gem" do
@@ -32,6 +33,7 @@ describe Bummr::Updater do
32
33
  allow(updater).to receive(:system).with(update_cmd)
33
34
  allow(updater).to receive(:updated_version_for).with(gem).and_return installed
34
35
  allow(updater).to receive(:log)
36
+ allow(git).to receive(:commit)
35
37
 
36
38
  updater.update_gem(gem, 0)
37
39
  end
@@ -41,6 +43,7 @@ describe Bummr::Updater do
41
43
  allow(updater).to receive(:system).with(update_cmd)
42
44
  allow(updater).to receive(:updated_version_for).with(gem).and_return installed
43
45
  allow(updater).to receive(:log)
46
+ allow(git).to receive(:commit)
44
47
 
45
48
  updater.update_gem(gem, 0)
46
49
 
@@ -51,10 +54,11 @@ describe Bummr::Updater do
51
54
  allow(updater).to receive(:system).with(update_cmd)
52
55
  allow(updater).to receive(:updated_version_for).with(gem).and_return installed
53
56
  allow(updater).to receive(:log)
57
+ allow(git).to receive(:commit)
54
58
 
55
59
  updater.update_gem(gem, 0)
56
60
 
57
- expect(updater).to_not have_received(:system).with /git commit/
61
+ expect(git).to_not have_received(:commit)
58
62
  end
59
63
  end
60
64
 
@@ -70,6 +74,7 @@ describe Bummr::Updater do
70
74
  "#{gem[:name]} not updated from #{gem[:installed]} to latest: #{gem[:newest]}"
71
75
  allow(updater).to receive(:system)
72
76
  allow(updater).to receive(:log)
77
+ allow(git).to receive(:commit)
73
78
 
74
79
  updater.update_gem(gem, 0)
75
80
 
@@ -78,15 +83,18 @@ describe Bummr::Updater do
78
83
 
79
84
  it "commits" do
80
85
  commit_message =
81
- "'Update #{gem[:name]} from #{gem[:installed]} to #{intermediate_version}'"
86
+ "Update #{gem[:name]} from #{gem[:installed]} to #{intermediate_version}"
82
87
  allow(updater).to receive(:system)
83
88
  allow(updater).to receive(:log)
89
+ allow(git).to receive(:add)
90
+ allow(git).to receive(:commit)
84
91
 
85
92
  updater.update_gem(gem, 0)
86
93
 
87
- expect(updater).to have_received(:system).with(
88
- "git commit -am #{commit_message}"
89
- )
94
+ expect(git).to have_received(:add).with("Gemfile")
95
+ expect(git).to have_received(:add).with("Gemfile.lock")
96
+ expect(git).to have_received(:add).with("vendor/cache")
97
+ expect(git).to have_received(:commit).with(commit_message)
90
98
  end
91
99
  end
92
100
 
@@ -95,28 +103,20 @@ describe Bummr::Updater do
95
103
  allow(updater).to receive(:updated_version_for).and_return newest
96
104
  end
97
105
 
98
- it "logs the commit" do
99
- commit_message =
100
- "Commit: Update #{gem[:name]} from #{gem[:installed]} to #{gem[:newest]}".color(:green)
101
- allow(updater).to receive(:system)
102
- allow(updater).to receive(:log)
103
-
104
- updater.update_gem(gem, 0)
105
-
106
- expect(updater).to have_received(:log).with commit_message
107
- end
108
-
109
106
  it "commits" do
110
107
  commit_message =
111
108
  "Update #{gem[:name]} from #{gem[:installed]} to #{gem[:newest]}"
112
109
  allow(updater).to receive(:system)
113
110
  allow(updater).to receive(:log)
111
+ allow(git).to receive(:add)
112
+ allow(git).to receive(:commit)
114
113
 
115
114
  updater.update_gem(gem, 0)
116
115
 
117
- expect(updater).to have_received(:system).with(
118
- "git commit -am '#{commit_message}'"
119
- )
116
+ expect(git).to have_received(:add).with("Gemfile")
117
+ expect(git).to have_received(:add).with("Gemfile.lock")
118
+ expect(git).to have_received(:add).with("vendor/cache")
119
+ expect(git).to have_received(:commit).with(commit_message)
120
120
  end
121
121
  end
122
122
  end
data/spec/spec_helper.rb CHANGED
@@ -4,3 +4,4 @@ SimpleCov.start
4
4
  require 'pry'
5
5
  require 'bummr'
6
6
  require 'rainbow/ext/string'
7
+ require 'jet_black/rspec'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bummr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lee Pender
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-04-12 00:00:00.000000000 Z
11
+ date: 2021-08-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -136,6 +136,20 @@ dependencies:
136
136
  - - ">="
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: jet_black
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '0.3'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '0.3'
139
153
  - !ruby/object:Gem::Dependency
140
154
  name: pry
141
155
  requirement: !ruby/object:Gem::Requirement
@@ -200,6 +214,7 @@ executables:
200
214
  extensions: []
201
215
  extra_rdoc_files: []
202
216
  files:
217
+ - ".circleci/config.yml"
203
218
  - ".gitignore"
204
219
  - ".ruby-version"
205
220
  - Gemfile
@@ -208,29 +223,34 @@ files:
208
223
  - Rakefile
209
224
  - bin/bummr
210
225
  - bummr.gemspec
211
- - circle.yml
212
226
  - lib/bummr.rb
213
227
  - lib/bummr/bisecter.rb
214
228
  - lib/bummr/check.rb
215
229
  - lib/bummr/cli.rb
230
+ - lib/bummr/git.rb
216
231
  - lib/bummr/log.rb
217
232
  - lib/bummr/outdated.rb
218
- - lib/bummr/rebaser.rb
233
+ - lib/bummr/prompt.rb
234
+ - lib/bummr/remover.rb
235
+ - lib/bummr/scm.rb
219
236
  - lib/bummr/updater.rb
220
237
  - lib/bummr/version.rb
238
+ - spec/black_box/bummr_update_spec.rb
221
239
  - spec/check_spec.rb
222
240
  - spec/lib/bisecter_spec.rb
223
241
  - spec/lib/cli_spec.rb
242
+ - spec/lib/git_spec.rb
224
243
  - spec/lib/log_spec.rb
225
244
  - spec/lib/outdated_spec.rb
226
- - spec/lib/rebaser_spec.rb
245
+ - spec/lib/prompt_spec.rb
246
+ - spec/lib/remover_spec.rb
227
247
  - spec/lib/updater_spec.rb
228
248
  - spec/spec_helper.rb
229
249
  homepage: https://github.com/lpender/bummr
230
250
  licenses:
231
251
  - MIT
232
252
  metadata: {}
233
- post_install_message:
253
+ post_install_message:
234
254
  rdoc_options: []
235
255
  require_paths:
236
256
  - lib
@@ -245,17 +265,19 @@ required_rubygems_version: !ruby/object:Gem::Requirement
245
265
  - !ruby/object:Gem::Version
246
266
  version: '0'
247
267
  requirements: []
248
- rubyforge_project:
249
- rubygems_version: 2.6.10
250
- signing_key:
268
+ rubygems_version: 3.1.4
269
+ signing_key:
251
270
  specification_version: 4
252
271
  summary: Helper script to intelligently update your Gemfile
253
272
  test_files:
273
+ - spec/black_box/bummr_update_spec.rb
254
274
  - spec/check_spec.rb
255
275
  - spec/lib/bisecter_spec.rb
256
276
  - spec/lib/cli_spec.rb
277
+ - spec/lib/git_spec.rb
257
278
  - spec/lib/log_spec.rb
258
279
  - spec/lib/outdated_spec.rb
259
- - spec/lib/rebaser_spec.rb
280
+ - spec/lib/prompt_spec.rb
281
+ - spec/lib/remover_spec.rb
260
282
  - spec/lib/updater_spec.rb
261
283
  - spec/spec_helper.rb
data/circle.yml DELETED
@@ -1,3 +0,0 @@
1
- test:
2
- post:
3
- - bundle exec codeclimate-test-reporter
data/lib/bummr/rebaser.rb DELETED
@@ -1,29 +0,0 @@
1
- module Bummr
2
- class Rebaser
3
- include Singleton
4
- include Log
5
-
6
- def remove_commit(sha)
7
- log "Bad commit: #{commit_message_for(sha)}, #{sha}".color(:red)
8
- log "Resetting..."
9
- system("git bisect reset")
10
-
11
- log "Removing commit..."
12
- if system("git rebase -X ours --onto #{sha}^ #{sha}")
13
- log "Successfully removed bad commit...".color(:green)
14
- log "Re-testing build...".color(:green)
15
- system("bummr test")
16
- else
17
- log "Could not automatically remove this commit!".color(:red)
18
- log "Please resolve conflicts, then 'git rebase --continue'."
19
- log "Run 'bummr test' again once the rebase is complete"
20
- end
21
- end
22
-
23
- private
24
-
25
- def commit_message_for(sha)
26
- `git log --pretty=format:'%s' -n 1 #{sha}`
27
- end
28
- end
29
- end
@@ -1,64 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Bummr::Rebaser do
4
- # let(:commit_message) { "test commit message" }
5
- let(:rebaser) { Bummr::Rebaser.instance }
6
- let(:sha) { "testsha" }
7
- let(:rebase_command) { "git rebase -X ours --onto #{sha}^ #{sha}" }
8
-
9
- before do
10
- allow(rebaser).to receive(:commit_message_for).and_return "commit message"
11
- allow(rebaser).to receive(:log)
12
- allow(rebaser).to receive(:system)
13
- end
14
-
15
- describe "#remove_commit" do
16
- it "logs the bad commit" do
17
- rebaser.remove_commit(sha)
18
-
19
- expect(rebaser).to have_received(:log).with(
20
- "Bad commit: commit message, #{sha}".color(:red)
21
- )
22
- end
23
-
24
- it "resets the bisection" do
25
- rebaser.remove_commit(sha)
26
-
27
- expect(rebaser).to have_received(:system).with("git bisect reset")
28
- end
29
-
30
- context "successfully rebases the commit out" do
31
- before(:each) do
32
- allow(rebaser).to receive(:system).with(rebase_command).and_return true
33
- end
34
-
35
- it "logs the successful result" do
36
- rebaser.remove_commit(sha)
37
-
38
- expect(rebaser).to have_received(:log).with(
39
- "Successfully removed bad commit...".color(:green)
40
- )
41
- end
42
-
43
- it "tests the build again" do
44
- rebaser.remove_commit(sha)
45
-
46
- expect(rebaser).to have_received(:system).with "bummr test"
47
- end
48
- end
49
-
50
- context "fails to rebase the commit out" do
51
- before(:each) do
52
- allow(rebaser).to receive(:system).with(rebase_command).and_return false
53
- end
54
-
55
- it "logs the failure to rebase" do
56
- rebaser.remove_commit(sha)
57
-
58
- expect(rebaser).to have_received(:log).with(
59
- "Could not automatically remove this commit!".color(:red)
60
- )
61
- end
62
- end
63
- end
64
- end