Skip to content

Commit

Permalink
fix: missing prune cmd on monitor for gradle & go
Browse files Browse the repository at this point in the history
  • Loading branch information
anthogez committed Oct 6, 2020
1 parent a338df7 commit 5e42f08
Show file tree
Hide file tree
Showing 4 changed files with 106 additions and 2 deletions.
4 changes: 2 additions & 2 deletions src/lib/monitor/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -387,8 +387,8 @@ export async function monitorDepGraph(
analytics.add('targetBranch', target.branch);
}

// this graph will be pruned only if is too dense
depGraph = await pruneGraph(depGraph, packageManager);
const pruneIsRequired = options.pruneRepeatedSubdependencies;
depGraph = await pruneGraph(depGraph, packageManager, pruneIsRequired);

let callGraphPayload;
if (
Expand Down
45 changes: 45 additions & 0 deletions test/acceptance/cli-monitor/cli-monitor.acceptance.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -236,6 +236,51 @@ if (!isWindows) {
);
});

test('`monitor gradle --prune-repeated-subdependencies`', async (t) => {
chdirWorkspaces();

const fixturePath = path.join(
__dirname,
'..',
'..',
'fixtures',
'gradle-prune-repeated-deps',
);

const manifestFile = path.join(fixturePath, 'build.gradle');

await cli.monitor({
file: manifestFile,
pruneRepeatedSubdependencies: true,
});

const req = server.popRequest();
t.equal(req.method, 'PUT', 'makes PUT request');
t.equal(
req.headers['x-snyk-cli-version'],
versionNumber,
'sends version number',
);
t.match(req.url, '/monitor/gradle/graph', 'puts at correct url');
t.deepEqual(req.body.meta.monitorGraph, true, 'correct meta set');
const depGraphJSON = req.body.depGraphJSON;
t.ok(depGraphJSON);

const actualDepGraph = JSON.stringify(depGraphJSON);
const expectedPrunedDepGraph = fs.readFileSync(
path.join(fixturePath, 'gradle-pruned-dep-graph.json'),
'utf8',
);

t.ok(expectedPrunedDepGraph);

t.equal(
actualDepGraph,
expectedPrunedDepGraph,
'verify if the generated depGraph from snyk monitor has been pruned',
);
});

