package forge import "testing" func TestParseRemote(t *testing.T) { cases := []struct { in string host, owner, repo string ok bool }{ {"https://git.nilles.net/TBNilles/GitManager.git", "git.nilles.net", "TBNilles", "GitManager", true}, {"https://git.nilles.net/TBNilles/GitManager", "git.nilles.net", "TBNilles", "GitManager", true}, {"git@git.nilles.net:TBNilles/GitManager.git", "git.nilles.net", "TBNilles", "GitManager", true}, {"https://git.nilles.net:3000/org/sub/Repo.git", "git.nilles.net", "sub", "Repo", true}, {"ssh://git@git.nilles.net:2222/TBNilles/GitManager.git", "git.nilles.net", "TBNilles", "GitManager", true}, {"not a url", "", "", "", false}, {"https://git.nilles.net/", "", "", "", false}, } for _, c := range cases { host, owner, repo, ok := ParseRemote(c.in) if ok != c.ok { t.Errorf("ParseRemote(%q) ok = %v, want %v", c.in, ok, c.ok) continue } // Field values only matter on success. if ok && (host != c.host || owner != c.owner || repo != c.repo) { t.Errorf("ParseRemote(%q) = (%q,%q,%q), want (%q,%q,%q)", c.in, host, owner, repo, c.host, c.owner, c.repo) } } }