bummr 0.3.1 → 0.3.2

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: dfc66045a4cf51578172ac7c875574465d60b019
4
- data.tar.gz: 343b2794e4c16c57b938a26a41aa256df41216c3
3
+ metadata.gz: 73ba0fef0427b0831920d37208c1a80827757d36
4
+ data.tar.gz: 564bf9e76cfa61e7247f5261d3d5e0004eb6820d
5
5
  SHA512:
6
- metadata.gz: 36acc698fe92f04a82c4158bf7600a9453dc2235cbb58c4a125fd05280eaf8abc60d811d9c8f4675ad29df9b14a55f6043ade5c79842daae6c58c3000487ab37
7
- data.tar.gz: e68e9a0212deeb3211904b8549b4e7be67d2eb657bc389faaf964e17c9c7519d007aecac6d848a1196c8eae736430b6dc5d733b630088098241dd6a2a2ceb063
6
+ metadata.gz: 3e1d9167c57e85513d41d1a988d93827855422612c790f16b24c2d04f3ba711c9f070e8666face7d0a875e28a506855efa4f0ec846fb18bcf024a964f53cf135
7
+ data.tar.gz: 1223ef7d6a3c2fe2fd99909d1ab7e1d6d8a40ec267c633fb9071510d56316c0051d020f7514c84e2938e27c4f7149e3579835f969c87f73d30d30dfeeb430338
@@ -20,7 +20,7 @@ module Bummr
20
20
  end
21
21
 
22
22
  if line == "bisect run success\n"
23
- Bummr::Rebaser.instance.remove_commit(sha)
23
+ Bummr::Remover.instance.remove_commit(sha)
24
24
  end
25
25
  end
26
26
  end
data/lib/bummr/cli.rb CHANGED
@@ -14,12 +14,12 @@ module Bummr
14
14
  method_option :all, type: :boolean, default: false
15
15
  method_option :group, type: :string
16
16
  def update
17
+ system("bundle install")
17
18
  ask_questions
18
19
 
19
20
  if yes? "Are you ready to use Bummr? (y/n)"
20
21
  check
21
22
  log("Bummr update initiated #{Time.now}")
22
- system("bundle")
23
23
 
24
24
  outdated_gems = Bummr::Outdated.instance.outdated_gems(
25
25
  all_gems: options[:all], group: options[:group]
@@ -41,15 +41,17 @@ module Bummr
41
41
  desc "test", "Test for a successful build and bisect if necesssary"
42
42
  def test
43
43
  check(false)
44
- system "bundle"
45
- puts "Testing the build!".color(:green)
46
44
 
47
- if system(TEST_COMMAND) == false
48
- bisect
49
- else
50
- puts "Passed the build!".color(:green)
51
- puts "See log/bummr.log for details".color(:yellow)
52
- system("cat log/bummr.log")
45
+ if yes? "Do you want to test the build now?"
46
+ system "bundle install"
47
+ puts "Testing the build!".color(:green)
48
+
49
+ if system(TEST_COMMAND) == false
50
+ bisect
51
+ else
52
+ puts "Passed the build!".color(:green)
53
+ puts "See log/bummr.log for details".color(:yellow)
54
+ end
53
55
  end
54
56
  end
55
57
 
@@ -57,12 +59,21 @@ module Bummr
57
59
  def bisect
58
60
  check(false)
59
61
 
60
- Bummr::Bisecter.instance.bisect
62
+ if yes? "Would you like to bisect in order to find which gem is causing " +
63
+ "your build to break? (y/n)"
64
+ Bummr::Bisecter.instance.bisect
65
+ end
66
+ end
67
+
68
+ desc "remove_commit", "Remove a commit from the history"
69
+ def remove_commit(sha)
70
+ Bummr::Remover.instance.remove_commit(sha)
61
71
  end
62
72
 
63
73
  private
64
74
 
65
75
  def ask_questions
76
+ puts "Bummr #{VERSION}"
66
77
  puts "To run Bummr, you must:"
67
78
  puts "- Be in the root path of a clean git branch off of #{BASE_BRANCH}"
68
79
  puts "- Have no commits or local changes"
@@ -0,0 +1,32 @@
1
+ module Bummr
2
+ class Remover < Thor
3
+ include Singleton
4
+ include Log
5
+
6
+ desc "remove_commit", "Remove a commit from the history"
7
+ def remove_commit(sha)
8
+ log "Bad commit: #{commit_message_for(sha)}, #{sha}".color(:red)
9
+ log "Resetting..."
10
+ system("git bisect reset")
11
+
12
+ message = "\nThe commit:\n\n `#{sha} #{commit_message_for(sha)}`\n\n" +
13
+ "Is breaking the build.\n\n" +
14
+ "Please do one of the following: \n\n" +
15
+ " 1. Update your code to work with the latest version of this gem.\n\n" +
16
+ " 2. Perform the following steps to lock the gem version:\n\n" +
17
+ " - `git reset --hard master`\n" +
18
+ " - Lock the version of this Gem in your Gemfile.\n" +
19
+ " - Commit the changes.\n" +
20
+ " - Run `bummr update` again.\n\n" +
21
+ "Lord Bummr\n\n"
22
+
23
+ puts message.color(:yellow)
24
+ end
25
+
26
+ private
27
+
28
+ def commit_message_for(sha)
29
+ `git log --pretty=format:'%s' -n 1 #{sha}`
30
+ end
31
+ end
32
+ end
data/lib/bummr/updater.rb CHANGED
@@ -19,7 +19,12 @@ module Bummr
19
19
  system("bundle update #{gem[:name]}")
20
20
 
21
21
  updated_version = updated_version_for(gem)
22
- message = "Update #{gem[:name]} from #{gem[:installed]} to #{updated_version}"
22
+
23
+ if (updated_version)
24
+ message = "Update #{gem[:name]} from #{gem[:installed]} to #{updated_version}"
25
+ else
26
+ message = "Update dependencies for #{gem[:name]}"
27
+ end
23
28
 
24
29
  if gem[:installed] == updated_version
25
30
  log("#{gem[:name]} not updated")
@@ -31,11 +36,15 @@ module Bummr
31
36
  end
32
37
 
33
38
  log "Commit: #{message}".color(:green)
34
- system("git commit -am '#{message}'")
39
+ system("git add Gemfile Gemfile.lock")
40
+ system("git commit -m '#{message}'")
35
41
  end
36
42
 
37
43
  def updated_version_for(gem)
38
- `bundle list | grep " #{gem[:name]} "`.split('(')[1].split(')')[0]
44
+ begin
45
+ `bundle list | grep " #{gem[:name]} "`.split('(')[1].split(')')[0]
46
+ rescue Error
47
+ end
39
48
  end
40
49
  end
41
50
  end
data/lib/bummr/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Bummr
2
- VERSION = "0.3.1"
2
+ VERSION = "0.3.2"
3
3
  end
data/lib/bummr.rb CHANGED
@@ -8,7 +8,7 @@ require 'thor'
8
8
  require "bummr/bisecter"
9
9
  require "bummr/check"
10
10
  require "bummr/outdated"
11
- require "bummr/rebaser"
11
+ require "bummr/remover"
12
12
  require "bummr/updater"
13
13
 
14
14
  require "bummr/cli"
@@ -8,7 +8,7 @@ describe Bummr::Bisecter do
8
8
  StringIO.new(output)
9
9
  }
