Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1035)

Unified Diff: test/transformer_test.dart

Issue 923733002: Major refactor of the transformer, added an `InitializePlugin` class which allows you to hook direc… (Closed) Base URL: git@github.com:dart-lang/static-init.git@master
Patch Set: wrapup Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « test/plugin_transformer_test.dart ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/transformer_test.dart
diff --git a/test/transformer_test.dart b/test/transformer_test.dart
index ac3b25e91e7de622a71c7244359a3bf9469fd714..12e32598bc594aa0cb9ac468cdad074d8f39e614 100644
--- a/test/transformer_test.dart
+++ b/test/transformer_test.dart
@@ -4,19 +4,26 @@
library initialize.transformer_test;
import 'common.dart';
+import 'package:analyzer/src/generated/element.dart';
import 'package:dart_style/dart_style.dart';
import 'package:initialize/transformer.dart';
import 'package:unittest/compact_vm_config.dart';
+import 'package:unittest/unittest.dart';
+
+var formatter = new DartFormatter();
main() {
useCompactVMConfiguration();
- var formatter = new DartFormatter();
+ group('Html entry points', htmlEntryPointTests);
+ group('Dart entry points', dartEntryPointTests);
+ group('InitializerPlugins', pluginTests);
+}
- var htmlTransformer = new InitializeTransformer(['web/*.html']);
- var dartTransformer = new InitializeTransformer(['web/index.dart']);
+void htmlEntryPointTests() {
+ var phases = [[new InitializeTransformer(['web/*.html'])]];
- testPhases('basic', [[htmlTransformer]], {
+ testPhases('basic', phases, {
'a|web/index.html': '''
<html><head></head><body>
<script type="application/dart" src="index.dart"></script>
@@ -101,8 +108,12 @@ main() {
}
''')
}, []);
+}
- testPhases('constructor arguments', [[dartTransformer]], {
+void dartEntryPointTests() {
+ var phases = [[new InitializeTransformer(['web/index.dart'])]];
+
+ testPhases('constructor arguments', phases, {
'a|web/index.dart': '''
@DynamicInit(foo)
@DynamicInit(Foo.foo)
@@ -158,3 +169,65 @@ main() {
''')
}, []);
}
+
+class SkipConstructorsPlugin extends InitializerPlugin {
+ bool shouldApply(InitializerPluginData data) {
+ return data.initializer.annotationElement.element is ConstructorElement;
+ }
+
+ String apply(_) => null;
+}
+
+void pluginTests() {
+ var phases = [
+ [
+ new InitializeTransformer(['web/index.dart'],
+ plugins: [new SkipConstructorsPlugin()])
+ ]
+ ];
+
+ testPhases('can omit statements', phases, {
+ 'a|web/index.dart': '''
+ library index;
+
+ import 'package:initialize/initialize.dart';
+ import 'package:test_initializers/common.dart';
+ import 'foo.dart';
+
+ @initMethod
+ @DynamicInit('index')
+ index() {}
+ ''',
+ 'a|web/foo.dart': '''
+ library foo;
+
+ import 'package:initialize/initialize.dart';
+ import 'package:test_initializers/common.dart';
+
+ @initMethod
+ @DynamicInit('Foo')
+ foo() {}
+ ''',
+ // Mock out the Initialize package plus some initializers.
+ 'initialize|lib/initialize.dart': mockInitialize,
+ 'test_initializers|lib/common.dart': commonInitializers,
+ }, {
+ 'a|web/index.initialize.dart': formatter.format('''
+ import 'package:initialize/src/static_loader.dart';
+ import 'package:initialize/initialize.dart';
+ import 'index.dart' as i0;
+ import 'foo.dart' as i1;
+ import 'package:initialize/initialize.dart' as i2;
+ import 'package:test_initializers/common.dart' as i3;
+
+ main() {
+ initializers.addAll([
+ new InitEntry(i2.initMethod, i1.foo),
+ new InitEntry(i2.initMethod, i0.index),
+ ]);
+
+ i0.main();
+ }
+ ''')
+ }, []);
+}
« no previous file with comments | « test/plugin_transformer_test.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698