// Copyright (c) HashiCorp, Inc. // SPDX-License-Identifier: BUSL-1.1 package moduleaddrs import ( "testing" ) func TestDetectGit(t *testing.T) { tableTestDetectorFuncs(t, []struct { Input string Output string }{ { "git@github.com:hashicorp/foo.git", "git::ssh://git@github.com/hashicorp/foo.git", }, { "git@github.com:org/project.git?ref=test-branch", "git::ssh://git@github.com/org/project.git?ref=test-branch", }, { "git@github.com:hashicorp/foo.git//bar", "git::ssh://git@github.com/hashicorp/foo.git//bar", }, { "git@github.com:hashicorp/foo.git?foo=bar", "git::ssh://git@github.com/hashicorp/foo.git?foo=bar", }, { "git@github.xyz.com:org/project.git", "git::ssh://git@github.xyz.com/org/project.git", }, { "git@github.xyz.com:org/project.git?ref=test-branch", "git::ssh://git@github.xyz.com/org/project.git?ref=test-branch", }, { "git@github.xyz.com:org/project.git//module/a", "git::ssh://git@github.xyz.com/org/project.git//module/a", }, { "git@github.xyz.com:org/project.git//module/a?ref=test-branch", "git::ssh://git@github.xyz.com/org/project.git//module/a?ref=test-branch", }, { // Already in the canonical form, so no rewriting required // When the ssh: protocol is used explicitly, we recognize it as // URL form rather than SCP-like form, so the part after the colon // is a port number, not part of the path. "git::ssh://git@git.example.com:2222/hashicorp/foo.git", "git::ssh://git@git.example.com:2222/hashicorp/foo.git", }, }) } func TestDetectGitHub(t *testing.T) { tableTestDetectorFuncs(t, []struct { Input string Output string }{ {"github.com/hashicorp/foo", "git::https://github.com/hashicorp/foo.git"}, {"github.com/hashicorp/foo.git", "git::https://github.com/hashicorp/foo.git"}, { "github.com/hashicorp/foo/bar", "git::https://github.com/hashicorp/foo.git//bar", }, { "github.com/hashicorp/foo?foo=bar", "git::https://github.com/hashicorp/foo.git?foo=bar", }, { "github.com/hashicorp/foo.git?foo=bar", "git::https://github.com/hashicorp/foo.git?foo=bar", }, }) } func TestDetectBitBucket(t *testing.T) { tableTestDetectorFuncs(t, []struct { Input string Output string }{ // HTTP { "bitbucket.org/hashicorp/tf-test-git", "git::https://bitbucket.org/hashicorp/tf-test-git.git", }, { "bitbucket.org/hashicorp/tf-test-git.git", "git::https://bitbucket.org/hashicorp/tf-test-git.git", }, }) }