10
10
  let(:bisecter) { described_class.instance }
11
- let(:rebaser) { Bummr::Rebaser.instance }
11
+ let(:remover) { Bummr::Remover.instance }
12
12
 
13
13
  before do
14
14
  allow(STDOUT).to receive(:puts)
@@ -20,12 +20,12 @@ describe Bummr::Bisecter do
20
20
  context "bad commit" do
21
21
  it "rebases it out" do
22
22
  allow(Open3).to receive(:popen2e).and_yield(nil, std_out_err_bad_commit)
23
- allow(rebaser).to receive(:remove_commit)
23
+ allow(remover).to receive(:remove_commit)
24
24
  .with("mybadcommit")
25
25
 
26
26
  bisecter.bisect
27
27
 
28
- expect(rebaser).to have_received(:remove_commit).with("mybadcommit")
28
+ expect(remover).to have_received(:remove_commit).with("mybadcommit")
29
29
  end
30
30
  end
31
31
  end
data/spec/lib/cli_spec.rb CHANGED
@@ -33,7 +33,7 @@ describe Bummr::CLI do
33
33
  expect(cli).to receive(:yes?).and_return(true)
34
34
  expect(cli).to receive(:check)
35
35
  expect(cli).to receive(:log)
36
- expect(cli).to receive(:system).with("bundle")
36
+ expect(cli).to receive(:system).with("bundle install")
37
37
  expect(Bummr::Updater).to receive(:new).with(outdated_gems).and_return updater
38
38
  expect(cli).to receive(:system).with("git rebase -i #{BASE_BRANCH}")
39
39
  expect(cli).to receive(:test)
@@ -48,7 +48,7 @@ describe Bummr::CLI do
48
48
  expect(cli).to receive(:yes?).and_return(true)
49
49
  expect(cli).to receive(:check)
50
50
  expect(cli).to receive(:log)
51
- expect(cli).to receive(:system).with("bundle")
51
+ expect(cli).to receive(:system).with("bundle install")
52
52
  expect(cli).to receive(:puts).with("No outdated gems to update".color(:green))
53
53
 
54
54
  cli.update
@@ -102,6 +102,7 @@ describe Bummr::CLI do
102
102
  allow(cli).to receive(:check)
103
103
  allow(cli).to receive(:system)
