blob: 8e1f73387a9606914ceac14b0dd36a24d6322284 [file] [log] [blame]
package main
import (
"testing"
"github.com/google/go-cmp/cmp"
"go.fuchsia.dev/infra/cmd/jiri2repo/jiri"
"go.fuchsia.dev/infra/cmd/jiri2repo/repo"
)
func TestSSOCodeReviewURL(t *testing.T) {
tests := []struct {
input string
want string
}{
{
input: "https://host.googlesource.com",
want: "sso://host-review/",
},
{
input: "https://host-with-dash.googlesource.com",
want: "sso://host-with-dash-review/",
},
{
input: "https://host.with.dot.googlesource.com",
want: "sso://host.with.dot-review/",
},
{
input: "sso://host.googlesource.com",
want: "sso://host-review/",
},
}
for _, tt := range tests {
t.Run(tt.input, func(t *testing.T) {
url, err := ssoCodeReviewURL(tt.input)
if err != nil {
t.Errorf("unexpected error: %v", err.Error())
return
}
got := url.String()
if tt.want != got {
t.Errorf("got %q but wanted %q", got, tt.want)
}
})
}
errTests := []string{
"host",
"host.com",
"host.googlesource.com",
}
for _, input := range errTests {
t.Run(input, func(t *testing.T) {
url, err := ssoCodeReviewURL(input)
if err == nil {
t.Errorf("got %s but wanted an error", url.String())
}
})
}
}
func TestConvert(t *testing.T) {
input := jiri.SourceManifest{
Directories: map[string]*jiri.SourceManifest_Directory{
// Ensure convert handles cwd.
".": &jiri.SourceManifest_Directory{
GitCheckout: &jiri.SourceManifest_GitCheckout{
FetchRef: "refs/heads/master",
RepoUrl: "https://fuchsia.googlesource.com/fuchsia",
Revision: "fuchsia_revision",
},
},
"code": &jiri.SourceManifest_Directory{
GitCheckout: &jiri.SourceManifest_GitCheckout{
FetchRef: "refs/heads/dev",
RepoUrl: "https://code.googlesource.com/code",
Revision: "code_revision",
},
},
},
}
defaults := repo.Default{
Branch: "default_branch",
// DefaultRemote should not explicitly appear as any project's remote.
// This should also be recorded as just "fuchsia" in the output <default>
Remote: "fuchsia.googlesource.com",
}
want := repo.Manifest{
Remote: []repo.Remote{
{
Name: "code",
Review: "sso://code-review/",
Fetch: "refs/heads/dev",
},
{
Name: "fuchsia",
Review: "sso://fuchsia-review/",
Fetch: "refs/heads/master",
},
},
Default: repo.Default{
Branch: "default_branch",
Remote: "fuchsia",
},
Project: []repo.Project{
{
Name: "code",
Path: "code",
Remote: "code",
Revision: "code_revision",
},
{
Name: "fuchsia",
Path: "fuchsia",
Revision: "fuchsia_revision",
},
},
}
var got repo.Manifest
if err := convert(input, &got, defaults); err != nil {
t.Fatal(err)
}
// No point in testing the comment
got.Comment = ""
if diff := cmp.Diff(want, got); diff != "" {
t.Errorf("convert() mismatch (-want +got):\n%s", diff)
}
}