git_helper 3.6.1 → 3.6.3

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
  SHA256:
3
- metadata.gz: 9d9274d7a8c49375a44027dc69e8edbdc0e10ba9f3cc292feb62af0ef7bbd862
4
- data.tar.gz: 8f22422ba8dfb69137eacca33cead4681ce48f9bd87c5e2428c8fbf0a4f3d874
3
+ metadata.gz: 7e0efd69de26cab869fc579da3011c6958b2491913cca1e0ec061f33a6890e91
4
+ data.tar.gz: e942b0e9b503de7d33090ce6be10b197df033fffe80b401a837c4ce62195b186
5
5
  SHA512:
6
- metadata.gz: 1252ef15165f44e88dda2043278c42bf89fba68db1bc88e77388687fe235495e4290cce17564bfe399795e4037bc229fed1f1ac636fd16b7636e90dc09e1a057
7
- data.tar.gz: f16b88584257d417545eaa3bfaa073a8b6776b8ad1e77678ed48bea70e57193fc1d427127172aed0c5a6df201980e63b3bf5dbd9465521db0db317d7841dd7bd
6
+ metadata.gz: 30472648379bc818e9b54f15b25948e7f5cc64e0a0cb349724a8ae9f1df8e0642d1daac1df3ff4669334d162370d3a7f78c57df16574fb89c9cc2b5d48963a1c
7
+ data.tar.gz: 69d48ba584a596249b41b91f0cb6828af7fca255a13c123d84bc24071ed2de5cfda8cac0777050002f68e63f8e4608322924f1baae288693bd5f12cb030f4930
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- git_helper (3.6.1)
4
+ git_helper (3.6.3)
5
5
  gli (~> 2.13)
6
6
  highline_wrapper (~> 1.1)
7
7
 
@@ -10,13 +10,13 @@ GEM
10
10
  specs:
11
11
  ast (2.4.2)
12
12
  coderay (1.1.3)
13
- concurrent-ruby (1.1.9)
14
- diff-lcs (1.4.4)
15
- faker (2.19.0)
16
- i18n (>= 1.6, < 2)
17
- ffi (1.15.4)
18
- formatador (0.3.0)
19
- gli (2.20.1)
13
+ concurrent-ruby (1.2.0)
14
+ diff-lcs (1.5.0)
15
+ faker (3.1.1)
16
+ i18n (>= 1.8.11, < 2)
17
+ ffi (1.15.5)
18
+ formatador (1.1.0)
19
+ gli (2.21.0)
20
20
  guard (2.18.0)
21
21
  formatador (>= 0.2.4)
22
22
  listen (>= 2.7, < 4.0)
@@ -31,12 +31,13 @@ GEM
31
31
  guard (~> 2.1)
32
32
  guard-compat (~> 1.1)
33
33
  rspec (>= 2.99.0, < 4.0)
34
- highline (2.0.3)
35
- highline_wrapper (1.3.0)
34
+ highline (2.1.0)
35
+ highline_wrapper (1.3.1)
36
36
  highline (~> 2.0)
37
- i18n (1.8.11)
37
+ i18n (1.12.0)
38
38
  concurrent-ruby (~> 1.0)
39
- listen (3.7.0)
39
+ json (2.6.3)
40
+ listen (3.8.0)
40
41
  rb-fsevent (~> 0.10, >= 0.10.3)
41
42
  rb-inotify (~> 0.9, >= 0.9.10)
42
43
  lumberjack (1.2.8)
@@ -45,53 +46,55 @@ GEM
45
46
  notiffany (0.1.3)
46
47
  nenv (~> 0.1)
47
48
  shellany (~> 0.0)
48
- parallel (1.21.0)
49
- parser (3.0.3.1)
49
+ parallel (1.22.1)
50
+ parser (3.2.1.0)
50
51
  ast (~> 2.4.1)
51
- pry (0.14.1)
52
+ pry (0.14.2)
52
53
  coderay (~> 1.1)
53
54
  method_source (~> 1.0)
54
- rainbow (3.0.0)
55
- rb-fsevent (0.11.0)
55
+ rainbow (3.1.1)
56
+ rb-fsevent (0.11.2)
56
57
  rb-inotify (0.10.1)
