fix(transformer): remove classDefParser in favor of hardcoded strings to speed up build
This commit is contained in:
@@ -2,8 +2,8 @@ library angular2.test.transform.directive_processor.all_tests;
|
||||
|
||||
import 'package:barback/barback.dart';
|
||||
import 'package:angular2/src/transform/directive_processor/rewriter.dart';
|
||||
import 'package:angular2/src/transform/common/annotation_matcher.dart';
|
||||
import '../common/read_file.dart';
|
||||
import 'package:angular2/src/transform/common/classdef_parser.dart';
|
||||
import 'package:dart_style/dart_style.dart';
|
||||
import 'package:guinness/guinness.dart';
|
||||
import 'package:path/path.dart' as path;
|
||||
@@ -18,28 +18,40 @@ void allTests() {
|
||||
_testNgDeps('should preserve parameter annotations as const instances.',
|
||||
'parameter_metadata/soup.dart');
|
||||
|
||||
_testNgDeps('should recognize annotations which extend Injectable.',
|
||||
'custom_metadata/tortilla_soup.dart');
|
||||
_testNgDeps('should recognize custom annotations with package: imports',
|
||||
'custom_metadata/package_soup.dart',
|
||||
customDescriptors: [
|
||||
const AnnotationDescriptor('Soup', 'package:soup/soup.dart', 'Component'),
|
||||
]);
|
||||
|
||||
_testNgDeps('should recognize annotations which implement Injectable.',
|
||||
'custom_metadata/chicken_soup.dart');
|
||||
_testNgDeps('should recognize custom annotations with relative imports',
|
||||
'custom_metadata/relative_soup.dart',
|
||||
assetId: new AssetId('soup', 'lib/relative_soup.dart'),
|
||||
customDescriptors: [
|
||||
const AnnotationDescriptor(
|
||||
'Soup', 'package:soup/annotations/soup.dart', 'Component'),
|
||||
]);
|
||||
|
||||
_testNgDeps(
|
||||
'should recognize annotations which implement a class that extends '
|
||||
'Injectable.', 'custom_metadata/chicken_soup.dart');
|
||||
_testNgDeps('Requires the specified import.', 'custom_metadata/bad_soup.dart',
|
||||
customDescriptors: [
|
||||
const AnnotationDescriptor('Soup', 'package:soup/soup.dart', 'Component'),
|
||||
]);
|
||||
}
|
||||
|
||||
void _testNgDeps(String name, String inputPath) {
|
||||
void _testNgDeps(String name, String inputPath,
|
||||
{List<AnnotationDescriptor> customDescriptors: const [], AssetId assetId}) {
|
||||
it(name, () async {
|
||||
var inputId = _assetIdForPath(inputPath);
|
||||
var reader = new TestAssetReader();
|
||||
var defMap = await createTypeMap(reader, inputId);
|
||||
var input = await reader.readAsString(inputId);
|
||||
var output = formatter.format(createNgDeps(input, inputPath, defMap));
|
||||
var annotationMatcher = new AnnotationMatcher()..addAll(customDescriptors);
|
||||
var proxyInputId = assetId != null ? assetId : inputId;
|
||||
var output =
|
||||
formatter.format(createNgDeps(input, proxyInputId, annotationMatcher));
|
||||
var expectedPath = path.join(path.dirname(inputPath), 'expected',
|
||||
path.basename(inputPath).replaceFirst('.dart', '.ng_deps.dart'));
|
||||
var expected = await reader.readAsString(_assetIdForPath(expectedPath));
|
||||
expect(output).toEqual(expected);
|
||||
var expectedId = _assetIdForPath(expectedPath);
|
||||
expect(output).toEqual(await reader.readAsString(expectedId));
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
library dinner.bad_soup;
|
||||
|
||||
// No recognized import for [Soup]
|
||||
|
||||
@Soup()
|
||||
class BadSoup {
|
||||
BadSoup();
|
||||
}
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
library dinner.bad_soup.ng_deps.dart;
|
||||
|
||||
import 'bad_soup.dart';
|
||||
|
||||
var _visited = false;
|
||||
void initReflector(reflector) {
|
||||
if (_visited) return;
|
||||
_visited = true;
|
||||
}
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
library dinner.package_soup.ng_deps.dart;
|
||||
|
||||
import 'package_soup.dart';
|
||||
import 'package:soup/soup.dart';
|
||||
|
||||
var _visited = false;
|
||||
void initReflector(reflector) {
|
||||
if (_visited) return;
|
||||
_visited = true;
|
||||
reflector
|
||||
..registerType(PackageSoup, {
|
||||
'factory': () => new PackageSoup(),
|
||||
'parameters': const [],
|
||||
'annotations': const [const Soup()]
|
||||
});
|
||||
}
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
library dinner.relative_soup.ng_deps.dart;
|
||||
|
||||
import 'relative_soup.dart';
|
||||
import 'annotations/soup.dart';
|
||||
|
||||
var _visited = false;
|
||||
void initReflector(reflector) {
|
||||
if (_visited) return;
|
||||
_visited = true;
|
||||
reflector
|
||||
..registerType(RelativeSoup, {
|
||||
'factory': () => new RelativeSoup(),
|
||||
'parameters': const [],
|
||||
'annotations': const [const Soup()]
|
||||
});
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
library dinner.package_soup;
|
||||
|
||||
import 'package:soup/soup.dart';
|
||||
|
||||
@Soup()
|
||||
class PackageSoup {
|
||||
PackageSoup();
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
library dinner.relative_soup;
|
||||
|
||||
import 'annotations/soup.dart';
|
||||
|
||||
@Soup()
|
||||
class RelativeSoup {
|
||||
RelativeSoup();
|
||||
}
|
||||
Reference in New Issue
Block a user