singularity_dsl 2.1.1 → 2.2.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 +8 -8
- data/Gemfile.lock +1 -1
- data/lib/singularity_dsl/cli/command/test_merge.rb +24 -0
- data/lib/singularity_dsl/cli.rb +1 -0
- data/lib/singularity_dsl/git_helper.rb +7 -2
- data/lib/singularity_dsl/version.rb +1 -1
- data/spec/singularity_dsl/cli/command/test_merge_spec.rb +52 -10
- data/spec/singularity_dsl/git_helper_spec.rb +20 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
MjMyZGI0MWNkZDRhNWZmODhhYzFmZTljZTVjYWQxNWMwOWZhMGJhMQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
ZjNhNTQ2MjZlNGEyODllYTMxZDE2NjMyYzZjOTU5MGUxZTRlNzk4ZA==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
NmExNWZkNTI1NzVmOGUzZDUyNjQwMTJlMjExNWU5NjNlYTg3MDA2OGMwOTVl
|
10
|
+
MzI5NWRhM2MwNDhhZWFlYTBlNWYwNjYzNDMyY2U0YmUxMjFkOTYzZWNkZDE2
|
11
|
+
MzIwMWU0Nzg5NmMzNmUwNDA1MTg1MjZkOTgzNWUwNWM3NTlhNGM=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NWMxYTJjODc0N2I2MjEwMjVlOTIwMTRhNjM5OGMyYmFhOWVkN2Y1ZThmNmUw
|
14
|
+
OWFhNDhlYTYwOWYxMDUyNWIwYzMyYTg5M2FmYjg3MjI2MTcyMDU2NzIwZmYz
|
15
|
+
OGYxMjdhODRmNzNkYTdhMmQ5YmNkNDM2OGM0MzhlZjVhZjlmM2E=
|
data/Gemfile.lock
CHANGED
@@ -26,6 +26,14 @@ module SingularityDsl
|
|
26
26
|
self
|
27
27
|
end
|
28
28
|
|
29
|
+
def set_fork_env(fork_url, branch)
|
30
|
+
git.add_remote(fork_url)
|
31
|
+
git.checkout_remote(branch, fork_url)
|
32
|
+
setup_git_env(branch)
|
33
|
+
git.remove_remote(fork_url)
|
34
|
+
self
|
35
|
+
end
|
36
|
+
|
29
37
|
def perform_merge(fork_url, branch, base_branch, repo_url = nil)
|
30
38
|
git.merge_refs fork_url, branch, base_branch, repo_url
|
31
39
|
git.install_submodules
|
@@ -46,6 +54,22 @@ module SingularityDsl
|
|
46
54
|
|
47
55
|
private
|
48
56
|
|
57
|
+
def git_env_flags
|
58
|
+
{
|
59
|
+
'GIT_AUTHOR_NAME' => "--pretty=format:'%aN'",
|
60
|
+
'GIT_AUTHOR_EMAIL' => "--pretty=format:'%ae'",
|
61
|
+
'GIT_COMMITTER_NAME' => "--pretty=format:'%cN'",
|
62
|
+
'GIT_COMMITTER_EMAIL' => "--pretty=format:'%ce'",
|
63
|
+
'GIT_ID' => "--pretty=format:'%H'",
|
64
|
+
'GIT_MESSAGE' => "--pretty=format:'%s'"
|
65
|
+
}
|
66
|
+
end
|
67
|
+
|
68
|
+
def setup_git_env(branch)
|
69
|
+
git_env_flags.each { |k, f| ENV[k] = git.log("-1 #{f}") }
|
70
|
+
ENV['GIT_BRANCH'] = branch
|
71
|
+
end
|
72
|
+
|
49
73
|
def inject_diff_list(app)
|
50
74
|
return if diff_list.empty?
|
51
75
|
info 'Running with diff-list'
|
data/lib/singularity_dsl/cli.rb
CHANGED
@@ -76,6 +76,7 @@ EOD
|
|
76
76
|
def testmerge(git_fork, branch, base_branch, base_fork = nil)
|
77
77
|
Command::TestMerge.new(options).tap do |cmd|
|
78
78
|
cmd.bootstrap_cwd(base_fork)
|
79
|
+
.set_fork_env(git_fork, branch)
|
79
80
|
.perform_merge(git_fork, branch, base_branch, base_fork)
|
80
81
|
.execute
|
81
82
|
end
|
@@ -15,6 +15,10 @@ module SingularityDsl
|
|
15
15
|
@verbose = false
|
16
16
|
end
|
17
17
|
|
18
|
+
def log(flags = '')
|
19
|
+
exec("git log #{flags}", true)
|
20
|
+
end
|
21
|
+
|
18
22
|
def cwd_is_git_repo
|
19
23
|
::File.exist? "#{::Dir.pwd}/.git"
|
20
24
|
end
|
@@ -114,14 +118,15 @@ module SingularityDsl
|
|
114
118
|
exec 'git clean -fdx'
|
115
119
|
end
|
116
120
|
|
117
|
-
def exec(cmd)
|
121
|
+
def exec(cmd, output = false)
|
118
122
|
task = Mixlib::ShellOut.new cmd
|
119
123
|
if @verbose
|
120
124
|
info cmd
|
121
125
|
task.live_stream = STDOUT
|
122
126
|
end
|
123
127
|
task.run_command
|
124
|
-
task.
|
128
|
+
return task.stdout if output
|
129
|
+
return task.exitstatus unless output
|
125
130
|
end
|
126
131
|
end
|
127
132
|
end
|
@@ -3,10 +3,25 @@
|
|
3
3
|
require 'singularity_dsl/cli/command/test_merge'
|
4
4
|
|
5
5
|
describe SingularityDsl::Cli::Command::TestMerge do
|
6
|
-
def create_command(params)
|
6
|
+
def create_command(params = {})
|
7
7
|
SingularityDsl::Cli::Command::TestMerge.new params
|
8
8
|
end
|
9
9
|
|
10
|
+
def cmd_double(expected = false)
|
11
|
+
mock = double.as_null_object
|
12
|
+
allow(mock).to receive(:exitstatus).and_return 0
|
13
|
+
allow(mock).to receive(:stdout).and_return expected if expected
|
14
|
+
mock
|
15
|
+
end
|
16
|
+
|
17
|
+
def expect_git_cmd(cmd, expected = false)
|
18
|
+
mock = cmd_double(expected)
|
19
|
+
expect(::Mixlib::ShellOut)
|
20
|
+
.to receive(:new).with(cmd)
|
21
|
+
.once
|
22
|
+
.and_return(mock)
|
23
|
+
end
|
24
|
+
|
10
25
|
describe '#batch' do
|
11
26
|
context ':run_task given' do
|
12
27
|
let(:cmd) { create_command(run_task: 'foo') }
|
@@ -38,15 +53,6 @@ describe SingularityDsl::Cli::Command::TestMerge do
|
|
38
53
|
end
|
39
54
|
|
40
55
|
context ':bootstrap_cwd is true' do
|
41
|
-
def expect_git_cmd(cmd)
|
42
|
-
cmd_double = double.as_null_object
|
43
|
-
allow(cmd_double).to receive(:exitstatus).and_return 0
|
44
|
-
expect(::Mixlib::ShellOut)
|
45
|
-
.to receive(:new).with(cmd)
|
46
|
-
.once
|
47
|
-
.and_return(cmd_double)
|
48
|
-
end
|
49
|
-
|
50
56
|
let(:cmd) { create_command(bootstrap_cwd: true) }
|
51
57
|
|
52
58
|
context 'and the cwd is an empty directory' do
|
@@ -77,4 +83,40 @@ describe SingularityDsl::Cli::Command::TestMerge do
|
|
77
83
|
end
|
78
84
|
end
|
79
85
|
end
|
86
|
+
|
87
|
+
describe '#set_fork_env' do
|
88
|
+
let(:cmd) { create_command }
|
89
|
+
let(:repo) { 'fakedood/fakerepo' }
|
90
|
+
let(:branch) { 'fakedoodbranch' }
|
91
|
+
|
92
|
+
it 'sets ENV vars correctly' do
|
93
|
+
gitid = 'gitid'
|
94
|
+
author = 'fakedood'
|
95
|
+
author_email = 'fakedood@usa.lan'
|
96
|
+
committer = 'fakedoodbro'
|
97
|
+
committer_email = 'fakedoodbro@fakedoodsbutt.lan'
|
98
|
+
message = 'bro I commit some things tight tight tight'
|
99
|
+
|
100
|
+
expect_git_cmd("git remote add fakedood_fakerepo #{repo}")
|
101
|
+
expect_git_cmd('git fetch --all')
|
102
|
+
expect_git_cmd("git checkout fakedood_fakerepo/#{branch}")
|
103
|
+
expect_git_cmd('git remote rm fakedood_fakerepo')
|
104
|
+
expect_git_cmd("git log -1 --pretty=format:'%H'", gitid)
|
105
|
+
expect_git_cmd("git log -1 --pretty=format:'%aN'", author)
|
106
|
+
expect_git_cmd("git log -1 --pretty=format:'%ae'", author_email)
|
107
|
+
expect_git_cmd("git log -1 --pretty=format:'%cN'", committer)
|
108
|
+
expect_git_cmd("git log -1 --pretty=format:'%ce'", committer_email)
|
109
|
+
expect_git_cmd("git log -1 --pretty=format:'%s'", message)
|
110
|
+
|
111
|
+
expect(ENV).to receive(:[]=).with('GIT_ID', gitid)
|
112
|
+
expect(ENV).to receive(:[]=).with('GIT_AUTHOR_NAME', author)
|
113
|
+
expect(ENV).to receive(:[]=).with('GIT_AUTHOR_EMAIL', author_email)
|
114
|
+
expect(ENV).to receive(:[]=).with('GIT_COMMITTER_NAME', committer)
|
115
|
+
expect(ENV).to receive(:[]=).with('GIT_COMMITTER_EMAIL', committer_email)
|
116
|
+
expect(ENV).to receive(:[]=).with('GIT_MESSAGE', message)
|
117
|
+
expect(ENV).to receive(:[]=).with('GIT_BRANCH', branch)
|
118
|
+
|
119
|
+
cmd.set_fork_env(repo, branch)
|
120
|
+
end
|
121
|
+
end
|
80
122
|
end
|
@@ -10,6 +10,26 @@ describe 'GitHelper' do
|
|
10
10
|
end
|
11
11
|
let(:git) { SingularityDsl::GitHelper.new }
|
12
12
|
|
13
|
+
context '#log' do
|
14
|
+
let(:task) { double.as_null_object }
|
15
|
+
|
16
|
+
it 'passes flags directly to the command' do
|
17
|
+
expect(::Mixlib::ShellOut).to receive(:new)
|
18
|
+
.with('git log flags!')
|
19
|
+
.and_return task
|
20
|
+
|
21
|
+
git.log('flags!')
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'returns output of the command' do
|
25
|
+
log = 'this is a gitlog yo!'
|
26
|
+
allow(task).to receive(:stdout).and_return log
|
27
|
+
allow(::Mixlib::ShellOut).to receive(:new).and_return task
|
28
|
+
|
29
|
+
expect(git.log('flags!')).to eql log
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
13
33
|
context '#initialize' do
|
14
34
|
it 'sets verbose off' do
|
15
35
|
expect(git.verbose).to eql false
|