1+ /*
2+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3+ * SPDX-License-Identifier: Apache-2.0
4+ */
5+ package aws.sdk.kotlin.gradle.dsl
6+
7+ import kotlin.test.Test
8+ import kotlinx.coroutines.test.runTest
9+ import org.gradle.api.publish.PublishingExtension
10+ import org.gradle.api.publish.maven.MavenPublication
11+ import org.gradle.testfixtures.ProjectBuilder
12+ import kotlin.test.assertFalse
13+ import kotlin.test.assertTrue
14+
15+ class PublishTest {
16+ @Test
17+ fun `aws-crt-kotlin can publish Kotlin Native artifacts` () = runTest {
18+ val project = ProjectBuilder .builder().withName(" aws-crt-kotlin" ).build()
19+ project.group = " aws.sdk.kotlin.crt"
20+ project.version = " 1.2.3"
21+
22+ project.configurePublishing(" aws-crt-kotlin" )
23+
24+ val publishing = project.extensions.getByType(PublishingExtension ::class .java)
25+ publishing.publications {
26+ ALLOWED_PUBLICATION_NAMES .forEach {
27+ val jvmRuntimePublication = create(it, MavenPublication ::class .java).apply {
28+ groupId = " aws.sdk.kotlin.crt"
29+ version = " 1.2.3"
30+ artifactId = " aws-crt-kotlin"
31+ }
32+ assertTrue(isAvailableForPublication(project, jvmRuntimePublication))
33+ }
34+
35+ KOTLIN_NATIVE_PUBLICATION_NAMES .forEach {
36+ val nativeRuntimePublication = create(it, MavenPublication ::class .java).apply {
37+ groupId = " aws.sdk.kotlin.crt"
38+ version = " 1.2.3"
39+ artifactId = " aws-crt-kotlin"
40+ }
41+ assertTrue(isAvailableForPublication(project, nativeRuntimePublication))
42+ }
43+ }
44+ }
45+
46+ @Test
47+ fun `aws-sdk-kotlin cannot publish Kotlin Native artifacts` () = runTest {
48+ val project = ProjectBuilder .builder().withName(" aws-sdk-kotlin" ).build()
49+ project.group = " aws.sdk.kotlin"
50+ project.version = " 1.2.3"
51+
52+ project.configurePublishing(" aws-sdk-kotlin" )
53+
54+ val publishing = project.extensions.getByType(PublishingExtension ::class .java)
55+ publishing.publications {
56+ ALLOWED_PUBLICATION_NAMES .forEach {
57+ val jvmRuntimePublication = create(it, MavenPublication ::class .java).apply {
58+ groupId = " aws.sdk.kotlin"
59+ version = " 1.2.3"
60+ artifactId = " aws-runtime"
61+ }
62+ assertTrue(isAvailableForPublication(project, jvmRuntimePublication))
63+ }
64+
65+ KOTLIN_NATIVE_PUBLICATION_NAMES .forEach {
66+ val nativeRuntimePublication = create(it, MavenPublication ::class .java).apply {
67+ groupId = " aws.sdk.kotlin"
68+ version = " 1.2.3"
69+ artifactId = " aws-runtime"
70+ }
71+ assertFalse(isAvailableForPublication(project, nativeRuntimePublication))
72+ }
73+ }
74+ }
75+
76+ @Test
77+ fun `smithy-kotlin cannot publish Kotlin Native artifacts` () = runTest {
78+ val project = ProjectBuilder .builder().withName(" aws-smithy-kotlin" ).build()
79+ project.group = " aws.smithy.kotlin"
80+ project.version = " 1.2.3"
81+
82+ project.configurePublishing(" smithy-kotlin" , " smithy-lang" )
83+
84+ val publishing = project.extensions.getByType(PublishingExtension ::class .java)
85+ publishing.publications {
86+ ALLOWED_PUBLICATION_NAMES .forEach {
87+ val jvmRuntimePublication = create(it, MavenPublication ::class .java).apply {
88+ groupId = " aws.smithy.kotlin"
89+ version = " 1.2.3"
90+ artifactId = " runtime"
91+ }
92+ assertTrue(isAvailableForPublication(project, jvmRuntimePublication))
93+ }
94+
95+ KOTLIN_NATIVE_PUBLICATION_NAMES .forEach {
96+ val nativeRuntimePublication = create(it, MavenPublication ::class .java).apply {
97+ groupId = " aws.smithy.kotlin"
98+ version = " 1.2.3"
99+ artifactId = " runtime"
100+ }
101+ assertFalse(isAvailableForPublication(project, nativeRuntimePublication))
102+ }
103+ }
104+ }
105+ }
0 commit comments