Index: dart/compiler/javatests/com/google/dart/compiler/end2end/inc/IncrementalCompilationTest.java |
diff --git a/dart/compiler/javatests/com/google/dart/compiler/end2end/inc/IncrementalCompilationTest.java b/dart/compiler/javatests/com/google/dart/compiler/end2end/inc/IncrementalCompilationTest.java |
deleted file mode 100644 |
index ea7e9e172daaebf436d6fe46863a673f9352a2b5..0000000000000000000000000000000000000000 |
--- a/dart/compiler/javatests/com/google/dart/compiler/end2end/inc/IncrementalCompilationTest.java |
+++ /dev/null |
@@ -1,631 +0,0 @@ |
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
-// for details. All rights reserved. Use of this source code is governed by a |
-// BSD-style license that can be found in the LICENSE file. |
- |
-package com.google.dart.compiler.end2end.inc; |
- |
-import static com.google.dart.compiler.DartCompiler.EXTENSION_DEPS; |
-import static com.google.dart.compiler.DartCompiler.EXTENSION_TIMESTAMP; |
- |
-import com.google.common.collect.Lists; |
-import com.google.dart.compiler.CompilerTestCase; |
-import com.google.dart.compiler.DartCompilationError; |
-import com.google.dart.compiler.DartCompiler; |
-import com.google.dart.compiler.DartCompilerListener; |
-import com.google.dart.compiler.DefaultCompilerConfiguration; |
-import com.google.dart.compiler.LibrarySource; |
-import com.google.dart.compiler.MockArtifactProvider; |
-import com.google.dart.compiler.MockBundleLibrarySource; |
-import com.google.dart.compiler.Source; |
-import com.google.dart.compiler.util.apache.StringUtils; |
- |
-import junit.framework.AssertionFailedError; |
- |
-import java.io.IOException; |
-import java.io.Reader; |
-import java.io.Writer; |
-import java.util.List; |
-import java.util.Set; |
-import java.util.concurrent.ConcurrentSkipListSet; |
- |
-// TODO(zundel): update this test not to rely on code generation |
-public class IncrementalCompilationTest extends CompilerTestCase { |
- |
- private static final String TEST_BASE_PATH = "com/google/dart/compiler/end2end/inc/"; |
- private static final String TEST_APP = "my.app.dart"; |
- |
- static class IncMockArtifactProvider extends MockArtifactProvider { |
- Set<String> reads = new ConcurrentSkipListSet<String>(); |
- Set<String> writes = new ConcurrentSkipListSet<String>(); |
- |
- @Override |
- public Reader getArtifactReader(Source source, String part, String extension) { |
- reads.add(source.getName() + "/" + extension); |
- return super.getArtifactReader(source, part, extension); |
- } |
- |
- @Override |
- public Writer getArtifactWriter(Source source, String part, String extension) { |
- writes.add(source.getName() + "/" + extension); |
- return super.getArtifactWriter(source, part, extension); |
- } |
- |
- void resetReadsAndWrites() { |
- reads.clear(); |
- writes.clear(); |
- } |
- } |
- |
- private DefaultCompilerConfiguration config; |
- private IncMockArtifactProvider provider; |
- |
- private MockBundleLibrarySource myAppSource; |
- private MockBundleLibrarySource someLibSource; |
- private MockBundleLibrarySource someImplLibSource; |
- |
- private final List<DartCompilationError> errors = Lists.newArrayList(); |
- |
- @Override |
- protected void setUp() throws Exception { |
- config = new DefaultCompilerConfiguration() { |
- @Override |
- public boolean incremental() { |
- return true; |
- } |
- }; |
- provider = new IncMockArtifactProvider(); |
- |
- myAppSource = new MockBundleLibrarySource(IncrementalCompilationTest.class.getClassLoader(), |
- TEST_BASE_PATH, TEST_APP); |
- someLibSource = myAppSource.getImportFor("some.lib.dart"); |
- someImplLibSource = someLibSource.getImportFor("someimpl.lib.dart"); |
- } |
- |
- @Override |
- protected void tearDown() { |
- config = null; |
- provider = null; |
- myAppSource = null; |
- someLibSource = null; |
- someImplLibSource = null; |
- } |
- |
- public void testRemoveDeps() throws Exception { |
- compile(); |
- |
- MockBundleLibrarySource myNuke5AppSource = new MockBundleLibrarySource( |
- IncrementalCompilationTest.class.getClassLoader(), |
- TEST_BASE_PATH, "my.nuke5.app.dart", "my.app.dart"); |
- myNuke5AppSource.remapSource("mybase.dart", "mybase.no5ref.dart"); |
- myNuke5AppSource.remapSource("my.dart", "my.no5ref.dart"); |
- myNuke5AppSource.removeSource("myother5.dart"); |
- |
- compile(myNuke5AppSource); |
- } |
- |
- public void testFullCompile() { |
- compile(); |
- System.out.println(StringUtils.join(errors, "\n")); |
- |
- // Assert that all artifacts are written. |
- didWrite("someimpl.dart", EXTENSION_TIMESTAMP); |
- didWrite("someimpl.lib.dart", EXTENSION_DEPS); |
- |
- didWrite("some.dart", EXTENSION_TIMESTAMP); |
- didWrite("some.lib.dart", EXTENSION_DEPS); |
- |
- didWrite("my.dart", EXTENSION_TIMESTAMP); |
- didWrite("myother0.dart", EXTENSION_TIMESTAMP); |
- didWrite("myother1.dart", EXTENSION_TIMESTAMP); |
- didWrite("myother2.dart", EXTENSION_TIMESTAMP); |
- didWrite("my.app.dart", EXTENSION_DEPS); |
- didWrite("my.app.dart", EXTENSION_TIMESTAMP); |
- } |
- |
- public void testNoOpRecompile() { |
- compile(); |
- |
- provider.resetReadsAndWrites(); |
- compile(); |
- |
- // Assert we didn't write anything. |
- didNotWrite("someimpl.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("someimpl.lib.dart", EXTENSION_DEPS); |
- |
- didNotWrite("some.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("some.lib.dart", EXTENSION_DEPS); |
- |
- didNotWrite("my.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("myother0.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("myother1.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("myother2.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("my.app.dart", EXTENSION_DEPS); |
- didNotWrite("my.app.dart", EXTENSION_TIMESTAMP); |
- } |
- |
- public void testTouchOneSource() { |
- compile(); |
- |
- provider.resetReadsAndWrites(); |
- myAppSource.touchSource("my.dart"); |
- compile(); |
- |
- // We just bumped the timestamp on my.dart, so only my.dart.js and my.app.js should be changed. |
- // At present, the app's deps and api will be rewritten. This might be optimized later. |
- didWrite("my.dart", EXTENSION_TIMESTAMP); |
- didWrite("my.app.dart", EXTENSION_DEPS); |
- |
- // Nothing else should have changed. |
- didNotWrite("someimpl.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("someimpl.lib.dart", EXTENSION_DEPS); |
- |
- didNotWrite("some.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("some.lib.dart", EXTENSION_DEPS); |
- |
- didNotWrite("myother0.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("myother1.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("myother2.dart", EXTENSION_TIMESTAMP); |
- } |
- |
- public void testNormalizationTracking() { |
- compile(); |
- |
- provider.resetReadsAndWrites(); |
- myAppSource.touchSource("myother7.dart"); |
- compile(); |
- |
- // Test against normalization having an effect on hashcodes |
- // SomeInterface2 is an empty interface that can have an extra default constructor added by |
- // the dartc backend normalization process. By depending on a class that implements the interface, |
- // my.app.dart.deps will transitively depend on the empty interface. If something changes |
- // with how hashcodes are generated, this test should be updated. |
- |
- // We just bumped the timestamp on myother7.dart, so only myother7.dart.js and my.app.js should |
- // be changed. At present, the app's deps and api will be rewritten. |
- |
- didWrite("myother7.dart", EXTENSION_TIMESTAMP); |
- didWrite("my.app.dart", EXTENSION_DEPS); |
- |
- // Nothing else should have changed. |
- didNotWrite("my.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("someimpl.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("someimpl.lib.dart", EXTENSION_DEPS); |
- |
- didNotWrite("some.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("some.lib.dart", EXTENSION_DEPS); |
- |
- didNotWrite("myother0.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("myother1.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("myother2.dart", EXTENSION_TIMESTAMP); |
- } |
- |
- public void testKnockout_timestamp() { |
- compile(); |
- |
- provider.resetReadsAndWrites(); |
- provider.removeArtifact("my.dart", "", EXTENSION_TIMESTAMP); |
- compile(); |
- |
- // At present, knocking out a js artifact will force an update of the library's api and |
- // deps. This could be optimized. |
- didWrite("my.dart", EXTENSION_TIMESTAMP); |
- |
- // Assert that everything else was left alone. |
- didNotWrite("someimpl.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("someimpl.lib.dart", EXTENSION_DEPS); |
- |
- didNotWrite("some.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("some.lib.dart", EXTENSION_DEPS); |
- |
- didNotWrite("myother0.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("myother1.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("myother2.dart", EXTENSION_TIMESTAMP); |
- } |
- |
- public void testChangeImplementation_methodBody() { |
- compile(); |
- |
- provider.resetReadsAndWrites(); |
- someImplLibSource.remapSource("someimpl.dart", "someimpl.bodychange.dart"); |
- compile(); |
- |
- // Changed someimpl.dart, so it, its library, and the compiled app should be written. |
- didWrite("someimpl.dart", EXTENSION_TIMESTAMP); |
- didWrite("someimpl.lib.dart", EXTENSION_DEPS); |
- |
- // We've switched to (unit -> unit) dependency, so should be recompiled too. |
- didWrite("some.dart", EXTENSION_TIMESTAMP); |
- didWrite("some.lib.dart", EXTENSION_DEPS); |
- |
- didNotWrite("my.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("myother0.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("myother1.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("myother2.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("my.app.dart", EXTENSION_DEPS); |
- } |
- |
- public void testChangeApi_newStaticMethod() { |
- compile(); |
- |
- provider.resetReadsAndWrites(); |
- myAppSource.remapSource("myother0.dart", "myother0.newstaticmethod.dart"); |
- compile(); |
- |
- // Added a new static method to Other0, which should force a recompile of my.dart, |
- // because the latter contains a reference to one of its static methods. |
- didWrite("my.dart", EXTENSION_TIMESTAMP); |
- didWrite("myother0.dart", EXTENSION_TIMESTAMP); |
- didWrite("my.app.dart", EXTENSION_DEPS); |
- |
- didNotWrite("someimpl.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("someimpl.lib.dart", EXTENSION_DEPS); |
- |
- didNotWrite("some.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("some.lib.dart", EXTENSION_DEPS); |
- |
- didNotWrite("myother1.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("myother2.dart", EXTENSION_TIMESTAMP); |
- } |
- |
- public void testChangeApi_staticFieldRef() { |
- compile(); |
- |
- provider.resetReadsAndWrites(); |
- myAppSource.remapSource("myother3.dart", "myother3.newstaticfield.dart"); |
- compile(); |
- |
- // Added a new static field to Other0, which should force a recompile of my.dart, |
- // because the latter contains a reference to one of its static methods. |
- didWrite("my.dart", EXTENSION_TIMESTAMP); |
- didWrite("myother3.dart", EXTENSION_TIMESTAMP); |
- didWrite("my.app.dart", EXTENSION_DEPS); |
- |
- didNotWrite("someimpl.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("someimpl.lib.dart", EXTENSION_DEPS); |
- |
- didNotWrite("some.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("some.lib.dart", EXTENSION_DEPS); |
- |
- didNotWrite("myother0.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("myother1.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("myother2.dart", EXTENSION_TIMESTAMP); |
- } |
- |
- public void testChangeApi_viaTypeParamBound() { |
- compile(); |
- |
- provider.resetReadsAndWrites(); |
- myAppSource.remapSource("myother4.dart", "myother4.newstaticfield.dart"); |
- compile(); |
- |
- // Added a new static field to Other0, which should force a recompile of my.dart, |
- // because the latter contains a reference to one of its static methods. |
- didWrite("my.dart", EXTENSION_TIMESTAMP); |
- didWrite("myother4.dart", EXTENSION_TIMESTAMP); |
- didWrite("my.app.dart", EXTENSION_DEPS); |
- |
- didNotWrite("someimpl.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("someimpl.lib.dart", EXTENSION_DEPS); |
- |
- didNotWrite("some.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("some.lib.dart", EXTENSION_DEPS); |
- |
- didNotWrite("myother0.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("myother1.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("myother2.dart", EXTENSION_TIMESTAMP); |
- } |
- |
- public void testChangeApi_returnTypeChange() { |
- compile(); |
- |
- provider.resetReadsAndWrites(); |
- myAppSource.remapSource("myother0.dart", "myother0.returntypechange.dart"); |
- compile(); |
- |
- // Changed a return type in Other0, which should force a recompile of my.dart, |
- // because the latter contains a reference to one of its static methods. |
- didWrite("my.dart", EXTENSION_TIMESTAMP); |
- didWrite("myother0.dart", EXTENSION_TIMESTAMP); |
- didWrite("my.app.dart", EXTENSION_DEPS); |
- |
- didNotWrite("someimpl.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("someimpl.lib.dart", EXTENSION_DEPS); |
- |
- didNotWrite("some.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("some.lib.dart", EXTENSION_DEPS); |
- |
- didNotWrite("myother1.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("myother2.dart", EXTENSION_TIMESTAMP); |
- } |
- |
- public void testChangeApi_globalVarChange() { |
- compile(); |
- |
- provider.resetReadsAndWrites(); |
- myAppSource.remapSource("myother0.dart", "myother0.globalvarchange.dart"); |
- compile(); |
- |
- // Changed a top-level variable type in Other0, which should force a recompile of my.dart, |
- // because the latter contains a reference to one of its static methods. |
- didWrite("my.dart", EXTENSION_TIMESTAMP); |
- didWrite("myother0.dart", EXTENSION_TIMESTAMP); |
- didWrite("my.app.dart", EXTENSION_DEPS); |
- } |
- |
- public void testChangeApi_globalFunctionChange() { |
- compile(); |
- |
- provider.resetReadsAndWrites(); |
- myAppSource.remapSource("myother0.dart", "myother0.globalfunctionchange.dart"); |
- compile(); |
- |
- // Changed a return type in Other0, which should force a recompile of my.dart, |
- // because the latter contains a reference to one of its static methods. |
- didWrite("my.dart", EXTENSION_TIMESTAMP); |
- didWrite("myother0.dart", EXTENSION_TIMESTAMP); |
- didWrite("my.app.dart", EXTENSION_DEPS); |
- } |
- |
- public void testChangeApi_viaNew() { |
- compile(); |
- |
- provider.resetReadsAndWrites(); |
- myAppSource.remapSource("myother1.dart", "myother1.change.dart"); |
- compile(); |
- |
- // Changed the api of Other1, which should force a recompile of my.dart, |
- // because the latter instantiates one of its classes. |
- didWrite("my.dart", EXTENSION_TIMESTAMP); |
- didWrite("myother1.dart", EXTENSION_TIMESTAMP); |
- didWrite("my.app.dart", EXTENSION_DEPS); |
- |
- didNotWrite("someimpl.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("someimpl.lib.dart", EXTENSION_DEPS); |
- |
- didNotWrite("some.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("some.lib.dart", EXTENSION_DEPS); |
- |
- didNotWrite("myother0.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("myother2.dart", EXTENSION_TIMESTAMP); |
- } |
- |
- public void testChangeApi_viaSubclassing() { |
- compile(); |
- |
- provider.resetReadsAndWrites(); |
- myAppSource.remapSource("myother2.dart", "myother2.change.dart"); |
- compile(); |
- |
- // Changed the api of Other2, which should force a recompile of my.dart, |
- // because the latter subclasses one of its classes. |
- didWrite("my.dart", EXTENSION_TIMESTAMP); |
- didWrite("myother2.dart", EXTENSION_TIMESTAMP); |
- didWrite("my.app.dart", EXTENSION_DEPS); |
- |
- didNotWrite("someimpl.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("someimpl.lib.dart", EXTENSION_DEPS); |
- |
- didNotWrite("some.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("some.lib.dart", EXTENSION_DEPS); |
- |
- didNotWrite("myother0.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("myother1.dart", EXTENSION_TIMESTAMP); |
- } |
- |
- public void testChangeApi_inLibrary() { |
- compile(); |
- |
- provider.resetReadsAndWrites(); |
- someLibSource.remapSource("some.dart", "some.newmethod.dart"); |
- someImplLibSource.remapSource("someimpl.dart", "someimpl.change.dart"); |
- compile(); |
- |
- // We changed both the interface and implementation libraries, so almost everything should have |
- // been recompiled. |
- didWrite("someimpl.dart", EXTENSION_TIMESTAMP); |
- didWrite("someimpl.lib.dart", EXTENSION_DEPS); |
- |
- didWrite("some.dart", EXTENSION_TIMESTAMP); |
- didWrite("some.lib.dart", EXTENSION_DEPS); |
- |
- didWrite("my.dart", EXTENSION_TIMESTAMP); |
- didWrite("my.app.dart", EXTENSION_DEPS); |
- |
- // Except the "others", which have no dependency on the library. |
- didNotWrite("myother0.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("myother1.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("myother2.dart", EXTENSION_TIMESTAMP); |
- } |
- |
- public void testChangeApi_inImplLibrary() { |
- compile(); |
- |
- provider.resetReadsAndWrites(); |
- someImplLibSource.remapSource("someimpl.dart", "someimpl.change.dart"); |
- compile(); |
- |
- // Assert that only the interface and implementation library were recompiled. |
- didWrite("someimpl.dart", EXTENSION_TIMESTAMP); |
- didWrite("someimpl.lib.dart", EXTENSION_DEPS); |
- |
- didWrite("some.dart", EXTENSION_TIMESTAMP); |
- didWrite("some.lib.dart", EXTENSION_DEPS); |
- |
- // The app should remain untouched. |
- didNotWrite("myother0.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("myother1.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("myother2.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("my.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("my.app.dart", EXTENSION_DEPS); |
- } |
- |
- public void testChangeApi_inInterface() { |
- compile(); |
- |
- provider.resetReadsAndWrites(); |
- someLibSource.remapSource("some.dart", "some.intfchange.dart"); |
- compile(); |
- |
- didNotWrite("myother0.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("myother1.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("myother2.dart", EXTENSION_TIMESTAMP); |
- |
- // Assert we recompiled both some.dart and someimpl.dart, as well as my.dart. |
- // (someimpl.dart is recompiled because its interface in some.dart changed) |
- didWrite("someimpl.dart", EXTENSION_TIMESTAMP); |
- didWrite("someimpl.lib.dart", EXTENSION_DEPS); |
- |
- didWrite("some.dart", EXTENSION_TIMESTAMP); |
- didWrite("some.lib.dart", EXTENSION_DEPS); |
- |
- didWrite("my.dart", EXTENSION_TIMESTAMP); |
- didWrite("my.app.dart", EXTENSION_DEPS); |
- } |
- |
- // TODO(jgw): Bug 5319907. |
- public void disabled_testFieldHole() { |
- compile(); |
- |
- provider.resetReadsAndWrites(); |
- myAppSource.remapSource("myother0.dart", "myother0.fillthehole.dart"); |
- compile(); |
- |
- didNotWrite("someimpl.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("someimpl.lib.dart", EXTENSION_DEPS); |
- |
- didNotWrite("some.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("some.lib.dart", EXTENSION_DEPS); |
- |
- didNotWrite("myother1.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("myother2.dart", EXTENSION_TIMESTAMP); |
- |
- // Both myother0.dart and my.dart should be recompiled. |
- didWrite("my.dart", EXTENSION_TIMESTAMP); |
- didWrite("myother0.dart", EXTENSION_TIMESTAMP); |
- didWrite("my.app.dart", EXTENSION_DEPS); |
- } |
- |
- public void testMethodHole() { |
- compile(); |
- |
- provider.resetReadsAndWrites(); |
- myAppSource.remapSource("myother0.dart", "myother0.fillthemethodhole.dart"); |
- compile(); |
- } |
- |
- public void testQualifiedFieldRef() { |
- compile(); |
- |
- provider.resetReadsAndWrites(); |
- myAppSource.remapSource("myother5.dart", "myother5.change.dart"); |
- compile(); |
- |
- // Changed the api of Other5, which should force a recompile of my.dart, |
- // because the latter includes a qualified reference to one of its instance fields. |
- didWrite("my.dart", EXTENSION_TIMESTAMP); |
- didWrite("myother5.dart", EXTENSION_TIMESTAMP); |
- didWrite("my.app.dart", EXTENSION_DEPS); |
- |
- didNotWrite("someimpl.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("someimpl.lib.dart", EXTENSION_DEPS); |
- |
- didNotWrite("some.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("some.lib.dart", EXTENSION_DEPS); |
- |
- didNotWrite("myother0.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("myother1.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("myother2.dart", EXTENSION_TIMESTAMP); |
- } |
- |
- public void testQualifiedMethodRef() { |
- compile(); |
- |
- provider.resetReadsAndWrites(); |
- myAppSource.remapSource("myother6.dart", "myother6.change.dart"); |
- compile(); |
- |
- // Changed the api of Other6, which should force a recompile of my.dart, |
- // because the latter includes a qualified reference to one of its instance methods. |
- didWrite("my.dart", EXTENSION_TIMESTAMP); |
- didWrite("myother6.dart", EXTENSION_TIMESTAMP); |
- didWrite("my.app.dart", EXTENSION_DEPS); |
- |
- didNotWrite("someimpl.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("someimpl.lib.dart", EXTENSION_DEPS); |
- |
- didNotWrite("some.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("some.lib.dart", EXTENSION_DEPS); |
- |
- didNotWrite("myother0.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("myother1.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("myother2.dart", EXTENSION_TIMESTAMP); |
- } |
- |
- public void testRemoveDepClass() { |
- compile(); |
- |
- provider.resetReadsAndWrites(); |
- myAppSource.remapSource("myother5.dart", "myother5.change.dart"); |
- myAppSource.remapSource("myother6.dart", "myother6.removeclass.dart"); |
- compile(); |
- |
- // Changed myother6.dart, which should force a recompile of myother5.dart, |
- // because the latter had a qualified reference to one of its classes. |
- didWrite("myother5.dart", EXTENSION_TIMESTAMP); |
- didWrite("myother6.dart", EXTENSION_TIMESTAMP); |
- |
- didWrite("my.dart", EXTENSION_TIMESTAMP); |
- // Because of the previous changes my.app.dart is also recompile. |
- didWrite("my.app.dart", EXTENSION_DEPS); |
- |
- // No changes in not related units. |
- didNotWrite("someimpl.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("someimpl.lib.dart", EXTENSION_DEPS); |
- |
- didNotWrite("some.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("some.lib.dart", EXTENSION_DEPS); |
- |
- didNotWrite("myother0.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("myother1.dart", EXTENSION_TIMESTAMP); |
- didNotWrite("myother2.dart", EXTENSION_TIMESTAMP); |
- } |
- |
- public void testMergeFiles() throws Exception { |
- compile(); |
- |
- MockBundleLibrarySource myMergedAppSource = new MockBundleLibrarySource( |
- IncrementalCompilationTest.class.getClassLoader(), |
- TEST_BASE_PATH, "my.merged.app.dart", "my.app.dart"); |
- |
- compile(myMergedAppSource); |
- } |
- |
- private void compile() { |
- compile(myAppSource); |
- } |
- |
- private void compile(LibrarySource lib) { |
- try { |
- errors.clear(); |
- DartCompilerListener listener = new DartCompilerListener.Empty() { |
- @Override |
- public void onError(DartCompilationError event) { |
- errors.add(event); |
- } |
- }; |
- DartCompiler.compileLib(lib, config, provider, listener); |
- } catch (IOException e) { |
- throw new AssertionFailedError("Unexpected IOException: " + e.getMessage()); |
- } |
- } |
- |
- private void didWrite(String sourceName, String extension) { |
- String spec = sourceName + "/" + extension; |
- assertTrue("Expected write: " + spec, provider.writes.contains(spec)); |
- } |
- |
- private void didNotWrite(String sourceName, String extension) { |
- String spec = sourceName + "/" + extension; |
- assertFalse("Didn't expect write: " + spec, provider.writes.contains(spec)); |
- } |
-} |