blob: ab2a547c0b18410a3581912906a2e0ce32fd11a0 [file] [log] [blame]
// Copyright (c) 2020, 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:pub/src/entrypoint.dart';
import 'package:pub/src/validator.dart';
import 'package:pub/src/validator/pubspec_typo.dart';
import 'package:test/test.dart';
import '../descriptor.dart' as d;
import '../test_pub.dart';
import 'utils.dart';
Validator pubspecTypo(Entrypoint entrypoint) =>
PubspecTypoValidator(entrypoint);
void main() {
group('should consider a package valid if it', () {
setUp(d.validPackage.create);
test('looks normal', () => expectValidation(pubspecTypo));
test('has no typos', () async {
await d.dir(appPath, [
d.pubspec({
'name': 'myapp',
'version': '1.0.0',
'description': 'My app.',
'homepage': 'https://my.homepage.com',
'repository': 'my-repo',
'issue_tracker': '',
'documentation': '',
'dependencies': {},
'dev_dependencies': {},
'dependency_overrides': {},
'environment': {},
'executables': '',
'publish_to': '',
'flutter': {}
})
]).create();
await expectValidation(pubspecTypo);
});
test('has different keys which are likely not typos', () async {
await d.dir(appPath, [
d.pubspec({
'name': 'myapp',
'version': '1.0.0',
'email': 'my@email.com',
'maintainer': 'Garett Tok',
'assets': '../relative/path'
})
]).create();
await expectValidation(pubspecTypo);
});
});
group('should has warnings if it', () {
setUp(d.validPackage.create);
test('contains typos', () async {
await d.dir(appPath, [
d.pubspec({
'name': 'myapp',
'dependecies': {},
})
]).create();
await expectValidation(pubspecTypo, warnings: isNotEmpty);
});
test('contains typos but does not issue too many warnings', () async {
await d.dir(appPath, [
d.pubspec({
'name': 'myapp',
'dependecies': {},
'avthor': 'Garett Tok',
'descripton': 'This is a package',
'homepagd': 'https://pub.dev/packages/myapp',
'documentat1on': 'here'
})
]).create();
await expectValidation(pubspecTypo,
warnings: hasLength(lessThanOrEqualTo(3)));
});
});
}