From 37982ee1fd8d18a4c5ac878fc9c31ef93db5d8e2 Mon Sep 17 00:00:00 2001 From: Josh Friend Date: Tue, 14 Apr 2026 16:36:31 -0400 Subject: [PATCH] Relax project-dir validation to not require .gradle/ --- gradlecache/gradlecache_test.go | 30 +++++++++++------------------- gradlecache/save.go | 7 +++---- 2 files changed, 14 insertions(+), 23 deletions(-) diff --git a/gradlecache/gradlecache_test.go b/gradlecache/gradlecache_test.go index 93a1b1e..ca3457c 100644 --- a/gradlecache/gradlecache_test.go +++ b/gradlecache/gradlecache_test.go @@ -862,25 +862,24 @@ func TestSaveDeltaDefaultsProjectDirToWorkingDirectory(t *testing.T) { } } -func TestSaveDeltaErrorsWhenProjectDirHasNoDotGradle(t *testing.T) { +func TestSaveDeltaErrorsWhenProjectDirDoesNotExist(t *testing.T) { ctx := context.Background() gradleHome := t.TempDir() must(t, os.MkdirAll(filepath.Join(gradleHome, "caches"), 0o755)) must(t, touchMarkerFile(filepath.Join(gradleHome, ".cache-restore-marker"))) - projectDir := t.TempDir() err := SaveDelta(ctx, SaveDeltaConfig{ CachewURL: "http://example.invalid", CacheKey: "test-cache", Branch: "feature/test", GradleUserHome: gradleHome, - ProjectDir: projectDir, + ProjectDir: filepath.Join(t.TempDir(), "does-not-exist"), }) if err == nil { - t.Fatal("expected SaveDelta to fail when project dir has no .gradle directory") + t.Fatal("expected SaveDelta to fail when project dir does not exist") } - if !strings.Contains(err.Error(), "missing .gradle/") { - t.Fatalf("expected missing .gradle error, got %v", err) + if !strings.Contains(err.Error(), "does not exist") { + t.Fatalf("expected 'does not exist' error, got %v", err) } } @@ -926,31 +925,24 @@ func TestSaveDeltaReturnsMarkerStatErrors(t *testing.T) { } } -func TestSaveErrorsWhenWorkingDirectoryHasNoDotGradle(t *testing.T) { +func TestSaveErrorsWhenProjectDirDoesNotExist(t *testing.T) { ctx := context.Background() gradleHome := t.TempDir() must(t, os.MkdirAll(filepath.Join(gradleHome, "caches"), 0o755)) - projectDir := t.TempDir() - origWD, err := os.Getwd() - must(t, err) - must(t, os.Chdir(projectDir)) - defer func() { - must(t, os.Chdir(origWD)) - }() - - err = Save(ctx, SaveConfig{ + err := Save(ctx, SaveConfig{ CachewURL: "http://example.invalid", CacheKey: "test-cache", Commit: strings.Repeat("a", 40), GradleUserHome: gradleHome, + ProjectDir: filepath.Join(t.TempDir(), "does-not-exist"), SkipWarm: true, }) if err == nil { - t.Fatal("expected Save to fail when working directory has no .gradle directory") + t.Fatal("expected Save to fail when project dir does not exist") } - if !strings.Contains(err.Error(), "missing .gradle/") { - t.Fatalf("expected missing .gradle error, got %v", err) + if !strings.Contains(err.Error(), "does not exist") { + t.Fatalf("expected 'does not exist' error, got %v", err) } } diff --git a/gradlecache/save.go b/gradlecache/save.go index 1c22140..380d3e5 100644 --- a/gradlecache/save.go +++ b/gradlecache/save.go @@ -1045,13 +1045,12 @@ func validateProjectDir(projectDir string) error { if projectDir == "" { return errors.New("project directory is required") } - dotGradle := filepath.Join(projectDir, ".gradle") - info, err := os.Stat(dotGradle) + info, err := os.Stat(projectDir) if err != nil { - return errors.Errorf("project directory %q is missing .gradle/: %w", projectDir, err) + return errors.Errorf("project directory %q does not exist: %w", projectDir, err) } if !info.IsDir() { - return errors.Errorf("project directory %q has non-directory .gradle path", projectDir) + return errors.Errorf("project directory %q is not a directory", projectDir) } return nil }