Merge pull request #42 from dart-lang/0.6.2
update to analyzer 0.27.0 and the test package
diff --git a/CHANGELOG.md b/CHANGELOG.md
index b1dbc70..da0a5c4 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.6.2
+
+* Update analyzer to `>=0.27.0 <0.28.0`.
+
## 0.6.1+2
* Update analyzer to `<0.27.0` and dart_style to `<0.3.0`.
diff --git a/lib/build/initializer_plugin.dart b/lib/build/initializer_plugin.dart
index 8822dc4..efca427 100644
--- a/lib/build/initializer_plugin.dart
+++ b/lib/build/initializer_plugin.dart
@@ -4,6 +4,7 @@
library initialize.build.initializer_plugin;
import 'package:analyzer/src/generated/ast.dart';
+import 'package:analyzer/src/generated/constant.dart';
import 'package:analyzer/src/generated/element.dart';
import 'package:barback/barback.dart';
import 'package:code_transformers/resolver.dart';
@@ -58,10 +59,8 @@
/// [ElementAnnotation] that was found.
String buildMeta(InitializerPluginData pluginData) {
var logger = pluginData.logger;
- var element = pluginData.initializer.targetElement;
var elementAnnotation = pluginData.initializer.annotationElement;
var elementAnnotationElement = elementAnnotation.element;
- var libraryPrefixes = pluginData.libraryPrefixes;
if (elementAnnotationElement is ConstructorElement) {
return buildConstructorMeta(elementAnnotation, pluginData);
} else if (elementAnnotationElement is PropertyAccessorElement) {
@@ -264,7 +263,8 @@
return buffer.toString();
}
- _evaluateExpression(Expression expression, InitializerPluginData pluginData) {
+ _evaluateExpression(
+ Expression expression, InitializerPluginData pluginData) {
var logger = pluginData.logger;
var result = pluginData.resolver.evaluateConstant(
pluginData.initializer.targetElement.library, expression);
@@ -273,15 +273,17 @@
'And got the following errors: ${result.errors}.');
return null;
}
- var value = result.value.value;
+
+ var value = _getValue(result.value);
+
if (value == null) {
logger.error('Unsupported expression in initializer, found '
'$expression. Please file a bug at '
'https://github.com/dart-lang/initialize/issues');
- return null;
}
if (value is String) value = _stringValue(value);
+
return value;
}
@@ -291,4 +293,31 @@
value = value.replaceAll(r'\', r'\\').replaceAll(r"'", r"\'");
return "'$value'";
}
+
+ // Gets an actual value for a [DartObject].
+ _getValue(DartObject object) {
+ if (object == null) return null;
+ var value = object.toBoolValue() ??
+ object.toDoubleValue() ??
+ object.toIntValue() ??
+ object.toStringValue();
+ if (value == null) {
+ value = object.toListValue();
+ if (value != null) {
+ return value.map((DartObject element) => _getValue(element)).toList();
+ }
+ Map<DartObject, DartObject> map = object.toMapValue();
+ if (map != null) {
+ Map result = {};
+ map.forEach((DartObject key, DartObject value) {
+ dynamic mappedKey = _getValue(key);
+ if (mappedKey != null) {
+ result[mappedKey] = _getValue(value);
+ }
+ });
+ return result;
+ }
+ }
+ return value;
+ }
}
diff --git a/lib/transformer.dart b/lib/transformer.dart
index a1f01fa..4a3833a 100644
--- a/lib/transformer.dart
+++ b/lib/transformer.dart
@@ -237,7 +237,7 @@
if (element.metadata.isEmpty) return found;
var metaNodes;
- var node = element.node;
+ var node = element.computeNode();
if (node is SimpleIdentifier && node.parent is LibraryIdentifier) {
metaNodes = node.parent.parent.metadata;
} else if (node is ClassDeclaration || node is FunctionDeclaration) {
diff --git a/pubspec.yaml b/pubspec.yaml
index b9ade8b..fff4c58 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,12 +1,12 @@
name: initialize
-version: 0.6.1+2
+version: 0.6.2
author: Polymer.dart Authors <web@dartlang.org>
description: Generic building blocks for doing static initialization.
homepage: https://github.com/dart-lang/initialize
dependencies:
- analyzer: '>=0.15.6 <0.27.0'
+ analyzer: '>=0.27.0 <0.28.0'
barback: '>=0.14.2 <0.16.0'
- code_transformers: '>=0.2.7 <0.3.0'
+ code_transformers: '>=0.3.0 <0.4.0'
dart_style: '>=0.1.3 <0.3.0'
glob: ">=1.0.4 <2.0.0"
html: '>=0.12.0 <0.13.0'
@@ -14,7 +14,7 @@
dev_dependencies:
test_package:
path: test_package
- unittest: '>=0.10.0 <0.12.0'
+ test: '>=0.12.0 <0.13.0'
environment:
sdk: ">=1.9.0-dev.7.1 <2.0.0"
transformers:
@@ -32,5 +32,7 @@
- test/initializer_custom_filter_test.dart
- test/initializer_type_filter_test.dart
- test/init_method_test.dart
+- test/pub_serve:
+ $include: test/**_test{.*,}.dart
- $dart2js:
$exclude: '**/*.dart'
diff --git a/test/common.dart b/test/common.dart
index f121be5..d730bc9 100644
--- a/test/common.dart
+++ b/test/common.dart
@@ -5,7 +5,7 @@
import 'package:barback/barback.dart';
import 'package:code_transformers/src/test_harness.dart';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
testPhases(String testName, List<List<Transformer>> phases,
Map<String, String> inputFiles, Map<String, String> expectedFiles,
diff --git a/test/deferred_library_test.dart b/test/deferred_library_test.dart
index 2b480ae..b25fe0d 100644
--- a/test/deferred_library_test.dart
+++ b/test/deferred_library_test.dart
@@ -7,12 +7,9 @@
import 'foo.dart' deferred as foo;
import 'package:initialize/src/initialize_tracker.dart';
import 'package:initialize/initialize.dart';
-import 'package:unittest/unittest.dart';
-import 'package:unittest/compact_vm_config.dart';
+import 'package:test/test.dart';
main() {
- useCompactVMConfiguration();
-
test('annotations can be loaded lazily', () {
// Initialize everything not in deferred imports.
return run().then((_) {
diff --git a/test/init_method_test.dart b/test/init_method_test.dart
index 55fa282..ff88925 100644
--- a/test/init_method_test.dart
+++ b/test/init_method_test.dart
@@ -4,15 +4,12 @@
library initialize.init_method_test;
import 'package:initialize/initialize.dart';
-import 'package:unittest/unittest.dart';
-import 'package:unittest/compact_vm_config.dart';
+import 'package:test/test.dart';
int calledFoo = 0;
int calledBar = 0;
main() {
- useCompactVMConfiguration();
-
// Run all initializers.
run().then((_) {
test('initMethod annotation invokes functions once', () {
diff --git a/test/initializer_custom_filter_test.dart b/test/initializer_custom_filter_test.dart
index f8f789d..5280069 100644
--- a/test/initializer_custom_filter_test.dart
+++ b/test/initializer_custom_filter_test.dart
@@ -5,13 +5,10 @@
import 'dart:async';
import 'package:initialize/initialize.dart';
-import 'package:unittest/unittest.dart';
-import 'package:unittest/compact_vm_config.dart';
+import 'package:test/test.dart';
import 'package:initialize/src/initialize_tracker.dart';
main() {
- useCompactVMConfiguration();
-
test('filter option limits which types of annotations will be ran', () {
var originalSize;
return runPhase(1).then((_) {
diff --git a/test/initializer_cycle_error_test.dart b/test/initializer_cycle_error_test.dart
index bc5c8a3..4d9ea59 100644
--- a/test/initializer_cycle_error_test.dart
+++ b/test/initializer_cycle_error_test.dart
@@ -5,12 +5,9 @@
import 'cycle_a.dart'; // Causes a cycle.
import 'package:initialize/initialize.dart';
-import 'package:unittest/unittest.dart';
-import 'package:unittest/compact_vm_config.dart';
+import 'package:test/test.dart';
main() {
- useCompactVMConfiguration();
-
test('super class cycles are not supported', () {
expect(run, throwsUnsupportedError);
});
diff --git a/test/initializer_from_test.dart b/test/initializer_from_test.dart
index 30587f5..3b2362d 100644
--- a/test/initializer_from_test.dart
+++ b/test/initializer_from_test.dart
@@ -6,26 +6,29 @@
import 'package:initialize/src/initialize_tracker.dart';
import 'package:initialize/initialize.dart';
-import 'package:unittest/unittest.dart';
-import 'package:unittest/compact_vm_config.dart';
-import 'package:test_package/bar.dart'; // Used for annotations
+import 'package:test/test.dart';
+import 'package:test_package/bar.dart' as bar;
+/// Uses [bar]
main() {
- useCompactVMConfiguration();
+ test('The `from` option', () async {
+ final expectedNames = <LibraryIdentifier>[];
- test('The `from` option', () {
- var expectedNames = [];
- return run(from: Uri.parse('package:test_package/bar.dart')).then((_) {
- // First just run on the test packages bar.dart file.
- expectedNames.add(const LibraryIdentifier(
- #test_package.bar, 'test_package', 'bar.dart'));
- expect(InitializeTracker.seen, expectedNames);
- }).then((_) => run()).then((_) {
- // Now we run on the rest (just this file).
- expectedNames.add(const LibraryIdentifier(
- #initialize.test.initializer_from_test, null,
- 'initializer_from_test.dart'));
- expect(InitializeTracker.seen, expectedNames);
- });
+ // First just run on the test packages bar.dart file.
+ await run(from: Uri.parse('package:test_package/bar.dart'));
+ expectedNames.add(
+ const LibraryIdentifier(#test_package.bar, 'test_package', 'bar.dart'));
+ expect(InitializeTracker.seen, expectedNames);
+
+ // Now we run on the rest (just this file).
+ await run();
+ expect(InitializeTracker.seen.length, 2);
+ // Don't know what the path will be, so have to explicitly check fields
+ // and use an [endsWith] matcher for the path.
+ expect(InitializeTracker.seen[1].name,
+ #initialize.test.initializer_from_test);
+ expect(InitializeTracker.seen[1].package, isNull);
+ expect(
+ InitializeTracker.seen[1].path, endsWith('initializer_from_test.dart'));
});
}
diff --git a/test/initializer_parts_test.dart b/test/initializer_parts_test.dart
index fc77886..c296478 100644
--- a/test/initializer_parts_test.dart
+++ b/test/initializer_parts_test.dart
@@ -6,15 +6,12 @@
import 'package:initialize/src/initialize_tracker.dart';
import 'package:initialize/initialize.dart';
-import 'package:unittest/unittest.dart';
-import 'package:unittest/compact_vm_config.dart';
+import 'package:test/test.dart';
part 'parts/foo.dart';
part 'parts/bar.dart';
main() {
- useCompactVMConfiguration();
-
// Run all initializers.
run().then((_) {
test('parts', () {
diff --git a/test/initializer_super_test.dart b/test/initializer_super_test.dart
index 66e6e76..bb84100 100644
--- a/test/initializer_super_test.dart
+++ b/test/initializer_super_test.dart
@@ -5,12 +5,9 @@
import 'package:initialize/src/initialize_tracker.dart';
import 'package:initialize/initialize.dart';
-import 'package:unittest/unittest.dart';
-import 'package:unittest/compact_vm_config.dart';
+import 'package:test/test.dart';
main() {
- useCompactVMConfiguration();
-
// Run all initializers.
run().then((_) {
test('annotations are seen in post-order with superclasses first', () {
diff --git a/test/initializer_test.dart b/test/initializer_test.dart
index 1488b1d..927c3bb 100644
--- a/test/initializer_test.dart
+++ b/test/initializer_test.dart
@@ -8,12 +8,9 @@
import 'package:initialize/src/initialize_tracker.dart';
import 'package:initialize/initialize.dart';
import 'package:test_package/foo.dart';
-import 'package:unittest/unittest.dart';
-import 'package:unittest/compact_vm_config.dart';
+import 'package:test/test.dart';
main() {
- useCompactVMConfiguration();
-
// Run all initializers.
run().then((_) {
test('annotations are seen in post-order with superclasses first', () {
diff --git a/test/initializer_type_filter_test.dart b/test/initializer_type_filter_test.dart
index b5ebb92..baa0a6d 100644
--- a/test/initializer_type_filter_test.dart
+++ b/test/initializer_type_filter_test.dart
@@ -4,16 +4,13 @@
library initialize.initializer_type_filter_test;
import 'package:initialize/initialize.dart';
-import 'package:unittest/unittest.dart';
-import 'package:unittest/compact_vm_config.dart';
+import 'package:test/test.dart';
// Initializers will mess with this value, and it gets reset to 0 at the
// start of every test.
var total;
main() {
- useCompactVMConfiguration();
-
setUp(() {
total = 0;
});
diff --git a/test/transformer_test.dart b/test/transformer_test.dart
index 3b637c7..da80f4a 100644
--- a/test/transformer_test.dart
+++ b/test/transformer_test.dart
@@ -7,14 +7,11 @@
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';
+import 'package:test/test.dart';
var formatter = new DartFormatter();
main() {
- useCompactVMConfiguration();
-
group('Html entry points', htmlEntryPointTests);
group('Dart entry points', dartEntryPointTests);
group('InitializerPlugins', pluginTests);