From 7d3f3fb4902b91ffed2f868cd935100c319caee2 Mon Sep 17 00:00:00 2001 From: Aayush Gupta <43479002+Aayyush@users.noreply.github.com> Date: Mon, 24 Jan 2022 12:18:50 -0800 Subject: [PATCH] fix: broken Log Streaming URL when working directory is set to "./" (#2015) * Replacing . with _ when generating project identifier if project name is not set * Adding test for GenerateProjectJobURL when working dir set to . * Replacing . with _ when generating project identifier if project name is not set * Fixing merge conflicts --- server/events/models/models.go | 5 ++++- server/router_test.go | 20 ++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/server/events/models/models.go b/server/events/models/models.go index f59adf255..63ef9b723 100644 --- a/server/events/models/models.go +++ b/server/events/models/models.go @@ -437,7 +437,10 @@ func GetProjectIdentifier(relRepoDir string, projectName string) string { if projectName != "" { return projectName } - return strings.ReplaceAll(relRepoDir, "/", "-") + // Replace directory separator / with - + // Replace . with _ to ensure projects with no project name and root dir set to "." have a valid URL + replacer := strings.NewReplacer("/", "-", ".", "_") + return replacer.Replace(relRepoDir) } // SplitRepoFullName splits a repo full name up into its owner and repo diff --git a/server/router_test.go b/server/router_test.go index 8b551ae7c..5ebe2367f 100644 --- a/server/router_test.go +++ b/server/router_test.go @@ -116,6 +116,26 @@ func TestGenerateProjectJobURL_ShouldGenerateURLWithDirectoryAndWorkspaceWhenPro Equals(t, expectedURL, gotURL) } +func TestGenerateProjectJobURL_ShouldGenerateURLWhenWorkingDirSetToBase(t *testing.T) { + router := setupJobsRouter(t) + ctx := models.ProjectCommandContext{ + Pull: models.PullRequest{ + BaseRepo: models.Repo{ + Owner: "test-owner", + Name: "test-repo", + }, + Num: 1, + }, + RepoRelDir: ".", + Workspace: "default", + } + expectedURL := "http://localhost:4141/jobs/test-owner/test-repo/1/_/default" + gotURL, err := router.GenerateProjectJobURL(ctx) + Ok(t, err) + + Equals(t, expectedURL, gotURL) +} + func TestGenerateProjectJobURL_ShouldGenerateURLWhenNestedRepo(t *testing.T) { router := setupJobsRouter(t) ctx := models.ProjectCommandContext{