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");
+ });
+}