Files
sdk/pkg/analysis_server/test/verify_tests_test.dart
T
Konstantin Shcheglov a524f04c27 Completion in RecordLiteral(s).
This also introduces CompletionResponsePrinter, which I'd like to use
instead of fluent APIs. At some point I decided that using easy to
produce, and easy to update expectations is better. Fluent API based
tests are too magical and require too many helper extensions. Also,
with textual dumps full actual results are visible, so it is easy to
compare them with expectations.

The missing key part for using textual dumps in completion tests, that
I realized only recently, was filtering. So, we don't need to dump
every available type, but we can focus on specifically named, or
specifically filtered, entities.

And configuration for `withX` flags lets us enable including features
that are interesting for a particular test suite.

Change-Id: I4a7f7ec99ed202333cf56cd3bb0dfec9ae5c39f0
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/257261
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2022-09-01 18:57:02 +00:00

55 lines
2.0 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 'package:analyzer/file_system/file_system.dart';
import 'package:analyzer/file_system/physical_file_system.dart';
import 'package:analyzer_utilities/package_root.dart' as package_root;
import 'package:analyzer_utilities/verify_tests.dart';
import 'package:path/path.dart' as package_path;
void main() {
var provider = PhysicalResourceProvider.INSTANCE;
var packageRoot = provider.pathContext.normalize(package_root.packageRoot);
var pathToAnalyze = provider.pathContext.join(packageRoot, 'analysis_server');
var testDirPath = provider.pathContext.join(pathToAnalyze, 'test');
_VerifyTests(testDirPath, excludedPaths: [
(provider.pathContext.join(testDirPath, 'mock_packages'))
]).build();
}
class _VerifyTests extends VerifyTests {
_VerifyTests(super.testDirPath, {super.excludedPaths});
@override
bool isExpensive(Resource resource) => resource.shortName == 'integration';
@override
bool isOkAsAdditionalTestAllImport(Folder folder, String uri) {
final pathContext = folder.provider.pathContext;
if (folder.path == pathContext.join(testDirPath, 'lsp') &&
uri == '../src/lsp/lsp_packet_transformer_test.dart') {
// `lsp/test_all.dart` also runs this one test in `lsp/src` for
// convenience.
return true;
}
if (folder.path == testDirPath &&
uri == '../tool/spec/check_all_test.dart') {
// The topmost `test_all.dart` also runs this one test in `tool` for
// convenience.
return true;
}
// Allow for updating textual expectations.
if (package_path.url.basename(uri) == 'text_expectations.dart') {
if (folder.path ==
pathContext.join(testDirPath, 'services', 'completion', 'dart')) {
return true;
}
}
return super.isOkAsAdditionalTestAllImport(folder, uri);
}
}