refactor(dart/transform): Test directive processor using protos
Directly test the `NgDepsModel` object created by the `DirectiveProcessor` rather than string comparing output Dart code.
This commit is contained in:
@ -19,7 +19,7 @@ Future<dynamic> initZoned(Transform t, _SimpleCallback fn) =>
|
||||
Future<dynamic> setZoned(BuildLogger logger, _SimpleCallback fn) async {
|
||||
return runZoned(() async {
|
||||
try {
|
||||
await fn();
|
||||
return await fn();
|
||||
} on AnalyzerError catch (e) {
|
||||
// Do not worry about printing the stack trace, barback will handle that
|
||||
// on its own when it catches the rethrown exception.
|
||||
|
@ -8,6 +8,7 @@ import 'package:angular2/src/transform/common/asset_reader.dart';
|
||||
import 'package:angular2/src/transform/common/async_string_writer.dart';
|
||||
import 'package:angular2/src/transform/common/code/ng_deps_code.dart';
|
||||
import 'package:angular2/src/transform/common/logging.dart';
|
||||
import 'package:angular2/src/transform/common/model/ng_deps_model.pb.dart';
|
||||
import 'package:angular2/src/transform/common/xhr_impl.dart';
|
||||
import 'package:angular2/src/transform/common/ng_meta.dart';
|
||||
import 'package:barback/barback.dart' show AssetId;
|
||||
@ -24,7 +25,7 @@ import 'inliner.dart';
|
||||
/// If no Angular 2 `Directive`s are found in `code`, returns the empty
|
||||
/// string unless `forceGenerate` is true, in which case an empty ngDeps
|
||||
/// file is created.
|
||||
Future<String> createNgDeps(AssetReader reader, AssetId assetId,
|
||||
Future<NgDepsModel> createNgDeps(AssetReader reader, AssetId assetId,
|
||||
AnnotationMatcher annotationMatcher, NgMeta ngMeta,
|
||||
{bool inlineViews}) async {
|
||||
// TODO(kegluneq): Shortcut if we can determine that there are no
|
||||
@ -64,10 +65,7 @@ Future<String> createNgDeps(AssetReader reader, AssetId assetId,
|
||||
await inlineViewProps(new XhrImpl(reader, assetId), ngDepsModel);
|
||||
}
|
||||
|
||||
var buffer = new StringBuffer();
|
||||
var ngDepsWriter = new NgDepsWriter(buffer);
|
||||
ngDepsWriter.writeNgDepsModel(ngDepsModel);
|
||||
return '$buffer';
|
||||
return ngDepsModel;
|
||||
}
|
||||
|
||||
/// Processes `visitor.parts`, reading and appending their contents to the
|
||||
|
@ -4,6 +4,7 @@ import 'dart:async';
|
||||
import 'dart:convert';
|
||||
|
||||
import 'package:angular2/src/transform/common/asset_reader.dart';
|
||||
import 'package:angular2/src/transform/common/code/ng_deps_code.dart';
|
||||
import 'package:angular2/src/transform/common/logging.dart' as log;
|
||||
import 'package:angular2/src/transform/common/names.dart';
|
||||
import 'package:angular2/src/transform/common/options.dart';
|
||||
@ -35,17 +36,20 @@ class DirectiveProcessor extends Transformer {
|
||||
var asset = transform.primaryInput;
|
||||
var reader = new AssetReader.fromTransform(transform);
|
||||
var ngMeta = new NgMeta.empty();
|
||||
var ngDepsSrc = await createNgDeps(
|
||||
var ngDepsModel = await createNgDeps(
|
||||
reader, asset.id, options.annotationMatcher, ngMeta,
|
||||
inlineViews: options.inlineViews);
|
||||
if (ngDepsSrc != null && ngDepsSrc.isNotEmpty) {
|
||||
if (ngDepsModel != null) {
|
||||
var ngDepsAssetId =
|
||||
transform.primaryInput.id.changeExtension(DEPS_EXTENSION);
|
||||
if (await transform.hasInput(ngDepsAssetId)) {
|
||||
log.logger.error('Clobbering ${ngDepsAssetId}. '
|
||||
'This probably will not end well');
|
||||
}
|
||||
transform.addOutput(new Asset.fromString(ngDepsAssetId, ngDepsSrc));
|
||||
var buf = new StringBuffer();
|
||||
var writer = new NgDepsWriter(buf);
|
||||
writer.writeNgDepsModel(ngDepsModel);
|
||||
transform.addOutput(new Asset.fromString(ngDepsAssetId, '$buf'));
|
||||
}
|
||||
if (!ngMeta.isEmpty) {
|
||||
var ngAliasesId =
|
||||
|
Reference in New Issue
Block a user