bummr 0.3.0 → 0.3.1

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: 5df73cfbc224bf2570050b72be0b430dbaf46a5b
4
- data.tar.gz: 9a214cc4a90355b571afc5434ecdce4dd9af97f9
3
+ metadata.gz: dfc66045a4cf51578172ac7c875574465d60b019
4
+ data.tar.gz: 343b2794e4c16c57b938a26a41aa256df41216c3
5
5
  SHA512:
6
- metadata.gz: 7c54d619a641f855df4e08a3d52ceb8b2032f01e677760198d64fa607381be44faf9c6a390692f310a1b7a0ce3e4ab1ed353499059dc5478093879c946052e31
7
- data.tar.gz: 580a3326329d240ab0fc917955421bb2595532a5c9ebaa580cd754f03b797a28c7b61f0f7e500035509b417a9165c90e3d254f87beeb72875966952b4cc1ec0b
6
+ metadata.gz: 36acc698fe92f04a82c4158bf7600a9453dc2235cbb58c4a125fd05280eaf8abc60d811d9c8f4675ad29df9b14a55f6043ade5c79842daae6c58c3000487ab37
7
+ data.tar.gz: e68e9a0212deeb3211904b8549b4e7be67d2eb657bc389faaf964e17c9c7519d007aecac6d848a1196c8eae736430b6dc5d733b630088098241dd6a2a2ceb063
data/README.md CHANGED
@@ -63,6 +63,7 @@ instructions in the Installation section of this README.
63
63
  - Commits each gem update separately, with a commit message like:
64
64
  - Options:
65
65
  - `--all` to include indirect dependencies (`bummr` defaults to direct dependencies only)
66
+ - `--group` to update only gems from a specific group (i.e. `test`, `development`)
66
67
 
67
68
  `Update gemname from 0.0.1 to 0.0.2`
68
69
 
data/lib/bummr/cli.rb CHANGED
@@ -12,6 +12,7 @@ module Bummr
12
12
 
13
13
  desc "update", "Update outdated gems, run tests, bisect if tests fail"
14
14
  method_option :all, type: :boolean, default: false
15
+ method_option :group, type: :string
15
16
  def update
16
17
  ask_questions
17
18
 
@@ -20,7 +21,9 @@ module Bummr
20
21
  log("Bummr update initiated #{Time.now}")
21
22
  system("bundle")
22
23
 
23
- outdated_gems = Bummr::Outdated.instance.outdated_gems(all_gems: options[:all])
24
+ outdated_gems = Bummr::Outdated.instance.outdated_gems(
25
+ all_gems: options[:all], group: options[:group]
26
+ )
24
27
 
25
28
  if outdated_gems.empty?
26
29
  puts "No outdated gems to update".color(:green)
@@ -66,7 +69,7 @@ module Bummr
66
69
  puts "- Have a 'log' directory, where we can place logs"
67
70
  puts "- Have your build configured to fail fast (recommended)"
68
71
  puts "- Have locked any Gem version that you don't wish to update in your Gemfile"
69
- puts "- It is recommended that you lock your versions of `ruby` and `rails in your Gemfile`"
72
+ puts "- It is recommended that you lock your versions of `ruby` and `rails` in your `Gemfile`"
70
73
  puts "Your test command is: '#{TEST_COMMAND}'"
71
74
  end
72
75
  end
@@ -5,18 +5,19 @@ module Bummr
5
5
  class Outdated
6
6
  include Singleton
7
7
 
8
- def outdated_gems(all_gems: false)
8
+ def outdated_gems(options = {})
9
9
  results = []
10
10
 
11
- options = ""
12
- options << " --strict" unless all_gems
11
+ bundle_options = ""
12
+ bundle_options << " --strict" unless options[:all_gems]
13
+ bundle_options << " --group #{options[:group]}" if options[:group]
13
14
 
14
- Open3.popen2("bundle outdated" + options) do |_std_in, std_out|
15
+ Open3.popen2("bundle outdated" + bundle_options) do |_std_in, std_out|
15
16
  while line = std_out.gets
16
17
  puts line
17
18
  gem = parse_gem_from(line)
18
19
 
19
- if gem && (all_gems || gemfile_contains(gem[:name]))
20
+ if gem && (options[:all_gems] || gemfile_contains(gem[:name]))
20
21
  results.push gem
21
22
  end
22
23
  end
data/lib/bummr/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Bummr
2
- VERSION = "0.3.0"
2
+ VERSION = "0.3.1"
3
3
  end
data/spec/lib/cli_spec.rb CHANGED
@@ -25,6 +25,20 @@ describe Bummr::CLI do
25
25
  end
26
26
 
27
27
  context "when user agrees to move forward" do
28
+ def mock_bummr_standard_flow
29
+ updater = double
30
+ allow(updater).to receive(:update_gems)
31
+
32
+ expect(cli).to receive(:ask_questions)
33
+ expect(cli).to receive(:yes?).and_return(true)
34
+ expect(cli).to receive(:check)
35
+ expect(cli).to receive(:log)
36
+ expect(cli).to receive(:system).with("bundle")
37
+ expect(Bummr::Updater).to receive(:new).with(outdated_gems).and_return updater
38
+ expect(cli).to receive(:system).with("git rebase -i #{BASE_BRANCH}")
39
+ expect(cli).to receive(:test)
40
+ end
41
+
28
42
  context "and there are no outdated gems" do
29
43
  it "informs that there are no outdated gems" do
30
44
  allow_any_instance_of(Bummr::Outdated).to receive(:outdated_gems)
@@ -45,17 +59,8 @@ describe Bummr::CLI do
45
59
  it "calls 'update' on the updater" do
