Skip to content

Commit a76bb39

Browse files
authored
Merge pull request #1165 from wakatime/bugfix/random-projects
Prevent random project name when nowhere to save wakatime-project file
2 parents 79c24be + 38cdedc commit a76bb39

File tree

3 files changed

+33
-1
lines changed

3 files changed

+33
-1
lines changed

pkg/language/language.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,10 @@ func detectSpecialCases(ctx context.Context, fp string) (heartbeat.Language, boo
133133

134134
// folderContainsCFiles returns true, if filder contains c files.
135135
func folderContainsCFiles(ctx context.Context, dir string) bool {
136+
if dir == "" {
137+
return false
138+
}
139+
136140
logger := log.Extract(ctx)
137141

138142
extensions, err := loadFolderExtensions(dir)
@@ -152,6 +156,10 @@ func folderContainsCFiles(ctx context.Context, dir string) bool {
152156

153157
// folderContainsCFiles returns true, if filder contains c++ files.
154158
func folderContainsCPPFiles(ctx context.Context, dir string) bool {
159+
if dir == "" {
160+
return false
161+
}
162+
155163
logger := log.Extract(ctx)
156164

157165
extensions, err := loadFolderExtensions(dir)

pkg/project/project.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -322,6 +322,11 @@ func DetectWithRevControl(
322322
}
323323

324324
func obfuscateProjectName(ctx context.Context, folder string) string {
325+
// when folder unknown, use Unknown Project (https://github.com/wakatime/wakatime-cli/issues/1164)
326+
if folder == "" {
327+
return ""
328+
}
329+
325330
// prevent overwriting existing project files, use Unknown Project instead
326331
if fileOrDirExists(filepath.Join(folder, WakaTimeProjectFile)) {
327332
return ""

pkg/project/project_test.go

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"context"
55
"os"
66
"path/filepath"
7+
"regexp"
78
"runtime"
89
"strings"
910
"testing"
@@ -25,6 +26,7 @@ func TestWithDetection_EntityNotFile(t *testing.T) {
2526
Heartbeats []heartbeat.Heartbeat
2627
Override string
2728
Alternative string
29+
Config project.Config
2830
Expected heartbeat.Heartbeat
2931
}{
3032
"entity not file override takes precedence": {
@@ -69,11 +71,28 @@ func TestWithDetection_EntityNotFile(t *testing.T) {
6971
Project: heartbeat.PointerTo(""),
7072
},
7173
},
74+
"entity not file with project obfuscation": {
75+
Heartbeats: []heartbeat.Heartbeat{
76+
{
77+
Entity: "github.com",
78+
EntityType: heartbeat.AppType,
79+
ProjectOverride: "billing",
80+
},
81+
},
82+
Config: project.Config{HideProjectNames: []regex.Regex{regex.NewRegexpWrap(regexp.MustCompile(".*"))}},
83+
Expected: heartbeat.Heartbeat{
84+
Branch: heartbeat.PointerTo(""),
85+
Entity: "github.com",
86+
EntityType: heartbeat.AppType,
87+
Project: heartbeat.PointerTo(""),
88+
ProjectOverride: "billing",
89+
},
90+
},
7291
}
7392

7493
for name, test := range tests {
7594
t.Run(name, func(t *testing.T) {
76-
opt := project.WithDetection(project.Config{})
95+
opt := project.WithDetection(test.Config)
7796

7897
handle := opt(func(_ context.Context, hh []heartbeat.Heartbeat) ([]heartbeat.Result, error) {
7998
assert.Equal(t, []heartbeat.Heartbeat{

0 commit comments

Comments
 (0)