1 /* 2 * Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"). 5 * You may not use this file except in compliance with the License. 6 * A copy of the License is located at 7 * 8 * http://aws.amazon.com/apache2.0 9 * 10 * or in the "license" file accompanying this file. This file is distributed 11 * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 12 * express or implied. See the License for the specific language governing 13 * permissions and limitations under the License. 14 */ 15 16 package software.amazon.smithy.go.codegen; 17 18 import static org.hamcrest.MatcherAssert.assertThat; 19 20 import java.util.List; 21 import org.hamcrest.MatcherAssert; 22 import org.hamcrest.Matchers; 23 import org.junit.jupiter.api.Test; 24 import software.amazon.smithy.codegen.core.SymbolDependency; 25 26 public class GoDependencyTest { 27 @Test testStandardLibraryDependency()28 public void testStandardLibraryDependency() { 29 GoDependency dependency = GoDependency.builder() 30 .type(GoDependency.Type.STANDARD_LIBRARY) 31 .importPath("net/http") 32 .version("1.14") 33 .build(); 34 List<SymbolDependency> symbolDependencies = dependency.getDependencies(); 35 assertThat(symbolDependencies.size(), Matchers.equalTo(1)); 36 SymbolDependency symbolDependency = symbolDependencies.get(0); 37 38 assertThat(symbolDependency.getDependencyType(), Matchers.equalTo("stdlib")); 39 assertThat(symbolDependency.getPackageName(), Matchers.equalTo("")); 40 assertThat(symbolDependency.getVersion(), Matchers.equalTo("1.14")); 41 } 42 43 @Test testSingleDependency()44 public void testSingleDependency() { 45 GoDependency dependency = GoDependency.builder() 46 .type(GoDependency.Type.DEPENDENCY) 47 .sourcePath("github.com/aws/smithy-go") 48 .importPath("github.com/aws/smithy-go/middleware") 49 .version("1.2.3") 50 .build(); 51 List<SymbolDependency> symbolDependencies = dependency.getDependencies(); 52 assertThat(symbolDependencies.size(), Matchers.equalTo(1)); 53 SymbolDependency symbolDependency = symbolDependencies.get(0); 54 55 assertThat(symbolDependency.getDependencyType(), Matchers.equalTo("dependency")); 56 assertThat(symbolDependency.getPackageName(), Matchers.equalTo("github.com/aws/smithy-go")); 57 assertThat(symbolDependency.getVersion(), Matchers.equalTo("1.2.3")); 58 } 59 60 @Test testDependencyWithDependencies()61 public void testDependencyWithDependencies() { 62 GoDependency dependency = GoDependency.builder() 63 .type(GoDependency.Type.DEPENDENCY) 64 .sourcePath("github.com/aws/aws-sdk-go-v2") 65 .importPath("github.com/aws/aws-sdk-go-v2/aws/middleware") 66 .version("1.2.3") 67 .addDependency(GoDependency.builder() 68 .type(GoDependency.Type.DEPENDENCY) 69 .sourcePath("github.com/aws/smithy-go") 70 .importPath("github.com/aws/smithy-go/middleware") 71 .version("3.4.5") 72 .build()) 73 .build(); 74 List<SymbolDependency> symbolDependencies = dependency.getDependencies(); 75 assertThat(symbolDependencies.size(), Matchers.equalTo(2)); 76 assertThat(symbolDependencies, Matchers.containsInAnyOrder( 77 Matchers.equalTo(SymbolDependency.builder() 78 .dependencyType("dependency") 79 .packageName("github.com/aws/aws-sdk-go-v2") 80 .version("1.2.3") 81 .build()), 82 Matchers.equalTo(SymbolDependency.builder() 83 .dependencyType("dependency") 84 .packageName("github.com/aws/smithy-go") 85 .version("3.4.5") 86 .build()) 87 )); 88 } 89 90 @Test testDependencyWithNestedDependencies()91 public void testDependencyWithNestedDependencies() { 92 GoDependency dependency = GoDependency.builder() 93 .type(GoDependency.Type.DEPENDENCY) 94 .sourcePath("github.com/aws/aws-sdk-go-v2") 95 .importPath("github.com/aws/aws-sdk-go-v2/aws/middleware") 96 .version("1.2.3") 97 .addDependency(GoDependency.builder() 98 .type(GoDependency.Type.DEPENDENCY) 99 .sourcePath("github.com/aws/smithy-go") 100 .importPath("github.com/aws/smithy-go/middleware") 101 .version("3.4.5") 102 .addDependency(GoDependency.builder() 103 .type(GoDependency.Type.DEPENDENCY) 104 .sourcePath("github.com/awslabs/smithy-go-extensions") 105 .importPath("github.com/awslabs/smithy-go-extensions/foobar") 106 .version("6.7.8") 107 .addDependency(GoDependency.builder() 108 .type(GoDependency.Type.STANDARD_LIBRARY) 109 .importPath("net/http") 110 .version("1.14") 111 .build()) 112 .addDependency(GoDependency.builder() 113 .type(GoDependency.Type.STANDARD_LIBRARY) 114 .importPath("time") 115 .version("1.14") 116 .build()) 117 .build()) 118 .build()) 119 .build(); 120 121 List<SymbolDependency> symbolDependencies = dependency.getDependencies(); 122 assertThat(symbolDependencies.size(), Matchers.equalTo(4)); 123 assertThat(symbolDependencies, Matchers.containsInAnyOrder( 124 Matchers.equalTo(SymbolDependency.builder() 125 .dependencyType("dependency") 126 .packageName("github.com/aws/aws-sdk-go-v2") 127 .version("1.2.3") 128 .build()), 129 Matchers.equalTo(SymbolDependency.builder() 130 .dependencyType("dependency") 131 .packageName("github.com/aws/smithy-go") 132 .version("3.4.5") 133 .build()), 134 Matchers.equalTo(SymbolDependency.builder() 135 .dependencyType("dependency") 136 .packageName("github.com/awslabs/smithy-go-extensions") 137 .version("6.7.8") 138 .build()), 139 Matchers.equalTo(SymbolDependency.builder() 140 .dependencyType("stdlib") 141 .packageName("") 142 .version("1.14") 143 .build()) 144 )); 145 } 146 } 147