Skip to content

Commit

Permalink
Rewrite Transformations tests (#234)
Browse files Browse the repository at this point in the history
  • Loading branch information
TWiStErRob committed Mar 10, 2023
1 parent 07f350b commit f274368
Show file tree
Hide file tree
Showing 7 changed files with 202 additions and 117 deletions.
1 change: 1 addition & 0 deletions .idea/icon.png

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 5 additions & 5 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -25,16 +25,16 @@ idea {

// run `gradlew releaseCheck -x check -x connectedCheck` to just get the output of this
// CONSIDER deprecate this against `gradlew connectedCheck --continue mergeAndroidReports` from 'android-reporting'
task releaseCheck() {
dependsOn getTasksByName('check', true)
dependsOn ':android:connectedCheck'
tasks.register("releaseCheck") {
dependsOn(getTasksByName("check", true))
dependsOn(":android:connectedCheck")
doLast {
def report = { task, type, loc ->
if (file(loc).exists()) {
println "${task.path} ${type}: ${loc}"
}
}
println "================ Report Locations ================"
println("================ Report Locations ================")
/* TODO AGP 2.x to 3.x breaking changes
getTasksByName('lint', true).each {
new LintHelper(it).print(report)
Expand All @@ -43,7 +43,7 @@ task releaseCheck() {
getAllTasks(true)
.collectMany { it.value }
.findAll { it instanceof Test }
.each { Test task -> report(task, 'test', task.reports.html.entryPoint) }
.each { Test task -> report(task, "test", task.reports.html.entryPoint) }
}
}
/* TODO AGP 2.x to 3.x breaking changes
Expand Down
110 changes: 0 additions & 110 deletions tools/transform/build.gradle

This file was deleted.

130 changes: 130 additions & 0 deletions tools/transform/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
plugins {
id("org.gradle.java")
id("org.gradle.java-test-fixtures")
}

java {
sourceCompatibility = JavaVersion.VERSION_1_7
targetCompatibility = JavaVersion.VERSION_1_7
registerFeature("sharedIntegrationTests") {
usingSourceSet(sourceSets.create("integrationTest"))
@Suppress("UnstableApiUsage")
disablePublication()
}
}

dependencies {
integrationTestImplementation(project)
integrationTestImplementation(testFixtures(project))
integrationTestImplementation(libs.test.junit4)
}

// TODO Not using `org.gradle.test-report-aggregation`, because https://github.com/gradle/gradle/issues/24272.
val integrationTestAggregateTestReport by tasks.registering(TestReport::class) {
group = LifecycleBasePlugin.VERIFICATION_GROUP
description = "Generates aggregated test report for all integration tests."
// testResults.from(testing.suites*.targets*.testTask) added later when configuring the test suites.
destinationDirectory.convention(java.testReportDir.dir("integration-tests/aggregated-results"))
}

val integrationTests by tasks.registering {
// dependsOn("integration*Test") added later when configuring the test suites.
finalizedBy(integrationTestAggregateTestReport)
}

tasks.check.configure {
dependsOn(integrationTests)
dependsOn(integrationTestAggregateTestReport)
}

@Suppress("UnstableApiUsage")
testing.suites {
named<JvmTestSuite>("test").configure {
// Keep defaults.
}
registerIntegrationTest("java") {
dependencies {
// None, use default from JRE bootclasspath.
}
}
registerIntegrationTest("xalan") {
dependencies {
implementation(libs.xml.xalan)
}
}
registerIntegrationTest("saxon") {
dependencies {
implementation(libs.xml.saxon)
}
}
}

@Suppress("UnstableApiUsage")
fun NamedDomainObjectContainerScope<TestSuite>.registerIntegrationTest(
name: String,
configure: JvmTestSuite.() -> Unit
) {
register<JvmTestSuite>("${name}IntegrationTest") {
testType.set("${TestSuiteType.INTEGRATION_TEST}-${name}")
useJUnit(libs.versions.test.junit4)
dependencies {
implementation(project())
implementation(testFixtures(project()))
runtimeOnly(sharedIntegrationTests(project()))
}
targets.configureEach {
integrationTests.configure { dependsOn(testTask) }
integrationTestAggregateTestReport.configure { testResults.from(testTask) }
testTask.configure {
enableAssertions = true
//val dataXml = file("${rootDir}/../temp/test/data.xml")
systemProperty("net.twisterrob.inventory.transform.name", name)
fun Test.inputFile(prop: String, file: File) {
inputs.file(file)
.withPropertyName(prop)
.withPathSensitivity(PathSensitivity.RELATIVE)
systemProperty(prop, file)
}
inputFile(
"net.twisterrob.inventory.transform.xml",
project(":android:backup").file("src/main/assets/demo.xml")
)
inputFile(
"net.twisterrob.inventory.transform.xsd",
project(":android:backup").file("src/main/assets/data.xml.xsd")
)
inputFile(
"net.twisterrob.inventory.transform.xslt.html",
project(":android:backup").file("src/main/assets/data.html.xslt")
)
inputFile(
"net.twisterrob.inventory.transform.xslt.csv",
project(":android:backup").file("src/main/assets/data.csv.xslt")
)
val transformDir = layout.buildDirectory.file("transformed")
outputs.dir(transformDir).withPropertyName("transformDir")
systemProperty(
"net.twisterrob.inventory.transform.output",
transformDir.get().asFile
)
testClassesDirs = files(
testClassesDirs, // Keep original.
sourceSets["integrationTest"].output.classesDirs,
)
}
}
configure()
}
}

fun DependencyHandler.integrationTestImplementation(dependencyNotation: Any): Dependency? =
add("integrationTestImplementation", dependencyNotation)

fun sharedIntegrationTests(dependency: ProjectDependency): ProjectDependency {
dependency.capabilities {
// See org.gradle.internal.component.external.model.ProjectDerivedCapability
val project = dependency.dependencyProject
requireCapability("${project.group}:${project.name}-shared-integration-tests")
}
return dependency
}
2 changes: 0 additions & 2 deletions tools/transform/settings.gradle

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package net.twisterrob.build;

import java.io.IOException;

import javax.xml.transform.TransformerException;

import org.junit.Test;
import org.xml.sax.SAXException;

public class TransformTest {

@Test
public void transformHtml() throws IOException, TransformerException, SAXException {
TransformTestProperties props = new TransformTestProperties();
Transform.main(
props.getInputXml().getAbsolutePath(),
props.getXsd().getAbsolutePath(),
props.getXsltHtml().getAbsolutePath(),
props.getOutputHtml().getAbsolutePath()
);
}

@Test
public void transformCsv() throws IOException, TransformerException, SAXException {
TransformTestProperties props = new TransformTestProperties();
Transform.main(
props.getInputXml().getAbsolutePath(),
props.getXsd().getAbsolutePath(),
props.getXsltCsv().getAbsolutePath(),
props.getOutputCsv().getAbsolutePath()
);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package net.twisterrob.build;

import java.io.File;

public class TransformTestProperties {
File getInputXml() {
return new File(System.getProperty("net.twisterrob.inventory.transform.xml"));
}
File getXsd() {
return new File(System.getProperty("net.twisterrob.inventory.transform.xsd"));
}

File getName() {
return new File(System.getProperty("net.twisterrob.inventory.transform.name"));
}
File getOutputDir() {
return new File(System.getProperty("net.twisterrob.inventory.transform.output"));
}

File getXsltHtml() {
return new File(System.getProperty("net.twisterrob.inventory.transform.xslt.html"));
}
File getOutputHtml() {
return new File(getOutputDir(), "data-" + getName() + ".csv");
}

File getXsltCsv() {
return new File(System.getProperty("net.twisterrob.inventory.transform.xslt.csv"));
}
File getOutputCsv() {
return new File(getOutputDir(), "data-" + getName() + ".csv");
}
}

0 comments on commit f274368

Please sign in to comment.