blob: d78a3a0e23af829b20399164fa1cb3ea4f2c6b81 [file] [log] [blame]
// 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",
},
{
"github.com/hashicorp/foo.git?foo=bar/baz",
"git::https://github.com/hashicorp/foo.git?foo=bar/baz",
},
})
}
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",
},
})
}