blob: 6587ddf4694d707b60c0985e8d7b0b0572d26be6 [file] [log] [blame]
// 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.
/// Unit tests for lib/src/warnings.dart.
library;
import 'package:analyzer/file_system/physical_file_system.dart';
import 'package:dartdoc/src/dartdoc_options.dart';
import 'package:dartdoc/src/package_meta.dart';
import 'package:dartdoc/src/warnings.dart';
import 'package:test/test.dart';
import 'src/test_descriptor_utils.dart' as d;
void main() async {
var resourceProvider = PhysicalResourceProvider.INSTANCE;
var optionSet = DartdocOptionRoot.fromOptionGenerators(
'dartdoc', [createDartdocOptions], pubPackageMetaProvider);
test('excluding package from "allowed warnings" list ignores all', () async {
await d.createPackage('test_package');
var testPackage = resourceProvider.getFolder(d.dir('test_package').io.path);
optionSet.parseArguments([
'--allow-warnings-in-packages',
'some_other_package',
]);
PackageWarningOptions options =
optionSet['packageWarningOptions'].valueAt(testPackage);
expect(options.warningModes.values,
everyElement(equals(PackageWarningMode.ignore)));
});
test('warnings and errors are allowed at the commandline', () async {
await d.createPackage('test_package');
var testPackage = resourceProvider.getFolder(d.dir('test_package').io.path);
optionSet.parseArguments([
'--allow-warnings-in-packages',
'test_package',
'--allow-errors-in-packages',
'test_package',
]);
PackageWarningOptions options =
optionSet['packageWarningOptions'].valueAt(testPackage);
expect(options.warningModes.values, contains(PackageWarningMode.warn));
expect(options.warningModes.values, contains(PackageWarningMode.error));
});
test('allowing and ignoring warnings from a package ignores all', () async {
await d.createPackage('test_package', dartdocOptions: '''
dartdoc:
warnings:
- type-as-html
errors:
- unresolved-doc-reference
ignore:
- ambiguous-reexport
''');
var testPackage = resourceProvider.getFolder(d.dir('test_package').io.path);
optionSet.parseArguments([
'--allow-warnings-in-packages',
'test_package',
'--allow-errors-in-packages',
'test_package',
'--ignore-warnings-in-packages',
'test_package',
'--ignore-errors-in-packages',
'test_package',
]);
PackageWarningOptions options =
optionSet['packageWarningOptions'].valueAt(testPackage);
expect(options.warningModes.values,
everyElement(equals(PackageWarningMode.ignore)));
});
test('loading warning options from files works', () async {
await d.createPackage('test_package', dartdocOptions: '''
dartdoc:
warnings:
- type-as-html
errors:
- unresolved-doc-reference
ignore:
- ambiguous-reexport
''');
optionSet.parseArguments([]);
PackageWarningOptions options = optionSet['packageWarningOptions']
.valueAt(resourceProvider.getFolder(d.dir('test_package').io.path));
expect(options.warningModes[PackageWarning.typeAsHtml],
equals(PackageWarningMode.warn));
expect(options.warningModes[PackageWarning.unresolvedDocReference],
equals(PackageWarningMode.error));
expect(options.warningModes[PackageWarning.ambiguousReexport],
equals(PackageWarningMode.ignore));
});
test('args override warning options from files', () async {
await d.createPackage('test_package', dartdocOptions: '''
dartdoc:
warnings:
- type-as-html
errors:
- unresolved-doc-reference
ignore:
- ambiguous-reexport
''');
optionSet.parseArguments([
'--warnings',
'ambiguous-reexport',
'--errors',
'type-as-html',
'--ignore',
'',
]);
PackageWarningOptions options = optionSet['packageWarningOptions']
.valueAt(resourceProvider.getFolder(d.dir('test_package').io.path));
expect(options.warningModes[PackageWarning.typeAsHtml],
equals(PackageWarningMode.error));
// `unresolved-doc-reference` is not mentioned in command line, so it
// reverts to default.
expect(options.warningModes[PackageWarning.unresolvedDocReference],
equals(PackageWarningMode.warn));
expect(options.warningModes[PackageWarning.ambiguousReexport],
equals(PackageWarningMode.warn));
});
test('null values for warnings, ignore, and errors reset to defaults',
() async {
await d.createPackage('test_package', dartdocOptions: '''
dartdoc:
warnings:
- type-as-html
errors:
- unresolved-doc-reference
ignore:
- ambiguous-reexport
''');
optionSet.parseArguments([
'--warnings',
'',
'--errors',
'',
'--ignore',
'',
]);
PackageWarningOptions options = optionSet['packageWarningOptions']
.valueAt(resourceProvider.getFolder(d.dir('test_package').io.path));
expect(options.warningModes[PackageWarning.typeAsHtml],
equals(PackageWarningMode.ignore));
expect(options.warningModes[PackageWarning.unresolvedDocReference],
equals(PackageWarningMode.warn));
expect(options.warningModes[PackageWarning.ambiguousReexport],
equals(PackageWarningMode.warn));
});
}