Add SignedProjectTest #404
This commit is contained in:
		
							parent
							
								
									93b2aebaf8
								
							
						
					
					
						commit
						de665ab498
					
				
					 6 changed files with 173 additions and 1 deletions
				
			
		|  | @ -0,0 +1,96 @@ | ||||||
|  | /* | ||||||
|  |  * This file is part of fabric-loom, licensed under the MIT License (MIT). | ||||||
|  |  * | ||||||
|  |  * Copyright (c) 2016, 2017, 2018 FabricMC | ||||||
|  |  * | ||||||
|  |  * Permission is hereby granted, free of charge, to any person obtaining a copy | ||||||
|  |  * of this software and associated documentation files (the "Software"), to deal | ||||||
|  |  * in the Software without restriction, including without limitation the rights | ||||||
|  |  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||||
|  |  * copies of the Software, and to permit persons to whom the Software is | ||||||
|  |  * furnished to do so, subject to the following conditions: | ||||||
|  |  * | ||||||
|  |  * The above copyright notice and this permission notice shall be included in all | ||||||
|  |  * copies or substantial portions of the Software. | ||||||
|  |  * | ||||||
|  |  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  |  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  |  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||||
|  |  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||||
|  |  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||||
|  |  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||||
|  |  * SOFTWARE. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | package net.fabricmc.loom.test.integration | ||||||
|  | 
 | ||||||
|  | import net.fabricmc.loom.test.util.ArchiveAssertionsTrait | ||||||
|  | 
 | ||||||
|  | import net.fabricmc.loom.test.util.MockMavenServerTrait | ||||||
|  | import spock.lang.Specification | ||||||
|  | import spock.lang.Stepwise | ||||||
|  | import spock.lang.Unroll | ||||||
|  | import spock.util.environment.RestoreSystemProperties | ||||||
|  | 
 | ||||||
|  | import static java.lang.System.setProperty | ||||||
|  | import static org.gradle.testkit.runner.TaskOutcome.SUCCESS | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * This tests publishing signed artifacts to a maven server | ||||||
|  |  */ | ||||||
|  | @Stepwise | ||||||
|  | class SignedProjectTest extends Specification implements MockMavenServerTrait, ArchiveAssertionsTrait { | ||||||
|  | 	@Unroll | ||||||
|  | 	@RestoreSystemProperties | ||||||
|  | 	def "sign and publish lib #gradle"() { | ||||||
|  | 		given: | ||||||
|  | 			setProperty('loom.test.secretKey', PRIVATE_KEY) | ||||||
|  | 		when: | ||||||
|  | 			def result = create("publish", gradle) | ||||||
|  | 		then: | ||||||
|  | 			result.task(":publish").outcome == SUCCESS | ||||||
|  | 		where: | ||||||
|  | 			gradle             | _ | ||||||
|  | 			DEFAULT_GRADLE     | _ | ||||||
|  | 			PRE_RELEASE_GRADLE | _ | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	@Override | ||||||
|  | 	String name() { | ||||||
|  | 		"signed" | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	static final String PRIVATE_KEY = """ | ||||||
|  | -----BEGIN PGP PRIVATE KEY BLOCK----- | ||||||
|  | 
 | ||||||
|  | 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 | ||||||
|  | =xl+8 | ||||||
|  | -----END PGP PRIVATE KEY BLOCK-----""" | ||||||
|  | } | ||||||
|  | @ -29,7 +29,7 @@ import org.gradle.testkit.runner.GradleRunner | ||||||
| 
 | 
 | ||||||
| trait ProjectTestTrait { | trait ProjectTestTrait { | ||||||
| 	final static String DEFAULT_GRADLE = "7.0.1" | 	final static String DEFAULT_GRADLE = "7.0.1" | ||||||
| 	final static String PRE_RELEASE_GRADLE = "7.1-20210511220046+0000" | 	final static String PRE_RELEASE_GRADLE = "7.1-20210520220048+0000" | ||||||
| 
 | 
 | ||||||
| 	static File gradleHome = File.createTempDir() | 	static File gradleHome = File.createTempDir() | ||||||
| 	File testProjectDir = File.createTempDir() | 	File testProjectDir = File.createTempDir() | ||||||
|  |  | ||||||
							
								
								
									
										57
									
								
								src/test/resources/projects/signed/build.gradle
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								src/test/resources/projects/signed/build.gradle
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,57 @@ | ||||||
|  | plugins { | ||||||
|  | 	id 'fabric-loom' | ||||||
|  | 	id 'maven-publish' | ||||||
|  | 	id 'signing' | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | archivesBaseName = "fabric-example-lib" | ||||||
|  | version = "1.0.0" | ||||||
|  | group = "com.example" | ||||||
|  | 
 | ||||||
|  | dependencies { | ||||||
|  | 	minecraft "com.mojang:minecraft:1.16.5" | ||||||
|  | 	mappings "net.fabricmc:yarn:1.16.5+build.5:v2" | ||||||
|  | 	modImplementation "net.fabricmc:fabric-loader:0.11.2" | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | processResources { | ||||||
|  | 	inputs.property "version", project.version | ||||||
|  | 
 | ||||||
|  | 	filesMatching("fabric.mod.json") { | ||||||
|  | 		expand "version": project.version | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | java { | ||||||
|  | 	withSourcesJar() | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | publishing { | ||||||
|  | 	publications { | ||||||
|  | 		mavenJava(MavenPublication) { | ||||||
|  | 			artifact(remapJar) { | ||||||
|  | 				builtBy remapJar | ||||||
|  | 			} | ||||||
|  | 			artifact(remapJar) { | ||||||
|  | 				builtBy remapJar | ||||||
|  | 				classifier "classifier" | ||||||
|  | 			} | ||||||
|  | 			artifact(sourcesJar) { | ||||||
|  | 				builtBy remapSourcesJar | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  |     repositories { | ||||||
|  | 		maven { | ||||||
|  | 			url "http://localhost:${System.getProperty("loom.test.mavenPort")}/" | ||||||
|  | 			allowInsecureProtocol = true | ||||||
|  | 		} | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | signing { | ||||||
|  | 	def privateKey = System.getProperty("loom.test.secretKey") ?: "no key!" | ||||||
|  | 	useInMemoryPgpKeys(privateKey, 'password') | ||||||
|  | 	sign publishing.publications.mavenJava | ||||||
|  | } | ||||||
|  | @ -0,0 +1,13 @@ | ||||||
|  | package net.fabricmc.example; | ||||||
|  | 
 | ||||||
|  | import net.fabricmc.api.ModInitializer; | ||||||
|  | 
 | ||||||
|  | public class ExampleLib implements ModInitializer { | ||||||
|  | 	@Override | ||||||
|  | 	public void onInitialize() { | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	public static void hello() { | ||||||
|  | 		System.out.println("Hello Fabric world!"); | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | @ -0,0 +1,4 @@ | ||||||
|  | { | ||||||
|  |   "schemaVersion": 1, | ||||||
|  |   "id": "modid" | ||||||
|  | } | ||||||
							
								
								
									
										2
									
								
								src/test/resources/projects/signed/settings.gradle
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								src/test/resources/projects/signed/settings.gradle
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,2 @@ | ||||||
|  | rootProject.name = "fabric-example-lib" | ||||||
|  | 
 | ||||||
		Loading…
	
		Reference in a new issue