From e8835a6d1bad082281ad17d4361c9eac28ee382d Mon Sep 17 00:00:00 2001 From: Jason Robinaugh Date: Wed, 18 Feb 2026 13:28:13 -0500 Subject: [PATCH] Fix downloads and test-suites directories not being skipped during run sync The skipDirs check in readRwxDirectoryEntries only matched prefixed paths like ".rwx/downloads", but when called via rwxDirectoryEntries (the path used for runs), relativeTo is set to the .rwx dir itself, so entry.Path is just "downloads". Add the unprefixed names when relativeTo is set so the skip works in both call paths. This bug was introduced in #159 which changed the relativeTo logic but didn't update the skipDirs values to match. --- internal/cli/files.go | 3 +++ internal/cli/files_test.go | 33 ++++++++++++++++++++++++++++++++ internal/cli/service_run_test.go | 8 ++------ 3 files changed, 38 insertions(+), 6 deletions(-) diff --git a/internal/cli/files.go b/internal/cli/files.go index 78d80aa..43af59e 100644 --- a/internal/cli/files.go +++ b/internal/cli/files.go @@ -205,6 +205,9 @@ func readRwxDirectoryEntries(paths []string, relativeTo string) ([]RwxDirectoryE } skipDirs := []string{".rwx/test-suites", ".mint/test-suites", ".rwx/downloads", ".mint/downloads"} + if relativeTo != "" { + skipDirs = append(skipDirs, "test-suites", "downloads") + } if entry.IsDir() { if slices.Contains(skipDirs, entry.Path) { return filepath.SkipDir diff --git a/internal/cli/files_test.go b/internal/cli/files_test.go index 7aa0351..858e100 100644 --- a/internal/cli/files_test.go +++ b/internal/cli/files_test.go @@ -57,6 +57,39 @@ func TestReadRwxDirectoryEntries_SizeLimit(t *testing.T) { }) } +func TestReadRwxDirectoryEntries_SkipsDownloads(t *testing.T) { + t.Run("excludes downloads directory from size calculation", func(t *testing.T) { + t.Chdir(t.TempDir()) + + rwxDir := ".rwx" + err := os.MkdirAll(rwxDir, 0755) + require.NoError(t, err) + + // Write a small config file + smallContent := make([]byte, 1*1024*1024) // 1 MiB + err = os.WriteFile(filepath.Join(rwxDir, "config.yml"), smallContent, 0644) + require.NoError(t, err) + + // Write a large file inside downloads that would push total over 5MiB + downloadsDir := filepath.Join(rwxDir, "downloads") + err = os.MkdirAll(downloadsDir, 0755) + require.NoError(t, err) + + largeDownload := make([]byte, 6*1024*1024) // 6 MiB + err = os.WriteFile(filepath.Join(downloadsDir, "artifact.tar.gz"), largeDownload, 0644) + require.NoError(t, err) + + // Should succeed because downloads directory is excluded + entries, err := cli.RwxDirectoryEntries(rwxDir) + require.NoError(t, err) + + // Verify no entries from downloads directory are included + for _, entry := range entries { + require.NotContains(t, entry.Path, "downloads/") + } + }) +} + func TestFindRunDefinitionFile(t *testing.T) { t.Run("when file exists in pwd", func(t *testing.T) { t.Chdir(t.TempDir()) diff --git a/internal/cli/service_run_test.go b/internal/cli/service_run_test.go index 3714e96..ee1116e 100644 --- a/internal/cli/service_run_test.go +++ b/internal/cli/service_run_test.go @@ -561,7 +561,7 @@ func TestService_InitiatingRun(t *testing.T) { s.mockAPI.MockInitiateRun = func(cfg api.InitiateRunConfig) (*api.InitiateRunResult, error) { require.Len(t, cfg.TaskDefinitions, 1) require.Equal(t, runConfig.MintFilePath, cfg.TaskDefinitions[0].Path) - require.Len(t, cfg.RwxDirectory, 9) + require.Len(t, cfg.RwxDirectory, 7) require.Equal(t, ".", cfg.RwxDirectory[0].Path) require.Equal(t, "mintdir-tasks.json", cfg.RwxDirectory[1].Path) require.Equal(t, "mintdir-tasks.yml", cfg.RwxDirectory[2].Path) @@ -569,8 +569,6 @@ func TestService_InitiatingRun(t *testing.T) { require.Equal(t, "some/nested", cfg.RwxDirectory[4].Path) require.Equal(t, "some/nested/path", cfg.RwxDirectory[5].Path) require.Equal(t, "some/nested/path/tasks.yaml", cfg.RwxDirectory[6].Path) - require.Equal(t, "test-suites", cfg.RwxDirectory[7].Path) - require.Equal(t, "test-suites/config.yaml", cfg.RwxDirectory[8].Path) require.True(t, cfg.UseCache) receivedSpecifiedFileContent = cfg.TaskDefinitions[0].FileContents receivedRwxDir = cfg.RwxDirectory @@ -587,7 +585,7 @@ func TestService_InitiatingRun(t *testing.T) { require.Equal(t, originalSpecifiedFileContent, receivedSpecifiedFileContent) require.NotNil(t, receivedRwxDir) - require.Equal(t, 9, len(receivedRwxDir)) + require.Equal(t, 7, len(receivedRwxDir)) require.Equal(t, ".", receivedRwxDir[0].Path) require.Equal(t, "mintdir-tasks.json", receivedRwxDir[1].Path) require.Equal(t, "mintdir-tasks.yml", receivedRwxDir[2].Path) @@ -595,8 +593,6 @@ func TestService_InitiatingRun(t *testing.T) { require.Equal(t, "some/nested", receivedRwxDir[4].Path) require.Equal(t, "some/nested/path", receivedRwxDir[5].Path) require.Equal(t, "some/nested/path/tasks.yaml", receivedRwxDir[6].Path) - require.Equal(t, "test-suites", receivedRwxDir[7].Path) - require.Equal(t, "test-suites/config.yaml", receivedRwxDir[8].Path) }) })