fuci 0.2.0 → 0.3.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/lib/fuci/git.rb +47 -7
- data/lib/fuci/version.rb +1 -1
- data/spec/lib/fuci/git_spec.rb +99 -11
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b5ba244bcdcab4ce2878400e677ac26b989f7900
|
4
|
+
data.tar.gz: 1b12e99347df18f93d5cee35a8440e17c59d4586
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bf6727e01bf54307aea86683af8faaf1ad9ca6d454f441c859777c56e18839e7659dd627d68ec9ce52ccce84ae40dc43a59964f52840bfeb9ba056d9c7ed3a76
|
7
|
+
data.tar.gz: e3e318715eca38d250c7c98d4f86efb5b459cf730ec03bf4dc282965d18f5dad8d9c4b4c54eef3f4b6f855b2489012f220a068266160ebf475d25bfcd0f6668b
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
### version 0.3.0 *August 5, 2013*
|
2
|
+
* Adds three methods to Git helper:
|
3
|
+
1. `#remote_sha_from(branch_name)`
|
4
|
+
2. `#pull_merge_sha_from(branch_name)`
|
5
|
+
3. `#pull_number_from(branch_name`
|
6
|
+
|
1
7
|
### version 0.2.0 *July 31, 2013*
|
2
8
|
* Offers command-line option (`--last`, `-l`) which runs failed tests
|
3
9
|
from last call to `fuci`
|
data/lib/fuci/git.rb
CHANGED
@@ -1,9 +1,15 @@
|
|
1
1
|
module Fuci
|
2
2
|
module Git
|
3
|
-
|
4
|
-
|
5
|
-
REMOTE_REPO_COMMAND
|
3
|
+
MASTER = 'master'
|
4
|
+
CURRENT_BRANCH_COMMAND = "git branch | sed -n '/\* /s///p'"
|
5
|
+
REMOTE_REPO_COMMAND =
|
6
6
|
"git remote -v | grep origin | grep push | awk 'match($0, /:\(.*)\.git/) { print substr($0, RSTART+1, RLENGTH-5) }'"
|
7
|
+
REMOTE_SHA_FROM_BRANCH_COMMAND =
|
8
|
+
lambda { |branch_name| "git rev-parse origin/#{branch_name}" }
|
9
|
+
PULL_MERGE_SHA_FROM_NUMBER_COMMAND =
|
10
|
+
lambda { |pull_number| "git ls-remote origin | grep refs\\/pull\\/#{pull_number}\\/merge | awk '{ print $1 };'" }
|
11
|
+
PULL_NUMBER_FROM_SHA_COMMAND =
|
12
|
+
lambda { |sha| "git ls-remote origin | grep #{sha} | grep pull | perl -n -e '/pull\\/(.*)\\/head/ && print $1'" }
|
7
13
|
|
8
14
|
def current_branch_name
|
9
15
|
with_popen current_branch_command
|
@@ -14,14 +20,37 @@ module Fuci
|
|
14
20
|
end
|
15
21
|
|
16
22
|
def remote_master_sha
|
17
|
-
with_popen
|
23
|
+
with_popen remote_sha_from_branch_command(MASTER)
|
24
|
+
end
|
25
|
+
|
26
|
+
def remote_sha_from branch_name
|
27
|
+
with_popen remote_sha_from_branch_command(branch_name)
|
28
|
+
end
|
29
|
+
|
30
|
+
def pull_merge_sha_from branch_name
|
31
|
+
pull_number = pull_number_from branch_name
|
32
|
+
with_popen pull_merge_sha_command(pull_number)
|
33
|
+
end
|
34
|
+
|
35
|
+
def pull_number_from branch_name
|
36
|
+
remote_sha = remote_sha_from branch_name
|
37
|
+
|
38
|
+
begin
|
39
|
+
with_popen pull_number_from_sha_command(remote_sha)
|
40
|
+
rescue NoResponseError
|
41
|
+
raise NoPullError
|
42
|
+
end
|
18
43
|
end
|
19
44
|
|
20
45
|
private
|
21
46
|
|
22
47
|
def with_popen command
|
23
48
|
IO.popen command do |io|
|
24
|
-
io.first
|
49
|
+
if first_line = io.first
|
50
|
+
first_line.chomp
|
51
|
+
else
|
52
|
+
raise NoResponseError
|
53
|
+
end
|
25
54
|
end
|
26
55
|
end
|
27
56
|
|
@@ -33,8 +62,19 @@ module Fuci
|
|
33
62
|
REMOTE_REPO_COMMAND
|
34
63
|
end
|
35
64
|
|
36
|
-
def
|
37
|
-
|
65
|
+
def remote_sha_from_branch_command branch_name
|
66
|
+
REMOTE_SHA_FROM_BRANCH_COMMAND.(branch_name)
|
67
|
+
end
|
68
|
+
|
69
|
+
def pull_merge_sha_command pull_number
|
70
|
+
PULL_MERGE_SHA_FROM_NUMBER_COMMAND.(pull_number)
|
38
71
|
end
|
72
|
+
|
73
|
+
def pull_number_from_sha_command sha
|
74
|
+
PULL_NUMBER_FROM_SHA_COMMAND.(sha)
|
75
|
+
end
|
76
|
+
|
77
|
+
class NoResponseError < StandardError; end;
|
78
|
+
class NoPullError < StandardError; end;
|
39
79
|
end
|
40
80
|
end
|
data/lib/fuci/version.rb
CHANGED
data/spec/lib/fuci/git_spec.rb
CHANGED
@@ -30,20 +30,91 @@ describe Fuci::Git do
|
|
30
30
|
|
31
31
|
describe '#remote_master_sha' do
|
32
32
|
it 'returns the remote master sha' do
|
33
|
-
@test_class.stubs(:
|
34
|
-
|
35
|
-
|
33
|
+
@test_class.stubs(:remote_sha_from_branch_command).
|
34
|
+
with('master').
|
35
|
+
returns command = mock
|
36
|
+
@test_class.expects(:with_popen).with command
|
36
37
|
|
37
38
|
@test_class.remote_master_sha
|
38
39
|
end
|
39
40
|
end
|
40
41
|
|
42
|
+
describe '#remote_sha_from' do
|
43
|
+
it 'returns the remote sha from the branch name passed in' do
|
44
|
+
@test_class.stubs(:remote_sha_from_branch_command).
|
45
|
+
with(branch_name = 'branch_name').
|
46
|
+
returns command = mock
|
47
|
+
@test_class.expects(:with_popen).with command
|
48
|
+
|
49
|
+
@test_class.remote_sha_from branch_name
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
describe '#pull_merge_sha_from' do
|
54
|
+
it 'gets the merge sha from the pull number' do
|
55
|
+
@test_class.stubs(:pull_number_from).
|
56
|
+
with(branch_name = 'branch_name').
|
57
|
+
returns pull_number = 1
|
58
|
+
@test_class.stubs(:pull_merge_sha_command).
|
59
|
+
with(pull_number).
|
60
|
+
returns command = mock
|
61
|
+
@test_class.stubs(:with_popen).
|
62
|
+
with(command).
|
63
|
+
returns sha = 'didizxndfjii223994w'
|
64
|
+
|
65
|
+
expect(@test_class.pull_merge_sha_from(branch_name)).to_equal sha
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
describe '#pull_number_from' do
|
70
|
+
before do
|
71
|
+
@branch_name = 'branch_name'
|
72
|
+
command = mock
|
73
|
+
remote_sha = '12k3asdifi23ia92'
|
74
|
+
@test_class.stubs(:remote_sha_from).
|
75
|
+
with(@branch_name).
|
76
|
+
returns remote_sha
|
77
|
+
@test_class.stubs(:pull_number_from_sha_command).
|
78
|
+
with(remote_sha).
|
79
|
+
returns command
|
80
|
+
@with_popen = @test_class.stubs(:with_popen).with command
|
81
|
+
end
|
82
|
+
|
83
|
+
describe 'when there is a pull number' do
|
84
|
+
before { @with_popen.returns @pull_number = '1' }
|
85
|
+
|
86
|
+
it 'returns the pull number with the remote sha' do
|
87
|
+
expect(@test_class.pull_number_from(@branch_name)).
|
88
|
+
to_equal @pull_number
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
describe 'when there is no pull number' do
|
93
|
+
before { @with_popen.raises Fuci::Git::NoResponseError }
|
94
|
+
|
95
|
+
it 'raises a NoPullError' do
|
96
|
+
expect { @test_class.pull_number_from(@branch_name) }.
|
97
|
+
to_raise Fuci::Git::NoPullError
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
41
102
|
describe '#with_popen' do
|
42
|
-
|
43
|
-
|
44
|
-
|
103
|
+
describe 'when there is a string response' do
|
104
|
+
it 'runs the command with popen' do
|
105
|
+
current_branch = 'current_branch'
|
106
|
+
result = @test_class.send :with_popen, "echo #{current_branch}"
|
107
|
+
|
108
|
+
expect(result).to_equal current_branch
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
describe 'when the response is nil' do
|
113
|
+
it 'raises a no response error' do
|
114
|
+
IO.stubs(:popen).with(command = '').yields []
|
45
115
|
|
46
|
-
|
116
|
+
expect { @test_class.send :with_popen, command }.to_raise Fuci::Git::NoResponseError
|
117
|
+
end
|
47
118
|
end
|
48
119
|
end
|
49
120
|
|
@@ -61,10 +132,27 @@ describe Fuci::Git do
|
|
61
132
|
end
|
62
133
|
end
|
63
134
|
|
64
|
-
describe '#
|
65
|
-
it 'returns the git/unix command to return the remote
|
66
|
-
|
67
|
-
|
135
|
+
describe '#remote_sha_from_branch_command' do
|
136
|
+
it 'returns the git/unix command to return the remote sha from the branch' do
|
137
|
+
branch_name = 'branch_name'
|
138
|
+
command = @test_class.send :remote_sha_from_branch_command, branch_name
|
139
|
+
expect(command).to_equal "git rev-parse origin/#{branch_name}"
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
143
|
+
describe '#pull_merge_sha_command' do
|
144
|
+
it 'is the pull merge sha command with the pull number' do
|
145
|
+
pull_number = 1
|
146
|
+
command = @test_class.send :pull_merge_sha_command, pull_number
|
147
|
+
expect(command).to_equal "git ls-remote origin | grep refs\\/pull\\/#{pull_number}\\/merge | awk '{ print $1 };'"
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
151
|
+
describe '#pull_number_from_sha_command' do
|
152
|
+
it 'gets the pull number with the sha' do
|
153
|
+
sha = '234asdf'
|
154
|
+
command = @test_class.send :pull_number_from_sha_command, sha
|
155
|
+
expect(command).to_equal "git ls-remote origin | grep #{sha} | grep pull | perl -n -e '/pull\\/(.*)\\/head/ && print $1'"
|
68
156
|
end
|
69
157
|
end
|
70
158
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fuci
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dave Jachimiak
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-08-
|
11
|
+
date: 2013-08-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: minitest-spec-expect
|