Test that fasta_codes_generated.dart is up to date Change-Id: If9fbbdaf495b32da7a5a288e2fe63bee6f29ee1e Reviewed-on: https://dart-review.googlesource.com/55888 Commit-Queue: Peter von der Ahé <ahe@google.com> Reviewed-by: Kevin Millikin <kmillikin@google.com>
diff --git a/pkg/front_end/tool/_fasta/generate_messages.dart b/pkg/front_end/tool/_fasta/generate_messages.dart index bae14ba..397bded 100644 --- a/pkg/front_end/tool/_fasta/generate_messages.dart +++ b/pkg/front_end/tool/_fasta/generate_messages.dart
@@ -2,6 +2,8 @@ // 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. +import 'dart:async'; + import 'dart:io'; import 'dart:isolate'; @@ -14,6 +16,17 @@ main(List<String> arguments) async { var port = new ReceivePort(); + await new File.fromUri(await computeGeneratedFile()) + .writeAsString(await generateMessagesFile(), flush: true); + port.close(); +} + +Future<Uri> computeGeneratedFile() { + return Isolate.resolvePackageUri( + Uri.parse('package:front_end/src/fasta/fasta_codes_generated.dart')); +} + +Future<String> generateMessagesFile() async { Uri messagesFile = Platform.script.resolve("../../messages.yaml"); Map yaml = loadYaml(await new File.fromUri(messagesFile).readAsStringSync()); StringBuffer sb = new StringBuffer(); @@ -45,13 +58,7 @@ map['analyzerCode'], map['dart2jsCode'], map['severity'])); } - String dartfmtedText = new DartFormatter().format("$sb"); - - Uri problemsFile = await Isolate.resolvePackageUri( - Uri.parse('package:front_end/src/fasta/fasta_codes_generated.dart')); - await new File.fromUri(problemsFile) - .writeAsString(dartfmtedText, flush: true); - port.close(); + return new DartFormatter().format("$sb"); } final RegExp placeholderPattern = new RegExp("#[a-zA-Z0-9_]+");
diff --git a/pkg/front_end/tool/_fasta/generate_messages_test.dart b/pkg/front_end/tool/_fasta/generate_messages_test.dart new file mode 100644 index 0000000..f242f01 --- /dev/null +++ b/pkg/front_end/tool/_fasta/generate_messages_test.dart
@@ -0,0 +1,21 @@ +// Copyright (c) 2018, 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. + +import "dart:io" show File; + +import "package:async_helper/async_helper.dart" show asyncTest; + +import "package:expect/expect.dart" show Expect; + +import "generate_messages.dart" show computeGeneratedFile, generateMessagesFile; + +main() { + asyncTest(() async { + Uri generatedFile = await computeGeneratedFile(); + String generated = await generateMessagesFile(); + String actual = await new File.fromUri(generatedFile).readAsString(); + Expect.stringEquals( + generated, actual, "${generatedFile.path} is out of date"); + }); +}