57
58
  ffi (~> 1.0)
58
- regexp_parser (2.1.1)
59
+ regexp_parser (2.7.0)
59
60
  rexml (3.2.5)
60
- rspec (3.10.0)
61
- rspec-core (~> 3.10.0)
62
- rspec-expectations (~> 3.10.0)
63
- rspec-mocks (~> 3.10.0)
64
- rspec-core (3.10.1)
65
- rspec-support (~> 3.10.0)
66
- rspec-expectations (3.10.1)
61
+ rspec (3.12.0)
62
+ rspec-core (~> 3.12.0)
63
+ rspec-expectations (~> 3.12.0)
64
+ rspec-mocks (~> 3.12.0)
65
+ rspec-core (3.12.1)
66
+ rspec-support (~> 3.12.0)
67
+ rspec-expectations (3.12.2)
67
68
  diff-lcs (>= 1.2.0, < 2.0)
68
- rspec-support (~> 3.10.0)
69
- rspec-mocks (3.10.2)
69
+ rspec-support (~> 3.12.0)
70
+ rspec-mocks (3.12.3)
70
71
  diff-lcs (>= 1.2.0, < 2.0)
71
- rspec-support (~> 3.10.0)
72
- rspec-support (3.10.3)
73
- rubocop (1.23.0)
72
+ rspec-support (~> 3.12.0)
73
+ rspec-support (3.12.0)
74
+ rubocop (1.45.1)
75
+ json (~> 2.3)
74
76
  parallel (~> 1.10)
75
- parser (>= 3.0.0.0)
77
+ parser (>= 3.2.0.0)
76
78
  rainbow (>= 2.2.2, < 4.0)
77
79
  regexp_parser (>= 1.8, < 3.0)
78
- rexml
79
- rubocop-ast (>= 1.12.0, < 2.0)
80
+ rexml (>= 3.2.5, < 4.0)
81
+ rubocop-ast (>= 1.24.1, < 2.0)
80
82
  ruby-progressbar (~> 1.7)
81
- unicode-display_width (>= 1.4.0, < 3.0)
82
- rubocop-ast (1.13.0)
83
- parser (>= 3.0.1.1)
83
+ unicode-display_width (>= 2.4.0, < 3.0)
84
+ rubocop-ast (1.24.1)
85
+ parser (>= 3.1.1.0)
84
86
  ruby-progressbar (1.11.0)
85
87
  shellany (0.0.1)
86
- thor (1.1.0)
87
- unicode-display_width (2.1.0)
88
+ thor (1.2.1)
89
+ unicode-display_width (2.4.2)
88
90
 
89
91
  PLATFORMS
90
- x86_64-darwin-19
92
+ arm64-darwin-21
93
+ arm64-darwin-22
91
94
 
92
95
  DEPENDENCIES
93
96
  bundler (~> 2.2)
94
- faker (~> 2.15)
97
+ faker (~> 3.0)
95
98
  git_helper!
96
99
  guard-rspec (~> 4.3)
97
100
  pry (~> 0.13)
@@ -99,4 +102,4 @@ DEPENDENCIES
99
102
  rubocop (~> 1.10)
100
103
 
101
104
  BUNDLED WITH
