Remove tools we no longer need to manage status files
Change-Id: Ia106c48cdbecaa8eec722ee11cbc9b6813989477
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/96860
Reviewed-by: Stephen Adams <sra@google.com>
Commit-Queue: Sigmund Cherem <sigmund@google.com>
diff --git a/pkg/compiler/tool/status_files/log_parser.dart b/pkg/compiler/tool/status_files/log_parser.dart
deleted file mode 100644
index 43df6f4..0000000
--- a/pkg/compiler/tool/status_files/log_parser.dart
+++ /dev/null
@@ -1,79 +0,0 @@
-// Copyright (c) 2017, 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 status_files.log_parser;
-
-import 'record.dart';
-
-final RegExp _stackRE = new RegExp('#[0-9]* ');
-final RegExp _assertionFileRE = new RegExp(r"'file:[^']*/sdk/pkg/");
-final String _assertionFileReplacement = r"'file:*/pkg/";
-
-/// Extracts test records from a test.py [log].
-List<Record> parse(String log) {
- var records = <Record>[];
- var suite;
- var test;
- var config;
- var expected;
- var actual;
- var reason;
- var fullReason; // lines before stack, usually multiline reason.
- var stack = <String>[];
- var paragraph = []; // collector of lines for fullReason.
- bool reproIsNext = false;
- for (var line in log.split('\n')) {
- if (line.startsWith("FAILED: ")) {
- int lastSlash = line.lastIndexOf('/');
- // Some tests (particularly the html tests) have "group names" with spaces
- // in them. So we find the test name by the space just before the last
- // slash.
- int space = line.substring(0, lastSlash).lastIndexOf(' ');
- test = line.substring(space + 1).trim();
- suite = '';
- var slash = test.indexOf('/');
- if (slash > 0) {
- suite = test.substring(0, slash).trim();
- test = test.substring(slash + 1).trim();
- }
- config = line
- .substring("FAILED: ".length, space)
- .replaceAll('release_ia32', '')
- .replaceAll('release_x64', '');
- }
- if (line.startsWith("Expected: ")) {
- expected = line.substring("Expected: ".length).trim();
- }
- if (line.startsWith("Actual: ")) {
- actual = line.substring("Actual: ".length).trim();
- }
- if (line.startsWith("The compiler crashed:")) {
- reason = line.substring("The compiler crashed:".length).trim();
- reason = reason.replaceFirst(_assertionFileRE, _assertionFileReplacement);
- paragraph.clear();
- }
-
- if (line.startsWith(_stackRE)) {
- stack.add(line);
- fullReason ??= paragraph.take(5).join('\n');
- paragraph.clear();
- } else {
- paragraph.add(line);
- }
-
- if (reproIsNext) {
- records.add(new Record(suite, test, config, expected, actual, reason,
- line.trim(), fullReason, stack));
- suite = test = config = expected = actual = reason = null;
- stack = [];
- fullReason = null;
- paragraph.clear();
- reproIsNext = false;
- }
- if (line.startsWith("--- Re-run this test:")) {
- reproIsNext = true;
- }
- }
- return records;
-}
diff --git a/pkg/compiler/tool/status_files/rank_stacks.dart b/pkg/compiler/tool/status_files/rank_stacks.dart
deleted file mode 100644
index b0c2c1b..0000000
--- a/pkg/compiler/tool/status_files/rank_stacks.dart
+++ /dev/null
@@ -1,162 +0,0 @@
-// Copyright (c) 2017, 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.
-
-/*
-Usage:
-
- $ tools/test.py -m release \
- -c dart2js -r d8 --dart2js-batch --report \
- --host-checked \
- --dart2js_options="--library-root=out/ReleaseX64/dart-sdk/ --use-kernel" \
- language language_2 corelib corelib_2 \
- dart2js_native dart2js_extra \
- 2>&1 > LOG
-
- $ sdk/bin/dart pkg/compiler/tool/status_files/rank_stacks.dart LOG > STACKS.txt
-*/
-
-import 'dart:io';
-
-import 'package:args/args.dart';
-
-import 'log_parser.dart';
-import 'record.dart';
-
-int stackPrintLength;
-int howManyStacks;
-
-void die(String why) {
- print(why);
- print('Usage:\n'
- 'dart rank_stacks.dart [options] test-logs\n\n'
- '${argParser.usage}');
- exit(1);
-}
-
-ArgParser argParser = new ArgParser()
- ..addOption('stacks',
- abbr: 's',
- defaultsTo: '0',
- help: 'Number of highest ranking stacks to print (0 for all).')
- ..addOption('length',
- abbr: 'l', defaultsTo: '12', help: 'Number of stack frames printed.');
-
-int intOption(ArgResults args, String name) {
- onError(String text) {
- die("Value '$text' is not an integer. "
- "Option '$name' requires an integer value.");
- }
-
- return int.parse(args[name], onError: onError);
-}
-
-main(args) {
- List<String> rest;
- try {
- var argResults = argParser.parse(args);
- howManyStacks = intOption(argResults, 'stacks');
- stackPrintLength = intOption(argResults, 'length');
- rest = argResults.rest;
- } catch (e) {
- die('$e');
- }
-
- if (rest.isEmpty) die('No input file.');
- var records = <Record>[];
- for (String input in rest) {
- var uri = Uri.base.resolve(input);
- var file = new File.fromUri(uri);
- if (!file.existsSync()) {
- die("File not found: '$input'.");
- }
- String text = file.readAsStringSync();
- records.addAll(parse(text));
- }
-
- var trie = new TrieNode(null, 0);
- for (var record in records) {
- enter(record, 0, trie);
- }
-
- var leaves = trieLeaves(trie).toList();
- leaves.sort(compareNodesByCountAndStack);
- for (var leaf in howManyStacks == 0 ? leaves : leaves.take(howManyStacks)) {
- print('');
- var examples = leaf.members.map(fullReasonOf).toSet().toList();
- examples.sort();
- print('${leaf.length} of:');
- for (var example in examples) {
- var count = leaf.members.where((r) => fullReasonOf(r) == example).length;
- var countAligned = '$count'.padLeft(6);
- if (examples.length == 1) countAligned = ' .';
- var indentedExample = '\t' + example.replaceAll('\n', '\n\t');
- print('${countAligned}${indentedExample}');
- }
-
- for (var line in leaf.members.first.stack.take(stackPrintLength)) {
- print(' $line');
- }
- }
-}
-
-String fullReasonOf(Record r) {
- // Some records have no matched reason, so default to test status.
- return r.fullReason ?? r.actual;
-}
-
-int compareNodesByCountAndStack(TrieNode a, TrieNode b) {
- int r = b.length.compareTo(a.length);
- if (r != 0) return r;
- List<String> stackA = a.members.first.stack;
- List<String> stackB = b.members.first.stack;
- int lengthA = stackA.length;
- int lengthB = stackB.length;
- for (int i = 0; i < lengthA && i < lengthB; i++) {
- r = stackA[i].compareTo(stackB[i]);
- if (r != 0) return r;
- }
- return lengthA.compareTo(lengthB);
-}
-
-class TrieNode {
- final int depth;
- final String key;
- final Map<String, TrieNode> map = <String, TrieNode>{};
- final List<Record> members = <Record>[];
-
- int get length => members.length;
-
- TrieNode(this.key, this.depth);
-
- @override
- String toString() => 'TrieNode(#$length)';
-}
-
-void enter(Record record, int depth, TrieNode root) {
- // Cluster on printed stack.
- if (depth >= stackPrintLength || depth >= record.stack.length) {
- root.members.add(record);
- return;
- }
- var key = record.stack[depth];
- var node = root.map[key] ??= new TrieNode(key, depth + 1);
- enter(record, depth + 1, node);
-}
-
-void printTrie(TrieNode node) {
- var indent = ' ' * node.depth;
- print('${indent} ${node.length} ${node.key}');
- for (var key in node.map.keys) {
- printTrie(node.map[key]);
- }
-}
-
-trieLeaves(node) sync* {
- if (node.members.isNotEmpty) {
- yield node;
- }
- for (var v in node.map.values) {
- yield* trieLeaves(v);
- }
-}
diff --git a/pkg/compiler/tool/status_files/record.dart b/pkg/compiler/tool/status_files/record.dart
deleted file mode 100644
index cbe52e6..0000000
--- a/pkg/compiler/tool/status_files/record.dart
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright (c) 2017, 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.
-
-/// An entry found in the test.py logs corresponding to a test failure.
-///
-/// It stores what suite, test, and configuration was the failure seen at.
-library status_files.record;
-
-class Record implements Comparable<Record> {
- final String suite;
- final String test;
- final String config;
- final String expected;
- final String actual;
- final String repro;
- final String reason;
- final String fullReason;
- final List<String> stack;
-
- // TODO(sigmund): extract also a failure reason if any (e.g. a stack trace or
- // error message for crashes).
-
- bool get isPassing => actual == 'Pass';
-
- Record(this.suite, this.test, this.config, this.expected, this.actual,
- this.reason, this.repro, this.fullReason, this.stack);
-
- @override
- int compareTo(Record other) {
- if (suite == null && other.suite != null) return -1;
- if (suite != null && other.suite == null) return 1;
- if (test == null && other.test != null) return -1;
- if (test != null && other.test == null) return 1;
-
- var suiteDiff = suite.compareTo(other.suite);
- if (suiteDiff != 0) return suiteDiff;
-
- if (isPassing && !other.isPassing) return -1;
- if (!isPassing && other.isPassing) return 1;
-
- var testDiff = test.compareTo(other.test);
- if (testDiff != 0) return testDiff;
- return repro.compareTo(other.repro);
- }
-
- @override
- bool operator ==(covariant Record other) =>
- suite == other.suite &&
- test == other.test &&
- config == other.config &&
- expected == other.expected &&
- actual == other.actual &&
- repro == other.repro;
-}
diff --git a/pkg/compiler/tool/status_files/update_all.dart b/pkg/compiler/tool/status_files/update_all.dart
deleted file mode 100644
index bf09b28..0000000
--- a/pkg/compiler/tool/status_files/update_all.dart
+++ /dev/null
@@ -1,124 +0,0 @@
-// 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.
-
-// Script to update the dart2js status lines for all tests running with the
-// $dart2js_with_kernel test configuration.
-
-import 'dart:io';
-import 'package:args/args.dart';
-import 'update_from_log.dart' as update_script;
-
-const List<String> strongSuites = const <String>[
- 'language_2',
- 'corelib_2',
-];
-
-const List<String> nonStrongSuites = const <String>[
- 'dart2js_native',
- 'dart2js_extra',
-];
-
-main(List<String> args) {
- ArgParser argParser = new ArgParser(allowTrailingOptions: true)
- ..addFlag('with-fast-startup')
- ..addFlag('fast-startup')
- ..addFlag('strong')
- ..addFlag('with-checked-mode')
- ..addFlag('checked-mode')
- ..addFlag('checked');
- ArgResults argResults = argParser.parse(args);
- bool fastStartup =
- argResults['with-fast-startup'] || argResults['fast-startup'];
- bool strong = argResults['strong'];
- bool checkedMode = argResults['with-checked-mode'] ||
- argResults['checked-mode'] ||
- argResults['checked'];
- List<String> suites = argResults.rest;
- if (suites.isEmpty) {
- if (strong) {
- suites = strongSuites;
- } else {
- suites = nonStrongSuites;
- }
- if (Platform.isWindows) {
- // TODO(johnniwinther): Running drt seems to be broken on Windows.
- suites = new List<String>.from(suites)..remove('html');
- }
- } else {
- bool failure = false;
- for (String suite in suites) {
- if (strongSuites.contains(suite) && nonStrongSuites.contains(suite)) {
- print("Unknown suite '$suite'");
- failure = true;
- }
- }
- if (failure) {
- exit(1);
- }
- }
-
- Directory tmp = Directory.systemTemp.createTempSync('update_all');
-
- String python = Platform.isWindows ? 'python.exe' : 'python';
-
- updateSuiteWithFlags(
- String name, String suite, String runtime, List<String> args) {
- if (strong) {
- name = "$name-strong";
- args.add('--strong');
- }
-
- print(" - $name tests");
- List<String> testArgs = [
- './tools/test.py',
- '-m',
- 'release',
- '-c',
- 'dart2js',
- '-r',
- runtime,
- '--dart2js-batch',
- '--dart2js-with-kernel'
- ];
- testArgs.addAll(args);
- testArgs.add(suite);
- String temp = '${tmp.path}/$suite-$name.txt';
- ProcessResult result = Process.runSync(python, testArgs);
- String stdout = result.stdout.toString();
- new File(temp).writeAsStringSync(stdout);
- print(temp);
- update_script.main([name, temp]);
- }
-
- updateSuite(String suite) {
- String runtime = "d8";
- if (suite == "html") {
- runtime = "drt";
- }
- print("update suite: \u001b[32m$suite\u001b[0m");
-
- updateSuiteWithFlags(
- 'minified', suite, runtime, ["--minified", "--use-sdk"]);
- updateSuiteWithFlags('host-checked', suite, runtime, ["--host-checked"]);
- if (fastStartup) {
- updateSuiteWithFlags('fast-startup', suite, runtime, ["--fast-startup"]);
- }
- if (checkedMode) {
- updateSuiteWithFlags('checked-mode', suite, runtime, ["--checked"]);
- }
- }
-
- print('build create_sdk');
- ProcessResult result = Process.runSync(
- python, ['./tools/build.py', '-m', 'release', 'create_sdk']);
- if (result.exitCode != 0) {
- print(result.stdout);
- print(result.stderr);
- exit(1);
- }
-
- suites.forEach(updateSuite);
-
- tmp.deleteSync(recursive: true);
-}
diff --git a/pkg/compiler/tool/status_files/update_from_log.dart b/pkg/compiler/tool/status_files/update_from_log.dart
deleted file mode 100644
index 26a6dd0..0000000
--- a/pkg/compiler/tool/status_files/update_from_log.dart
+++ /dev/null
@@ -1,281 +0,0 @@
-// Copyright (c) 2017, 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.
-
-/// Script that updates dart2js status lines automatically for tests under the
-/// '$fasta' configuration.
-///
-/// This script is hardcoded to only support this configuration and relies on
-/// a convention for how the status files are structured, In particular,
-/// every status file for dart2js should have 3 sections:
-///
-/// [ $compiler == dart2js && $fasta && $host_checked ]
-///
-/// and:
-///
-/// [ $compiler == dart2js && $fasta && $minified ]
-///
-/// and:
-///
-/// [ $compiler == dart2js && $fasta && $fast_startup ]
-///
-/// and:
-///
-/// [ $compiler == dart2js && $checked && $fasta ]
-library compiler.status_files.update_from_log;
-
-import 'dart:io';
-
-import 'record.dart';
-import 'log_parser.dart';
-
-final dart2jsConfigurations = {
- 'host-checked': r'[ $compiler == dart2js && $fasta && $host_checked ]',
- 'minified': r'[ $compiler == dart2js && $fasta && $minified ]',
- 'host-checked-strong':
- r'[ $compiler == dart2js && $fasta && $host_checked && $strong ]',
- 'minified-strong':
- r'[ $compiler == dart2js && $fasta && $minified && $strong ]',
- 'fast-startup': r'[ $compiler == dart2js && $fast_startup && $fasta ]',
- 'fast-startup-strong':
- r'[ $compiler == dart2js && $fast_startup && $fasta && $strong ]',
- 'checked-mode': r'[ $compiler == dart2js && $checked && $fasta ]',
- 'checked-mode-strong':
- r'[ $compiler == dart2js && $checked && $fasta && $strong ]',
-};
-
-final dart2jsStatusFiles = {
- 'language_2': 'tests/language_2/language_2_dart2js.status',
- // TODO(sigmund,rnystrom): update when corelib_2 gets split into multiple
- // status files.
- 'corelib_2': 'tests/corelib_2/corelib_2.status',
- 'dart2js_extra': 'tests/compiler/dart2js_extra/dart2js_extra.status',
- 'dart2js_native': 'tests/compiler/dart2js_native/dart2js_native.status',
-};
-
-main(args) {
- mainInternal(args, dart2jsConfigurations, dart2jsStatusFiles);
-}
-
-/// Note: this is called above and also from
-/// pkg/front_end/tool/status_files/update_from_log.dart
-mainInternal(List<String> args, Map<String, String> configurations,
- Map<String, String> statusFiles) {
- if (args.length < 2) {
- print('usage: update_from_log.dart <mode> log.txt [message-in-quotes]');
- print(' where mode is one of these values: ${configurations.keys}');
- exit(1);
- }
- var mode = args[0];
- if (!configurations.containsKey(mode)) {
- print('invalid mode: $mode, expected one in ${configurations.keys}');
- exit(1);
- }
-
- var uri =
- Uri.base.resolveUri(new Uri.file(args[1], windows: Platform.isWindows));
- var file = new File.fromUri(uri);
- if (!file.existsSync()) {
- print('file not found: $file');
- exit(1);
- }
-
- var globalReason = args.length > 2 ? args[2] : null;
- updateLogs(
- mode, file.readAsStringSync(), configurations, statusFiles, globalReason);
-}
-
-/// Update all status files based on the [log] records when running the compiler
-/// in [mode]. If provided [globalReason] is added as a comment to new test
-/// failures. If not, an automated reason might be extracted from the test
-/// failure message.
-void updateLogs(String mode, String log, Map<String, String> configurations,
- Map<String, String> statusFiles, String globalReason) {
- List<Record> records = parse(log);
- records.sort();
- var last;
- ConfigurationInSuiteSection section;
- for (var record in records) {
- if (last == record) continue; // ignore duplicates
- if (section?.suite != record.suite) {
- section?.update(globalReason);
- var statusFile = statusFiles[record.suite];
- if (statusFile == null) {
- print("No status file for suite '${record.suite}'.");
- continue;
- }
- var condition = configurations[mode];
- section = ConfigurationInSuiteSection.create(
- record.suite, mode, statusFile, condition);
- }
- section.add(record);
- last = record;
- }
- section?.update(globalReason);
-}
-
-/// Represents an existing entry in the logs.
-class ExistingEntry {
- final String test;
- final String status;
- final bool hasComment;
-
- ExistingEntry(this.test, this.status, this.hasComment);
-
- static parse(String line) {
- var colonIndex = line.indexOf(':');
- var test = line.substring(0, colonIndex);
- var status = line.substring(colonIndex + 1).trim();
- var commentIndex = status.indexOf("#");
- if (commentIndex != -1) {
- status = status.substring(0, commentIndex);
- }
- return new ExistingEntry(test, status, commentIndex != -1);
- }
-}
-
-/// Represents a section in a .status file that corresponds to a specific suite
-/// and configuration.
-class ConfigurationInSuiteSection {
- final String suite;
- final String _statusFile;
- final String _contents;
- final int _begin;
- final int _end;
- final List<Record> _records = [];
-
- ConfigurationInSuiteSection(
- this.suite, this._statusFile, this._contents, this._begin, this._end);
-
- /// Add a new test record, indicating that the test status should be updated.
- void add(Record record) => _records.add(record);
-
- /// Update the section in the file.
- ///
- /// This will reflect the new status lines as recorded in [_records].
- void update(String providedReason) {
- int changes = 0;
- int ignored = 0;
- var originalEntries = _contents.substring(_begin, _end).split('\n');
-
- // The algorithm below walks entries in the file and from the log in the
- // same order: preserving entries that didn't change, and updating entries
- // where the logs show that the test status changed.
-
- // Sort the file contents in case the file has been tampered with.
- originalEntries.sort();
-
- /// Re-sort records by name (they came sorted by suite and status first, so
- /// it may be wrong for the merging below).
- _records.sort((a, b) => a.test.compareTo(b.test));
-
- var newContents = new StringBuffer();
- newContents.write(_contents.substring(0, _begin));
- addFromRecord(Record record) {
- var reason = providedReason ?? record.reason;
- var comment = reason != null && reason.isNotEmpty ? ' # ${reason}' : '';
- newContents.writeln('${record.test}: ${record.actual}$comment');
- }
-
- int i = 0, j = 0;
- while (i < originalEntries.length && j < _records.length) {
- var existingLine = originalEntries[i];
- if (existingLine.trim().isEmpty) {
- i++;
- continue;
- }
- var existing = ExistingEntry.parse(existingLine);
- var record = _records[j];
- var compare = existing.test.compareTo(record.test);
- if (compare < 0) {
- // Existing test was unaffected, copy the status line.
- newContents.writeln(existingLine);
- i++;
- } else if (compare > 0) {
- // New entry, if it's a failure, we haven't seen this before and must
- // add it. If the status says it is passing, we ignore it. We do this
- // to support making this script idempotent if the patching has already
- // been done.
- if (!record.isPassing) {
- // New failure never seen before
- addFromRecord(record);
- changes++;
- }
- j++;
- } else if (existing.status == record.actual) {
- if (!existing.hasComment && record.reason != null) {
- addFromRecord(record);
- changes++;
- } else {
- // This also should only happen if the patching has already been done.
- // We don't complain to make this script idempotent.
- newContents.writeln(existingLine);
- }
- ignored++;
- i++;
- j++;
- } else {
- changes++;
- // The status changed, if it is now passing, we omit the entry entirely,
- // otherwise we use the status from the logs.
- if (!record.isPassing) {
- addFromRecord(record);
- }
- i++;
- j++;
- }
- }
-
- for (; i < originalEntries.length; i++) {
- newContents.writeln(originalEntries[i]);
- }
-
- for (; j < _records.length; j++) {
- changes++;
- addFromRecord(_records[j]);
- }
-
- newContents.write('\n');
- newContents.write(_contents.substring(_end));
- new File(_statusFile).writeAsStringSync('$newContents');
- print("updated '$_statusFile' with $changes changes");
- if (ignored > 0) {
- print(' $ignored changes were already applied in the status file.');
- }
- }
-
- static ConfigurationInSuiteSection create(
- String suite, String mode, String statusFile, String condition) {
- var contents = new File(statusFile).readAsStringSync();
- int sectionDeclaration = contents.indexOf(condition);
- if (sectionDeclaration == -1) {
- print('error: unable to find condition $condition in $statusFile');
- exit(1);
- }
- int begin = contents.indexOf('\n', sectionDeclaration) + 1;
- assert(begin != 0);
- int newlinePos = contents.indexOf('\n', begin + 1);
- int end = newlinePos;
- while (true) {
- if (newlinePos == -1) break;
- if (newlinePos + 1 < contents.length) {
- if (contents[newlinePos + 1] == '[') {
- // We've found the end of the section
- break;
- } else if (contents[newlinePos + 1] == '#') {
- // We've found a commented out line. This line might belong to the
- // next section.
- newlinePos = contents.indexOf('\n', newlinePos + 1);
- continue;
- }
- }
- // We've found an ordinary line. It's part of this section, so update
- // end.
- newlinePos = contents.indexOf('\n', newlinePos + 1);
- end = newlinePos;
- }
- end = end == -1 ? contents.length : end + 1;
- return new ConfigurationInSuiteSection(
- suite, statusFile, contents, begin, end);
- }
-}
diff --git a/pkg/front_end/tool/status_files/update_from_log.dart b/pkg/front_end/tool/status_files/update_from_log.dart
deleted file mode 100644
index 2fa2b11..0000000
--- a/pkg/front_end/tool/status_files/update_from_log.dart
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright (c) 2017, 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.
-
-/// Script that updates kernel status lines automatically for tests under the
-/// '$strong' configuration.
-///
-/// This script is hardcoded to only support this configuration and relies on
-/// a convention for how the status files are structured, In particular,
-/// every status file is expected to have these sections:
-///
-/// [ $compiler == dartk && $runtime == vm && $strong ]
-/// [ $compiler == dartk && $runtime == vm && $strong && $mode == debug ]
-/// [ $compiler == dartkp && $runtime == dart_precompiled && $strong ]
-/// [ $compiler == dartkp && $runtime == dart_precompiled && $strong && $mode == debug]
-///
-/// we allow other sections specifying $checked mode, but the script currently
-/// has not been configured to update them.
-///
-/// [ $compiler == dartk && $runtime == vm && $strong && $checked ]
-/// [ $compiler == dartk && $runtime == vm && $strong && !$checked ]
-/// [ $compiler == dartkp && $runtime == dart_precompiled && $strong && $checked]
-/// [ $compiler == dartkp && $runtime == dart_precompiled && $strong && !$checked]
-///
-/// Note that this script is brittle and will not work properly if there are
-/// other overlapping sections. If you see the script adding entries like "Pass"
-/// it is a sign that a test was broadly marked as failing in a more general
-/// section (e.g. $runtime == vm, but no compiler was specified).
-
-library front_end.status_files.update_from_log;
-
-import '../../../compiler/tool/status_files/update_from_log.dart'
- show mainInternal;
-
-final kernelStrongConfigurations = {
- 'dartk': r'[ $compiler == dartk && $runtime == vm && $strong ]',
- 'dartk-debug':
- r'[ $compiler == dartk && $runtime == vm && $strong && $mode == debug]',
- 'dartkp':
- r'[ $compiler == dartkp && $runtime == dart_precompiled && $strong ]',
- 'dartkp-debug':
- r'[ $compiler == dartkp && $runtime == dart_precompiled && $strong && $mode == debug]',
-};
-
-final kernelStrongStatusFiles = {
- 'corelib_2': 'tests/corelib_2/corelib_2.status',
- 'language_2': 'tests/language_2/language_2_kernel.status',
- 'lib_2': 'tests/lib_2/lib_2_kernel.status',
- 'standalone_2': 'tests/standalone_2/standalone_2_kernel.status',
-};
-
-main(args) {
- mainInternal(args, kernelStrongConfigurations, kernelStrongStatusFiles);
-}