Files
sdk/pkg/dev_compiler/test/options/options_test.dart
T
Paul Berry 421db9c69c Re-land "Implement proper checking for callability of Function class."
(was reverted in https://dart-review.googlesource.com/c/sdk/+/40980
due to an analyzer bot breakage)

Original commit message:
Implement proper checking for callability of Function class.

There was some old (incorrect) logic for doing this, behind the flag
enableStrictCallChecks.  This flag has been removed, since the new
behavior is now standard in Dart 2.0.

Fixes #31509

Change-Id: Ice5cf38bbc648badf7f2563ff930b69f9a799635
Reviewed-on: https://dart-review.googlesource.com/41120
Reviewed-by: Jonas Termansen <sortie@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2018-02-14 11:30:23 +00:00

89 lines
3.7 KiB
Dart

// Copyright (c) 2016, 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';
import 'package:analyzer/analyzer.dart';
import 'package:analyzer/src/command_line/arguments.dart';
import 'package:analyzer/src/summary/summary_sdk.dart';
import 'package:path/path.dart' as path;
import 'package:test/test.dart';
import '../../lib/src/analyzer/context.dart';
import '../../lib/src/analyzer/command.dart';
import '../../lib/src/analyzer/module_compiler.dart';
import '../testing.dart' show repoDirectory, testDirectory;
/// The `test/options` directory.
final optionsDir = path.join(testDirectory, 'options');
/// Summary file for testing.
final sdkSummaryFile = path.join(repoDirectory, 'gen', 'sdk', 'ddc_sdk.sum');
final sdkSummaryArgs = ['--$sdkSummaryPathOption', sdkSummaryFile];
main() {
test('basic', () {
var options = new AnalyzerOptions.basic();
var compiler = new ModuleCompiler(options, analysisRoot: optionsDir);
var processors = compiler.context.analysisOptions.errorProcessors;
expect(processors, hasLength(1));
expect(processors[0].code, CompileTimeErrorCode.UNDEFINED_CLASS.name);
});
test('basic sdk summary', () {
expect(new File(sdkSummaryFile).existsSync(), isTrue);
var options = new AnalyzerOptions.basic(dartSdkSummaryPath: sdkSummaryFile);
var compiler = new ModuleCompiler(options, analysisRoot: optionsDir);
var context = compiler.context;
var sdk = context.sourceFactory.dartSdk;
expect(sdk, new isInstanceOf<SummaryBasedDartSdk>());
var processors = context.analysisOptions.errorProcessors;
expect(processors, hasLength(1));
expect(processors[0].code, CompileTimeErrorCode.UNDEFINED_CLASS.name);
});
test('fromArgs', () {
var args = <String>[];
//TODO(danrubel) remove sdkSummaryArgs once all SDKs have summary file
args.addAll(sdkSummaryArgs);
var argResults = ddcArgParser().parse(args);
var options = new AnalyzerOptions.fromArguments(argResults);
var compiler = new ModuleCompiler(options, analysisRoot: optionsDir);
var processors = compiler.context.analysisOptions.errorProcessors;
expect(processors, hasLength(1));
expect(processors[0].code, CompileTimeErrorCode.UNDEFINED_CLASS.name);
});
test('fromArgs options file 2', () {
var optionsFile2 = path.join(optionsDir, 'analysis_options_2.yaml');
expect(new File(optionsFile2).existsSync(), isTrue);
var args = <String>['--$analysisOptionsFileOption', optionsFile2];
//TODO(danrubel) remove sdkSummaryArgs once all SDKs have summary file
args.addAll(sdkSummaryArgs);
var argResults = ddcArgParser().parse(args);
var options = new AnalyzerOptions.fromArguments(argResults);
var compiler = new ModuleCompiler(options, analysisRoot: optionsDir);
var processors = compiler.context.analysisOptions.errorProcessors;
expect(processors, hasLength(1));
expect(processors[0].code, CompileTimeErrorCode.DUPLICATE_DEFINITION.name);
});
test('custom module name for summary', () {
var args = <String>[
'-snormal',
'-scustom/path=module',
'-sanother',
'--summary=custom/path2=module2'
];
var argResults = ddcArgParser().parse(args);
var options = new AnalyzerOptions.fromArguments(argResults);
expect(options.summaryPaths,
orderedEquals(['normal', 'custom/path', 'another', 'custom/path2']));
expect(options.customSummaryModules['custom/path'], equals('module'));
expect(options.customSummaryModules['custom/path2'], equals('module2'));
expect(options.customSummaryModules.containsKey('normal'), isFalse);
});
}