Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use the local ssh for check_connection and stop hiding online skips #889

Merged
merged 2 commits into from Sep 1, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
93 changes: 49 additions & 44 deletions test/online/clone_test.rb
@@ -1,66 +1,71 @@
require 'test_helper'

class OnlineCloneTest < Rugged::OnlineTestCase
if git_creds?
def test_clone_over_git
Dir.mktmpdir do |dir|
repo = Rugged::Repository.clone_at(ENV['GITTEST_REMOTE_GIT_URL'], dir)
def test_clone_over_git
skip unless git_creds?
Dir.mktmpdir do |dir|
repo = Rugged::Repository.clone_at(ENV['GITTEST_REMOTE_GIT_URL'], dir)

assert_instance_of Rugged::Repository, repo
end
assert_instance_of Rugged::Repository, repo
end
end

if Rugged.features.include?(:ssh) && ssh_creds?
def test_clone_over_ssh_with_credentials
Dir.mktmpdir do |dir|
repo = Rugged::Repository.clone_at(ENV['GITTEST_REMOTE_SSH_URL'], dir, {
credentials: ssh_key_credential
})
def test_clone_over_ssh_with_credentials
skip unless Rugged.features.include?(:ssh) && ssh_creds?

assert_instance_of Rugged::Repository, repo
end
Dir.mktmpdir do |dir|
repo = Rugged::Repository.clone_at(ENV['GITTEST_REMOTE_SSH_URL'], dir, {
credentials: ssh_key_credential
})

assert_instance_of Rugged::Repository, repo
end
end

def test_clone_over_ssh_with_credentials_from_agent
Dir.mktmpdir do |dir|
repo = Rugged::Repository.clone_at(ENV['GITTEST_REMOTE_SSH_URL'], dir, {
credentials: ssh_key_credential_from_agent
})
def test_clone_over_ssh_with_credentials_from_agent
skip unless Rugged.features.include?(:ssh) && ssh_creds?

assert_instance_of Rugged::Repository, repo
end
Dir.mktmpdir do |dir|
repo = Rugged::Repository.clone_at(ENV['GITTEST_REMOTE_SSH_URL'], dir, {
credentials: ssh_key_credential_from_agent
})

assert_instance_of Rugged::Repository, repo
end
end

def test_clone_over_ssh_with_credentials_callback
Dir.mktmpdir do |dir|
repo = Rugged::Repository.clone_at(ENV['GITTEST_REMOTE_SSH_URL'], dir, {
credentials: lambda { |url, username, allowed_types|
return ssh_key_credential
}
})
def test_clone_over_ssh_with_credentials_callback
skip unless Rugged.features.include?(:ssh) && ssh_creds?

assert_instance_of Rugged::Repository, repo
end
Dir.mktmpdir do |dir|
repo = Rugged::Repository.clone_at(ENV['GITTEST_REMOTE_SSH_URL'], dir, {
credentials: lambda { |url, username, allowed_types|
return ssh_key_credential
}
})

assert_instance_of Rugged::Repository, repo
end
end

def test_clone_callback_args_with_username
Dir.mktmpdir do |dir|
url, username, allowed_types = nil, nil, nil
def test_clone_callback_args_with_username
skip unless Rugged.features.include?(:ssh) && ssh_creds?

assert_raises Rugged::SshError do
Rugged::Repository.clone_at("git@github.com:libgit2/TestGitRepository", dir, {
credentials: lambda { |*args|
url, username, allowed_types = *args
return nil
}
})
end
Dir.mktmpdir do |dir|
url, username, allowed_types = nil, nil, nil

assert_equal "git@github.com:libgit2/TestGitRepository", url
assert_equal "git", username
assert_equal [:ssh_key].sort, allowed_types.sort
assert_raises Rugged::SshError do
Rugged::Repository.clone_at("git@github.com:libgit2/TestGitRepository", dir, {
credentials: lambda { |*args|
url, username, allowed_types = *args
return nil
}
})
end

assert_equal "git@github.com:libgit2/TestGitRepository", url
assert_equal "git", username
assert_equal [:ssh_key].sort, allowed_types.sort
end
end
end
149 changes: 79 additions & 70 deletions test/online/fetch_test.rb
Expand Up @@ -5,100 +5,109 @@ def setup
@repo = FixtureRepo.empty
end

if git_creds?
def test_fetch_over_git
@repo.remotes.create("origin", ENV['GITTEST_REMOTE_GIT_URL'])
def test_fetch_over_git
skip unless git_creds?
@repo.remotes.create("origin", ENV['GITTEST_REMOTE_GIT_URL'])

@repo.fetch("origin")
end
@repo.fetch("origin")
end

if Rugged.features.include?(:https)
def test_fetch_over_https
@repo.remotes.create("origin", "https://github.com/libgit2/TestGitRepository.git")
def test_fetch_over_https
skip unless Rugged.features.include?(:https)

@repo.fetch("origin")
@repo.remotes.create("origin", "https://github.com/libgit2/TestGitRepository.git")

