git_reflow 0.8.1 → 0.8.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: 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