summaryrefslogtreecommitdiff
path: root/qa/qa/resource
diff options
context:
space:
mode:
authorRémy Coutable <remy@rymai.me>2019-01-22 08:55:14 +0100
committerRémy Coutable <remy@rymai.me>2019-01-22 08:55:14 +0100
commitdaaf2cafc69e96c031486d31cdb27dda27eb0baf (patch)
treef4792f08c83cede628dfdad52979ff2d2c297c42 /qa/qa/resource
parentce171674b60f5888aa3802e9f6b843762faabd3a (diff)
downloadgitlab-ce-daaf2cafc69e96c031486d31cdb27dda27eb0baf.tar.gz
[QA] Backport Repository::Push and Git::Repository from EE
Signed-off-by: Rémy Coutable <remy@rymai.me>
Diffstat (limited to 'qa/qa/resource')
-rw-r--r--qa/qa/resource/repository/push.rb29
1 files changed, 17 insertions, 12 deletions
diff --git a/qa/qa/resource/repository/push.rb b/qa/qa/resource/repository/push.rb
index f33aa0acef0..32f15547da2 100644
--- a/qa/qa/resource/repository/push.rb
+++ b/qa/qa/resource/repository/push.rb
@@ -8,7 +8,7 @@ module QA
class Push < Base
attr_accessor :file_name, :file_content, :commit_message,
:branch_name, :new_branch, :output, :repository_http_uri,
- :repository_ssh_uri, :ssh_key, :user
+ :repository_ssh_uri, :ssh_key, :user, :use_lfs
attr_writer :remote_branch
@@ -20,6 +20,7 @@ module QA
@new_branch = true
@repository_http_uri = ""
@ssh_key = nil
+ @use_lfs = false
end
def remote_branch
@@ -33,7 +34,9 @@ module QA
end
def files=(files)
- if !files.is_a?(Array) || files.empty?
+ if !files.is_a?(Array) ||
+ files.empty? ||
+ files.any? { |file| !file.has_key?(:name) || !file.has_key?(:content) }
raise ArgumentError, "Please provide an array of hashes e.g.: [{name: 'file1', content: 'foo'}]"
end
@@ -42,6 +45,8 @@ module QA
def fabricate!
Git::Repository.perform do |repository|
+ @output = ''
+
if ssh_key
repository.uri = repository_ssh_uri
repository.use_ssh_key(ssh_key)
@@ -50,6 +55,8 @@ module QA
repository.use_default_credentials unless user
end
+ repository.use_lfs = use_lfs
+
username = 'GitLab QA'
email = 'root@gitlab.com'
@@ -60,29 +67,27 @@ module QA
email = user.email
end
- repository.clone
+ repository.try_add_credentials_to_netrc
+
+ @output += repository.clone
repository.configure_identity(username, email)
- if new_branch
- repository.checkout(branch_name, new_branch: true)
- else
- repository.checkout(branch_name)
- end
+ @output += repository.checkout(branch_name, new_branch: new_branch)
if @directory
@directory.each_child do |f|
- repository.add_file(f.basename, f.read) if f.file?
+ @output += repository.add_file(f.basename, f.read) if f.file?
end
elsif @files
@files.each do |f|
repository.add_file(f[:name], f[:content])
end
else
- repository.add_file(file_name, file_content)
+ @output += repository.add_file(file_name, file_content)
end
- repository.commit(commit_message)
- @output = repository.push_changes("#{branch_name}:#{remote_branch}")
+ @output += repository.commit(commit_message)
+ @output += repository.push_changes("#{branch_name}:#{remote_branch}")
repository.delete_ssh_key
end