loca 0.0.1 → 0.1.0

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.
@@ -1,47 +0,0 @@
1
- describe Loca::URL do
2
- let(:pid) { 1 } # Pull request ID
3
- let(:url) { "https://github.com/smoll/loca/pull/#{pid}" }
4
- subject { described_class.new(url) }
5
-
6
- let(:expected_branch_name) { "PULL_#{pid}" }
7
- let(:expected_pr_num) { pid.to_s }
8
-
9
- describe '#initialize' do
10
- it 'does not raise an error for a valid URL' do
11
- expect { Loca::URL.new(url) }.to_not raise_error
12
- end
13
- # it 'does not raise an error for a GitHub PR URL with additional segments' do
14
- # expect { Loca::URL.new("#{url}/something/something") }.to_not raise_error # TODO: technical improvement
15
- # end
16
- it 'raises an error for a non-URL' do
17
- expect { silence(:stderr) { Loca::URL.new('not a URL') } }.to raise_error
18
- end
19
- it 'raises an error for a non-GitHub URL' do
20
- expect { silence(:stderr) { Loca::URL.new('http://bad-url-here.com') } }.to raise_error
21
- end
22
- it 'raises an error for a GitHub non-PR URL' do
23
- expect { silence(:stderr) { Loca::URL.new('https://github.com/smoll/loca/something/something') } }.to raise_error
24
- end
25
- it 'raises an error for a GitHub URL without an integer in the PID location' do
26
- expect { silence(:stderr) { Loca::URL.new('https://github.com/smoll/loca/pull/NaN') } }.to raise_error
27
- end
28
- end
29
-
30
- describe '#to_s' do
31
- it 'returns the url passed to the constructor' do
32
- expect(subject.to_s).to eq url
33
- end
34
- end
35
-
36
- describe '#extract_branch_name' do # private method
37
- it 'returns the expected branch name' do
38
- expect(subject.send(:extract_branch_name)).to eq expected_branch_name
39
- end
40
- end
41
-
42
- describe '#extract_pr_num' do # private method
43
- it 'returns the expected branch name' do
44
- expect(subject.send(:extract_pr_num)).to eq "#{pid}"
45
- end
46
- end
47
- end
@@ -1,55 +0,0 @@
1
- require 'mixlib/shellout'
2
- require 'fileutils'
3
-
4
- module Features
5
- module GitHubHelper
6
- def teardown
7
- return_to_original_wd
8
- FileUtils.rm_rf absolute_path
9
- end
10
-
11
- def cd_to_cloned_dir
12
- @original_wd = Dir.pwd
13
- Dir.chdir(absolute_path)
14
- end
15
-
16
- def return_to_original_wd
17
- Dir.chdir(@original_wd)
18
- end
19
-
20
- def clone_test_repo
21
- shellout! "git clone https://github.com/smoll/Spoon-Knife ./#{rel_path}"
22
- end
23
-
24
- def set_upstream
25
- shellout! 'git remote add upstream https://github.com/octocat/Spoon-Knife.git'
26
- end
27
-
28
- def current_branch
29
- shellout! 'git rev-parse --abbrev-ref HEAD'
30
- end
31
-
32
- def shellout!(cmd, opts = {})
33
- opts = {
34
- input: nil
35
- }.merge(opts)
36
- sh = opts[:input].nil? ? Mixlib::ShellOut.new(cmd.to_s) : Mixlib::ShellOut.new(cmd.to_s, input: opts[:input].to_s)
37
- sh.run_command
38
-
39
- sh.error! if opts[:input].nil? # NOTE: CLI exits non-zero if waiting on user input
40
- sh.stdout
41
- end
42
-
43
- private
44
-
45
- def rel_path
46
- absolute_path.split(Dir.pwd.to_s)[1].sub('/', '')
47
- end
48
-
49
- def absolute_path
50
- path = File.expand_path('../../../tmp/cloned', __FILE__)
51
- FileUtils.mkdir_p path
52
- path
53
- end
54
- end
55
- end