Add test for stringifyRepo

Amolith created

Change summary

git/git.go      |  2 
git/git_test.go | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 60 insertions(+), 1 deletion(-)

Detailed changes

git/git.go 🔗

@@ -201,7 +201,7 @@ func stringifyRepo(url string) (path string, err error) {
 	if ep.Protocol == "http" || ep.Protocol == "https" {
 		return "data/" + strings.Split(url, "://")[1], nil
 	} else if ep.Protocol == "ssh" {
-		return "data/" + ep.Host + ep.Path, nil
+		return "data/" + ep.Host + "/" + ep.Path, nil
 	} else {
 		return "", errors.New("unsupported protocol")
 	}

git/git_test.go 🔗

@@ -0,0 +1,59 @@
+package git
+
+import (
+	"testing"
+)
+
+func TestStringifyRepo(t *testing.T) {
+	wantGitHub := "data/github.com/owner/repo"
+	wantSourceHut := "data/git.sr.ht/~owner/repo"
+
+	tests := []struct {
+		name  string
+		input string
+		want  string
+	}{
+		{
+			name:  "GitHubHTTP",
+			input: "http://github.com/owner/repo",
+			want:  wantGitHub,
+		},
+		{
+			name:  "GitHubHTTPS",
+			input: "https://github.com/owner/repo",
+			want:  wantGitHub,
+		},
+		{
+			name:  "GitHubSSH",
+			input: "git@github.com:owner/repo",
+			want:  wantGitHub,
+		},
+		{
+			name:  "SourceHutHTTP",
+			input: "http://git.sr.ht/~owner/repo",
+			want:  wantSourceHut,
+		},
+		{
+			name:  "SourceHutHTTPS",
+			input: "https://git.sr.ht/~owner/repo",
+			want:  wantSourceHut,
+		},
+		{
+			name:  "SourceHutSSH",
+			input: "git@git.sr.ht:~owner/repo",
+			want:  wantSourceHut,
+		},
+	}
+
+	for _, test := range tests {
+		t.Run(test.name, func(t *testing.T) {
+			got, err := stringifyRepo(test.input)
+			if err != nil {
+				t.Errorf("stringifyRepo(%s) returned error: %v", test.input, err)
+			}
+			if got != test.want {
+				t.Errorf("stringifyRepo(%s) = %s, want %s", test.input, got, test.want)
+			}
+		})
+	}
+}