mirror of
https://github.com/dart-lang/sdk
synced 2024-09-20 00:11:50 +00:00
c8595fdee2
Change-Id: I47741cb3dc5714f765d9b45698c2ae05dbf5349a Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/220322 Reviewed-by: Jens Johansen <jensj@google.com> Commit-Queue: Johnni Winther <johnniwinther@google.com>
65 lines
2.3 KiB
Dart
65 lines
2.3 KiB
Dart
// Copyright (c) 2019, 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 Directory, File, FileSystemEntity;
|
|
|
|
import 'package:testing/testing.dart'
|
|
show Chain, FileBasedTestDescription, TestDescription, runMe;
|
|
|
|
import 'spelling_test_base.dart' show SpellContext;
|
|
|
|
import 'spell_checking_utils.dart' as spell;
|
|
|
|
import 'testing_utils.dart' show checkEnvironment;
|
|
|
|
void main([List<String> arguments = const []]) =>
|
|
runMe(arguments, createContext, configurationPath: "../testing.json");
|
|
|
|
Future<SpellContext> createContext(
|
|
Chain suite, Map<String, String> environment) async {
|
|
const Set<String> knownEnvironmentKeys = {"interactive", "onlyInGit"};
|
|
checkEnvironment(environment, knownEnvironmentKeys);
|
|
|
|
bool interactive = environment["interactive"] == "true";
|
|
bool onlyInGit = environment["onlyInGit"] != "false";
|
|
return new SpellContextExternal(
|
|
interactive: interactive, onlyInGit: onlyInGit);
|
|
}
|
|
|
|
class SpellContextExternal extends SpellContext {
|
|
SpellContextExternal({required bool interactive, required bool onlyInGit})
|
|
: super(interactive: interactive, onlyInGit: onlyInGit);
|
|
|
|
@override
|
|
List<spell.Dictionaries> get dictionaries => const <spell.Dictionaries>[];
|
|
|
|
@override
|
|
bool get onlyDenylisted => true;
|
|
|
|
@override
|
|
String get repoRelativeSuitePath =>
|
|
"pkg/front_end/test/spelling_test_external_targets.dart";
|
|
|
|
@override
|
|
Stream<TestDescription> list(Chain suite) async* {
|
|
for (String subdir in const ["pkg/", "sdk/"]) {
|
|
Directory testRoot = new Directory.fromUri(suite.uri.resolve(subdir));
|
|
if (await testRoot.exists()) {
|
|
Stream<FileSystemEntity> files =
|
|
testRoot.list(recursive: true, followLinks: false);
|
|
await for (FileSystemEntity entity in files) {
|
|
if (entity is! File) continue;
|
|
String path = entity.uri.path;
|
|
if (suite.exclude.any((RegExp r) => path.contains(r))) continue;
|
|
if (suite.pattern.any((RegExp r) => path.contains(r))) {
|
|
yield new FileBasedTestDescription(suite.uri, entity);
|
|
}
|
|
}
|
|
} else {
|
|
throw "${suite.uri} isn't a directory";
|
|
}
|
|
}
|
|
}
|
|
}
|