vx-common 0.2.1 → 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/lib/vx/common.rb +1 -4
- data/lib/vx/common/git.rb +61 -0
- data/lib/vx/common/version.rb +1 -1
- data/spec/lib/common/git_spec.rb +113 -0
- metadata +5 -6
- data/lib/vx/scm/git.rb +0 -108
- data/lib/vx/scm/git/git_ssh.rb +0 -58
- data/spec/lib/scm/git_spec.rb +0 -169
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1e52cb8a831a12ebb0b4da518a8f38f3b5582512
|
4
|
+
data.tar.gz: 21afcd8458f66eaf687c1fda335983400fcd15df
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7c4e40ceecbb3be8c2b457aa46e9d5423c1f0f6f696d9f12cb37a267184929ee790474e44bab7a0a266c91b1e84f8d4fa3a4d657b7b944ecf6703967b619b13b
|
7
|
+
data.tar.gz: 65a54e01ebce7d38927db4fe18eb60e3a4eeb4b316ecff455a8fb0495dde0461e43671bbf465012ca28d1d6efd574f578ccc5dc053064d51bdf2df4b0da7a74c
|
data/lib/vx/common.rb
CHANGED
@@ -11,10 +11,7 @@ module Vx
|
|
11
11
|
autoload :OutputBuffer, File.expand_path("../common/output_buffer", __FILE__)
|
12
12
|
autoload :EnvFile, File.expand_path("../common/env_file", __FILE__)
|
13
13
|
autoload :ErrorNotifier, File.expand_path("../common/error_notifier", __FILE__)
|
14
|
-
|
15
|
-
|
16
|
-
module SCM
|
17
|
-
autoload :Git, File.expand_path("../scm/git", __FILE__)
|
14
|
+
autoload :Git, File.expand_path("../common/git", __FILE__)
|
18
15
|
end
|
19
16
|
|
20
17
|
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
require 'ostruct'
|
2
|
+
|
3
|
+
module Vx
|
4
|
+
module Common
|
5
|
+
|
6
|
+
class Git
|
7
|
+
|
8
|
+
COMMIT_RE = /^(.*) -:- (.*) \((.*)\) -:- (.*)$/
|
9
|
+
|
10
|
+
attr_reader :src, :sha, :path, :logger, :git_ssh, :branch, :pull_request_id
|
11
|
+
|
12
|
+
def initialize(src, sha, path, options = {}, &block)
|
13
|
+
@src = src
|
14
|
+
@sha = sha
|
15
|
+
@path = path
|
16
|
+
@branch = options[:branch]
|
17
|
+
@pull_request_id = options[:pull_request_id]
|
18
|
+
@logger = block
|
19
|
+
end
|
20
|
+
|
21
|
+
def git_ssh_content(key_location)
|
22
|
+
key = key_location ? "-i #{key_location}" : ""
|
23
|
+
out = "#!/bin/sh\n"
|
24
|
+
out << "/usr/bin/ssh"
|
25
|
+
out << " -A -o LogLevel=quiet"
|
26
|
+
out << " -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null"
|
27
|
+
out << " #{key} $@\n"
|
28
|
+
out
|
29
|
+
end
|
30
|
+
|
31
|
+
def fetch_cmd(options = {})
|
32
|
+
depth = options.key?(:depth) ? options[:depth] : 50
|
33
|
+
clone_branch = " --branch=#{branch}" if branch
|
34
|
+
checkout_cmd = "git checkout -qf #{sha}"
|
35
|
+
fetch_cmd = nil
|
36
|
+
|
37
|
+
if pull_request_id
|
38
|
+
clone_branch = ""
|
39
|
+
fetch_cmd = "git fetch origin +refs/pull/#{pull_request_id}/merge:"
|
40
|
+
checkout_cmd = "git checkout -q FETCH_HEAD"
|
41
|
+
end
|
42
|
+
|
43
|
+
clone_cmd = "git clone --depth=#{depth}#{clone_branch} #{src} #{path}"
|
44
|
+
|
45
|
+
cmd = []
|
46
|
+
cmd << %{ echo "$ #{clone_cmd}" }
|
47
|
+
cmd << clone_cmd
|
48
|
+
if fetch_cmd
|
49
|
+
cmd << %{ echo "$ #{fetch_cmd}" }
|
50
|
+
cmd << %{ ( cd #{path} && #{fetch_cmd} ) }
|
51
|
+
end
|
52
|
+
cmd << %{ echo "$ #{checkout_cmd}" }
|
53
|
+
cmd << %{ ( cd #{path} && #{checkout_cmd} ) }
|
54
|
+
|
55
|
+
cmd.join("\n")
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
61
|
+
end
|
data/lib/vx/common/version.rb
CHANGED
@@ -0,0 +1,113 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'tmpdir'
|
3
|
+
require 'vx/message/testing'
|
4
|
+
require 'vx/common/spawn'
|
5
|
+
|
6
|
+
describe Vx::Common::Git do
|
7
|
+
let(:path) { Dir.tmpdir }
|
8
|
+
let(:message) { Vx::Message::PerformBuild.test_message }
|
9
|
+
let(:src) { message.src }
|
10
|
+
let(:sha) { message.sha }
|
11
|
+
let(:deploy_key) { message.deploy_key }
|
12
|
+
let(:output) { "" }
|
13
|
+
let(:options) { {} }
|
14
|
+
let(:git) {
|
15
|
+
described_class.new src, sha, "#{path}/repo", options, &method(:add_to_output)
|
16
|
+
}
|
17
|
+
|
18
|
+
subject { git }
|
19
|
+
|
20
|
+
before do
|
21
|
+
FileUtils.rm_rf path
|
22
|
+
FileUtils.mkdir_p path
|
23
|
+
File.open("#{path}/ssh.key", 'w', 0600) do |io|
|
24
|
+
io.write deploy_key
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
after { FileUtils.rm_rf path }
|
29
|
+
|
30
|
+
context "just created" do
|
31
|
+
its(:src) { should eq src }
|
32
|
+
its(:sha) { should eq sha }
|
33
|
+
its(:path) { should eq "#{path}/repo" }
|
34
|
+
its(:branch) { should be_nil }
|
35
|
+
end
|
36
|
+
|
37
|
+
context "assign branch" do
|
38
|
+
let(:options) { { branch: 'master' } }
|
39
|
+
its(:branch) { should eq 'master' }
|
40
|
+
end
|
41
|
+
|
42
|
+
context "run fetch_cmd" do
|
43
|
+
include Vx::Common::Spawn
|
44
|
+
|
45
|
+
let(:options) { {
|
46
|
+
branch: "master"
|
47
|
+
} }
|
48
|
+
let(:git_ssh_content) {
|
49
|
+
git.git_ssh_content "$(dirname $0)/ssh.key"
|
50
|
+
}
|
51
|
+
let(:run) {
|
52
|
+
cmd = git.fetch_cmd
|
53
|
+
cmd = "set -e\n#{cmd}"
|
54
|
+
spawn(git_ssh_env, cmd, &method(:add_to_output))
|
55
|
+
}
|
56
|
+
subject { run }
|
57
|
+
|
58
|
+
before do
|
59
|
+
File.open("#{path}/git_ssh", 'w', 0755) do |io|
|
60
|
+
io.write git_ssh_content
|
61
|
+
end
|
62
|
+
run
|
63
|
+
end
|
64
|
+
|
65
|
+
context "success" do
|
66
|
+
it { should be }
|
67
|
+
|
68
|
+
it "should return zero" do
|
69
|
+
expect(run).to eq 0
|
70
|
+
end
|
71
|
+
|
72
|
+
it "should create nessesary directories and checkout sha" do
|
73
|
+
expect(File.directory? "#{path}/repo").to be
|
74
|
+
expect(File.directory? "#{path}/repo/.git/objects").to be
|
75
|
+
Dir.chdir "#{path}/repo" do
|
76
|
+
expect((`git rev-parse HEAD`).strip).to eq sha
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
context "with pull_request" do
|
81
|
+
let(:options) { { pull_request_id: 1 } }
|
82
|
+
it "should return zero" do
|
83
|
+
expect(run).to eq 0
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
context "fail" do
|
89
|
+
context "when repo does not exists" do
|
90
|
+
let(:src) { "/not-exists-repo.git" }
|
91
|
+
it "should return non zero status" do
|
92
|
+
expect(run).to_not eq 0
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
context "when sha does not exists" do
|
97
|
+
let(:sha) { "is-not-exists" }
|
98
|
+
it "should return non zero status" do
|
99
|
+
expect(run).to_not eq 0
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
def git_ssh_env
|
105
|
+
{ 'GIT_SSH' => "#{path}/git_ssh" }
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
def add_to_output(out)
|
110
|
+
puts "==> #{out}"
|
111
|
+
output << out
|
112
|
+
end
|
113
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vx-common
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dmitry Galinsky
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-01-
|
11
|
+
date: 2014-01-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: vx-common-spawn
|
@@ -139,19 +139,18 @@ files:
|
|
139
139
|
- lib/vx/common/amqp_setup.rb
|
140
140
|
- lib/vx/common/env_file.rb
|
141
141
|
- lib/vx/common/error_notifier.rb
|
142
|
+
- lib/vx/common/git.rb
|
142
143
|
- lib/vx/common/helper/middlewares.rb
|
143
144
|
- lib/vx/common/helper/shell.rb
|
144
145
|
- lib/vx/common/helper/upload_sh_command.rb
|
145
146
|
- lib/vx/common/output_buffer.rb
|
146
147
|
- lib/vx/common/tagged_logging.rb
|
147
148
|
- lib/vx/common/version.rb
|
148
|
-
- lib/
|
149
|
-
- lib/vx/scm/git/git_ssh.rb
|
149
|
+
- spec/lib/common/git_spec.rb
|
150
150
|
- spec/lib/common/helper/middlewares_spec.rb
|
151
151
|
- spec/lib/common/helper/shell_spec.rb
|
152
152
|
- spec/lib/common/helper/upload_sh_command_spec.rb
|
153
153
|
- spec/lib/common/output_buffer_spec.rb
|
154
|
-
- spec/lib/scm/git_spec.rb
|
155
154
|
- spec/spec_helper.rb
|
156
155
|
- vx-common.gemspec
|
157
156
|
homepage: ''
|
@@ -179,9 +178,9 @@ signing_key:
|
|
179
178
|
specification_version: 4
|
180
179
|
summary: Common code for ci
|
181
180
|
test_files:
|
181
|
+
- spec/lib/common/git_spec.rb
|
182
182
|
- spec/lib/common/helper/middlewares_spec.rb
|
183
183
|
- spec/lib/common/helper/shell_spec.rb
|
184
184
|
- spec/lib/common/helper/upload_sh_command_spec.rb
|
185
185
|
- spec/lib/common/output_buffer_spec.rb
|
186
|
-
- spec/lib/scm/git_spec.rb
|
187
186
|
- spec/spec_helper.rb
|
data/lib/vx/scm/git.rb
DELETED
@@ -1,108 +0,0 @@
|
|
1
|
-
require 'ostruct'
|
2
|
-
require File.expand_path("../git/git_ssh", __FILE__)
|
3
|
-
|
4
|
-
module Vx
|
5
|
-
module SCM
|
6
|
-
|
7
|
-
class Git
|
8
|
-
|
9
|
-
include Common::Helper::Shell
|
10
|
-
|
11
|
-
COMMIT_RE = /^(.*) -:- (.*) \((.*)\) -:- (.*)$/
|
12
|
-
|
13
|
-
attr_reader :src, :sha, :path, :logger, :git_ssh, :branch, :pull_request_id
|
14
|
-
|
15
|
-
def initialize(src, sha, path, options = {}, &block)
|
16
|
-
@src = src
|
17
|
-
@sha = sha
|
18
|
-
@path = path
|
19
|
-
@branch = options[:branch]
|
20
|
-
@git_ssh = GitSSH.new options[:deploy_key]
|
21
|
-
@pull_request_id = options[:pull_request_id]
|
22
|
-
@logger = block
|
23
|
-
end
|
24
|
-
|
25
|
-
def open
|
26
|
-
git_ssh.open do
|
27
|
-
yield if block_given?
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
def fetch
|
32
|
-
open do
|
33
|
-
run_git make_fetch_command
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
def self.make_export_command(from, to)
|
38
|
-
%{ (cd '#{from}' && git checkout-index -a -f --prefix='#{to}/') }.strip
|
39
|
-
end
|
40
|
-
|
41
|
-
def make_fetch_command(options = {})
|
42
|
-
depth = options.key?(:depth) ? options[:depth] : 50
|
43
|
-
clone_branch = " --branch=#{branch}" if branch
|
44
|
-
checkout_cmd = "git checkout -qf #{sha}"
|
45
|
-
fetch_cmd = nil
|
46
|
-
|
47
|
-
if pull_request_id
|
48
|
-
clone_branch = ""
|
49
|
-
fetch_cmd = "git fetch origin +refs/pull/#{pull_request_id}/merge:"
|
50
|
-
checkout_cmd = "git checkout -q FETCH_HEAD"
|
51
|
-
end
|
52
|
-
|
53
|
-
clone_cmd = "git clone -q --depth=#{depth}#{clone_branch} #{src} #{path}"
|
54
|
-
|
55
|
-
cmd = []
|
56
|
-
cmd << %{ echo "$ #{clone_cmd}" && #{clone_cmd} }
|
57
|
-
cmd << %{ cd #{path} }
|
58
|
-
cmd << %{ echo "$ #{fetch_cmd}" && #{fetch_cmd} } if fetch_cmd
|
59
|
-
cmd << %{ echo "$ #{checkout_cmd}" && #{checkout_cmd} }
|
60
|
-
|
61
|
-
cmd = cmd.join(" && ").gsub("\n", ' ').gsub(/\ +/, ' ').strip
|
62
|
-
cmd
|
63
|
-
end
|
64
|
-
|
65
|
-
def commit_info
|
66
|
-
rs = {}
|
67
|
-
if str = commit_info_string
|
68
|
-
if m = str.match(COMMIT_RE)
|
69
|
-
rs.merge!(
|
70
|
-
sha: m[1],
|
71
|
-
author: m[2],
|
72
|
-
email: m[3],
|
73
|
-
message: m[4]
|
74
|
-
)
|
75
|
-
end
|
76
|
-
end
|
77
|
-
OpenStruct.new rs
|
78
|
-
end
|
79
|
-
|
80
|
-
private
|
81
|
-
|
82
|
-
def commit_info_string
|
83
|
-
output = ""
|
84
|
-
code = spawn commit_info_cmd, chdir: path do |io|
|
85
|
-
output << io
|
86
|
-
end
|
87
|
-
if code == 0
|
88
|
-
output.strip
|
89
|
-
else
|
90
|
-
nil
|
91
|
-
end
|
92
|
-
end
|
93
|
-
|
94
|
-
def commit_info_cmd
|
95
|
-
%{git log -1 --pretty=format:'%H -:- %cn (%ce) -:- %s'}
|
96
|
-
end
|
97
|
-
|
98
|
-
def run_git(cmd, options = {})
|
99
|
-
env = {
|
100
|
-
'GIT_SSH' => git_ssh.location.path
|
101
|
-
}
|
102
|
-
spawn(env, cmd, options, &logger)
|
103
|
-
end
|
104
|
-
|
105
|
-
end
|
106
|
-
|
107
|
-
end
|
108
|
-
end
|
data/lib/vx/scm/git/git_ssh.rb
DELETED
@@ -1,58 +0,0 @@
|
|
1
|
-
module Vx
|
2
|
-
module SCM
|
3
|
-
|
4
|
-
class Git
|
5
|
-
|
6
|
-
class GitSSH
|
7
|
-
|
8
|
-
include Common::Helper::Shell
|
9
|
-
|
10
|
-
attr_reader :deploy_key
|
11
|
-
|
12
|
-
def initialize(deploy_key)
|
13
|
-
@deploy_key = deploy_key
|
14
|
-
end
|
15
|
-
|
16
|
-
def open
|
17
|
-
begin
|
18
|
-
yield create
|
19
|
-
ensure
|
20
|
-
destroy
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
def create
|
25
|
-
key_location
|
26
|
-
location
|
27
|
-
end
|
28
|
-
|
29
|
-
def destroy
|
30
|
-
key_location.unlink if key_location
|
31
|
-
location.unlink
|
32
|
-
@location = nil
|
33
|
-
@key_location = nil
|
34
|
-
end
|
35
|
-
|
36
|
-
def location
|
37
|
-
@location ||= write_tmp_file 'git', self.class.template(key_location && key_location.path), 0700
|
38
|
-
end
|
39
|
-
|
40
|
-
def key_location
|
41
|
-
if deploy_key
|
42
|
-
@key_location ||= write_tmp_file 'key', deploy_key, 0600
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
class << self
|
47
|
-
def template(key_location)
|
48
|
-
key = key_location ? "-i #{key_location}" : ""
|
49
|
-
out = ['#!/bin/sh']
|
50
|
-
out << "exec /usr/bin/ssh -A -o LogLevel=quiet -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null #{key} $@"
|
51
|
-
out.join "\n"
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
data/spec/lib/scm/git_spec.rb
DELETED
@@ -1,169 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'vx/message/testing'
|
3
|
-
|
4
|
-
describe Vx::SCM::Git do
|
5
|
-
let(:path) { '/tmp/.test/repo' }
|
6
|
-
let(:message) { Vx::Message::PerformBuild.test_message }
|
7
|
-
let(:src) { message.src }
|
8
|
-
let(:sha) { message.sha }
|
9
|
-
let(:deploy_key) { message.deploy_key }
|
10
|
-
let(:output) { "" }
|
11
|
-
let(:options) { {} }
|
12
|
-
let(:git) {
|
13
|
-
described_class.new src, sha, path, options, &method(:add_to_output)
|
14
|
-
}
|
15
|
-
|
16
|
-
subject { git }
|
17
|
-
|
18
|
-
before do
|
19
|
-
FileUtils.rm_rf path
|
20
|
-
FileUtils.mkdir_p path
|
21
|
-
end
|
22
|
-
|
23
|
-
after { FileUtils.rm_rf path }
|
24
|
-
|
25
|
-
context "just created" do
|
26
|
-
its(:src) { should eq src }
|
27
|
-
its(:sha) { should eq sha }
|
28
|
-
its(:path) { should eq path }
|
29
|
-
its(:branch) { should be_nil }
|
30
|
-
its("git_ssh.deploy_key") { should be_nil }
|
31
|
-
end
|
32
|
-
|
33
|
-
context "assign branch" do
|
34
|
-
let(:options) { { branch: 'master' } }
|
35
|
-
its(:branch) { should eq 'master' }
|
36
|
-
end
|
37
|
-
|
38
|
-
context "assign deploy_key" do
|
39
|
-
let(:options) { { deploy_key: deploy_key } }
|
40
|
-
its("git_ssh.deploy_key") { should eq deploy_key }
|
41
|
-
end
|
42
|
-
|
43
|
-
context "fetch" do
|
44
|
-
let(:options) { { deploy_key: deploy_key } }
|
45
|
-
subject { git.fetch }
|
46
|
-
|
47
|
-
it { should eq 0 }
|
48
|
-
|
49
|
-
it "should create nessesary directories and checkout sha" do
|
50
|
-
subject
|
51
|
-
expect(File.directory? path).to be
|
52
|
-
expect(File.directory? "#{path}/.git").to be
|
53
|
-
Dir.chdir path do
|
54
|
-
expect((`git rev-parse HEAD`).strip).to eq sha
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
it "should capture output" do
|
59
|
-
subject
|
60
|
-
expect(output).to match(Regexp.escape "$ git clone -q --depth=50 #{src} #{path}")
|
61
|
-
end
|
62
|
-
|
63
|
-
context "with error" do
|
64
|
-
let(:src) { "/not-exists-repo.git" }
|
65
|
-
|
66
|
-
it "should return 128 exitstatus and add error to output" do
|
67
|
-
expect(subject).to eq 128
|
68
|
-
expect(output).to match('does not exist')
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
context "make_fetch_command" do
|
74
|
-
include Vx::Common::Spawn
|
75
|
-
|
76
|
-
let(:options) { { deploy_key: deploy_key, branch: "master" } }
|
77
|
-
let(:run) do
|
78
|
-
git.open do
|
79
|
-
spawn(git_ssh_env, git.make_fetch_command, &method(:add_to_output))
|
80
|
-
end
|
81
|
-
end
|
82
|
-
subject { git.make_fetch_command }
|
83
|
-
|
84
|
-
before do
|
85
|
-
run
|
86
|
-
end
|
87
|
-
|
88
|
-
it { should be }
|
89
|
-
|
90
|
-
it "should be success" do
|
91
|
-
expect(run).to eq 0
|
92
|
-
end
|
93
|
-
|
94
|
-
it "should create nessesary directories and checkout sha" do
|
95
|
-
expect(File.directory? path).to be
|
96
|
-
expect(File.directory? "#{path}/.git").to be
|
97
|
-
Dir.chdir path do
|
98
|
-
expect((`git rev-parse HEAD`).strip).to eq sha
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
|
-
context "with error" do
|
103
|
-
let(:src) { "/not-exists-repo.git" }
|
104
|
-
|
105
|
-
it "should return 128 exitstatus and add error to output" do
|
106
|
-
expect(run).to eq 128
|
107
|
-
end
|
108
|
-
end
|
109
|
-
|
110
|
-
def git_ssh_env
|
111
|
-
{ 'GIT_SSH' => git.git_ssh.location.path }
|
112
|
-
end
|
113
|
-
end
|
114
|
-
|
115
|
-
context ".make_export_command" do
|
116
|
-
let(:options) { { deploy_key: deploy_key } }
|
117
|
-
let(:from) { path }
|
118
|
-
let(:to) { '/tmp/.test/export' }
|
119
|
-
let(:expected) { "(cd '#{ from }' && git checkout-index -a -f --prefix='#{ to}/')" }
|
120
|
-
subject { described_class.make_export_command from, to}
|
121
|
-
it { should eq expected }
|
122
|
-
|
123
|
-
context "run" do
|
124
|
-
before do
|
125
|
-
git.fetch
|
126
|
-
system subject
|
127
|
-
end
|
128
|
-
|
129
|
-
it "should be success" do
|
130
|
-
expect($?.to_i).to eq 0
|
131
|
-
end
|
132
|
-
|
133
|
-
it "should export repo" do
|
134
|
-
expect(File.readable? "#{to}/Gemfile").to be_true
|
135
|
-
end
|
136
|
-
|
137
|
-
context "run with pull_request" do
|
138
|
-
let(:options) { { deploy_key: deploy_key, pull_request_id: 1 } }
|
139
|
-
|
140
|
-
it "should be success" do
|
141
|
-
expect($?.to_i).to eq 0
|
142
|
-
end
|
143
|
-
|
144
|
-
it "should export repo" do
|
145
|
-
expect(File.readable? "#{to}/Gemfile").to be_true
|
146
|
-
end
|
147
|
-
end
|
148
|
-
end
|
149
|
-
|
150
|
-
end
|
151
|
-
|
152
|
-
context "commit_info" do
|
153
|
-
let(:options) { { deploy_key: deploy_key } }
|
154
|
-
subject { git.commit_info }
|
155
|
-
before { git.fetch }
|
156
|
-
|
157
|
-
it "should be" do
|
158
|
-
expect(subject.sha).to eq 'b665f90239563c030f1b280a434b3d84daeda1bd'
|
159
|
-
expect(subject.author).to eq "Dmitry Galinsky"
|
160
|
-
expect(subject.email).to eq 'dima.exe@gmail.com'
|
161
|
-
expect(subject.message).to eq 'first release'
|
162
|
-
end
|
163
|
-
end
|
164
|
-
|
165
|
-
def add_to_output(out)
|
166
|
-
puts "==> #{out}"
|
167
|
-
output << out
|
168
|
-
end
|
169
|
-
end
|