Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions jas/common.go
Original file line number Diff line number Diff line change
Expand Up @@ -406,11 +406,14 @@ func GetExcludePatterns(module jfrogappsconfig.Module, scanner *jfrogappsconfig.
// Adding exclusions from jfrog-apps-config IF no exclusions provided from other source (flags, env vars, config profile)
excludePatterns := module.ExcludePatterns
if scanner != nil {
log.Debug("Using scanner exclude patterns:", strings.Join(scanner.ExcludePatterns, ","))
excludePatterns = append(excludePatterns, scanner.ExcludePatterns...)
}
if len(excludePatterns) == 0 {
log.Debug("No exclude patterns provided, using default exclude patterns", strings.Join(utils.DefaultJasExcludePatterns, ","))
return utils.DefaultJasExcludePatterns
}
log.Debug("Using exclude patterns:", strings.Join(excludePatterns, ","))
return excludePatterns
}

Expand All @@ -420,6 +423,12 @@ func GetExcludePatterns(module jfrogappsconfig.Module, scanner *jfrogappsconfig.
func filterUniqueAndConvertToFilesExcludePatterns(excludePatterns []string) []string {
uniqueExcludePatterns := datastructures.MakeSet[string]()
for _, excludePattern := range excludePatterns {

if strings.ToLower(os.Getenv(utils.JfExcludeFoldersOnlyEnv)) == "false" {
// Add ignore for the pattern as-is, not only the pattern as a directory
uniqueExcludePatterns.Add(excludePattern)
}
// Avoid adding the pattern as a directory twice
if !strings.HasPrefix(excludePattern, "**/") {
excludePattern = "**/" + excludePattern
}
Expand Down
35 changes: 34 additions & 1 deletion jas/common_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -283,19 +283,52 @@ func TestFilterUniqueAndConvertToFilesExcludePatterns(t *testing.T) {
name string
excludePatterns []string
expectedOutput []string
extraEnvVars map[string]string
}{
{
name: "excludePatterns_emptyPatterns",
excludePatterns: []string{},
expectedOutput: []string(nil),
},
{
name: "excludePatterns_defaultBehaviour",
excludePatterns: []string{"*.git*", "*node_modules*", "*target*", "*venv*", "*test*"},
expectedOutput: []string{"**/*.git*/**", "**/*node_modules*/**", "**/*target*/**", "**/*test*/**", "**/*venv*/**"},
},
{
name: "excludePatterns_FolderEnvVarIsFalse",
extraEnvVars: map[string]string{
"JF_EXCLUDE_FOLDERS_ONLY": "false",
},
excludePatterns: []string{"*.git*", "*node_modules*", "*target*", "*venv*", "*test*"},
expectedOutput: []string{"**/*.git*/**", "**/*node_modules*/**", "**/*target*/**", "**/*test*/**", "**/*venv*/**", "*.git*", "*node_modules*", "*target*", "*test*", "*venv*"},
},
{
name: "excludePatterns_FolderEnvVarExistsAndEmpty",
extraEnvVars: map[string]string{
"JF_EXCLUDE_FOLDERS_ONLY": "",
},
excludePatterns: []string{"*.git*", "*node_modules*", "*target*", "*venv*", "*test*"},
expectedOutput: []string{"**/*.git*/**", "**/*node_modules*/**", "**/*target*/**", "**/*test*/**", "**/*venv*/**"},
},
}

var filteredExcludePatterns []string
for _, test := range tests {
filteredExcludePatterns := filterUniqueAndConvertToFilesExcludePatterns(test.excludePatterns)
if len(test.extraEnvVars) > 0 {
for env, envValue := range test.extraEnvVars {
err := os.Setenv(env, envValue)
assert.NoError(t, err)

filteredExcludePatterns = filterUniqueAndConvertToFilesExcludePatterns(test.excludePatterns)

err = os.Unsetenv("JF_EXCLUDE_FOLDERS_ONLY")
assert.NoError(t, err)
}
} else {
filteredExcludePatterns = filterUniqueAndConvertToFilesExcludePatterns(test.excludePatterns)
}

// Sort is needed since we create the response slice from a Set (unordered)
slices.Sort(filteredExcludePatterns)
assert.EqualValues(t, test.expectedOutput, filteredExcludePatterns)
Expand Down
4 changes: 3 additions & 1 deletion utils/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,11 +35,13 @@ const (
JfrogExternalRunIdEnv = "JFROG_CLI_USAGE_RUN_ID"
JfrogExternalJobIdEnv = "JFROG_CLI_USAGE_JOB_ID"
JfrogExternalGitRepoEnv = "JFROG_CLI_USAGE_GIT_REPO"

JfExcludeFoldersOnlyEnv = "JF_EXCLUDE_FOLDERS_ONLY"
)

var (
// Exclude pattern for files.
DefaultJasExcludePatterns = []string{"**/.git/**", "**/*test*/**", "**/*venv*/**", NodeModulesPattern, "**/target/**", "**/dist/**"}
DefaultJasExcludePatterns = []string{"**/.git/**", "**/*test*/**", "**/*venv*/**", NodeModulesPattern, "**/target/**", "**/dist/**", "**test.go"}
// Exclude pattern for directories.
DefaultScaExcludePatterns = []string{"*.git*", "*node_modules*", "*target*", "*venv*", "*test*", "dist"}
)
Expand Down
Loading