bummr 0.3.1 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
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