diff --git a/subprojects/smoke-test/smoke-test.gradle.kts b/subprojects/smoke-test/smoke-test.gradle.kts index 49124c93a684..ec7ec7efcfe9 100644 --- a/subprojects/smoke-test/smoke-test.gradle.kts +++ b/subprojects/smoke-test/smoke-test.gradle.kts @@ -55,6 +55,9 @@ dependencies { smokeTestImplementation(project(":persistentCache")) smokeTestImplementation(library("commons_io")) smokeTestImplementation(library("jgit")) + smokeTestImplementation(library("gradleProfiler")) { + because("Using build mutators to change a Java file") + } smokeTestImplementation(testLibrary("spock")) val allTestRuntimeDependencies: DependencySet by rootProject.extra diff --git a/subprojects/smoke-test/src/smokeTest/groovy/org/gradle/smoketests/AndroidPluginsSmokeTest.groovy b/subprojects/smoke-test/src/smokeTest/groovy/org/gradle/smoketests/AndroidPluginsSmokeTest.groovy index 28b68a77349e..7fabe4acb9fd 100644 --- a/subprojects/smoke-test/src/smokeTest/groovy/org/gradle/smoketests/AndroidPluginsSmokeTest.groovy +++ b/subprojects/smoke-test/src/smokeTest/groovy/org/gradle/smoketests/AndroidPluginsSmokeTest.groovy @@ -123,6 +123,12 @@ class AndroidPluginsSmokeTest extends AbstractSmokeTest { """.stripIndent() writeActivity(app, appPackage, appActivity) + file("${app}/src/main/java/UsesLibraryActivity.java") << """ + public class UsesLibraryActivity { + public void consume(${libPackage}.${libraryActivity} activity) { + } + } + """ file("${app}/src/main/AndroidManifest.xml") << """ @@ -192,6 +198,14 @@ class AndroidPluginsSmokeTest extends AbstractSmokeTest { expectNoDeprecationWarnings(result) } + when: 'abi change on library' + writeActivity(library, libPackage, libraryActivity, true) + result = runner('build', '-x', 'lint').build() + + then: 'dependent sources are recompiled' + result.task(':library:compileReleaseJavaWithJavac').outcome == TaskOutcome.SUCCESS + result.task(':app:compileReleaseJavaWithJavac').outcome == TaskOutcome.SUCCESS + where: pluginVersion << TestedVersions.androidGradle } @@ -219,10 +233,10 @@ class AndroidPluginsSmokeTest extends AbstractSmokeTest { """.stripIndent() } - private writeActivity(String basedir, String packageName, String className) { + private writeActivity(String basedir, String packageName, String className, changed = false) { String resourceName = className.toLowerCase() - file("${basedir}/src/main/java/${packageName.replaceAll('\\.', '/')}/HelloActivity.java") << """ + file("${basedir}/src/main/java/${packageName.replaceAll('\\.', '/')}/${className}.java").text = """ package ${packageName}; import org.joda.time.LocalTime; @@ -231,7 +245,7 @@ class AndroidPluginsSmokeTest extends AbstractSmokeTest { import android.os.Bundle; import android.widget.TextView; - public class HelloActivity extends Activity { + public class ${className} extends Activity { @Override public void onCreate(Bundle savedInstanceState) { @@ -247,9 +261,10 @@ class AndroidPluginsSmokeTest extends AbstractSmokeTest { textView.setText("The current local time is: " + currentTime); } + ${changed ? "public void doStuff() {}" : ""} }""".stripIndent() - file("${basedir}/src/main/res/layout/${resourceName}_layout.xml") << ''' + file("${basedir}/src/main/res/layout/${resourceName}_layout.xml").text = '''