git_reflow 0.8.1 → 0.8.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: a5bf85403018fe65d93819c76418ba327d13691d
4
- data.tar.gz: 075171ddb73fd21d79f7e06c61ea300922dea1e1
3
+ metadata.gz: d3b0fe812dbfd336ccb9e40f083419d607300978
4
+ data.tar.gz: 876d2c887f6b2a68487dcb1fa8cca1ea34e32550
5
5
  SHA512:
6
- metadata.gz: 6df2eb16d00275c2f50bc2f9ae453979e7e001b2d9a2241c924ef6e4480d7ce6adacd3b0078c2f56e097900976f5e1ceac1898840209f03c6ab81bf82630ee33
7
- data.tar.gz: 4128834c2d0f5e4d679938e8abc96b5bcfb45bcdbe96d1b62f3857d788568cf3bc2efb4b73b3b61bf15b74ba9f89a699574c436e067ac5b6d81e101861c0edba
6
+ metadata.gz: 021be79b7f91b842c1d18ddd9af022dcbde108c644ed6eb9e2a7acca2e754083d8d80b22d060003c8e63c3857b9b4ecc0ec27c9dc3ba609a281895707ca14c6c
7
+ data.tar.gz: 0c45b168febf5b66177b034ac54868c55bdcc9bbad012110eb03f7dc5e349c619922eb2cb0f30945c7c0a34a8a79e210251a6c277a53a2e4b4ab7bf3504f8b7f
data/CHANGELOG.md CHANGED
@@ -1,12 +1,45 @@
1
1
  # Change Log
2
2
 
3
- ## [v0.8.1](https://github.com/reenhanced/gitreflow/tree/v0.8.1)
3
+ ## [v0.8.2](https://github.com/reenhanced/gitreflow/tree/v0.8.2) (2016-08-01)
4
4
 
