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>
This commit is contained in:
Peter von der Ahé
2018-05-19 06:09:49 +00:00
committed by commit-bot@chromium.org
parent eec11ebe4a
commit cb9bf910f9
2 changed files with 35 additions and 7 deletions
@@ -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<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 @@ 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_]+");
@@ -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");
});
}