104
104
  allow(cli).to receive(:bisect)
105
+ allow(cli).to receive(:yes?).and_return true
105
106
  end
106
107
 
107
108
  context "build passes" do
@@ -111,7 +112,7 @@ describe Bummr::CLI do
111
112
  cli.test
112
113
 
113
114
  expect(cli).to have_received(:check).with(false)
114
- expect(cli).to have_received(:system).with("bundle")
115
+ expect(cli).to have_received(:system).with("bundle install")
115
116
  expect(cli).to have_received(:system).with("bundle exec rake")
116
117
  expect(cli).not_to have_received(:bisect)
117
118
  end
@@ -124,7 +125,7 @@ describe Bummr::CLI do
124
125
  cli.test
125
126
 
126
127
  expect(cli).to have_received(:check).with(false)
127
- expect(cli).to have_received(:system).with("bundle")
128
+ expect(cli).to have_received(:system).with("bundle install")
128
129
  expect(cli).to have_received(:system).with("bundle exec rake")
129
130
  expect(cli).to have_received(:bisect)
130
131
  end
@@ -134,6 +135,7 @@ describe Bummr::CLI do
134
135
  describe "#bisect" do
135
136
  it "calls Bummr:Bisecter.instance.bisect" do
136
137
  allow(cli).to receive(:check)
138
+ allow(cli).to receive(:yes?).and_return true
137
139
  allow_any_instance_of(Bummr::Bisecter).to receive(:bisect)
138
140
  bisecter = Bummr::Bisecter.instance
139
141
 
@@ -0,0 +1,31 @@
1
+ require "spec_helper"
2
+
3
+ describe Bummr::Remover do
4
+ # let(:commit_message) { "test commit message" }
5
+ let(:remover) { Bummr::Remover.instance }
6
+ let(:sha) { "testsha" }
7
+ let(:remove_command) { "git rebase -p --onto #{sha}^ #{sha}" }
8
+
9
+ before do
10
+ allow(remover).to receive(:commit_message_for).and_return "commit message"
11
+ allow(remover).to receive(:log)
12
+ allow(remover).to receive(:system)
13
+ allow(remover).to receive(:yes?).and_return(true)
14
+ end
15
+
16
+ describe "#remove_commit" do
17
+ it "logs the bad commit" do
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
@@ -78,15 +78,14 @@ describe Bummr::Updater do
78
78
 
79
79
  it "commits" do
80
80
  commit_message =
81
- "'Update #{gem[:name]} from #{gem[:installed]} to #{intermediate_version}'"
81
+ "Update #{gem[:name]} from #{gem[:installed]} to #{intermediate_version}"
82
82
  allow(updater).to receive(:system)
83
83
  allow(updater).to receive(:log)
84
84
 
85
85
  updater.update_gem(gem, 0)
86
86
 
87
- expect(updater).to have_received(:system).with(
88
- "git commit -am #{commit_message}"
89
- )
87
+ expect(updater).to have_received(:system).with("git add Gemfile Gemfile.lock")
88
+ expect(updater).to have_received(:system).with("git commit -m '#{commit_message}'")
90
89
  end
91
90
  end
92
91
 
@@ -114,9 +113,8 @@ describe Bummr::Updater do
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(updater).to have_received(:system).with("git add Gemfile Gemfile.lock")
117
+ expect(updater).to have_received(:system).with("git commit -m '#{commit_message}'")
120
118
  end
121
119
  end
122
120
  end
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.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lee Pender
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-04-12 00:00:00.000000000 Z
11
+ date: 2018-04-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -215,7 +215,7 @@ files:
215
215
  - lib/bummr/cli.rb
216
216
  - lib/bummr/log.rb
217
217
  - lib/bummr/outdated.rb
218
- - lib/bummr/rebaser.rb
218
+ - lib/bummr/remover.rb
219
219
  - lib/bummr/updater.rb
220
220
  - lib/bummr/version.rb
221
221
  - spec/check_spec.rb
@@ -223,7 +223,7 @@ files:
223
223
  - spec/lib/cli_spec.rb
224
224
  - spec/lib/log_spec.rb
225
225
  - spec/lib/outdated_spec.rb
226
- - spec/lib/rebaser_spec.rb
226
+ - spec/lib/remover_spec.rb
227
227
  - spec/lib/updater_spec.rb
228
228
  - spec/spec_helper.rb
229
229
  homepage: https://github.com/lpender/bummr
@@ -256,6 +256,6 @@ test_files:
256
256
  - spec/lib/cli_spec.rb
257
257
  - spec/lib/log_spec.rb
258
258
  - spec/lib/outdated_spec.rb
259
- - spec/lib/rebaser_spec.rb
259
+ - spec/lib/remover_spec.rb
260
260
  - spec/lib/updater_spec.rb
261
261
  - spec/spec_helper.rb
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