assert_equal [
"refs/remotes/origin/first-merge",
"refs/remotes/origin/master",
"refs/remotes/origin/no-parent",
"refs/tags/annotated_tag",
"refs/tags/blob",
"refs/tags/commit_tree"
], @repo.refs.map(&:name).sort
end
@repo.fetch("origin")

assert_equal [
"refs/remotes/origin/first-merge",
"refs/remotes/origin/master",
"refs/remotes/origin/no-parent",
"refs/tags/annotated_tag",
"refs/tags/blob",
"refs/tags/commit_tree"
], @repo.refs.map(&:name).sort
end

def test_fetch_over_https_with_certificate_callback
@repo.remotes.create("origin", "https://github.com/libgit2/TestGitRepository.git")
def test_fetch_over_https_with_certificate_callback
skip unless Rugged.features.include?(:https)

@repo.remotes.create("origin", "https://github.com/libgit2/TestGitRepository.git")

args = {}
@repo.fetch(
"origin",
certificate_check: lambda { |valid, host|
args[:valid] = valid
args[:host] = host
true
}
)

assert_equal({ valid: true, host: "github.com" }, args)
end

args = {}
def test_fetch_over_https_with_certificate_callback_fail
skip unless Rugged.features.include?(:https)

@repo.remotes.create("origin", "https://github.com/libgit2/TestGitRepository.git")

exception = assert_raises Rugged::HTTPError do
@repo.fetch(
"origin",
certificate_check: lambda { |valid, host|
args[:valid] = valid
args[:host] = host
true
}
certificate_check: lambda { |valid, host| false }
)

assert_equal({ valid: true, host: "github.com" }, args)
end

def test_fetch_over_https_with_certificate_callback_fail
@repo.remotes.create("origin", "https://github.com/libgit2/TestGitRepository.git")
assert_equal "user rejected certificate for github.com", exception.message
end

def test_fetch_over_https_with_certificate_callback_exception
skip unless Rugged.features.include?(:https)

exception = assert_raises Rugged::HTTPError do
@repo.fetch(
"origin",
certificate_check: lambda { |valid, host| false }
)
end
@repo.remotes.create("origin", "https://github.com/libgit2/TestGitRepository.git")

assert_equal "user rejected certificate for github.com", exception.message
exception = assert_raises RuntimeError do
@repo.fetch(
"origin",
certificate_check: lambda { |valid, host|
raise "Exception from callback"
}
)
end

def test_fetch_over_https_with_certificate_callback_exception
@repo.remotes.create("origin", "https://github.com/libgit2/TestGitRepository.git")
assert_equal "Exception from callback", exception.message
end

exception = assert_raises RuntimeError do
@repo.fetch(
"origin",
certificate_check: lambda { |valid, host|
raise "Exception from callback"
}
)
end
def test_fetch_over_ssh_with_credentials
skip unless Rugged.features.include?(:ssh) && ssh_creds?

assert_equal "Exception from callback", exception.message
end
@repo.remotes.create("origin", ENV['GITTEST_REMOTE_SSH_URL'])

@repo.fetch("origin", {
credentials: ssh_key_credential
})
end

if Rugged.features.include?(:ssh) && ssh_creds?
def test_fetch_over_ssh_with_credentials
@repo.remotes.create("origin", ENV['GITTEST_REMOTE_SSH_URL'])
def test_fetch_over_ssh_with_credentials_from_agent
skip unless Rugged.features.include?(:ssh) && ssh_creds?

@repo.fetch("origin", {
credentials: ssh_key_credential
})
end
@repo.remotes.create("origin", ENV['GITTEST_REMOTE_SSH_URL'])

def test_fetch_over_ssh_with_credentials_from_agent
@repo.remotes.create("origin", ENV['GITTEST_REMOTE_SSH_URL'])
@repo.fetch("origin", {
credentials: ssh_key_credential_from_agent
})
end

@repo.fetch("origin", {
credentials: ssh_key_credential_from_agent
})
end
def test_fetch_over_ssh_with_credentials_callback
skip unless Rugged.features.include?(:ssh) && ssh_creds?

def test_fetch_over_ssh_with_credentials_callback
@repo.remotes.create("origin", ENV['GITTEST_REMOTE_SSH_URL'])
@repo.remotes.create("origin", ENV['GITTEST_REMOTE_SSH_URL'])

@repo.fetch("origin",
credentials: lambda { |url, username, allowed_types|
return ssh_key_credential
}
)
end
@repo.fetch("origin",
credentials: lambda { |url, username, allowed_types|
return ssh_key_credential
}
)
end
end
64 changes: 32 additions & 32 deletions test/online/ls_test.rb
Expand Up @@ -5,43 +5,43 @@ def setup
@repo = FixtureRepo.from_libgit2("push_src")
end

if Rugged.features.include?(:https)
def test_ls_over_https
remote = @repo.remotes.create("origin", "https://github.com/libgit2/TestGitRepository.git")