test('`monitor npm-package-pruneable --prune-repeated-subdependencies`', async (t) => {
chdirWorkspaces();

Expand Down
58 changes: 58 additions & 0 deletions test/fixtures/gradle-prune-repeated-deps/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
apply plugin: 'java'
apply plugin: 'maven'

group = 'com.github.jitpack'

sourceCompatibility = 1.8 // java 8
targetCompatibility = 1.8

repositories {
mavenCentral()
}

dependencies {
compile 'com.google.guava:guava:18.0'
compile 'batik:batik-dom:1.6'
compile 'commons-discovery:commons-discovery:0.2'
compile 'axis:axis:1.3'
compile 'com.android.tools.build:builder:2.3.0'
}

task sourcesJar(type: Jar, dependsOn: classes) {
classifier = 'sources'
from sourceSets.main.allSource
}

task javadocJar(type: Jar, dependsOn: javadoc) {
classifier = 'javadoc'
from javadoc.destinationDir
}

artifacts {
archives sourcesJar
archives javadocJar
}

// To specify a license in the pom:
install {
repositories.mavenInstaller {
pom.project {
licenses {
license {
name 'The Apache Software License, Version 2.0'
url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
distribution 'repo'
}
}
}
}
}

// See https://docs.gradle.org/current/userguide/customizing_dependency_resolution_behavior.html#sec:dependency_resolve_rules
configurations.all {
resolutionStrategy.eachDependency { details ->
if (details.requested.group == 'com.android.tools' && details.requested.name == 'annotations') {
details.useVersion '25.2.0'
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"schemaVersion":"1.2.0","pkgManager":{"name":"gradle"},"pkgs":[{"id":"workspaces@unspecified","info":{"name":"workspaces","version":"unspecified"}},{"id":"axis:axis-jaxrpc@1.3","info":{"name":"axis:axis-jaxrpc","version":"1.3"}},{"id":"axis:axis-saaj@1.3","info":{"name":"axis:axis-saaj","version":"1.3"}},{"id":"commons-logging:commons-logging@1.1.1","info":{"name":"commons-logging:commons-logging","version":"1.1.1"}},{"id":"commons-discovery:commons-discovery@0.2","info":{"name":"commons-discovery:commons-discovery","version":"0.2"}},{"id":"wsdl4j:wsdl4j@1.5.1","info":{"name":"wsdl4j:wsdl4j","version":"1.5.1"}},{"id":"axis:axis@1.3","info":{"name":"axis:axis","version":"1.3"}},{"id":"batik:batik-dom@1.6","info":{"name":"batik:batik-dom","version":"1.6"}},{"id":"com.android.tools.analytics-library:protos@25.3.0","info":{"name":"com.android.tools.analytics-library:protos","version":"25.3.0"}},{"id":"com.google.protobuf:protobuf-java@3.0.0","info":{"name":"com.google.protobuf:protobuf-java","version":"3.0.0"}},{"id":"com.android.tools:annotations@25.2.0","info":{"name":"com.android.tools:annotations","version":"25.2.0"}},{"id":"com.android.tools:common@25.3.0","info":{"name":"com.android.tools:common","version":"25.3.0"}},{"id":"com.google.code.gson:gson@2.2.4","info":{"name":"com.google.code.gson:gson","version":"2.2.4"}},{"id":"com.google.guava:guava@18.0","info":{"name":"com.google.guava:guava","version":"18.0"}},{"id":"com.android.tools.analytics-library:shared@25.3.0","info":{"name":"com.android.tools.analytics-library:shared","version":"25.3.0"}},{"id":"com.android.tools.analytics-library:tracker@25.3.0","info":{"name":"com.android.tools.analytics-library:tracker","version":"25.3.0"}},{"id":"com.android.tools.build:builder-model@2.3.0","info":{"name":"com.android.tools.build:builder-model","version":"2.3.0"}},{"id":"com.android.tools.build:builder-test-api@2.3.0","info":{"name":"com.android.tools.build:builder-test-api","version":"2.3.0"}},{"id":"net.sf.kxml:kxml2@2.3.0","info":{"name":"net.sf.kxml:kxml2","version":"2.3.0"}},{"id":"com.android.tools.ddms:ddmlib@25.3.0","info":{"name":"com.android.tools.ddms:ddmlib","version":"25.3.0"}},{"id":"org.bouncycastle:bcprov-jdk15on@1.48","info":{"name":"org.bouncycastle:bcprov-jdk15on","version":"1.48"}},{"id":"org.bouncycastle:bcpkix-jdk15on@1.48","info":{"name":"org.bouncycastle:bcpkix-jdk15on","version":"1.48"}},{"id":"com.android.tools:sdk-common@25.3.0","info":{"name":"com.android.tools:sdk-common","version":"25.3.0"}},{"id":"com.android.tools.build:manifest-merger@25.3.0","info":{"name":"com.android.tools.build:manifest-merger","version":"25.3.0"}},{"id":"com.android.tools.jack:jack-api@0.13.0","info":{"name":"com.android.tools.jack:jack-api","version":"0.13.0"}},{"id":"com.android.tools.jill:jill-api@0.10.0","info":{"name":"com.android.tools.jill:jill-api","version":"0.10.0"}},{"id":"com.squareup:javawriter@2.5.0","info":{"name":"com.squareup:javawriter","version":"2.5.0"}},{"id":"org.ow2.asm:asm@5.0.4","info":{"name":"org.ow2.asm:asm","version":"5.0.4"}},{"id":"org.ow2.asm:asm-tree@5.0.4","info":{"name":"org.ow2.asm:asm-tree","version":"5.0.4"}},{"id":"com.android.tools.build:builder@2.3.0","info":{"name":"com.android.tools.build:builder","version":"2.3.0"}},{"id":"com.intellij:annotations@12.0","info":{"name":"com.intellij:annotations","version":"12.0"}},{"id":"com.android.tools.layoutlib:layoutlib-api@25.3.0","info":{"name":"com.android.tools.layoutlib:layoutlib-api","version":"25.3.0"}},{"id":"com.android.tools:dvlib@25.3.0","info":{"name":"com.android.tools:dvlib","version":"25.3.0"}},{"id":"com.google.jimfs:jimfs@1.1","info":{"name":"com.google.jimfs:jimfs","version":"1.1"}},{"id":"org.apache.commons:commons-compress@1.8.1","info":{"name":"org.apache.commons:commons-compress","version":"1.8.1"}},{"id":"com.android.tools:repository@25.3.0","info":{"name":"com.android.tools:repository","version":"25.3.0"}},{"id":"commons-codec:commons-codec@1.4","info":{"name":"commons-codec:commons-codec","version":"1.4"}},{"id":"org.apache.httpcomponents:httpcore@4.1","info":{"name":"org.apache.httpcomponents:httpcore","version":"4.1"}},{"id":"org.apache.httpcomponents:httpclient@4.1.1","info":{"name":"org.apache.httpcomponents:httpclient","version":"4.1.1"}},{"id":"com.android.tools:sdklib@25.3.0","info":{"name":"com.android.tools:sdklib","version":"25.3.0"}},{"id":"org.apache.httpcomponents:httpmime@4.1","info":{"name":"org.apache.httpcomponents:httpmime","version":"4.1"}}],"graph":{"rootNodeId":"root-node","nodes":[{"nodeId":"root-node","pkgId":"workspaces@unspecified","deps":[{"nodeId":"axis:axis@1.3"},{"nodeId":"batik:batik-dom@1.6"},{"nodeId":"com.android.tools.analytics-library:tracker@25.3.0"},{"nodeId":"com.android.tools.build:builder@2.3.0"},{"nodeId":"com.android.tools:sdklib@25.3.0"},{"nodeId":"com.google.guava:guava@18.0"},{"nodeId":"commons-discovery:commons-discovery@0.2"},{"nodeId":"org.apache.httpcomponents:httpmime@4.1"}]},{"nodeId":"axis:axis-jaxrpc@1.3","pkgId":"axis:axis-jaxrpc@1.3","deps":[]},{"nodeId":"axis:axis-saaj@1.3","pkgId":"axis:axis-saaj@1.3","deps":[]},{"nodeId":"commons-logging:commons-logging@1.1.1","pkgId":"commons-logging:commons-logging@1.1.1","deps":[]},{"nodeId":"commons-discovery:commons-discovery@0.2","pkgId":"commons-discovery:commons-discovery@0.2","deps":[{"nodeId":"commons-logging:commons-logging@1.1.1"}]},{"nodeId":"wsdl4j:wsdl4j@1.5.1","pkgId":"wsdl4j:wsdl4j@1.5.1","deps":[]},{"nodeId":"axis:axis@1.3","pkgId":"axis:axis@1.3","deps":[{"nodeId":"axis:axis-jaxrpc@1.3"},{"nodeId":"axis:axis-saaj@1.3"},{"nodeId":"commons-discovery:commons-discovery@0.2"},{"nodeId":"commons-logging:commons-logging@1.1.1"},{"nodeId":"wsdl4j:wsdl4j@1.5.1"}]},{"nodeId":"batik:batik-dom@1.6","pkgId":"batik:batik-dom@1.6","deps":[]},{"nodeId":"com.android.tools.analytics-library:protos@25.3.0|1","pkgId":"com.android.tools.analytics-library:protos@25.3.0","deps":[],"info":{"labels":{"pruned":"true"}}},{"nodeId":"com.android.tools.analytics-library:protos@25.3.0|2","pkgId":"com.android.tools.analytics-library:protos@25.3.0","deps":[{"nodeId":"com.google.protobuf:protobuf-java@3.0.0"}]},{"nodeId":"com.google.protobuf:protobuf-java@3.0.0","pkgId":"com.google.protobuf:protobuf-java@3.0.0","deps":[]},{"nodeId":"com.android.tools:annotations@25.2.0","pkgId":"com.android.tools:annotations@25.2.0","deps":[]},{"nodeId":"com.android.tools:common@25.3.0|1","pkgId":"com.android.tools:common@25.3.0","deps":[],"info":{"labels":{"pruned":"true"}}},{"nodeId":"com.android.tools:common@25.3.0|2","pkgId":"com.android.tools:common@25.3.0","deps":[{"nodeId":"com.android.tools:annotations@25.2.0"},{"nodeId":"com.google.guava:guava@18.0"}]},{"nodeId":"com.google.code.gson:gson@2.2.4","pkgId":"com.google.code.gson:gson@2.2.4","deps":[]},{"nodeId":"com.google.guava:guava@18.0","pkgId":"com.google.guava:guava@18.0","deps":[]},{"nodeId":"com.android.tools.analytics-library:shared@25.3.0","pkgId":"com.android.tools.analytics-library:shared@25.3.0","deps":[{"nodeId":"com.android.tools.analytics-library:protos@25.3.0|2"},{"nodeId":"com.android.tools:annotations@25.2.0"},{"nodeId":"com.android.tools:common@25.3.0|1"},{"nodeId":"com.google.code.gson:gson@2.2.4"},{"nodeId":"com.google.guava:guava@18.0"}]},{"nodeId":"com.android.tools.analytics-library:tracker@25.3.0","pkgId":"com.android.tools.analytics-library:tracker@25.3.0","deps":[{"nodeId":"com.android.tools.analytics-library:protos@25.3.0|1"},{"nodeId":"com.android.tools.analytics-library:shared@25.3.0"},{"nodeId":"com.android.tools:annotations@25.2.0"},{"nodeId":"com.android.tools:common@25.3.0|2"},{"nodeId":"com.google.guava:guava@18.0"},{"nodeId":"com.google.protobuf:protobuf-java@3.0.0"}]},{"nodeId":"com.android.tools.build:builder-model@2.3.0|1","pkgId":"com.android.tools.build:builder-model@2.3.0","deps":[],"info":{"labels":{"pruned":"true"}}},{"nodeId":"com.android.tools.build:builder-model@2.3.0|2","pkgId":"com.android.tools.build:builder-model@2.3.0","deps":[{"nodeId":"com.android.tools:annotations@25.2.0"}]},{"nodeId":"com.android.tools.build:builder-test-api@2.3.0|1","pkgId":"com.android.tools.build:builder-test-api@2.3.0","deps":[],"info":{"labels":{"pruned":"true"}}},{"nodeId":"com.android.tools.build:builder-test-api@2.3.0|2","pkgId":"com.android.tools.build:builder-test-api@2.3.0","deps":[{"nodeId":"com.android.tools.ddms:ddmlib@25.3.0|1"}]},{"nodeId":"net.sf.kxml:kxml2@2.3.0","pkgId":"net.sf.kxml:kxml2@2.3.0","deps":[]},{"nodeId":"com.android.tools.ddms:ddmlib@25.3.0|1","pkgId":"com.android.tools.ddms:ddmlib@25.3.0","deps":[{"nodeId":"com.android.tools:common@25.3.0|2"},{"nodeId":"net.sf.kxml:kxml2@2.3.0"}]},{"nodeId":"com.android.tools.ddms:ddmlib@25.3.0|2","pkgId":"com.android.tools.ddms:ddmlib@25.3.0","deps":[],"info":{"labels":{"pruned":"true"}}},{"nodeId":"org.bouncycastle:bcprov-jdk15on@1.48","pkgId":"org.bouncycastle:bcprov-jdk15on@1.48","deps":[]},{"nodeId":"org.bouncycastle:bcpkix-jdk15on@1.48|1","pkgId":"org.bouncycastle:bcpkix-jdk15on@1.48","deps":[{"nodeId":"org.bouncycastle:bcprov-jdk15on@1.48"}]},{"nodeId":"org.bouncycastle:bcpkix-jdk15on@1.48|2","pkgId":"org.bouncycastle:bcpkix-jdk15on@1.48","deps":[],"info":{"labels":{"pruned":"true"}}},{"nodeId":"com.android.tools:sdk-common@25.3.0|1","pkgId":"com.android.tools:sdk-common@25.3.0","deps":[{"nodeId":"com.android.tools.build:builder-model@2.3.0|2"},{"nodeId":"com.android.tools.build:builder-test-api@2.3.0|2"},{"nodeId":"org.bouncycastle:bcpkix-jdk15on@1.48|1"},{"nodeId":"org.bouncycastle:bcprov-jdk15on@1.48"}]},{"nodeId":"com.android.tools:sdk-common@25.3.0|2","pkgId":"com.android.tools:sdk-common@25.3.0","deps":[],"info":{"labels":{"pruned":"true"}}},{"nodeId":"com.android.tools.build:manifest-merger@25.3.0","pkgId":"com.android.tools.build:manifest-merger@25.3.0","deps":[{"nodeId":"com.android.tools:common@25.3.0|1"},{"nodeId":"com.android.tools:sdk-common@25.3.0|1"},{"nodeId":"com.google.code.gson:gson@2.2.4"},{"nodeId":"net.sf.kxml:kxml2@2.3.0"}]},{"nodeId":"com.android.tools.jack:jack-api@0.13.0","pkgId":"com.android.tools.jack:jack-api@0.13.0","deps":[]},{"nodeId":"com.android.tools.jill:jill-api@0.10.0","pkgId":"com.android.tools.jill:jill-api@0.10.0","deps":[]},{"nodeId":"com.squareup:javawriter@2.5.0","pkgId":"com.squareup:javawriter@2.5.0","deps":[]},{"nodeId":"org.ow2.asm:asm@5.0.4","pkgId":"org.ow2.asm:asm@5.0.4","deps":[]},{"nodeId":"org.ow2.asm:asm-tree@5.0.4","pkgId":"org.ow2.asm:asm-tree@5.0.4","deps":[{"nodeId":"org.ow2.asm:asm@5.0.4"}]},{"nodeId":"com.android.tools.build:builder@2.3.0","pkgId":"com.android.tools.build:builder@2.3.0","deps":[{"nodeId":"com.android.tools.analytics-library:protos@25.3.0|1"},{"nodeId":"com.android.tools.analytics-library:shared@25.3.0"},{"nodeId":"com.android.tools.build:builder-model@2.3.0|1"},{"nodeId":"com.android.tools.build:builder-test-api@2.3.0|1"},{"nodeId":"com.android.tools.build:manifest-merger@25.3.0"},{"nodeId":"com.android.tools.ddms:ddmlib@25.3.0|2"},{"nodeId":"com.android.tools.jack:jack-api@0.13.0"},{"nodeId":"com.android.tools.jill:jill-api@0.10.0"},{"nodeId":"com.android.tools:common@25.3.0|1"},{"nodeId":"com.android.tools:sdk-common@25.3.0|2"},{"nodeId":"com.squareup:javawriter@2.5.0"},{"nodeId":"org.bouncycastle:bcpkix-jdk15on@1.48|2"},{"nodeId":"org.bouncycastle:bcprov-jdk15on@1.48"},{"nodeId":"org.ow2.asm:asm@5.0.4"},{"nodeId":"org.ow2.asm:asm-tree@5.0.4"}]},{"nodeId":"com.intellij:annotations@12.0","pkgId":"com.intellij:annotations@12.0","deps":[]},{"nodeId":"com.android.tools.layoutlib:layoutlib-api@25.3.0","pkgId":"com.android.tools.layoutlib:layoutlib-api@25.3.0","deps":[{"nodeId":"com.android.tools:annotations@25.2.0"},{"nodeId":"com.android.tools:common@25.3.0|2"},{"nodeId":"com.intellij:annotations@12.0"},{"nodeId":"net.sf.kxml:kxml2@2.3.0"}]},{"nodeId":"com.android.tools:dvlib@25.3.0","pkgId":"com.android.tools:dvlib@25.3.0","deps":[{"nodeId":"com.android.tools:common@25.3.0|1"}]},{"nodeId":"com.google.jimfs:jimfs@1.1","pkgId":"com.google.jimfs:jimfs@1.1","deps":[{"nodeId":"com.google.guava:guava@18.0"}]},{"nodeId":"org.apache.commons:commons-compress@1.8.1","pkgId":"org.apache.commons:commons-compress@1.8.1","deps":[]},{"nodeId":"com.android.tools:repository@25.3.0","pkgId":"com.android.tools:repository@25.3.0","deps":[{"nodeId":"com.android.tools:common@25.3.0|1"},{"nodeId":"com.google.jimfs:jimfs@1.1"},{"nodeId":"org.apache.commons:commons-compress@1.8.1"}]},{"nodeId":"commons-codec:commons-codec@1.4","pkgId":"commons-codec:commons-codec@1.4","deps":[]},{"nodeId":"org.apache.httpcomponents:httpcore@4.1","pkgId":"org.apache.httpcomponents:httpcore@4.1","deps":[]},{"nodeId":"org.apache.httpcomponents:httpclient@4.1.1","pkgId":"org.apache.httpcomponents:httpclient@4.1.1","deps":[{"nodeId":"commons-codec:commons-codec@1.4"},{"nodeId":"commons-logging:commons-logging@1.1.1"},{"nodeId":"org.apache.httpcomponents:httpcore@4.1"}]},{"nodeId":"com.android.tools:sdklib@25.3.0","pkgId":"com.android.tools:sdklib@25.3.0","deps":[{"nodeId":"com.android.tools.layoutlib:layoutlib-api@25.3.0"},{"nodeId":"com.android.tools:dvlib@25.3.0"},{"nodeId":"com.android.tools:repository@25.3.0"},{"nodeId":"com.google.code.gson:gson@2.2.4"},{"nodeId":"org.apache.commons:commons-compress@1.8.1"},{"nodeId":"org.apache.httpcomponents:httpclient@4.1.1"}]},{"nodeId":"org.apache.httpcomponents:httpmime@4.1","pkgId":"org.apache.httpcomponents:httpmime@4.1","deps":[{"nodeId":"commons-logging:commons-logging@1.1.1"},{"nodeId":"org.apache.httpcomponents:httpcore@4.1"}]}]}}

0 comments on commit 5e42f08

Please sign in to comment.