fix(dart/transform): Gracefully handle empty .ng_meta.json files

Fix the `template_compiler` step to gracefully handle null & empty
.ng_meta.json files.
This commit is contained in:
Tim Blasi 2015-10-29 10:59:48 -07:00
parent 7d83959be5
commit a87c5d989c
3 changed files with 31 additions and 2 deletions

View File

@ -22,8 +22,8 @@ import 'package:barback/barback.dart';
Future<CompileDataResults> createCompileData(
AssetReader reader, AssetId assetId) async {
return logElapsedAsync(() async {
return (await _CompileDataCreator.create(reader, assetId))
.createCompileData();
final creator = await _CompileDataCreator.create(reader, assetId);
return creator != null ? creator.createCompileData() : null;
}, operationName: 'createCompileData', assetId: assetId);
}

View File

@ -28,6 +28,7 @@ import 'compile_data_creator.dart';
Future<Outputs> processTemplates(AssetReader reader, AssetId assetId,
{bool reflectPropertiesAsAttributes: false}) async {
var viewDefResults = await createCompileData(reader, assetId);
if (viewDefResults == null) return null;
final directiveMetadatas = viewDefResults.ngMeta.types.values;
if (directiveMetadatas.isNotEmpty) {
var processor = new reg.Processor();

View File

@ -318,6 +318,34 @@ void allTests() {
expect(ngDeps.setters).toContain('text');
expect(ngDeps.setters.length).toEqual(1);
});
it('should gracefully handle null .ng_meta.json files', () async {
final dne =
new AssetId('package', 'lib/file_that_does_not_exist.ng_meta.json');
var didThrow = false;
await process(dne).then((out) {
expect(out).toBeNull();
}).catchError((_) {
didThrow = true;
});
expect(didThrow).toBeFalse();
});
it('should gracefully handle empty .ng_meta.json files', () async {
final emptyId = new AssetId('package', 'lib/empty.ng_meta.json');
reader.addAsset(emptyId, '');
var didThrow = false;
await process(emptyId).then((out) {
expect(out).toBeNull();
}).catchError((_) {
didThrow = true;
});
expect(didThrow).toBeFalse();
});
}
void _formatThenExpectEquals(String actual, String expected) {