diff --git a/pkg/front_end/tool/_fasta/generate_messages.dart b/pkg/front_end/tool/_fasta/generate_messages.dart index bae14ba785c..397bded9a1a 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 @@ import "package:front_end/src/fasta/severity.dart" show severityEnumNames; main(List arguments) async { var port = new ReceivePort(); + await new File.fromUri(await computeGeneratedFile()) + .writeAsString(await generateMessagesFile(), flush: true); + port.close(); +} + +Future computeGeneratedFile() { + return Isolate.resolvePackageUri( + Uri.parse('package:front_end/src/fasta/fasta_codes_generated.dart')); +} + +Future 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 @@ part of fasta.codes; 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 00000000000..f242f016203 --- /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"); + }); +}