5
+ [Full Changelog](https://github.com/reenhanced/gitreflow/compare/v0.8.1...v0.8.2)
6
+
7
+ **Fixed bugs:**
8
+
9
+ - git-reflow setup not working on Windows [\#187](https://github.com/reenhanced/gitreflow/issues/187)
10
+
11
+ **Closed issues:**
12
+
13
+ - GitHub authentication issues [\#193](https://github.com/reenhanced/gitreflow/issues/193)
14
+ - non-master base branch does not work for the deliver command [\#192](https://github.com/reenhanced/gitreflow/issues/192)
15
+ - git-reflow fork command [\#188](https://github.com/reenhanced/gitreflow/issues/188)
16
+ - Bitbucket setup not working [\#186](https://github.com/reenhanced/gitreflow/issues/186)
17
+ - Default approval regex not respecting :+1: [\#182](https://github.com/reenhanced/gitreflow/issues/182)
18
+ - \[SOLVED\] Unable To Install the GEM \(install nokogiri manually to solve the issue\) [\#178](https://github.com/reenhanced/gitreflow/issues/178)
19
+ - Can we switch off LGTM reviews? [\#177](https://github.com/reenhanced/gitreflow/issues/177)
20
+ - gitreflow does not cache github token? [\#173](https://github.com/reenhanced/gitreflow/issues/173)
21
+ - message below the fold in review [\#105](https://github.com/reenhanced/gitreflow/issues/105)
22
+
23
+ **Merged pull requests:**
24
+
25
+ - \[\#187\] Update git-reflow config file path to use $HOME for windows support [\#195](https://github.com/reenhanced/gitreflow/pull/195) ([codenamev](https://github.com/codenamev))
26
+ - \[192\] Allow delivery to custom base branch [\#194](https://github.com/reenhanced/gitreflow/pull/194) ([codenamev](https://github.com/codenamev))
27
+ - Refactor tests to allow for use of reflow test helpers in third-party gems [\#189](https://github.com/reenhanced/gitreflow/pull/189) ([codenamev](https://github.com/codenamev))
28
+ - \[Issue \#182\] Fix LGTM Expression [\#185](https://github.com/reenhanced/gitreflow/pull/185) ([simonzhu24](https://github.com/simonzhu24))
29
+ - Use $EDITOR as text editor fallback [\#184](https://github.com/reenhanced/gitreflow/pull/184) ([timraasveld](https://github.com/timraasveld))
30
+ - Respect GitHub pull request template [\#179](https://github.com/reenhanced/gitreflow/pull/179) ([timraasveld](https://github.com/timraasveld))
31
+
32
+ ## [v0.8.1](https://github.com/reenhanced/gitreflow/tree/v0.8.1) (2016-05-26)
5
33
  [Full Changelog](https://github.com/reenhanced/gitreflow/compare/v0.8.0...v0.8.1)
6
34
 
7
35
  **Closed issues:**
8
36
 
9
- - Unable to review with latest changes to editor handling [\#176](https://github.com/reenhanced/gitreflow/issues/176)
37
+ - undefined method `git\_editor\_comand' for GitReflow:Module [\#176](https://github.com/reenhanced/gitreflow/issues/176)
38
+ - github PR ends up "closed" instead of "merged" [\#149](https://github.com/reenhanced/gitreflow/issues/149)
39
+ - Update README to mention how to update an in-progress feature branch from origin/master [\#125](https://github.com/reenhanced/gitreflow/issues/125)
40
+ - Option to silence the offer to open the PR in my browser? [\#117](https://github.com/reenhanced/gitreflow/issues/117)
41
+ - command for merging updates from base branch [\#74](https://github.com/reenhanced/gitreflow/issues/74)
42
+ - Support for non-master branch [\#73](https://github.com/reenhanced/gitreflow/issues/73)
10
43
 
11
44
  ## [v0.8.0](https://github.com/reenhanced/gitreflow/tree/v0.8.0) (2016-05-26)
12
45
  [Full Changelog](https://github.com/reenhanced/gitreflow/compare/v0.7.5...v0.8.0)
@@ -222,10 +255,6 @@
222
255
  ## [v0.4.0](https://github.com/reenhanced/gitreflow/tree/v0.4.0) (2014-10-16)
223
256
  [Full Changelog](https://github.com/reenhanced/gitreflow/compare/v0.3.5...v0.4.0)
224
257
 
225
- **Closed issues:**
226
-
227
- - f has already been specified as a switch in the command deliver \(ArgumentError\) [\#59](https://github.com/reenhanced/gitreflow/issues/59)
228
-
229
258
  **Merged pull requests:**
230
259
 
231
260
  - Make sure to create feature branch with current branch as base [\#64](https://github.com/reenhanced/gitreflow/pull/64) ([esposito](https://github.com/esposito))
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- git_reflow (0.8.1)
4
+ git_reflow (0.8.2)
5
5
  colorize (>= 0.7.0)
6
6
  github_api (= 0.14.0)
7
7
  gli (= 2.14.0)
@@ -44,18 +44,20 @@ GEM
44
44
  json (1.8.3)
45
45
  jwt (1.5.1)
46
46
  method_source (0.8.2)
47
- mini_portile2 (2.0.0)
47
+ mini_portile2 (2.1.0)
48
48
  multi_json (1.12.1)
49
49
  multi_xml (0.5.5)
50
50
  multipart-post (2.0.0)
51
- nokogiri (1.6.7.2)
52
- mini_portile2 (~> 2.0.0.rc2)
51
+ nokogiri (1.6.8)
52
+ mini_portile2 (~> 2.1.0)
53
+ pkg-config (~> 1.1.7)
53
54
  oauth2 (1.1.0)
54
55
  faraday (>= 0.8, < 0.10)
55
56
  jwt (~> 1.0, < 1.5.2)
56
57
  multi_json (~> 1.3)
57
58
  multi_xml (~> 0.5)
58
59
  rack (>= 1.2, < 3)
60
+ pkg-config (1.1.7)
59
61
  pry (0.10.3)
60
62
  coderay (~> 1.1.0)
61
63
  method_source (~> 0.8.1)
@@ -63,7 +65,7 @@ GEM
63
65
  pry-byebug (3.4.0)
64
66
  byebug (~> 9.0)
65
67
  pry (~> 0.10)
66
- rack (1.6.4)
68
+ rack (2.0.1)
67
69
  rake (11.1.2)
68
70
  rdoc (4.2.2)
69
71
  json (~> 1.4)
@@ -114,4 +116,4 @@ DEPENDENCIES
114
116
  wwtd (= 1.3.0)
115
117
 
116
118
  BUNDLED WITH
117
- 1.12.3
119
+ 1.12.5
data/circle.yml CHANGED
@@ -1,16 +1,26 @@
1
1
  dependencies:
2
- pre:
3
- - rvm install 2.1.10
4
- - rvm install 2.2.5
5
- - rvm install 2.3.1
2
+ cache_directories:
3
+ - '~/.rvm/rubies'
4
+ - 'vendor'
6
5
 
7
6
  override:
8
- - 'rvm-exec 2.1.10 bundle install'
9
- - 'rvm-exec 2.2.5 bundle install'
10
- - 'rvm-exec 2.3.1 bundle install'
7
+ - >
8
+ case $CIRCLE_NODE_INDEX in
9
+ 0)
10
+ rvm-exec 2.1.9 gem install bundler
11
+ rvm-exec 2.1.9 bash -c "bundle check --path=vendor/bundle_2.1 || bundle install --path=vendor/bundle_2.1"
12
+ ;;
13
+ 1)
14
+ rvm-exec 2.2.5 gem install bundler
15
+ rvm-exec 2.2.5 bash -c "bundle check --path=vendor/bundle_2.2 || bundle install --path=vendor/bundle_2.2"
16
+ ;;
17
+ 2)
18
+ rvm-exec ruby-head gem install bundler
19
+ rvm-exec ruby-head bash -c "bundle check --path=vendor/bundle_head || bundle install --path=vendor/bundle_head"
20
+ ;;
21
+ esac
11
22
 
12
23
  test:
13
24
  override:
14
- - 'rvm-exec 2.1.10 bundle exec rake'
15
- - 'rvm-exec 2.2.5 bundle exec rake'
16
- - 'rvm-exec 2.3.1 bundle exec rake'
25
+ - case $CIRCLE_NODE_INDEX in 0) rvm-exec 2.1.9 bundle exec rake ;; 1) rvm-exec 2.2.5 bundle exec rake ;; 2) rvm-exec ruby-head bundle exec rake ;; esac:
26
+ parallel: true
@@ -4,8 +4,12 @@ long_desc 'merge your feature branch down to your base branch, and cleanup your
4
4
  command :deliver do |c|
5
5
  c.desc 'merge your feature branch down to your base branch, and cleanup your feature branch'
6
6
  c.switch [:f, :'skip-lgtm'], desc: 'skip the lgtm checks and deliver your feature branch'
7
- c.action do |global_options,options,args|
8
- deliver_options = {:skip_lgtm => options[:'skip-lgtm']}
7
+ c.action do |global_options, options, args|
8
+ deliver_options = {
9
+ base: args[0],
10
+ skip_lgtm: options[:'skip-lgtm']
11
+ }
12
+
9
13
  GitReflow.deliver deliver_options
10
14
  end
11
15
  end
@@ -23,11 +23,11 @@ command :setup do |c|
23
23
  end
24
24
 
25
25
  GitReflow::Config.set "constants.minimumApprovals", ask("Set the minimum number of approvals (leaving blank will require approval from all commenters): "), local: reflow_options[:project_only]
26
- GitReflow::Config.set "constants.approvalRegex", GitReflow::GitServer::PullRequest::DEFAULT_APPROVAL_REGEX.to_s, local: reflow_options[:project_only]
26
+ GitReflow::Config.set "constants.approvalRegex", GitReflow::GitServer::PullRequest::DEFAULT_APPROVAL_REGEX, local: reflow_options[:project_only]
27
27
 
28
28
  if GitReflow::Config.get('core.editor').length <= 0
29
- GitReflow::Config.set('core.editor', GitReflow::DEFAULT_EDITOR, local: reflow_options[:project_only])
30
- GitReflow.say "Updated git's editor (via git config key 'core.editor') to: #{GitReflow::DEFAULT_EDITOR}.", :notice
29
+ GitReflow::Config.set('core.editor', GitReflow.default_editor, local: reflow_options[:project_only])
30
+ GitReflow.say "Updated git's editor (via git config key 'core.editor') to: #{GitReflow.default_editor}.", :notice
31
31
  end
32
32
  end
33
33
  end
@@ -2,7 +2,7 @@ module GitReflow
2
2
  module Config
3
3
  extend self
4
4
 
5
- CONFIG_FILE_PATH = "~/.gitconfig.reflow".freeze
5
+ CONFIG_FILE_PATH = "$HOME/.gitconfig.reflow".freeze
6
6
 
7
7
  def get(key, reload: false, all: false, local: false)
8
8
  if reload == false and cached_key_value = instance_variable_get(:"@#{key.tr('.-', '_')}")
@@ -10,7 +10,7 @@ module GitReflow
10
10
  end
11
11
 
12
12
  def git_editor_command
13
- @git_editor_command ||= GitReflow::Config.get('core.editor')
13
+ GitReflow::Config.get('core.editor') || GitReflow.default_editor
14
14
  end
15
15
 
16
16
  def remote_user
@@ -27,6 +27,21 @@ module GitReflow
27
27
  run("git branch --no-color | grep '^\* ' | grep -v 'no branch' | sed 's/^* //g'", loud: false).strip
28
28
  end
29
29
 
30
+ def pull_request_template
31
+ filenames_to_try = %w( github/PULL_REQUEST_TEMPLATE.md
32
+ github/PULL_REQUEST_TEMPLATE
33
+ PULL_REQUEST_TEMPLATE.md
34
+ PULL_REQUEST_TEMPLATE ).map do |file|
35
+ "#{git_root_dir}/#{file}"
36
+ end
37
+
38
+ filename = filenames_to_try.detect do |file|
39
+ File.exist? file
40
+ end
41
+
42
+ File.read filename if filename
43
+ end
44
+
30
45
  def get_first_commit_message
31
46
  run('git log --pretty=format:"%s" --no-merges -n 1', loud: false).strip
32
47
  end
@@ -1,59 +1,65 @@
1
- module CommandLineHelpers
2
- def stub_command_line
3
- $commands_ran = []
4
- $stubbed_commands = {}
5
- $output = []
6
- $says = []
7
-
8
- stub_run_for GitReflow
9
- stub_run_for GitReflow::Sandbox
10
-
11
- stub_output_for(GitReflow)
12
- stub_output_for(GitReflow::Sandbox)
13
-
14
- allow_any_instance_of(GitReflow::GitServer::PullRequest).to receive(:printf) do |format, *output|
15
- $output << Array(output).join(" ")
16
- output = ''
17
- end.and_return("")
18
- end
1
+ module GitReflow
2
+ module RSpec
3
+ module CommandLineHelpers
4
+
5
+ def stub_command_line
6
+ $commands_ran = []
7
+ $stubbed_commands = {}
8
+ $output = []
9
+ $says = []
10
+
11
+ stub_run_for GitReflow
12
+ stub_run_for GitReflow::Sandbox
13
+
14
+ stub_output_for(GitReflow)
15
+ stub_output_for(GitReflow::Sandbox)
16
+
17
+ allow_any_instance_of(GitReflow::GitServer::PullRequest).to receive(:printf) do |format, *output|
18
+ $output << Array(output).join(" ")
19
+ output = ''
20
+ end.and_return("")
21
+ end
19
22
 
20
- def stub_output_for(object_to_stub, method_to_stub = :puts)
21
- allow_any_instance_of(object_to_stub).to receive(method_to_stub) do |output|
22
- $output << output
23
- output = ''
24
- end
25
- end
23
+ def stub_output_for(object_to_stub, method_to_stub = :puts)
24
+ allow_any_instance_of(object_to_stub).to receive(method_to_stub) do |output|
25
+ $output << output
26
+ output = ''
27
+ end
28
+ end
26
29
 
27
- def stub_run_for(module_to_stub)
28
- allow(module_to_stub).to receive(:run) do |command, options|
29
- options ||= {}
30
- $commands_ran << Hashie::Mash.new(command: command, options: options)
31
- ret_value = $stubbed_commands[command] || ""
32
- command = "" # we need this due to a bug in rspec that will keep this assignment on subsequent runs of the stub
33
- ret_value
34
- end
35
- allow(module_to_stub).to receive(:say) do |output, type|
36
- $says << {message: output, type: type}
37
- end
38
- end
30
+ def stub_run_for(module_to_stub)
31
+ allow(module_to_stub).to receive(:run) do |command, options|
32
+ options ||= {}
33
+ $commands_ran << Hashie::Mash.new(command: command, options: options)
34
+ ret_value = $stubbed_commands[command] || ""
35
+ command = "" # we need this due to a bug in rspec that will keep this assignment on subsequent runs of the stub
36
+ ret_value
37
+ end
38
+ allow(module_to_stub).to receive(:say) do |output, type|
39
+ $says << {message: output, type: type}
40
+ end
41
+ end
39
42
 
40
- def reset_stubbed_command_line
41
- $commands_ran = []
42
- $stubbed_commands = {}
43
- $output = []
44
- $says = []
45
- end
43
+ def reset_stubbed_command_line
44
+ $commands_ran = []
45
+ $stubbed_commands = {}
46
+ $output = []
47
+ $says = []
48
+ end
46
49
 
47
- def stub_command(command, return_value)
48
- $stubbed_commands[command] = return_value
49
- allow(GitReflow::Sandbox).to receive(:run).with(command).and_return(return_value)
50
- end
50
+ def stub_command(command, return_value)
51
+ $stubbed_commands[command] = return_value
52
+ allow(GitReflow::Sandbox).to receive(:run).with(command).and_return(return_value)
53
+ end
54
+
55
+ def stub_command_line_inputs(inputs)
56
+ allow_any_instance_of(HighLine).to receive(:ask) do |terminal, question|
57
+ return_value = inputs[question]
58
+ question = ""
59
+ return_value
60
+ end
61
+ end
51
62
 
52
- def stub_command_line_inputs(inputs)
53
- allow_any_instance_of(HighLine).to receive(:ask) do |terminal, question|
54
- return_value = inputs[question]
55
- question = ""
56
- return_value
57
63
  end
58
64
  end
59
65
  end
@@ -0,0 +1,13 @@
1
+ module GitReflow
2
+ module RSpec
3
+ module StubHelpers
4
+
5
+ def stub_with_fallback(obj, method)
6
+ original_method = obj.method(method)
7
+ allow(obj).to receive(method).with(anything()) { |*args| original_method.call(*args) }
8
+ return allow(obj).to receive(method)
9
+ end
10
+
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,2 @@
1
+ require_relative 'rspec/command_line_helpers'
2
+ require_relative 'rspec/stub_helpers'
@@ -1,3 +1,3 @@
1
1
  module GitReflow
2
- VERSION = "0.8.1"
2
+ VERSION = "0.8.2"
3
3
  end
data/lib/git_reflow.rb CHANGED
@@ -21,7 +21,9 @@ module GitReflow
21
21
  include GitHelpers
22
22
  extend self
23
23
 
24
- DEFAULT_EDITOR = "#{ENV['EDITOR']}".freeze || "vi".freeze
24
+ def default_editor
25
+ "#{ENV['EDITOR']}".freeze || "vi".freeze
26
+ end
25
27
 
26
28
  def status(destination_branch)
27
29
  pull_request = git_server.find_open_pull_request( :from => current_branch, :to => destination_branch )
@@ -53,7 +55,7 @@ module GitReflow
53
55
  pull_request_msg_file = "#{GitReflow.git_root_dir}/.git/GIT_REFLOW_PR_MSG"
54
56
 
55
57
  File.open(pull_request_msg_file, 'w') do |file|
56
- file.write(options[:title] || GitReflow.current_branch)
58
+ file.write(options[:title] || GitReflow.pull_request_template || GitReflow.current_branch)
57
59
  end
58
60
 
59
61
  GitReflow.run("#{GitReflow.git_editor_command} #{pull_request_msg_file}", with_system: true)
@@ -98,10 +100,10 @@ module GitReflow
98
100
  end
99
101
 
100
102
  def deliver(options = {})
101
- base_branch = options[:base] || 'master'
103
+ options[:base] ||= 'master'
102
104
 
103
105
  begin
104
- existing_pull_request = git_server.find_open_pull_request( :from => current_branch, :to => base_branch )
106
+ existing_pull_request = git_server.find_open_pull_request( from: current_branch, to: options[:base] )
105
107
 
106
108
  if existing_pull_request.nil?
107
109
  say "No pull request exists for #{remote_user}:#{current_branch}\nPlease submit your branch for review first with \`git reflow review\`", :deliver_halted
@@ -109,7 +111,7 @@ module GitReflow
109
111
 
110
112
  if existing_pull_request.good_to_merge?(force: options[:skip_lgtm])
111
113
  # displays current status and prompts user for confirmation
112
- self.status base_branch
114
+ self.status options[:base]
113
115
  existing_pull_request.merge!(options)
114
116
  else
115
117
  say existing_pull_request.rejection_message, :deliver_halted
@@ -8,7 +8,7 @@
8
8
  repo_owner: repo_owner,
9
9
  repo_name: repo_name,
10
10
  body: comment[:body] || 'Hammer time',
11
- created_at: comment[:created_at] || Chronic.parse('1 minute ago')
11
+ created_at: comment[:created_at] || Chronic.parse('October 21, 2015 07:28:00')
12
12
  ).to_s %>
13
13
  <% end %>
14
14
  <%= comments_json.join(", ") %>
@@ -6,7 +6,7 @@
6
6
  author: commit[:author],
7
7
  repo_owner: repo_owner,
8
8
  repo_name: repo_name,
9
- created_at: commit[:created_at] || Chronic.parse("1.minute.ago")
9
+ created_at: commit[:created_at] || Chronic.parse("October 21, 2015 07:28:00")
10
10
  ).to_s %>
11
11
  <% end %>
12
12
  <%= commits_json.join(", ") %>
@@ -29,7 +29,7 @@ describe GitReflow::Config do
29
29
 
30
30
  describe ".set(key)" do
31
31
  subject { GitReflow::Config.set('chucknorris.roundhouse', 'to the face') }
32
- it { expect{ subject }.to have_run_command_silently 'git config -f ~/.gitconfig.reflow --replace-all chucknorris.roundhouse "to the face"' }
32
+ it { expect{ subject }.to have_run_command_silently 'git config -f $HOME/.gitconfig.reflow --replace-all chucknorris.roundhouse "to the face"' }
33
33
 
34
34
  context "for current project only" do
35
35
  subject { GitReflow::Config.set('chucknorris.roundhouse', 'to the face', local: true) }
@@ -39,11 +39,11 @@ describe GitReflow::Config do
39
39
 
40
40
  describe ".unset(key)" do
41
41
  subject { GitReflow::Config.unset('chucknorris.roundhouse') }
42
- it { expect{ subject }.to have_run_command_silently 'git config -f ~/.gitconfig.reflow --unset-all chucknorris.roundhouse ' }
42
+ it { expect{ subject }.to have_run_command_silently 'git config -f $HOME/.gitconfig.reflow --unset-all chucknorris.roundhouse ' }
43
43
 
44
44
  context "for multi-value keys" do
45
45
  subject { GitReflow::Config.unset('chucknorris.roundhouse', value: 'to the face') }
46
- it { expect{ subject }.to have_run_command_silently 'git config -f ~/.gitconfig.reflow --unset-all chucknorris.roundhouse "to the face"' }
46
+ it { expect{ subject }.to have_run_command_silently 'git config -f $HOME/.gitconfig.reflow --unset-all chucknorris.roundhouse "to the face"' }
47
47
  end
48
48
 
49
49
  context "for current project only" do
@@ -19,6 +19,23 @@ describe GitReflow::GitHelpers do
19
19
  it { expect{ subject }.to have_run_command_silently "git rev-parse --show-toplevel" }
20
20
  end
21
21
 
22
+ describe '.git_editor_command' do
23
+ subject { Gitacular.git_editor_command }
24
+ before { ENV['EDITOR'] = 'vim' }
25
+
26
+ it 'defaults to GitReflow config' do
27
+ allow(GitReflow::Config).to receive(:get).with('core.editor').and_return 'nano'
28
+
29
+ expect(subject).to eq 'nano'
30
+ end
31
+
32
+ it 'falls back to the environment variable $EDITOR' do
33
+ allow(GitReflow::Config).to receive(:get).with('core.editor').and_return nil
34
+
35
+ expect(subject).to eq 'vim'
36
+ end
37
+ end
38
+
22
39
  describe ".remote_user" do
23
40
  subject { Gitacular.remote_user }
24
41
 
@@ -56,6 +73,30 @@ describe GitReflow::GitHelpers do
56
73
  it { expect{ subject }.to have_run_command_silently "git branch --no-color | grep '^\* ' | grep -v 'no branch' | sed 's/^* //g'" }
57
74
  end
58
75
 
76
+ describe ".pull_request_template" do
77
+ subject { Gitacular.pull_request_template }
78
+
79
+ context "template file exists" do
80
+ let(:root_dir) { "/some_repo" }
81
+ let(:template_content) { "Template content" }
82
+
83
+ before do
84
+ allow(Gitacular).to receive(:git_root_dir).and_return(root_dir)
85
+ allow(File).to receive(:exist?).with("#{root_dir}/github/PULL_REQUEST_TEMPLATE.md").and_return(true)
86
+ allow(File).to receive(:read).with("#{root_dir}/github/PULL_REQUEST_TEMPLATE.md").and_return(template_content)
87
+ end
88
+ it { is_expected.to eq template_content }
89
+ end
90
+
91
+ context "template file does not exist" do
92
+ before do
93
+ allow(File).to receive(:exist?).and_return(false)
94
+ end
95
+
96
+ it { is_expected.to be_nil }
97
+ end
98
+ end
99
+
59
100
  describe ".get_first_commit_message" do
60
101
  subject { Gitacular.get_first_commit_message }
61
102
  it { expect{ subject }.to have_run_command_silently 'git log --pretty=format:"%s" --no-merges -n 1' }
@@ -207,6 +207,14 @@ describe GitReflow do
207
207
  subject
208
208
  end
209
209
 
210
+ context "and a base branch is provided" do
211
+ let(:inputs) { { title: "new-feature", message: "message", head: "reenhanced:new-feature", base: 'live'}}
212
+ it "looks for a pull request with the custom base branch" do
213
+ expect(github).to receive(:find_open_pull_request).with(from: branch, to: inputs[:base])
214
+ subject
215
+ end
216
+ end
217
+
210
218
  context "and pull request exists for the feature branch to the destination branch" do
211
219
  before do
212
220
  allow(github).to receive(:build_status).and_return(build_status)
data/spec/spec_helper.rb CHANGED
@@ -7,14 +7,15 @@ require 'pry'
7
7
  $LOAD_PATH << 'lib'
8
8
  require 'git_reflow'
9
9
 
10
+ require 'git_reflow/rspec'
11
+
10
12
  Dir[File.expand_path('../support/**/*.rb', __FILE__)].each {|f| require f}
11
13
 
12
14
  RSpec.configure do |config|
13
- config.include GithubHelpers
14
15
  config.include WebMock::API
15
- config.include CommandLineHelpers
16
+ config.include GitReflow::RSpec::CommandLineHelpers
16
17
  config.include GithubHelpers
17
- config.include RspecStubHelpers
18
+ config.include GitReflow::RSpec::StubHelpers
18
19
 
19
20
  config.expect_with :rspec do |c|
20
21
  c.syntax = [:should, :expect]
@@ -8,7 +8,7 @@ class FakeGitHub
8
8
  attr_accessor :repo_owner, :repo_name
9
9
 
10
10
  DEFAULT_COMMIT_AUTHOR = "reenhanced".freeze
11
- DEFAULT_COMMIT_TIME = "1 minute ago".freeze
11
+ DEFAULT_COMMIT_TIME = "October 21, 2015 07:28:00".freeze
12
12
 
13
13
  # EXAMPLE:
14
14
  #
@@ -75,7 +75,7 @@ class FakeGitHub
75
75
  comments: object_data[:comments],
76
76
  pull_request_number: object_data[:number] || 1,
77
77
  body: object_data[:body] || 'Hammer time',
78
- created_at: object_data[:created_at] || Chronic.parse("1.minute ago")).to_s,
78
+ created_at: object_data[:created_at] || Chronic.parse(DEFAULT_COMMIT_TIME)).to_s,
79
79
  status: 201,
80
80
  headers: {content_type: "application/json; charset=utf-8"})
81
81
  else
@@ -113,7 +113,7 @@ class FakeGitHub
113
113
  repo_name: self.repo_name,
114
114
  comments: object_data[:comments],
115
115
  pull_request_number: object_data[:number] || 1,
116
- created_at: object_data[:created_at] || Time.parse('1pm')).to_s,
116
+ created_at: object_data[:created_at] || Chronic.parse(DEFAULT_COMMIT_TIME)).to_s,
117
117
  status: 201,
118
118
  headers: {content_type: "application/json; charset=utf-8"})
119
119
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: git_reflow
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.1
4
+ version: 0.8.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Valentino Stoll
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: exe
12
12
  cert_chain: []
13
- date: 2016-05-26 00:00:00.000000000 Z
13
+ date: 2016-08-01 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: appraisal
@@ -264,6 +264,9 @@ files:
264
264
  - lib/git_reflow/git_server/pull_request.rb
265
265
  - lib/git_reflow/merge_error.rb
266
266
  - lib/git_reflow/os_detector.rb
267
+ - lib/git_reflow/rspec.rb
268
+ - lib/git_reflow/rspec/command_line_helpers.rb
269
+ - lib/git_reflow/rspec/stub_helpers.rb
267
270
  - lib/git_reflow/sandbox.rb
268
271
  - lib/git_reflow/version.rb
269
272
  - spec/fixtures/git/git_config
@@ -283,21 +286,19 @@ files:
283
286
  - spec/fixtures/repositories/commit.json.erb
284
287
  - spec/fixtures/repositories/commits.json.erb
285
288
  - spec/fixtures/repositories/statuses.json
286
- - spec/git_reflow_spec.rb
287
289
  - spec/lgtm_git_reflow_spec.rb
288
290
  - spec/lib/git_reflow/config_spec.rb
289
291
  - spec/lib/git_reflow/git_helpers_spec.rb
290
292
  - spec/lib/git_reflow/git_server_spec.rb
293
+ - spec/lib/git_reflow_spec.rb
291
294
  - spec/lib/git_server/bit_bucket_spec.rb
292
295
  - spec/lib/git_server/git_hub/pull_request_spec.rb
293
296
  - spec/lib/git_server/git_hub_spec.rb
294
297
  - spec/lib/git_server/pull_request_spec.rb
295
298
  - spec/spec_helper.rb
296
- - spec/support/command_line_helpers.rb
297
299
  - spec/support/fake_github.rb
298
300
  - spec/support/fixtures.rb
299
301
  - spec/support/github_helpers.rb
300
- - spec/support/rspec_stub_helpers.rb
301
302
  - spec/support/web_mocks.rb
302
303
  homepage: http://github.com/reenhanced/gitreflow
303
304
  licenses:
@@ -348,19 +349,17 @@ test_files:
348
349
  - spec/fixtures/repositories/commit.json.erb
349
350
  - spec/fixtures/repositories/commits.json.erb
350
351
  - spec/fixtures/repositories/statuses.json
351
- - spec/git_reflow_spec.rb
352
352
  - spec/lgtm_git_reflow_spec.rb
353
353
  - spec/lib/git_reflow/config_spec.rb
354
354
  - spec/lib/git_reflow/git_helpers_spec.rb
355
355
  - spec/lib/git_reflow/git_server_spec.rb
356
+ - spec/lib/git_reflow_spec.rb
356
357
  - spec/lib/git_server/bit_bucket_spec.rb
357
358
  - spec/lib/git_server/git_hub/pull_request_spec.rb
358
359
  - spec/lib/git_server/git_hub_spec.rb
359
360
  - spec/lib/git_server/pull_request_spec.rb
360
361
  - spec/spec_helper.rb
361
- - spec/support/command_line_helpers.rb
362
362
  - spec/support/fake_github.rb
363
363
  - spec/support/fixtures.rb
364
364
  - spec/support/github_helpers.rb
365
- - spec/support/rspec_stub_helpers.rb
366
365
  - spec/support/web_mocks.rb
@@ -1,7 +0,0 @@
1
- module RspecStubHelpers
2
- def stub_with_fallback(obj, method)
3
- original_method = obj.method(method)
4
- allow(obj).to receive(method).with(anything()) { |*args| original_method.call(*args) }
5
- return allow(obj).to receive(method)
6
- end
7
- end