Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

convert engine-tests build.gradle to kotlin #5202

Merged
merged 2 commits into from
Jan 27, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
106 changes: 46 additions & 60 deletions engine-tests/build.gradle → engine-tests/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -2,63 +2,52 @@
// SPDX-License-Identifier: Apache-2.0

// Engine tests are split out due to otherwise quirky project dependency issues with module tests extending engine tests

plugins {
id "java-library"
id "org.jetbrains.gradle.plugin.idea-ext"
id "terasology-common"
id("java-library")
id("org.jetbrains.gradle.plugin.idea-ext")
id("terasology-common")
}

// Grab all the common stuff like plugins to use, artifact repositories, code analysis config
apply from: "$rootDir/config/gradle/publish.gradle"

import groovy.json.JsonSlurper
apply(from = "$rootDir/config/gradle/publish.gradle")

ext {
// Read environment variables, including variables passed by jenkins continuous integration server
env = System.getenv()
}
// Read environment variables, including variables passed by jenkins continuous integration server
val env = System.getenv()

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Java Section //
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

// Read the internal version out of the engine-tests module.txt
def moduleFile = file('src/main/resources/org/terasology/unittest/module.txt')

if (!moduleFile.exists()) {
println "Failed to find module.txt for engine-tests"
throw new GradleException("Failed to find module.txt for engine-tests")
}
val moduleFile = layout.projectDirectory.file("src/main/resources/org/terasology/unittest/module.txt").asFile

println "Scanning for version in module.txt for engine-tests"
def slurper = new JsonSlurper()
def moduleConfig = slurper.parseText(moduleFile.text)
println("Scanning for version in module.txt for engine-tests")
val moduleConfig = groovy.json.JsonSlurper().parseText(moduleFile.readText()) as Map<String, String>

// Gradle uses the magic version variable when creating the jar name (unless explicitly set differently)
version = moduleConfig.version
version = moduleConfig["version"]!!

// Jenkins-Artifactory integration catches on to this as part of the Maven-type descriptor
group = 'org.terasology.engine'
group = "org.terasology.engine"

println "Version for $project.name loaded as $version for group $group"
println("Version for $project.name loaded as $version for group $group")

sourceSets {
configure<SourceSetContainer> {
// Adjust output path (changed with the Gradle 6 upgrade, this puts it back)
main.java.destinationDirectory = new File("$buildDir/classes")
test.java.destinationDirectory = new File("$buildDir/testClasses")
main { java.destinationDirectory.set(layout.buildDirectory.dir("classes")) }
test { java.destinationDirectory.set(layout.buildDirectory.dir("testClasses")) }
}

// Primary dependencies definition
dependencies {
// Dependency on the engine itself
implementation project(':engine')
implementation(project(":engine"))

// Dependency not provided for modules, but required for module-tests
implementation group: 'com.google.code.gson', name: 'gson', version: '2.8.6'
implementation group: 'org.codehaus.plexus', name: 'plexus-utils', version: '3.0.16'
implementation group: 'com.google.protobuf', name: 'protobuf-java', version: '3.16.1'
implementation "org.terasology:reflections:0.9.12-MB"
implementation("com.google.code.gson:gson:2.8.6")
implementation("org.codehaus.plexus:plexus-utils:3.0.16")
implementation("com.google.protobuf:protobuf-java:3.16.1")
implementation("org.terasology:reflections:0.9.12-MB")

implementation("org.terasology.joml-ext:joml-test:0.1.0")

Expand All @@ -77,7 +66,7 @@ dependencies {
api("com.google.truth:truth:1.1.3") {
because("we provide some helper classes")
}
implementation('org.mockito:mockito-core:5.6.0') {
implementation("org.mockito:mockito-core:5.6.0") {
because("classes like HeadlessEnvironment use mocks")
}
constraints {
Expand All @@ -90,47 +79,44 @@ dependencies {
}

//TODO: Remove it when gestalt will can to handle ProtectionDomain without classes (Resources)
task copyResourcesToClasses(type:Copy) {
from tasks.named("processResources")
into sourceSets.main.output.classesDirs.first()
tasks.register<Copy>("copyResourcesToClasses") {
from("processResources")
into(sourceSets["main"].output.classesDirs.first())
}

tasks.named("compileJava"){
dependsOn(copyResourcesToClasses)
tasks.named("compileJava") {
dependsOn("copyResourcesToClasses")
}

jar { // Workaround about previous copy to classes. idk why engine-tests:jar called before :engine ...
duplicatesStrategy = "EXCLUDE"
tasks.withType<Jar> {
// Workaround about previous copy to classes. idk why engine-tests:jar called before :engine ...
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
}

test {
dependsOn rootProject.extractNatives

description("Runs all tests (slow)")

tasks.named<Test>("test") {
dependsOn(tasks.getByPath(":extractNatives"))
description = "Runs all tests (slow)"
useJUnitPlatform ()
systemProperty("junit.jupiter.execution.timeout.default", "4m")
}

task unitTest(type: Test) {
dependsOn rootProject.extractNatives

group "Verification"
description("Runs unit tests (fast)")

tasks.register<Test>("unitTest") {
dependsOn(tasks.getByPath(":extractNatives"))
group = "Verification"
description = "Runs unit tests (fast)"
useJUnitPlatform {
excludeTags "MteTest", "TteTest"
excludeTags = setOf("MteTest", "TteTest")
}
systemProperty("junit.jupiter.execution.timeout.default", "1m")
}

task integrationTest(type: Test) {
dependsOn rootProject.extractNatives

group "Verification"
description("Runs integration tests (slow) tagged with 'MteTest' or 'TteTest'")
tasks.register<Test>("integrationTest") {
dependsOn(tasks.getByPath(":extractNatives"))
group = "Verification"
description = "Runs integration tests (slow) tagged with 'MteTest' or 'TteTest'"

useJUnitPlatform {
includeTags "MteTest", "TteTest"
includeTags = setOf("MteTest", "TteTest")
}
systemProperty("junit.jupiter.execution.timeout.default", "5m")
}
Expand All @@ -139,8 +125,8 @@ idea {
module {
// Change around the output a bit
inheritOutputDirs = false
outputDir = file('build/classes')
testOutputDir = file('build/testClasses')
downloadSources = true
outputDir = file("build/classes")
testOutputDir = file("build/testClasses")
isDownloadSources = true
}
}
Loading