mirror of
https://github.com/inspec/inspec
synced 2025-02-22 00:48:41 +00:00
Issue fix related to bitbucket default branch fetching in url fetcher
Signed-off-by: Nikita Mathur <nikita.mathur@chef.io>
This commit is contained in:
parent
44cd84312f
commit
ca1991451f
2 changed files with 21 additions and 4 deletions
|
@ -74,15 +74,17 @@ module Inspec::Fetcher
|
|||
BITBUCKET_URL_REGEX = %r{^https?://(www\.)?bitbucket\.org/(?<user>[\w-]+)/(?<repo>[\w-]+)(\.git)?(/)?$}.freeze
|
||||
BITBUCKET_URL_BRANCH_REGEX = %r{^https?://(www\.)?bitbucket\.org/(?<user>[\w-]+)/(?<repo>[\w-]+)/branch/(?<branch>[\w\.]+)(/)?$}.freeze
|
||||
BITBUCKET_URL_COMMIT_REGEX = %r{^https?://(www\.)?bitbucket\.org/(?<user>[\w-]+)/(?<repo>[\w-]+)/commits/(?<commit>[\w\.]+)(/)?$}.freeze
|
||||
GITHUB_URL = "https://github.com".freeze
|
||||
BITBUCKET_URL = "https://bitbucket.org".freeze
|
||||
|
||||
def self.transform(target)
|
||||
transformed_target = if m = GITHUB_URL_REGEX.match(target) # rubocop:disable Lint/AssignmentInCondition
|
||||
default_branch = default_ref(m)
|
||||
default_branch = default_ref(m, GITHUB_URL)
|
||||
"https://github.com/#{m[:user]}/#{m[:repo]}/archive/#{default_branch}.tar.gz"
|
||||
elsif m = GITHUB_URL_WITH_TREE_REGEX.match(target) # rubocop:disable Lint/AssignmentInCondition
|
||||
"https://github.com/#{m[:user]}/#{m[:repo]}/archive/#{m[:commit]}.tar.gz"
|
||||
elsif m = BITBUCKET_URL_REGEX.match(target) # rubocop:disable Lint/AssignmentInCondition
|
||||
default_branch = default_ref(m)
|
||||
default_branch = default_ref(m, BITBUCKET_URL)
|
||||
"https://bitbucket.org/#{m[:user]}/#{m[:repo]}/get/#{default_branch}.tar.gz"
|
||||
elsif m = BITBUCKET_URL_BRANCH_REGEX.match(target) # rubocop:disable Lint/AssignmentInCondition
|
||||
"https://bitbucket.org/#{m[:user]}/#{m[:repo]}/get/#{m[:branch]}.tar.gz"
|
||||
|
@ -129,8 +131,8 @@ module Inspec::Fetcher
|
|||
private
|
||||
|
||||
class << self
|
||||
def default_ref(match_data)
|
||||
remote_url = "https://github.com/#{match_data[:user]}/#{match_data[:repo]}.git"
|
||||
def default_ref(match_data, repo_url)
|
||||
remote_url = "#{repo_url}/#{match_data[:user]}/#{match_data[:repo]}.git"
|
||||
command_string = "git remote show #{remote_url}"
|
||||
cmd = shellout(command_string)
|
||||
unless cmd.exitstatus == 0
|
||||
|
|
|
@ -18,6 +18,20 @@ describe Inspec::Fetcher::Url do
|
|||
m
|
||||
end
|
||||
|
||||
let(:git_remote_head_main) do
|
||||
out = mock
|
||||
out.stubs(:stdout).returns("HEAD branch: main\n")
|
||||
out.stubs(:exitstatus).returns(0)
|
||||
out.stubs(:stderr).returns("")
|
||||
out.stubs(:error!).returns(false)
|
||||
out.stubs(:run_command).returns(true)
|
||||
out
|
||||
end
|
||||
|
||||
def expect_git_remote_head_main(remote_url)
|
||||
Mixlib::ShellOut.expects(:new).returns(git_remote_head_main)
|
||||
end
|
||||
|
||||
def expect_url_transform
|
||||
@mock_logger = Minitest::Mock.new
|
||||
@mock_logger.expect(:warn, nil, [/URL target.*transformed/])
|
||||
|
@ -116,6 +130,7 @@ describe Inspec::Fetcher::Url do
|
|||
http://www.bitbucket.org/chef/inspec.git}.each do |bitbucket|
|
||||
it "resolves a bitbucket url #{bitbucket}" do
|
||||
expect_url_transform do
|
||||
expect_git_remote_head_main(bitbucket)
|
||||
res = Inspec::Fetcher::Url.resolve(bitbucket)
|
||||
res.expects(:open).returns(mock_open)
|
||||
_(res).wont_be_nil
|
||||
|
|
Loading…
Add table
Reference in a new issue