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) }) })