assert_equal [
{ :local? => false, :oid => "49322bb17d3acc9146f98c97d078513228bbf3c0", :loid => nil, :name => "HEAD" },
{ :local? => false, :oid => "0966a434eb1a025db6b71485ab63a3bfbea520b6", :loid => nil, :name => "refs/heads/first-merge" },
{ :local? => false, :oid => "49322bb17d3acc9146f98c97d078513228bbf3c0", :loid => nil, :name => "refs/heads/master" },
{ :local? => false, :oid => "42e4e7c5e507e113ebbb7801b16b52cf867b7ce1", :loid => nil, :name => "refs/heads/no-parent" },
{ :local? => false, :oid => "d96c4e80345534eccee5ac7b07fc7603b56124cb", :loid => nil, :name => "refs/tags/annotated_tag" },
{ :local? => false, :oid => "c070ad8c08840c8116da865b2d65593a6bb9cd2a", :loid => nil, :name => "refs/tags/annotated_tag^{}" },
{ :local? => false, :oid => "55a1a760df4b86a02094a904dfa511deb5655905", :loid => nil, :name => "refs/tags/blob" },
{ :local? => false, :oid => "8f50ba15d49353813cc6e20298002c0d17b0a9ee", :loid => nil, :name => "refs/tags/commit_tree" },
{ :local? => false, :oid => "6e0c7bdb9b4ed93212491ee778ca1c65047cab4e", :loid => nil, :name => "refs/tags/nearly-dangling"}
], remote.ls.to_a
end
def test_ls_over_https
skip unless Rugged.features.include?(:https)

remote = @repo.remotes.create("origin", "https://github.com/libgit2/TestGitRepository.git")

assert_equal [
{ :local? => false, :oid => "49322bb17d3acc9146f98c97d078513228bbf3c0", :loid => nil, :name => "HEAD" },
{ :local? => false, :oid => "0966a434eb1a025db6b71485ab63a3bfbea520b6", :loid => nil, :name => "refs/heads/first-merge" },
{ :local? => false, :oid => "49322bb17d3acc9146f98c97d078513228bbf3c0", :loid => nil, :name => "refs/heads/master" },
{ :local? => false, :oid => "42e4e7c5e507e113ebbb7801b16b52cf867b7ce1", :loid => nil, :name => "refs/heads/no-parent" },
{ :local? => false, :oid => "d96c4e80345534eccee5ac7b07fc7603b56124cb", :loid => nil, :name => "refs/tags/annotated_tag" },
{ :local? => false, :oid => "c070ad8c08840c8116da865b2d65593a6bb9cd2a", :loid => nil, :name => "refs/tags/annotated_tag^{}" },
{ :local? => false, :oid => "55a1a760df4b86a02094a904dfa511deb5655905", :loid => nil, :name => "refs/tags/blob" },
{ :local? => false, :oid => "8f50ba15d49353813cc6e20298002c0d17b0a9ee", :loid => nil, :name => "refs/tags/commit_tree" },
{ :local? => false, :oid => "6e0c7bdb9b4ed93212491ee778ca1c65047cab4e", :loid => nil, :name => "refs/tags/nearly-dangling"}
], remote.ls.to_a
end

if git_creds?
def test_ls_over_git
remote = @repo.remotes.create("origin", ENV['GITTEST_REMOTE_GIT_URL'])
remote.push(["refs/heads/b1:refs/heads/b1"])
def test_ls_over_git
skip unless git_creds?

assert_equal [
{ :local? => false, :oid => "a78705c3b2725f931d3ee05348d83cc26700f247", :loid => nil, :name => "refs/heads/b1" }
], remote.ls.to_a
end
remote = @repo.remotes.create("origin", ENV['GITTEST_REMOTE_GIT_URL'])
remote.push(["refs/heads/b1:refs/heads/b1"])

assert_equal [
{ :local? => false, :oid => "a78705c3b2725f931d3ee05348d83cc26700f247", :loid => nil, :name => "refs/heads/b1" }
], remote.ls.to_a
end

if Rugged.features.include?(:ssh) && ssh_creds?
def test_ls_over_ssh_with_credentials
remote = @repo.remotes.create("origin", ENV['GITTEST_REMOTE_SSH_URL'])
remote.push(["refs/heads/b1:refs/heads/b1"], credentials: ssh_key_credential)
def test_ls_over_ssh_with_credentials
skip unless Rugged.features.include?(:ssh) && ssh_creds?

remote = @repo.remotes.create("origin", ENV['GITTEST_REMOTE_SSH_URL'])
remote.push(["refs/heads/b1:refs/heads/b1"], credentials: ssh_key_credential)

assert_equal [
{ :local? => false, :oid => "a78705c3b2725f931d3ee05348d83cc26700f247", :loid => nil, :name => "refs/heads/b1" }
], remote.ls(credentials: ssh_key_credential).to_a
end
assert_equal [
{ :local? => false, :oid => "a78705c3b2725f931d3ee05348d83cc26700f247", :loid => nil, :name => "refs/heads/b1" }
], remote.ls(credentials: ssh_key_credential).to_a
end
end