1111import java .nio .file .Files ;
1212import java .util .HashMap ;
1313import java .util .Map ;
14+ import java .util .stream .Collectors ;
15+ import java .util .stream .Stream ;
1416import org .gradle .testkit .runner .GradleRunner ;
1517import org .gradle .testkit .runner .TaskOutcome ;
1618import org .intellij .lang .annotations .Language ;
@@ -37,6 +39,50 @@ public void testPublishAccessTransformerFile() throws IOException {
3739 entry ("publish-at-1.0-accesstransformer.cfg" , "# hello world" ));
3840 }
3941
42+ @ Test
43+ public void testPublishSignedAccessTransformerFileDoesntProduceGarbageNextToTheFile () throws IOException {
44+ var atFile = testProjectDir .toPath ().resolve ("accesstransformer.cfg" );
45+ Files .writeString (atFile , "# hello world" );
46+
47+ publishDataFiles ("test" , "publish-at" , "1.0" , """
48+ neoForge {
49+ accessTransformers {
50+ publish(project.file("accesstransformer.cfg"))
51+ }
52+ }
53+ signing {
54+ useInMemoryPgpKeys(
55+ ""\"
56+ -----BEGIN PGP PRIVATE KEY BLOCK-----
57+
58+ lIYEZ50OURYJKwYBBAHaRw8BAQdAjVNqyWTfusmnT3/pNNmjmG9AfOFL8YbFUXCo
59+ PZO3dCj+BwMCZ5yIZTjHa2r/WIUWn/nr1+5CLJOI1xzscxZOq6Vyvh9m3TWgPKWh
60+ iW/MM/tGGvOnFt4qD+WNYNaHo3GtbG+KoK0584Ddon60yFEAPCdAUrQXTURHIDxt
61+ ZGdAbmVvZm9yZ2VkLm5ldD6IkwQTFgoAOxYhBN0jxfacUTgqiXj3CnkqaxjDscQa
62+ BQJnnQ5RAhsDBQsJCAcCAiICBhUKCQgLAgQWAgMBAh4HAheAAAoJEHkqaxjDscQa
63+ 93YA/ix1FkHrtF+VglGcSBGUvtqfiBzYPvwrazNdURxCZpaVAP4zWPYtbDJP14dP
64+ s8I/jILSUfE61lVl6Y74tpiEvNm8Bg==
65+ =3g5S
66+ -----END PGP PRIVATE KEY BLOCK-----
67+ ""\",
68+ "123456"
69+ )
70+ sign publishing.publications.maven
71+ }
72+ """ , "signing" );
73+
74+ assertThat (atFile .resolveSibling (atFile .getFileName () + ".asc" ))
75+ .doesNotExist ();
76+ var copiedFile = testProjectDir .toPath ()
77+ .resolve ("build/copyAccessTransformersPublications/0-accesstransformer.cfg" );
78+ assertThat (copiedFile )
79+ .hasSameTextualContentAs (atFile );
80+ assertThat (copiedFile .resolveSibling (copiedFile .getFileName () + ".asc" ))
81+ .exists ();
82+ assertThat (consumeDataFilePublication ("accessTransformers" , "test:publish-at:1.0" )).containsOnly (
83+ entry ("publish-at-1.0-accesstransformer.cfg" , "# hello world" ));
84+ }
85+
4086 @ Test
4187 public void testPublishInterfaceInjectionFile () throws IOException {
4288 writeProjectFile ("interfaces.json" , "[]" );
@@ -126,7 +172,11 @@ private Map<String, String> consumeDataFilePublication(String configurationName,
126172 private void publishDataFiles (String groupId ,
127173 String artifactId ,
128174 String version ,
129- @ Language ("groovy" ) String buildScriptBody ) throws IOException {
175+ @ Language ("groovy" ) String buildScriptBody ,
176+ String ... extraPlugins ) throws IOException {
177+ String extraPluginLines = Stream .of (extraPlugins )
178+ .map ("id \" %s\" " ::formatted )
179+ .collect (Collectors .joining ("\n " ));
130180 writeGroovySettingsScript ("""
131181 plugins {
132182 id 'org.gradle.toolchains.foojay-resolver-convention' version '0.8.0'
@@ -137,6 +187,7 @@ private void publishDataFiles(String groupId,
137187 plugins {
138188 id "net.neoforged.moddev"
139189 id "maven-publish"
190+ {4}
140191 }
141192 group = "{0}"
142193 version = "{1}"
@@ -156,7 +207,7 @@ url file("{3}")
156207 }
157208 }
158209 {2}
159- """ , groupId , version , buildScriptBody , publicationTarget );
210+ """ , groupId , version , buildScriptBody , publicationTarget , extraPluginLines );
160211
161212 var result = GradleRunner .create ()
162213 .withPluginClasspath ()
0 commit comments