diff options
Diffstat (limited to 'compilationTests/src/test')
2 files changed, 36 insertions, 3 deletions
diff --git a/compilationTests/src/test/java/android/databinding/compilationTest/BaseCompilationTest.java b/compilationTests/src/test/java/android/databinding/compilationTest/BaseCompilationTest.java index e008c828..08bfde50 100644 --- a/compilationTests/src/test/java/android/databinding/compilationTest/BaseCompilationTest.java +++ b/compilationTests/src/test/java/android/databinding/compilationTest/BaseCompilationTest.java @@ -25,10 +25,13 @@ import org.junit.rules.TestName; import android.databinding.tool.store.Location; +import java.io.BufferedInputStream; +import java.io.BufferedReader; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; +import java.io.InputStreamReader; import java.net.URISyntaxException; import java.net.URL; import java.util.ArrayList; @@ -258,8 +261,8 @@ public class BaseCompilationTest { } builder.directory(testFolder); Process process = builder.start(); - String output = IOUtils.toString(process.getInputStream()); - String error = IOUtils.toString(process.getErrorStream()); + String output = collect(process.getInputStream()); + String error = collect(process.getErrorStream()); int result = process.waitFor(); return new CompilationResult(result, output, error); } @@ -269,5 +272,16 @@ public class BaseCompilationTest { gw.setExecutable(true); } - + /** + * Use this instead of IO utils so that we can easily log the output when necessary + */ + private static String collect(InputStream stream) throws IOException { + StringBuilder sb = new StringBuilder(); + String line; + final BufferedReader reader = new BufferedReader(new InputStreamReader(stream)); + while ((line = reader.readLine()) != null) { + sb.append(line).append("\n"); + } + return sb.toString(); + } } diff --git a/compilationTests/src/test/java/android/databinding/compilationTest/SimpleCompilationTest.java b/compilationTests/src/test/java/android/databinding/compilationTest/SimpleCompilationTest.java index 84d4459f..229323ff 100644 --- a/compilationTests/src/test/java/android/databinding/compilationTest/SimpleCompilationTest.java +++ b/compilationTests/src/test/java/android/databinding/compilationTest/SimpleCompilationTest.java @@ -228,6 +228,25 @@ public class SimpleCompilationTest extends BaseCompilationTest { } @Test + public void testModuleDependencyChange() throws IOException, URISyntaxException, + InterruptedException { + prepareApp(toMap(KEY_DEPENDENCIES, "compile project(':module1')", + KEY_SETTINGS_INCLUDES, "include ':app'\ninclude ':module1'")); + prepareModule("module1", "com.example.module1", toMap( + KEY_DEPENDENCIES, "compile 'com.android.support:appcompat-v7:23.1.1'" + )); + copyResourceTo("/layout/basic_layout.xml", "/module1/src/main/res/layout/module_layout.xml"); + copyResourceTo("/layout/basic_layout.xml", "/app/src/main/res/layout/app_layout.xml"); + CompilationResult result = runGradle("assembleDebug"); + assertEquals(result.error, 0, result.resultCode); + File moduleFolder = new File(testFolder, "module1"); + copyResourceTo("/module_build.gradle", new File(moduleFolder, "build.gradle"), + toMap()); + result = runGradle("assembleDebug"); + assertEquals(result.error, 0, result.resultCode); + } + + @Test public void testTwoLevelDependency() throws IOException, URISyntaxException, InterruptedException { prepareApp(toMap(KEY_DEPENDENCIES, "compile project(':module1')", KEY_SETTINGS_INCLUDES, "include ':app'\ninclude ':module1'\n" |