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:
parent
7d83959be5
commit
a87c5d989c
|
@ -22,8 +22,8 @@ import 'package:barback/barback.dart';
|
||||||
Future<CompileDataResults> createCompileData(
|
Future<CompileDataResults> createCompileData(
|
||||||
AssetReader reader, AssetId assetId) async {
|
AssetReader reader, AssetId assetId) async {
|
||||||
return logElapsedAsync(() async {
|
return logElapsedAsync(() async {
|
||||||
return (await _CompileDataCreator.create(reader, assetId))
|
final creator = await _CompileDataCreator.create(reader, assetId);
|
||||||
.createCompileData();
|
return creator != null ? creator.createCompileData() : null;
|
||||||
}, operationName: 'createCompileData', assetId: assetId);
|
}, operationName: 'createCompileData', assetId: assetId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -28,6 +28,7 @@ import 'compile_data_creator.dart';
|
||||||
Future<Outputs> processTemplates(AssetReader reader, AssetId assetId,
|
Future<Outputs> processTemplates(AssetReader reader, AssetId assetId,
|
||||||
{bool reflectPropertiesAsAttributes: false}) async {
|
{bool reflectPropertiesAsAttributes: false}) async {
|
||||||
var viewDefResults = await createCompileData(reader, assetId);
|
var viewDefResults = await createCompileData(reader, assetId);
|
||||||
|
if (viewDefResults == null) return null;
|
||||||
final directiveMetadatas = viewDefResults.ngMeta.types.values;
|
final directiveMetadatas = viewDefResults.ngMeta.types.values;
|
||||||
if (directiveMetadatas.isNotEmpty) {
|
if (directiveMetadatas.isNotEmpty) {
|
||||||
var processor = new reg.Processor();
|
var processor = new reg.Processor();
|
||||||
|
|
|
@ -318,6 +318,34 @@ void allTests() {
|
||||||
expect(ngDeps.setters).toContain('text');
|
expect(ngDeps.setters).toContain('text');
|
||||||
expect(ngDeps.setters.length).toEqual(1);
|
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) {
|
void _formatThenExpectEquals(String actual, String expected) {
|
||||||
|
|
Loading…
Reference in New Issue