From 5271b1e39e2623363513ff34c9545562bae24c6a Mon Sep 17 00:00:00 2001 From: Nate Bosch Date: Tue, 29 Nov 2016 17:45:46 -0800 Subject: [PATCH] Update to latest split build package - Loosen version constraint on build to allow anything under '0.7.0'. During development we'll only get 0.6.0 because dev_dependencies will constrain it further - but the code in lib/ is still compatible with older versions - Add dev_dependency on build_runner for the code under tool/ - Bump version of build_test - Use testBuilder instead of testPhases - delete this repo's copy of testPhases --- CHANGELOG.md | 3 +- pubspec.yaml | 7 ++-- test/builder_test.dart | 71 +++++++++++++++++++-------------------- test/src/test_phases.dart | 56 ------------------------------ tool/build.dart | 4 +-- tool/phases.dart | 4 +-- tool/watch.dart | 4 +-- 7 files changed, 44 insertions(+), 105 deletions(-) delete mode 100644 test/src/test_phases.dart diff --git a/CHANGELOG.md b/CHANGELOG.md index fd312475..e517e549 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ -## 0.5.2-dev +## 0.5.2 * Use library URIs (not names) to look up annotations in the mirror system. +* Loosen version constraint to allow package:build version 0.6 ## 0.5.1+7 diff --git a/pubspec.yaml b/pubspec.yaml index 02c864e4..f70aa176 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,5 +1,5 @@ name: source_gen -version: 0.5.2-dev +version: 0.5.2 author: Dart Team description: Automatic sourcecode generation for Dart homepage: https://github.com/dart-lang/source_gen @@ -7,12 +7,13 @@ environment: sdk: '>=1.12.0 <2.0.0' dependencies: analyzer: '>=0.28.0 <0.30.0' - build: '>=0.2.1 <0.6.0' + build: '>=0.2.1 <0.7.0' cli_util: ^0.0.1 dart_style: '>=0.1.7 <0.3.0' path: ^1.3.2 dev_dependencies: - build_test: ^0.2.0+1 + build_runner: ^0.1.0 + build_test: ^0.3.0 collection: ^1.1.2 mockito: '>=0.11.0 <2.0.0' test: ^0.12.3 diff --git a/test/builder_test.dart b/test/builder_test.dart index f8dabcac..69bd05af 100644 --- a/test/builder_test.dart +++ b/test/builder_test.dart @@ -5,46 +5,47 @@ import 'dart:async'; import 'package:analyzer/dart/element/element.dart'; -import 'package:build/build.dart'; +import 'package:build_test/build_test.dart'; import 'package:source_gen/builder.dart'; import 'package:source_gen/source_gen.dart'; import 'package:test/test.dart'; import 'src/comment_generator.dart'; -import 'src/test_phases.dart'; void main() { test('Simple Generator test', _simpleTest); test('Bad generated source', () async { var srcs = _createPackageStub(pkgName); - var phaseGroup = new PhaseGroup.singleAction( - new GeneratorBuilder([const _BadOutputGenerator()]), - new InputSet(pkgName, ['lib/test_lib.dart'])); + var builder = new GeneratorBuilder([const _BadOutputGenerator()]); - await testPhases(phaseGroup, pkgName, srcs, { - '$pkgName|lib/test_lib.g.dart': contains('not valid code!'), - }); + await testBuilder(builder, srcs, + generateFor: new Set.from(['$pkgName|lib/test_lib.dart']), + outputs: { + '$pkgName|lib/test_lib.g.dart': contains('not valid code!'), + }); }); test('Generate standalone output file', () async { var srcs = _createPackageStub(pkgName); - var phaseGroup = new PhaseGroup.singleAction( - new GeneratorBuilder([const CommentGenerator()], isStandalone: true), - new InputSet(pkgName, ['lib/test_lib.dart'])); - await testPhases(phaseGroup, pkgName, srcs, { - '$pkgName|lib/test_lib.g.dart': _testGenStandaloneContent, - }); + var builder = + new GeneratorBuilder([const CommentGenerator()], isStandalone: true); + await testBuilder(builder, srcs, + generateFor: new Set.from(['$pkgName|lib/test_lib.dart']), + outputs: { + '$pkgName|lib/test_lib.g.dart': _testGenStandaloneContent, + }); }); test('Generate explicitly non-standalone output file', () async { var srcs = _createPackageStub(pkgName); - var phaseGroup = new PhaseGroup.singleAction( - new GeneratorBuilder([const CommentGenerator()], isStandalone: false), - new InputSet(pkgName, ['lib/test_lib.dart'])); - await testPhases(phaseGroup, pkgName, srcs, { - '$pkgName|lib/test_lib.g.dart': _testGenPartContent, - }); + var builder = + new GeneratorBuilder([const CommentGenerator()], isStandalone: false); + await testBuilder(builder, srcs, + generateFor: new Set.from(['$pkgName|lib/test_lib.dart']), + outputs: { + '$pkgName|lib/test_lib.g.dart': _testGenPartContent, + }); }); test('Expect error when multiple generators used on a standalone builder', @@ -78,22 +79,19 @@ void main() { test('No-op generator produces no generated parts', () async { var srcs = _createPackageStub(pkgName); - var phaseGroup = new PhaseGroup.singleAction( - new GeneratorBuilder([const _NoOpGenerator()]), - new InputSet(pkgName, ['lib/test_lib.dart'])); - - await testPhases(phaseGroup, pkgName, srcs, {}); + var builder = new GeneratorBuilder([const _NoOpGenerator()]); + await testBuilder(builder, srcs, outputs: {}); }); test('handle generator errors well', () async { var srcs = _createPackageStub(pkgName, testLibContent: _testLibContentWithError); - var phaseGroup = new PhaseGroup.singleAction( - new GeneratorBuilder([const CommentGenerator()]), - new InputSet(pkgName, ['lib/test_lib.dart'])); - await testPhases(phaseGroup, pkgName, srcs, { - '$pkgName|lib/test_lib.g.dart': _testGenPartContentError, - }); + var builder = new GeneratorBuilder([const CommentGenerator()]); + await testBuilder(builder, srcs, + generateFor: new Set.from(['$pkgName|lib/test_lib.dart']), + outputs: { + '$pkgName|lib/test_lib.g.dart': _testGenPartContentError, + }); }); } @@ -103,12 +101,13 @@ Future _simpleTest() => _generateTest( Future _generateTest(CommentGenerator gen, String expectedContent) async { var srcs = _createPackageStub(pkgName); - var phaseGroup = new PhaseGroup.singleAction(new GeneratorBuilder([gen]), - new InputSet(pkgName, ['lib/test_lib.dart'])); + var builder = new GeneratorBuilder([gen]); - await testPhases(phaseGroup, pkgName, srcs, { - '$pkgName|lib/test_lib.g.dart': expectedContent, - }); + await testBuilder(builder, srcs, + generateFor: new Set.from(['$pkgName|lib/test_lib.dart']), + outputs: { + '$pkgName|lib/test_lib.g.dart': expectedContent, + }); } /// Creates a package using [pkgName]. diff --git a/test/src/test_phases.dart b/test/src/test_phases.dart deleted file mode 100644 index cecd5da9..00000000 --- a/test/src/test_phases.dart +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -// TODO(jakemac): Use the build_test package once that is available. - -import 'dart:async'; - -import 'package:build/build.dart'; -import 'package:build_test/build_test.dart'; -import 'package:logging/logging.dart'; -import 'package:test/test.dart'; - -Future testPhases(PhaseGroup phases, String rootPackage, - Map inputs, Map outputs) async { - var writer = new InMemoryAssetWriter(); - var reader = new InMemoryAssetReader(writer.assets); - - inputs.forEach((serializedId, contents) { - writer.writeAsString(new Asset(new AssetId.parse(serializedId), contents)); - }); - - var rootPackageNode = new PackageNode(rootPackage, null, null, null); - var packageGraph = new PackageGraph.fromRoot(rootPackageNode); - - var result = await build(phases, - reader: reader, - writer: writer, - packageGraph: packageGraph, - logLevel: Level.OFF); - - expect(result.status, BuildStatus.success, - reason: 'Exception:\n${result.exception}\n' - 'Stack Trace:\n${result.stackTrace}'); - - if (outputs != null) checkOutputs(outputs, result); -} - -void checkOutputs(Map outputs, BuildResult result) { - var remainingOutputIds = - new List.from(result.outputs.map((asset) => asset.id)); - outputs.forEach((serializedId, contentsMatcher) { - var id = new AssetId.parse(serializedId); - remainingOutputIds.remove(id); - - // Check that the assets exist in [result.outputs]. - var actual = result.outputs - .firstWhere((output) => output.id == id, orElse: () => null); - expect(actual, isNotNull, - reason: 'Expected to find ${id} in ${result.outputs}.'); - expect(actual.stringContents, contentsMatcher); - }); - - expect(remainingOutputIds, isEmpty, - reason: 'Unexpected outputs found `$remainingOutputIds`.'); -} diff --git a/tool/build.dart b/tool/build.dart index 66f4fb4a..102d3f88 100644 --- a/tool/build.dart +++ b/tool/build.dart @@ -1,9 +1,7 @@ // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -library source_gen.tool.build; - -import 'package:build/build.dart'; +import 'package:build_runner/build_runner.dart'; import 'phases.dart'; diff --git a/tool/phases.dart b/tool/phases.dart index 29ec6803..d60dd33a 100644 --- a/tool/phases.dart +++ b/tool/phases.dart @@ -1,9 +1,7 @@ // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -library source_gen.tool.phases; - -import 'package:build/build.dart'; +import 'package:build_runner/build_runner.dart'; import 'package:source_gen/generators/json_literal_generator.dart' as literal; import 'package:source_gen/generators/json_serializable_generator.dart' as json; diff --git a/tool/watch.dart b/tool/watch.dart index 002e2768..d44a669c 100644 --- a/tool/watch.dart +++ b/tool/watch.dart @@ -1,9 +1,7 @@ // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -library source_gen.tool.watch; - -import 'package:build/build.dart'; +import 'package:build_runner/build_runner.dart'; import 'phases.dart';