102
- 2.2.31
105
+ 2.4.6
data/Guardfile CHANGED
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  guard :rspec, cmd: 'bundle exec rspec', all_on_start: true do
4
+ watch('spec/spec_helper.rb') { 'spec' }
5
+ watch(%r{^lib/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
4
6
  watch(%r{^spec/.+_spec\.rb$})
5
- watch(%r{^lib/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
6
- watch('spec/spec_helper.rb') { 'spec' }
7
7
  end
data/README.md CHANGED
@@ -6,32 +6,37 @@
6
6
  gem install git_helper
7
7
  ```
8
8
 
9
- Some of the commands in this gem can be used without any additional configuration. However, others utilize special GitHub or GitLab configuration. To provide access tokens for this, create a `~/.git_helper/config.yml` file. The contents should look like this:
10
-
11
- ```
12
- :github_user: GITHUB-USERNAME
13
- :github_token: GITHUB-TOKEN
14
- :gitlab_user: GITLAB-USERNAME
15
- :gitlab_token: GITLAB-TOKEN
16
- ```
17
-
18
- To create or see what access tokens you have, look [here for GitHub personal access tokens](https://github.com/settings/tokens) and [here for GitLab access tokens](https://gitlab.com/profile/personal_access_tokens). You could either have one set of tokens for each computer you use, or just have one set of tokens for all computers that you rotate periodically.
19
-
20
9
  Once the gem is installed, run this to view the help screen:
10
+
21
11
  ```bash
22
12
  git-helper --help
23
13
  ```
24
14
 
25
- To see what version of git_helper you're running, run:
15
+ To see what version of Git Helper you're running, run:
16
+
26
17
  ```bash
27
18
  git-helper --version
28
19
  ```
29
20
 
30
- To help you create the `~/.git_helper/config.yml` file and set up the plugins (see below), run this command and allow the command to walk you through the prompts:
21
+ Some of the commands in this gem can be used without any additional configuration. However, others utilize special GitHub or GitLab configuration. To set up access with GitHub/GitLab, run:
22
+
31
23
  ```bash
32
24
  git-helper setup
33
25
  ```
34
26
 
27
+ This will give you the option to set up credentials at GitHub and/or GitLab, as well as give you the choice to set up Git Helper as a plugin or not (see below).
28
+
29
+ The final result will be a `~/.git_helper/config.yml` file with the contents in this form:
30
+
31
+ ```
32
+ :github_user: GITHUB-USERNAME
33
+ :github_token: GITHUB-TOKEN
34
+ :gitlab_user: GITLAB-USERNAME
35
+ :gitlab_token: GITLAB-TOKEN
36
+ ```
37
+
38
+ To create or see what access tokens you have, look [here for GitHub personal access tokens](https://github.com/settings/tokens) and [here for GitLab access tokens](https://gitlab.com/profile/personal_access_tokens). You could either have one set of tokens for each computer you use, or just have one set of tokens for all computers that you rotate periodically.
39
+
35
40
  ## Plugin Usage
36
41
 
37
42
  As an additional option, you can set each of the following commands to be a git plugin, meaning you can call them in a way that feels even more git-native:
@@ -42,21 +47,12 @@ git-helper clean-branches git clean-branches
42
47
  git-helper code-request git code-request
43
48
  ```
44
49
 
45
- To do this, download the `plugins.zip` file in the root of this directory. Unzip and place the contents in the appropriate location:
50
+ Running the `setup` command will give you the option to set this up:
46
51
 
47
52
  ```bash
48
- mkdir ~/.git_helper
49
- unzip path/to/downloaded/plugins.zip -d ~/.git_helper
50
- ```
51
-
52
- Now, the plugins will live in `~/.git_helper/plugins/*`. Add the following line to your `~/.bash_profile`:
53
-
54
- ```bash
55
- export PATH=/path/to/computer/home/.git_helper/plugins:$PATH
53
+ git-helper setup
56
54
  ```
57
55
 
58
- And then run `source ~/.bash_profile`.
59
-
60
56
  ## Alias Usage
61
57
 
62
58
  To make the commands even shorter, I recommend setting aliases. You can either set aliases through git itself, like this (only possible if you also use the plugin option):
@@ -67,7 +63,7 @@ git config --global alias.nb new-branch
67
63
 
68
64
  And then running `git nb` maps to `git new-branch`, which through the plugin, maps to `git-helper new-branch`.
69
65
 
70
- Or you can set the alias through your `~/.bashrc` (which is my preferred method because it can make the command even shorter, and doesn't require the plugin usage). To do this, add lines like this to the `~/.bashrc` file and run `source ~/.bashrc`:
66
+ Or you can set the alias through your `~/.zshrc` (which is my preferred method because it can make the command even shorter, and doesn't require the plugin usage). To do this, add lines like this to the `~/.zshrc` file and run `source ~/.zshrc`:
71
67
 
72
68
  ```bash
73
69
  alias gnb="git new-branch"
@@ -19,7 +19,7 @@ module GitHelper
19
19
  end
20
20
 
21
21
  def git_config_file_path
22
- "#{Dir.pwd.scan(%r{\A/\w*/\w*/}).first}.git_helper/config.yml"
22
+ "#{Dir.home}/.git_helper/config.yml"
23
23
  end
24
24
 
25
25
  private def config_file
@@ -108,7 +108,7 @@ module GitHelper
108
108
  # rubocop:enable Metrics/AbcSize
109
109
 
110
110
  def read_template(file_name)
111
- File.open(file_name).read
111
+ File.read(file_name)
112
112
  end
113
113
 
114
114
  # rubocop:disable Metrics/AbcSize
@@ -122,14 +122,14 @@ module GitHelper
122
122
  branch_arr.first.capitalize
123
123
  elsif branch_arr[0].scan(/(\w+)/).any? && branch_arr[1].scan(/(\d+)/).any? # branch includes jira_123 at beginning
124
124
  issue = "#{branch_arr[0].upcase}-#{branch_arr[1]}"
125
- description = branch_arr[2..-1].join(' ')
125
+ description = branch_arr[2..].join(' ')
126
126
  "#{issue} #{description.capitalize}"
127
127
  elsif branch_arr[0].scan(/(\w+-\d+)/).any? # branch includes string jira-123 at beginning
128
128
  issue = branch_arr[0].upcase
129
- description = branch_arr[1..-1].join(' ')
129
+ description = branch_arr[1..].join(' ')
130
130
  "#{issue} #{description.capitalize}"
131
131
  else # plain words
132
- branch_arr[0..-1].join(' ').capitalize
132
+ branch_arr[0..].join(' ').capitalize
133
133
  end
134
134
  end
135
135
  # rubocop:enable Metrics/MethodLength
@@ -29,21 +29,16 @@ module GitHelper
29
29
  puts "Creating merge request: #{new_mr_title}"
30
30
  mr = gitlab_client.create_merge_request(local_project, options)
31
31
 
32
- raise StandardError, mr.message if mr.diff_refs.nil? || mr.web_url.nil?
33
-
34
- if mr.diff_refs['base_sha'] == mr.diff_refs['head_sha']
32
+ if mr.web_url && mr.diff_refs && (mr.diff_refs['base_sha'] == mr.diff_refs['head_sha'])
35
33
  puts "Merge request was created, but no commits have been pushed to GitLab: #{mr.web_url}"
36
- else
34
+ elsif mr.web_url
37
35
  puts "Merge request successfully created: #{mr.web_url}"
36
+ else
37
+ raise StandardError, (mr.message.instance_of?(Array) ? mr.message.first : mr.message)
38
38
  end
39
39
  rescue StandardError => e
40
40
  puts 'Could not create merge request:'
41
-
42
- if e.message.include?('Another open merge request already exists')
43
- puts ' A merge request already exists for this branch'
44
- else
45
- puts " #{e.message}"
46
- end
41
+ puts " #{e.message}"
47
42
  end
48
43
  # rubocop:enable Metrics/AbcSize
49
44
  # rubocop:enable Metrics/MethodLength
@@ -32,14 +32,15 @@ module GitHelper
32
32
  return unless answer
33
33
 
34
34
  create_or_update_plugin_files
35
- puts "\nNow add this line to your ~/.bash_profile:\n" \
36
- ' export PATH=/path/to/computer/home/.git_helper/plugins:$PATH'
35
+ puts "\nNow add this line to your ~/.zshrc:\n " \
36
+ 'export PATH="$HOME/.git_helper/plugins:$PATH"'
37
37
  puts "\nDone!"
38
38
  end
39
39
 
40
40
  private def create_or_update_config_file
41
41
  contents = generate_file_contents
42
42
  puts "Creating or updating your #{config_file} file..."
43
+ FileUtils.mkdir_p("#{Dir.home}/.git_helper")
43
44
  File.open(config_file, 'w') { |file| file.puts contents }
44
45
  puts "\nDone!\n\n"
45
46
  end
@@ -66,8 +67,8 @@ module GitHelper
66
67
  file_contents << ":gitlab_user: #{ask_question('GitLab username?')}\n"
67
68
  file_contents << ':gitlab_token: ' \
68
69
  "#{ask_question(
69
- 'GitLab personal access token? (Navigate to https://gitlab.com/-/profile/personal_access_tokens' \
70
- ' to create a new personal access token)',
70
+ 'GitLab personal access token? (Navigate to https://gitlab.com/-/profile/personal_access_tokens ' \
71
+ 'to create a new personal access token)',
71
72
  secret: true
72
73
  )}\n"
73
74
  end
@@ -81,15 +82,14 @@ module GitHelper
81
82
  end
82
83
 
83
84
  # rubocop:disable Metrics/MethodLength
84
- # rubocop:disable Metrics/AbcSize
85
85
  private def create_or_update_plugin_files
86
- plugins_dir = "#{Dir.pwd.scan(%r{\A/\w*/\w*/}).first}.git_helper/plugins"
86
+ plugins_dir = "#{Dir.home}/.git_helper/plugins"
87
87
  plugins_url = 'https://api.github.com/repos/emmahsax/git_helper/contents/plugins'
88
88
  header = 'Accept: application/vnd.github.v3.raw'
89
89
  token = git_config_reader.github_token
90
90
  user = git_config_reader.github_user
91
91
 
92
- Dir.mkdir(plugins_dir) unless File.exist?(plugins_dir)
92
+ FileUtils.mkdir_p(plugins_dir)
93
93
 
94
94
  all_plugins = JSON.parse(`curl -s -u #{user}:#{token} -H "#{header}" -L "#{plugins_url}"`)
95
95
 
@@ -99,7 +99,6 @@ module GitHelper
99
99
  end
100
100
  end
101
101
  # rubocop:enable Metrics/MethodLength
102
- # rubocop:enable Metrics/AbcSize
103
102
 
104
103
  private def config_file
105
104
  git_config_reader.git_config_file_path
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module GitHelper
4
- VERSION = '3.6.1'
4
+ VERSION = '3.6.3'
5
5
  end
data/lib/git_helper.rb CHANGED
@@ -6,7 +6,7 @@ require 'highline_wrapper'
6
6
 
7
7
  files = "#{File.expand_path(File.join(File.dirname(File.absolute_path(__FILE__)), 'git_helper'))}/**/*.rb"
8
8
 
9
- Dir[files].each do |file|
9
+ Dir[files].sort.each do |file|
10
10
  require_relative file
11
11
  end
12
12
 
data/renovate.json ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "$schema": "https://docs.renovatebot.com/renovate-schema.json",
3
+ "extends": [
4
+ "config:base"
5
+ ]
6
+ }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: git_helper
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.6.1
4
+ version: 3.6.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Emma Sax
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-12-01 00:00:00.000000000 Z
11
+ date: 2023-02-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gli
@@ -58,14 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '2.15'
61
+ version: '3.0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '2.15'
68
+ version: '3.0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: guard-rspec
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -154,21 +154,7 @@ files:
154
154
  - lib/git_helper/setup.rb
155
155
  - lib/git_helper/version.rb
156
156
  - plugins.zip
157
- - spec/git_helper/change_remote_spec.rb
158
- - spec/git_helper/checkout_default_spec.rb
159
- - spec/git_helper/clean_branches_spec.rb
160
- - spec/git_helper/code_request_spec.rb
161
- - spec/git_helper/empty_commit_spec.rb
162
- - spec/git_helper/forget_local_commits_spec.rb
163
- - spec/git_helper/git_config_reader_spec.rb
164
- - spec/git_helper/github_client_spec.rb
165
- - spec/git_helper/gitlab_client_spec.rb
166
- - spec/git_helper/local_code_spec.rb
167
- - spec/git_helper/merge_request_spec.rb
168
- - spec/git_helper/new_branch_spec.rb
169
- - spec/git_helper/pull_request_spec.rb
170
- - spec/git_helper/setup_spec.rb
171
- - spec/spec_helper.rb
157
+ - renovate.json
172
158
  homepage: https://github.com/emmahsax/git_helper
173
159
  licenses:
174
160
  - BSD-3-Clause
@@ -189,23 +175,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
189
175
  - !ruby/object:Gem::Version
190
176
  version: '0'
191
177
  requirements: []
192
- rubygems_version: 3.2.22
178
+ rubygems_version: 3.4.6
193
179
  signing_key:
194
180
  specification_version: 4
195
181
  summary: A set of GitHub and GitLab workflow scripts
196
- test_files:
197
- - spec/spec_helper.rb
198
- - spec/git_helper/change_remote_spec.rb
199
- - spec/git_helper/checkout_default_spec.rb
200
- - spec/git_helper/clean_branches_spec.rb
201
- - spec/git_helper/code_request_spec.rb
202
- - spec/git_helper/empty_commit_spec.rb
203
- - spec/git_helper/forget_local_commits_spec.rb
204
- - spec/git_helper/git_config_reader_spec.rb
205
- - spec/git_helper/github_client_spec.rb
206
- - spec/git_helper/gitlab_client_spec.rb
207
- - spec/git_helper/local_code_spec.rb
208
- - spec/git_helper/merge_request_spec.rb
209
- - spec/git_helper/new_branch_spec.rb
210
- - spec/git_helper/pull_request_spec.rb
211
- - spec/git_helper/setup_spec.rb
182
+ test_files: []
@@ -1,176 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
- require 'git_helper'
5
-
6
- describe GitHelper::ChangeRemote do
7
- let(:remote1) { "git@github.com:#{old_owner}/#{project}.git" }
8
- let(:project) { Faker::Lorem.word }
9
- let(:highline_wrapper) { double(:highline_wrapper, ask_yes_no: true) }
10
- let(:old_owner) { Faker::Internet.username }
11
- let(:new_owner) { Faker::Internet.username }
12
- let(:directory_entries) { ['.', '..', project, Faker::Lorem.word, Faker::Lorem.word] }
13
-
14
- let(:local_code) do
15
- double(:local_code,
16
- remotes: [remote1],
17
- remote_name: Faker::Lorem.word,
18
- ssh_remote?: true,
19
- https_remote?: false,
20
- remote_project: project,
21
- remote_source: 'github.com',
22
- change_remote: true)
23
- end
24
-
25
- subject { GitHelper::ChangeRemote.new(old_owner, new_owner) }
26
-
27
- before do
28
- allow(HighlineWrapper).to receive(:new).and_return(highline_wrapper)
29
- allow(GitHelper::LocalCode).to receive(:new).and_return(local_code)
30
- allow(subject).to receive(:puts)
31
- end
32
-
33
- describe '#execute' do
34
- before do
35
- allow(Dir).to receive(:pwd).and_return("/Users/#{Faker::Name.first_name}/#{project}")
36
- allow(Dir).to receive(:entries).and_return(directory_entries)
37
- allow(File).to receive(:join).and_return("/Users/#{Faker::Name.first_name}/#{project}/#{Faker::Lorem.word}")
38
- allow(File).to receive(:directory?).and_return(true)
39
- allow(subject).to receive(:process_dir)
40
- end
41
-
42
- it 'should call to process at least one directory' do
43
- expect(subject).to receive(:process_dir).at_least(:once)
44
- subject.execute
45
- end
46
-
47
- it 'should definitely look in the file structure' do
48
- expect(Dir).to receive(:pwd)
49
- expect(Dir).to receive(:entries)
50
- expect(File).to receive(:join)
51
- expect(File).to receive(:directory?)
52
- subject.execute
53
- end
54
- end
55
-
56
- describe '#process_dir' do
57
- before do
58
- allow(Dir).to receive(:chdir).and_return(nil)
59
- allow(File).to receive(:exist?).and_return(true)
60
- allow(subject).to receive(:process_git_repository)
61
- end
62
-
63
- it 'should definitely look in the file structure' do
64
- expect(Dir).to receive(:chdir)
65
- expect(File).to receive(:exist?)
66
- subject.send(:process_dir, "/Users/#{Faker::Name.first_name}/#{project}", "/Users/#{Faker::Name.first_name}/#{project}/#{Faker::Lorem.word}")
67
- end
68
-
69
- context 'when the user says to process the directory' do
70
- it 'should call to process the git repository at least once' do
71
- expect(subject).to receive(:process_git_repository).at_least(:once)
72
- subject.send(:process_dir, "/Users/#{Faker::Name.first_name}/#{project}", "/Users/#{Faker::Name.first_name}/#{project}/#{Faker::Lorem.word}")
73
- end
74
- end
75
-
76
- context 'when the user says not to process the directory' do
77
- let(:highline_wrapper) { double(:highline_wrapper, ask_yes_no: false) }
78
-
79
- it 'should not call to process the directory' do
80
- expect(subject).not_to receive(:process_git_repository)
81
- subject.send(:process_dir, "/Users/#{Faker::Name.first_name}/#{project}", "/Users/#{Faker::Name.first_name}/#{project}/#{Faker::Lorem.word}")
82
- end
83
- end
84
- end
85
-
86
- describe '#process_git_repository' do
87
- before do
88
- allow(subject).to receive(:process_remote).and_return(nil)
89
- end
90
-
91
- it 'should call local_code' do
92
- expect(GitHelper::LocalCode).to receive(:new)
93
- subject.send(:process_git_repository)
94
- end
95
-
96
- context 'when the remote includes the old owner' do
97
- it 'should call to process the remote' do
98
- expect(subject).to receive(:process_remote)
99
- subject.send(:process_git_repository)
100
- end
101
- end
102
-
103
- context 'when the remote does not include the old owner' do
104
- let(:remote1) { "git@github.com:#{new_owner}/#{project}.git" }
105
-
106
- it 'should not call to process the remote' do
107
- expect(subject).not_to receive(:process_remote)
108
- subject.send(:process_git_repository)
109
- end
110
- end
111
- end
112
-
113
- describe '#process_remote' do
114
- it 'should always get the remote name' do
115
- expect(local_code).to receive(:remote_name)
116
- subject.send(:process_remote, remote1)
117
- end
118
-
119
- it 'should always attempt to change the remote' do
120
- expect(local_code).to receive(:change_remote)
121
- subject.send(:process_remote, remote1)
122
- end
123
-
124
- it 'should attempt to get the remote repo exactly once' do
125
- expect(local_code).to receive(:remote_project).exactly(:once)
126
- subject.send(:process_remote, remote1)
127
- end
128
-
129
- it 'should attempt to get the remote source exactly once' do
130
- expect(local_code).to receive(:remote_source).exactly(:once)
131
- subject.send(:process_remote, remote1)
132
- end
133
-
134
- it 'should ask if the remote is SSH' do
135
- expect(local_code).to receive(:ssh_remote?)
136
- subject.send(:process_remote, remote1)
137
- end
138
-
139
- context 'https remote' do
140
- let(:local_code) do
141
- double(:local_code,
142
- remotes: [remote1],
143
- remote_name: Faker::Lorem.word,
144
- ssh_remote?: false,
145
- https_remote?: false,
146
- remote_project: project,
147
- remote_source: 'github.com',
148
- change_remote: true)
149
- end
150
-
151
- it 'should ask if the remote is SSH' do
152
- expect(local_code).to receive(:ssh_remote?)
153
- subject.send(:process_remote, remote1)
154
- end
155
-
156
- it 'should ask if the remote is https' do
157
- expect(local_code).to receive(:https_remote?)
158
- subject.send(:process_remote, remote1)
159
- end
160
- end
161
- end
162
-
163
- describe '#local_code' do
164
- it 'should create a new local code instance' do
165
- expect(GitHelper::LocalCode).to receive(:new)
166
- subject.send(:local_code)
167
- end
168
- end
169
-
170
- describe '#highline' do
171
- it 'should create a new highline_wrapper instance' do
172
- expect(HighlineWrapper).to receive(:new)
173
- subject.send(:highline)
174
- end
175
- end
176
- end
@@ -1,21 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
- require 'git_helper'
5
-
6
- describe GitHelper::CheckoutDefault do
7
- let(:local_code) { double(:local_code, checkout_default: :done) }
8
-
9
- subject { GitHelper::CheckoutDefault.new }
10
-
11
- it 'should call GitHelper::LocalCode' do
12
- expect(GitHelper::LocalCode).to receive(:new).and_return(local_code)
13
- subject.execute
14
- end
15
-
16
- it 'should call the checkout_default method from the local code class' do
17
- allow(GitHelper::LocalCode).to receive(:new).and_return(local_code)
18
- expect(local_code).to receive(:checkout_default)
19
- subject.execute
20
- end
21
- end