Rename Git::Repository::Location to Git::Location

This commit is contained in:
Lin Jen-Shin 2018-02-13 23:35:45 +08:00
parent 565fdd63cf
commit 59d49f70c3
5 changed files with 41 additions and 44 deletions

View File

@ -169,6 +169,7 @@ module QA
#
module Git
autoload :Repository, 'qa/git/repository'
autoload :Location, 'qa/git/location'
end
##

39
qa/qa/git/location.rb Normal file
View File

@ -0,0 +1,39 @@
require 'uri'
require 'forwardable'
module QA
module Git
class Location
extend Forwardable
attr_reader :git_uri, :uri
def_delegators :@uri, :user, :host, :path
# See: config/initializers/1_settings.rb
# Settings#build_gitlab_shell_ssh_path_prefix
def self.parse(git_uri)
if git_uri.start_with?('ssh://')
new(git_uri, URI.parse(git_uri))
else
*rest, path = git_uri.split(':')
# Host cannot have : so we'll need to escape it
user_host = rest.join('%3A').sub(/\A\[(.+)\]\z/, '\1')
new(git_uri, URI.parse("ssh://#{user_host}/#{path}"))
end
end
def initialize(git_uri, uri)
@git_uri = git_uri
@uri = uri
end
def scheme
uri.scheme || 'ssh'
end
def port
uri.port || 22
end
end
end
end

View File

@ -4,8 +4,6 @@ require 'uri'
module QA
module Git
class Repository
autoload :Location, 'qa/git/repository/location'
include Scenario::Actable
def self.perform(*args)

View File

@ -1,41 +0,0 @@
require 'uri'
require 'forwardable'
module QA
module Git
class Repository
class Location
extend Forwardable
attr_reader :git_uri, :uri
def_delegators :@uri, :user, :host, :path
# See: config/initializers/1_settings.rb
# Settings#build_gitlab_shell_ssh_path_prefix
def self.parse(git_uri)
if git_uri.start_with?('ssh://')
new(git_uri, URI.parse(git_uri))
else
*rest, path = git_uri.split(':')
# Host cannot have : so we'll need to escape it
user_host = rest.join('%3A').sub(/\A\[(.+)\]\z/, '\1')
new(git_uri, URI.parse("ssh://#{user_host}/#{path}"))
end
end
def initialize(git_uri, uri)
@git_uri = git_uri
@uri = uri
end
def scheme
uri.scheme || 'ssh'
end
def port
uri.port || 22
end
end
end
end
end

View File

@ -1,4 +1,4 @@
describe QA::Git::Repository::Location do
describe QA::Git::Location do
describe '.parse' do
context 'when URI starts with ssh://' do
context 'when URI has port' do