From 4ec555ff2e68280825ad67881d9e88805b7484a3 Mon Sep 17 00:00:00 2001 From: crowleySynopsys Date: Thu, 5 Mar 2020 14:47:40 -0500 Subject: [PATCH 1/4] feat(test): Created SwiftDetectableTest which extends DetectableFunctionalTest --- .../swift/functional/SwiftDetectableTest.java | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 detectable/src/test/java/com/synopsys/integration/detectable/detectables/swift/functional/SwiftDetectableTest.java diff --git a/detectable/src/test/java/com/synopsys/integration/detectable/detectables/swift/functional/SwiftDetectableTest.java b/detectable/src/test/java/com/synopsys/integration/detectable/detectables/swift/functional/SwiftDetectableTest.java new file mode 100644 index 0000000000..d7f8a294b4 --- /dev/null +++ b/detectable/src/test/java/com/synopsys/integration/detectable/detectables/swift/functional/SwiftDetectableTest.java @@ -0,0 +1,41 @@ +package com.synopsys.integration.detectable.detectables.swift.functional; + +import java.io.File; +import java.io.IOException; + +import org.jetbrains.annotations.NotNull; + +import com.synopsys.integration.detectable.Detectable; +import com.synopsys.integration.detectable.DetectableEnvironment; +import com.synopsys.integration.detectable.Extraction; +import com.synopsys.integration.detectable.detectable.exception.DetectableException; +import com.synopsys.integration.detectable.detectable.executable.resolver.SwiftResolver; +import com.synopsys.integration.detectable.functional.DetectableFunctionalTest; + +public class SwiftDetectableTest extends DetectableFunctionalTest { + + public SwiftDetectableTest() throws IOException { + super("swift"); + } + + @Override + protected void setup() throws IOException { + + } + + @NotNull + @Override + public Detectable create(@NotNull final DetectableEnvironment detectableEnvironment) { + return detectableFactory.createSwiftCliDetectable(detectableEnvironment, new SwiftResolver() { + @Override + public File resolveSwift() throws DetectableException { + return null; + } + }); + } + + @Override + public void assertExtraction(@NotNull final Extraction extraction) { + + } +} From c85c9c6e56588bae8bb4a09389b2fc07c1b5e3d0 Mon Sep 17 00:00:00 2001 From: crowleySynopsys Date: Thu, 5 Mar 2020 17:47:09 -0500 Subject: [PATCH 2/4] feat(test): Completed SwiftDetectableTest --- .../swift/functional/SwiftDetectableTest.java | 39 ++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/detectable/src/test/java/com/synopsys/integration/detectable/detectables/swift/functional/SwiftDetectableTest.java b/detectable/src/test/java/com/synopsys/integration/detectable/detectables/swift/functional/SwiftDetectableTest.java index d7f8a294b4..26b785a971 100644 --- a/detectable/src/test/java/com/synopsys/integration/detectable/detectables/swift/functional/SwiftDetectableTest.java +++ b/detectable/src/test/java/com/synopsys/integration/detectable/detectables/swift/functional/SwiftDetectableTest.java @@ -2,15 +2,20 @@ import java.io.File; import java.io.IOException; +import java.nio.file.Paths; import org.jetbrains.annotations.NotNull; +import org.junit.jupiter.api.Assertions; +import com.synopsys.integration.bdio.model.Forge; import com.synopsys.integration.detectable.Detectable; import com.synopsys.integration.detectable.DetectableEnvironment; import com.synopsys.integration.detectable.Extraction; import com.synopsys.integration.detectable.detectable.exception.DetectableException; +import com.synopsys.integration.detectable.detectable.executable.ExecutableOutput; import com.synopsys.integration.detectable.detectable.executable.resolver.SwiftResolver; import com.synopsys.integration.detectable.functional.DetectableFunctionalTest; +import com.synopsys.integration.detectable.util.graph.NameVersionGraphAssert; public class SwiftDetectableTest extends DetectableFunctionalTest { @@ -21,6 +26,33 @@ public SwiftDetectableTest() throws IOException { @Override protected void setup() throws IOException { + addFile(Paths.get("Package.swift")); + + ExecutableOutput rootSwiftPackage = createStandardOutput( + "{", + " \"name\": \"DeckOfPlayingCards\",", + " \"url\": \"/Users/jakem/bazelWorkspace/sleuthifer/swift/example-package-deckofplayingcards\",", + " \"version\": \"unspecified\",", + " \"path\": \"/Users/jakem/bazelWorkspace/sleuthifer/swift/example-package-deckofplayingcards\",", + " \"dependencies\": [", + " {", + " \"name\": \"FisherYates\",", + " \"url\": \"https://github.com/apple/example-package-fisheryates.git\",", + " \"version\": \"2.0.5\",", + " \"path\": \"/Users/jakem/bazelWorkspace/sleuthifer/swift/example-package-deckofplayingcards/.build/checkouts/example-package-fisheryates\",", + " \"dependencies\": []", + " },", + " {", + " \"name\": \"PlayingCard\",", + " \"url\": \"https://github.com/apple/example-package-playingcard.git\",", + " \"version\": \"3.0.5\",", + " \"path\": \"/Users/jakem/bazelWorkspace/sleuthifer/swift/example-package-deckofplayingcards/.build/checkouts/example-package-playingcard\",", + " \"dependencies\": []", + " }", + " ]", + "}" + ); + addExecutableOutput(rootSwiftPackage, "swift", "package", "show-dependencies", "--format", "json"); } @NotNull @@ -29,13 +61,18 @@ public Detectable create(@NotNull final DetectableEnvironment detectableEnvironm return detectableFactory.createSwiftCliDetectable(detectableEnvironment, new SwiftResolver() { @Override public File resolveSwift() throws DetectableException { - return null; + return new File("swift"); } }); } @Override public void assertExtraction(@NotNull final Extraction extraction) { + Assertions.assertNotEquals(0, extraction.getCodeLocations().size()); + NameVersionGraphAssert graphAssert = new NameVersionGraphAssert(Forge.COCOAPODS, extraction.getCodeLocations().get(0).getDependencyGraph()); + graphAssert.hasRootSize(2); + graphAssert.hasRootDependency("FisherYates", "2.0.5"); + graphAssert.hasRootDependency("PlayingCard", "3.0.5"); } } From 287c1e1e2e3b40c5a9f9087d6212abd0c68eec08 Mon Sep 17 00:00:00 2001 From: crowleySynopsys Date: Mon, 9 Mar 2020 15:37:11 -0400 Subject: [PATCH 3/4] fix(test): Deleted unused swift resources, deleted redundant tests, added assertion to SwiftDetectableTest --- .../swift/functional/SwiftCliParserTest.java | 71 ---------------- .../swift/functional/SwiftDetectableTest.java | 11 ++- .../unit/SwiftPackageTransformerTest.java | 84 ------------------- .../functional/swift/cleanOutput.txt | 26 ------ .../functional/swift/noisyOutput.txt | 33 -------- 5 files changed, 10 insertions(+), 215 deletions(-) delete mode 100644 detectable/src/test/java/com/synopsys/integration/detectable/detectables/swift/functional/SwiftCliParserTest.java delete mode 100644 detectable/src/test/java/com/synopsys/integration/detectable/detectables/swift/unit/SwiftPackageTransformerTest.java delete mode 100644 detectable/src/test/resources/detectables/functional/swift/cleanOutput.txt delete mode 100644 detectable/src/test/resources/detectables/functional/swift/noisyOutput.txt diff --git a/detectable/src/test/java/com/synopsys/integration/detectable/detectables/swift/functional/SwiftCliParserTest.java b/detectable/src/test/java/com/synopsys/integration/detectable/detectables/swift/functional/SwiftCliParserTest.java deleted file mode 100644 index 287bdf276f..0000000000 --- a/detectable/src/test/java/com/synopsys/integration/detectable/detectables/swift/functional/SwiftCliParserTest.java +++ /dev/null @@ -1,71 +0,0 @@ -/** - * detectable - * - * Copyright (c) 2020 Synopsys, Inc. - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.synopsys.integration.detectable.detectables.swift.functional; - -import java.util.List; - -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; - -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.synopsys.integration.detectable.detectables.swift.SwiftCliParser; -import com.synopsys.integration.detectable.detectables.swift.model.SwiftPackage; -import com.synopsys.integration.detectable.util.FunctionalTestFiles; - -class SwiftCliParserTest { - private final Gson gson = new GsonBuilder().setPrettyPrinting().create(); - private final SwiftCliParser swiftCliParser = new SwiftCliParser(gson); - - @Test - void parseCleanOutput() { - final List lines = FunctionalTestFiles.asListOfStrings("/swift/cleanOutput.txt"); - final SwiftPackage swiftPackage = swiftCliParser.parseOutput(lines); - testResults(swiftPackage); - } - - @Test - void parseNoisyOutput() { - final List lines = FunctionalTestFiles.asListOfStrings("/swift/noisyOutput.txt"); - final SwiftPackage swiftPackage = swiftCliParser.parseOutput(lines); - testResults(swiftPackage); - } - - private void testResults(final SwiftPackage swiftPackage) { - Assertions.assertEquals("DeckOfPlayingCards", swiftPackage.getName()); - Assertions.assertEquals("unspecified", swiftPackage.getVersion()); - - Assertions.assertEquals(2, swiftPackage.getDependencies().size()); - for (final SwiftPackage dependency : swiftPackage.getDependencies()) { - if (dependency.getName().equals("FisherYates")) { - Assertions.assertEquals("2.0.5", dependency.getVersion()); - Assertions.assertEquals(0, dependency.getDependencies().size()); - } else if (dependency.getName().equals("PlayingCard")) { - Assertions.assertEquals("3.0.5", dependency.getVersion()); - Assertions.assertEquals(0, dependency.getDependencies().size()); - } else { - Assertions.fail(String.format("Found unexpected dependency: %s==%s", dependency.getName(), dependency.getVersion())); - } - } - } -} \ No newline at end of file diff --git a/detectable/src/test/java/com/synopsys/integration/detectable/detectables/swift/functional/SwiftDetectableTest.java b/detectable/src/test/java/com/synopsys/integration/detectable/detectables/swift/functional/SwiftDetectableTest.java index 26b785a971..4b68f4b320 100644 --- a/detectable/src/test/java/com/synopsys/integration/detectable/detectables/swift/functional/SwiftDetectableTest.java +++ b/detectable/src/test/java/com/synopsys/integration/detectable/detectables/swift/functional/SwiftDetectableTest.java @@ -47,7 +47,15 @@ protected void setup() throws IOException { " \"url\": \"https://github.com/apple/example-package-playingcard.git\",", " \"version\": \"3.0.5\",", " \"path\": \"/Users/jakem/bazelWorkspace/sleuthifer/swift/example-package-deckofplayingcards/.build/checkouts/example-package-playingcard\",", - " \"dependencies\": []", + " \"dependencies\": [", + " {", + " \"name\": \"GenericLibrary\",", + " \"url\": \"https://github.com/apple/example-package-genericLibrary.git\",", + " \"version\": \"1.0.1\",", + " \"path\": \"/Users/jakem/bazelWorkspace/sleuthifer/swift/example-package-deckofplayingcards/.build/checkouts/example-package-genericLibrary\",", + " \"dependencies\": []", + " }", + " ]", " }", " ]", "}" @@ -74,5 +82,6 @@ public void assertExtraction(@NotNull final Extraction extraction) { graphAssert.hasRootSize(2); graphAssert.hasRootDependency("FisherYates", "2.0.5"); graphAssert.hasRootDependency("PlayingCard", "3.0.5"); + graphAssert.hasParentChildRelationship("PlayingCard", "3.0.5", "GenericLibrary", "1.0.1"); } } diff --git a/detectable/src/test/java/com/synopsys/integration/detectable/detectables/swift/unit/SwiftPackageTransformerTest.java b/detectable/src/test/java/com/synopsys/integration/detectable/detectables/swift/unit/SwiftPackageTransformerTest.java deleted file mode 100644 index 301453eb8b..0000000000 --- a/detectable/src/test/java/com/synopsys/integration/detectable/detectables/swift/unit/SwiftPackageTransformerTest.java +++ /dev/null @@ -1,84 +0,0 @@ -/** - * detectable - * - * Copyright (c) 2020 Synopsys, Inc. - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.synopsys.integration.detectable.detectables.swift.unit; - -import java.util.ArrayList; -import java.util.List; - -import org.junit.jupiter.api.Test; - -import com.synopsys.integration.bdio.model.externalid.ExternalId; -import com.synopsys.integration.bdio.model.externalid.ExternalIdFactory; -import com.synopsys.integration.detectable.detectable.codelocation.CodeLocation; -import com.synopsys.integration.detectable.detectables.swift.SwiftPackageTransformer; -import com.synopsys.integration.detectable.detectables.swift.model.SwiftPackage; -import com.synopsys.integration.detectable.util.graph.GraphAssert; - -class SwiftPackageTransformerTest { - private final ExternalIdFactory externalIdFactory = new ExternalIdFactory(); - private final SwiftPackageTransformer swiftPackageTransformer = new SwiftPackageTransformer(externalIdFactory); - - @Test - void transform() { - final SwiftPackage swiftPackage = createSwiftPackage(); - final CodeLocation codeLocation = swiftPackageTransformer.transform(swiftPackage); - - final GraphAssert graphAssert = new GraphAssert(SwiftPackageTransformer.SWIFT_FORGE, codeLocation.getDependencyGraph()); - - final ExternalId fisherYates = externalIdFactory.createNameVersionExternalId(SwiftPackageTransformer.SWIFT_FORGE, "FisherYates", "2.0.5"); - final ExternalId playingCard = externalIdFactory.createNameVersionExternalId(SwiftPackageTransformer.SWIFT_FORGE, "PlayingCard", "3.0.5"); - final ExternalId playingCard2 = externalIdFactory.createModuleNamesExternalId(SwiftPackageTransformer.SWIFT_FORGE, "PlayingCard2"); - final ExternalId deckOfPlayingCards = externalIdFactory.createNameVersionExternalId(SwiftPackageTransformer.SWIFT_FORGE, "DeckOfPlayingCards", "unspecified"); - graphAssert.hasRootDependency(fisherYates); - graphAssert.hasRootDependency(playingCard); - graphAssert.hasParentChildRelationship(playingCard, playingCard2); - graphAssert.hasNoDependency(deckOfPlayingCards); - } - - private SwiftPackage createSwiftPackage() { - final SwiftPackage rootPackage = new SwiftPackage(); - rootPackage.setName("DeckOfPlayingCards"); - rootPackage.setVersion("unspecified"); - - final SwiftPackage fisherYates = new SwiftPackage(); - fisherYates.setName("FisherYates"); - fisherYates.setVersion("2.0.5"); - - final SwiftPackage playingCard = new SwiftPackage(); - playingCard.setName("PlayingCard"); - playingCard.setVersion("3.0.5"); - - final SwiftPackage playingCard2 = new SwiftPackage(); - playingCard2.setName("PlayingCard2"); - playingCard2.setVersion("unspecified"); - playingCard.getDependencies().add(playingCard2); - - final List dependencies = new ArrayList<>(); - dependencies.add(fisherYates); - dependencies.add(playingCard); - rootPackage.setDependencies(dependencies); - - return rootPackage; - } - -} \ No newline at end of file diff --git a/detectable/src/test/resources/detectables/functional/swift/cleanOutput.txt b/detectable/src/test/resources/detectables/functional/swift/cleanOutput.txt deleted file mode 100644 index 23e9a77e56..0000000000 --- a/detectable/src/test/resources/detectables/functional/swift/cleanOutput.txt +++ /dev/null @@ -1,26 +0,0 @@ -{ - "name": "DeckOfPlayingCards", - "url": "/Users/jakem/bazelWorkspace/sleuthifer/swift/example-package-deckofplayingcards", - "version": "unspecified", - "path": "/Users/jakem/bazelWorkspace/sleuthifer/swift/example-package-deckofplayingcards", - "dependencies": [ - { - "name": "FisherYates", - "url": "https://github.com/apple/example-package-fisheryates.git", - "version": "2.0.5", - "path": "/Users/jakem/bazelWorkspace/sleuthifer/swift/example-package-deckofplayingcards/.build/checkouts/example-package-fisheryates", - "dependencies": [ - - ] - }, - { - "name": "PlayingCard", - "url": "https://github.com/apple/example-package-playingcard.git", - "version": "3.0.5", - "path": "/Users/jakem/bazelWorkspace/sleuthifer/swift/example-package-deckofplayingcards/.build/checkouts/example-package-playingcard", - "dependencies": [ - - ] - } - ] -} \ No newline at end of file diff --git a/detectable/src/test/resources/detectables/functional/swift/noisyOutput.txt b/detectable/src/test/resources/detectables/functional/swift/noisyOutput.txt deleted file mode 100644 index 46442a9506..0000000000 --- a/detectable/src/test/resources/detectables/functional/swift/noisyOutput.txt +++ /dev/null @@ -1,33 +0,0 @@ -Fetching https://github.com/apple/example-package-fisheryates.git -Fetching https://github.com/apple/example-package-playingcard.git -Completed resolution in 1.03s -Cloning https://github.com/apple/example-package-fisheryates.git -Resolving https://github.com/apple/example-package-fisheryates.git at 2.0.5 -Cloning https://github.com/apple/example-package-playingcard.git -Resolving https://github.com/apple/example-package-playingcard.git at 3.0.5 -{ - "name": "DeckOfPlayingCards", - "url": "/Users/jakem/bazelWorkspace/sleuthifer/swift/example-package-deckofplayingcards", - "version": "unspecified", - "path": "/Users/jakem/bazelWorkspace/sleuthifer/swift/example-package-deckofplayingcards", - "dependencies": [ - { - "name": "FisherYates", - "url": "https://github.com/apple/example-package-fisheryates.git", - "version": "2.0.5", - "path": "/Users/jakem/bazelWorkspace/sleuthifer/swift/example-package-deckofplayingcards/.build/checkouts/example-package-fisheryates", - "dependencies": [ - - ] - }, - { - "name": "PlayingCard", - "url": "https://github.com/apple/example-package-playingcard.git", - "version": "3.0.5", - "path": "/Users/jakem/bazelWorkspace/sleuthifer/swift/example-package-deckofplayingcards/.build/checkouts/example-package-playingcard", - "dependencies": [ - - ] - } - ] -} \ No newline at end of file From 62b5e670f41a43f5bc70dd78eecaac66478feab7 Mon Sep 17 00:00:00 2001 From: crowleySynopsys Date: Mon, 9 Mar 2020 17:37:19 -0400 Subject: [PATCH 4/4] fix(test): added noisy input to SwiftDetectableTest --- .../detectables/swift/functional/SwiftDetectableTest.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/detectable/src/test/java/com/synopsys/integration/detectable/detectables/swift/functional/SwiftDetectableTest.java b/detectable/src/test/java/com/synopsys/integration/detectable/detectables/swift/functional/SwiftDetectableTest.java index 4b68f4b320..676d2c2799 100644 --- a/detectable/src/test/java/com/synopsys/integration/detectable/detectables/swift/functional/SwiftDetectableTest.java +++ b/detectable/src/test/java/com/synopsys/integration/detectable/detectables/swift/functional/SwiftDetectableTest.java @@ -29,6 +29,10 @@ protected void setup() throws IOException { addFile(Paths.get("Package.swift")); ExecutableOutput rootSwiftPackage = createStandardOutput( + "Fetching https://github.com/apple/example-package-fisheryates.git", + "Completed resolution in 1.03s", + "Cloning https://github.com/apple/example-package-fisheryates.git", + "Resolving https://github.com/apple/example-package-fisheryates.git at 2.0.5", "{", " \"name\": \"DeckOfPlayingCards\",", " \"url\": \"/Users/jakem/bazelWorkspace/sleuthifer/swift/example-package-deckofplayingcards\",",