Skip to content

Commit 250831b

Browse files
authored
Curation - added-pass-through for gradle (jfrog#561)
1 parent d7849e1 commit 250831b

File tree

6 files changed

+61
-3
lines changed

6 files changed

+61
-3
lines changed

buildscripts/download-jars.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
# https://github.com/jfrog/maven-dep-tree
88

99
# Once you have updated the versions mentioned below, please execute this script from the root directory of the jfrog-cli-core to ensure the JAR files are updated.
10-
GRADLE_DEP_TREE_VERSION="3.0.4"
10+
GRADLE_DEP_TREE_VERSION="3.1.0"
1111
# Changing this version also requires a change in mavenDepTreeVersion within utils/java/mvn.go.
1212
MAVEN_DEP_TREE_VERSION="1.1.5"
1313

jfrog-security

49.4 MB
Binary file not shown.

sca/bom/buildinfo/technologies/java/deptreemanager_test.go

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,10 @@ func TestGetGradleGraphFromDepTree(t *testing.T) {
5050
"org.slf4j:slf4j-api:1.4.2",
5151
}
5252

53-
manager := &gradleDepTreeManager{DepTreeManager{}}
53+
manager := &gradleDepTreeManager{
54+
DepTreeManager: DepTreeManager{},
55+
isCurationCmd: false,
56+
}
5457
outputFileContent, err := manager.runGradleDepTree()
5558
assert.NoError(t, err)
5659
depTree, uniqueDeps, err := getGraphFromDepTree(outputFileContent)
@@ -64,3 +67,20 @@ func TestGetGradleGraphFromDepTree(t *testing.T) {
6467
assert.Equal(t, len(depChild), len(dependency.Nodes))
6568
}
6669
}
70+
71+
func TestGetGradleGraphFromDepTreeWithCuration(t *testing.T) {
72+
tempDirPath, cleanUp := technologies.CreateTestWorkspace(t, filepath.Join("projects", "package-managers", "gradle", "gradle"))
73+
defer cleanUp()
74+
assert.NoError(t, os.Chmod(filepath.Join(tempDirPath, "gradlew"), 0700))
75+
76+
manager := &gradleDepTreeManager{
77+
DepTreeManager: DepTreeManager{},
78+
isCurationCmd: true,
79+
}
80+
outputFileContent, err := manager.runGradleDepTree()
81+
assert.NoError(t, err)
82+
depTree, uniqueDeps, err := getGraphFromDepTree(outputFileContent)
83+
assert.NoError(t, err)
84+
assert.NotEmpty(t, depTree)
85+
assert.NotEmpty(t, uniqueDeps)
86+
}

sca/bom/buildinfo/technologies/java/gradle.go

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,14 @@ var gradleDepTreeJar []byte
5757

5858
type gradleDepTreeManager struct {
5959
DepTreeManager
60+
isCurationCmd bool
6061
}
6162

6263
func buildGradleDependencyTree(params *DepTreeParams) (dependencyTree []*xrayUtils.GraphNode, uniqueDeps map[string]*xray.DepTreeNode, err error) {
63-
manager := &gradleDepTreeManager{DepTreeManager: NewDepTreeManager(params)}
64+
manager := &gradleDepTreeManager{
65+
DepTreeManager: NewDepTreeManager(params),
66+
isCurationCmd: params.IsCurationCmd,
67+
}
6468
outputFileContent, err := manager.runGradleDepTree()
6569
if err != nil {
6670
return
@@ -160,6 +164,12 @@ func (gdt *gradleDepTreeManager) execGradleDepTree(depTreeDir string) (outputFil
160164
gradleNoCacheFlag,
161165
fmt.Sprintf("-Dcom.jfrog.depsTreeOutputFile=%s", outputFilePath),
162166
"-Dcom.jfrog.includeAllBuildFiles=true"}
167+
168+
// Add curation audit mode for pass-through functionality if this is a curation command
169+
if gdt.isCurationCmd {
170+
tasks = append(tasks, "-Dcom.jfrog.curationAuditMode=true")
171+
}
172+
163173
log.Info("Running gradle deps tree command:", gradleExecPath, strings.Join(tasks, " "))
164174
if output, err := exec.Command(gradleExecPath, tasks...).CombinedOutput(); err != nil {
165175
return nil, errorutils.CheckErrorf("error running gradle-dep-tree: %s\n%s", err.Error(), string(output))

sca/bom/buildinfo/technologies/java/gradle_test.go

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,3 +229,31 @@ func TestConstructReleasesRemoteRepo(t *testing.T) {
229229
}()
230230
}
231231
}
232+
233+
func TestGradleCurationAuditMode(t *testing.T) {
234+
// Test that curation audit mode flag is added when IsCurationCmd is true
235+
params := &DepTreeParams{
236+
IsCurationCmd: true,
237+
}
238+
239+
manager := &gradleDepTreeManager{
240+
DepTreeManager: NewDepTreeManager(params),
241+
isCurationCmd: params.IsCurationCmd,
242+
}
243+
244+
// Verify that the manager has the curation flag set
245+
assert.True(t, manager.isCurationCmd, "isCurationCmd should be true for curation commands")
246+
247+
// Test with non-curation command
248+
paramsNonCuration := &DepTreeParams{
249+
IsCurationCmd: false,
250+
}
251+
252+
managerNonCuration := &gradleDepTreeManager{
253+
DepTreeManager: NewDepTreeManager(paramsNonCuration),
254+
isCurationCmd: paramsNonCuration.IsCurationCmd,
255+
}
256+
257+
// Verify that the manager does not have the curation flag set
258+
assert.False(t, managerNonCuration.isCurationCmd, "isCurationCmd should be false for non-curation commands")
259+
}
Binary file not shown.

0 commit comments

Comments
 (0)