46
60
  allow_any_instance_of(Bummr::Outdated).to receive(:outdated_gems)
47
61
  .and_return outdated_gems
48
- updater = double
49
- allow(updater).to receive(:update_gems)
50
62
 
51
- expect(cli).to receive(:ask_questions)
52
- expect(cli).to receive(:yes?).and_return(true)
53
- expect(cli).to receive(:check)
54
- expect(cli).to receive(:log)
55
- expect(cli).to receive(:system).with("bundle")
56
- expect(Bummr::Updater).to receive(:new).with(outdated_gems).and_return updater
57
- expect(cli).to receive(:system).with("git rebase -i #{BASE_BRANCH}")
58
- expect(cli).to receive(:test)
63
+ mock_bummr_standard_flow
59
64
 
60
65
  cli.update
61
66
  end
@@ -66,20 +71,24 @@ describe Bummr::CLI do
66
71
  options[:all] = true
67
72
 
68
73
  expect_any_instance_of(Bummr::Outdated)
69
- .to receive(:outdated_gems).with({ all_gems: true })
74
+ .to receive(:outdated_gems).with(hash_including({ all_gems: true }))
70
75
  .and_return outdated_gems
71
76
 
72
- updater = double
73
- allow(updater).to receive(:update_gems)
77
+ mock_bummr_standard_flow
74
78
 
75
- expect(cli).to receive(:ask_questions)
76
- expect(cli).to receive(:yes?).and_return(true)
77
- expect(cli).to receive(:check)
78
- expect(cli).to receive(:log)
79
- expect(cli).to receive(:system).with("bundle")
80
- expect(Bummr::Updater).to receive(:new).with(outdated_gems).and_return updater
81
- expect(cli).to receive(:system).with("git rebase -i #{BASE_BRANCH}")
82
- expect(cli).to receive(:test)
79
+ cli.update
80
+ end
81
+ end
82
+
83
+ describe "group option" do
84
+ it "requests only outdated gems from supplied be listed" do
85
+ options[:group] = 'test'
86
+
87
+ expect_any_instance_of(Bummr::Outdated)
88
+ .to receive(:outdated_gems).with(hash_including({ group: 'test' }))
89
+ .and_return outdated_gems
90
+
91
+ mock_bummr_standard_flow
83
92
 
84
93
  cli.update
85
94
  end
@@ -7,6 +7,7 @@ describe Bummr::Outdated do
7
7
  output += " * devise (newest 4.1.1, installed 3.5.2) in group \"default\"\n"
8
8
  output += " * rake (newest 11.1.2, installed 10.4.2)\n"
9
9
  output += " * rails (newest 4.2.6, installed 4.2.5.1, requested ~> 4.2.0) in group \"default\"\n"
10
+ output += " * spring (newest 4.2.6, installed 4.2.5.1, requested ~> 4.2.0) in group \"development\"\n"
10
11
  output += " * indirect_dep (newest 1.0.0, installed 0.0.1)\n"
11
12
  StringIO.new(output)
12
13
  }
@@ -16,6 +17,7 @@ describe Bummr::Outdated do
16
17
  gemfile += "gem 'devise'\n"
17
18
  gemfile += "gem 'rake'\n"
18
19
  gemfile += "gem 'rails'\n"
20
+ gemfile += "gem 'spring', :group => :development\n"
19
21
  gemfile
20
22
  }
21
23
 
@@ -38,6 +40,10 @@ describe Bummr::Outdated do
38
40
  expect(result[2][:name]).to eq('rails')
39
41
  expect(result[2][:newest]).to eq('4.2.6')
40
42
  expect(result[2][:installed]).to eq('4.2.5.1')
43
+
44
+ expect(result[3][:name]).to eq('spring')
45
+ expect(result[3][:newest]).to eq('4.2.6')
46
+ expect(result[3][:installed]).to eq('4.2.5.1')
41
47
  end
42
48
 
43
49
  describe "all gems option" do
@@ -63,6 +69,40 @@ describe Bummr::Outdated do
63
69
  expect(gem_names).to_not include "indirect_dep"
64
70
  end
65
71
  end
72
+
73
+ describe "group option" do
74
+ let(:stdoutput_from_development_group) {
75
+ output = String.new
76
+ output += " * spring (newest 4.2.6, installed 4.2.5.1, requested ~> 4.2.0)"
77
+ StringIO.new(output)
78
+ }
79
+
80
+ it "lists outdated gems only from supplied group" do
81
+ allow(Open3).to receive(:popen2)
82
+ .with("bundle outdated --strict --group development")
83
+ .and_yield(nil, stdoutput_from_development_group)
84
+
85
+ allow(Bummr::Outdated.instance).to receive(:gemfile).and_return gemfile
86
+
87
+ results = Bummr::Outdated.instance.outdated_gems(group: :development)
88
+ gem_names = results.map { |result| result[:name] }
89
+
90
+ expect(gem_names).to match_array ['spring']
91
+ end
92
+
93
+ it "defaults to all groups" do
94
+ allow(Open3).to receive(:popen2)
95
+ .with("bundle outdated --strict")
96
+ .and_yield(nil, stdoutput)
97
+
98
+ allow(Bummr::Outdated.instance).to receive(:gemfile).and_return gemfile
99
+
100
+ results = Bummr::Outdated.instance.outdated_gems
101
+ gem_names = results.map { |result| result[:name] }
102
+
103
+ expect(gem_names).to include 'devise', 'rake', 'rails', 'spring'
104
+ end
105
+ end
66
106
  end
67
107
 
68
108
  describe "#parse_gem_from" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bummr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lee Pender