| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 library validator_test; | 5 library validator_test; |
| 6 | 6 |
| 7 import 'dart:io'; | 7 import 'dart:io'; |
| 8 import 'dart:json'; | 8 import 'dart:json'; |
| 9 | 9 |
| 10 import 'test_pub.dart'; | 10 import 'test_pub.dart'; |
| 11 import '../../../pkg/unittest/lib/unittest.dart'; | 11 import '../../../pkg/unittest/lib/unittest.dart'; |
| 12 import '../../../pkg/http/lib/http.dart' as http; | 12 import '../../../pkg/http/lib/http.dart' as http; |
| 13 import '../../../pkg/http/lib/testing.dart'; | 13 import '../../../pkg/http/lib/testing.dart'; |
| 14 import '../../pub/entrypoint.dart'; | 14 import '../../pub/entrypoint.dart'; |
| 15 import '../../pub/io.dart'; | 15 import '../../pub/io.dart'; |
| 16 import '../../pub/validator.dart'; | 16 import '../../pub/validator.dart'; |
| 17 import '../../pub/validator/dependency.dart'; | 17 import '../../pub/validator/dependency.dart'; |
| 18 import '../../pub/validator/directory.dart'; |
| 18 import '../../pub/validator/lib.dart'; | 19 import '../../pub/validator/lib.dart'; |
| 19 import '../../pub/validator/license.dart'; | 20 import '../../pub/validator/license.dart'; |
| 20 import '../../pub/validator/name.dart'; | 21 import '../../pub/validator/name.dart'; |
| 21 import '../../pub/validator/pubspec_field.dart'; | 22 import '../../pub/validator/pubspec_field.dart'; |
| 22 | 23 |
| 23 void expectNoValidationError(ValidatorCreator fn) { | 24 void expectNoValidationError(ValidatorCreator fn) { |
| 24 expectLater(schedulePackageValidation(fn), pairOf(isEmpty, isEmpty)); | 25 expectLater(schedulePackageValidation(fn), pairOf(isEmpty, isEmpty)); |
| 25 } | 26 } |
| 26 | 27 |
| 27 void expectValidationError(ValidatorCreator fn) { | 28 void expectValidationError(ValidatorCreator fn) { |
| 28 expectLater(schedulePackageValidation(fn), pairOf(isNot(isEmpty), anything)); | 29 expectLater(schedulePackageValidation(fn), pairOf(isNot(isEmpty), anything)); |
| 29 } | 30 } |
| 30 | 31 |
| 31 void expectValidationWarning(ValidatorCreator fn) { | 32 void expectValidationWarning(ValidatorCreator fn) { |
| 32 expectLater(schedulePackageValidation(fn), pairOf(isEmpty, isNot(isEmpty))); | 33 expectLater(schedulePackageValidation(fn), pairOf(isEmpty, isNot(isEmpty))); |
| 33 } | 34 } |
| 34 | 35 |
| 35 Validator dependency(Entrypoint entrypoint) => | 36 Validator dependency(Entrypoint entrypoint) => |
| 36 new DependencyValidator(entrypoint); | 37 new DependencyValidator(entrypoint); |
| 37 | 38 |
| 39 Validator directory(Entrypoint entrypoint) => |
| 40 new DirectoryValidator(entrypoint); |
| 41 |
| 38 Validator lib(Entrypoint entrypoint) => new LibValidator(entrypoint); | 42 Validator lib(Entrypoint entrypoint) => new LibValidator(entrypoint); |
| 39 | 43 |
| 40 Validator license(Entrypoint entrypoint) => new LicenseValidator(entrypoint); | 44 Validator license(Entrypoint entrypoint) => new LicenseValidator(entrypoint); |
| 41 | 45 |
| 42 Validator name(Entrypoint entrypoint) => new NameValidator(entrypoint); | 46 Validator name(Entrypoint entrypoint) => new NameValidator(entrypoint); |
| 43 | 47 |
| 44 Validator pubspecField(Entrypoint entrypoint) => | 48 Validator pubspecField(Entrypoint entrypoint) => |
| 45 new PubspecFieldValidator(entrypoint); | 49 new PubspecFieldValidator(entrypoint); |
| 46 | 50 |
| 47 void scheduleNormalPackage() => normalPackage.scheduleCreate(); | 51 void scheduleNormalPackage() => normalPackage.scheduleCreate(); |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 114 | 118 |
| 115 test('has an unconstrained dependency on "unittest"', () { | 119 test('has an unconstrained dependency on "unittest"', () { |
| 116 dir(appPath, [ | 120 dir(appPath, [ |
| 117 libPubspec("test_pkg", "1.0.0", [ | 121 libPubspec("test_pkg", "1.0.0", [ |
| 118 {'hosted': 'unittest'} | 122 {'hosted': 'unittest'} |
| 119 ]) | 123 ]) |
| 120 ]).scheduleCreate(); | 124 ]).scheduleCreate(); |
| 121 expectNoValidationError(dependency); | 125 expectNoValidationError(dependency); |
| 122 run(); | 126 run(); |
| 123 }); | 127 }); |
| 128 |
| 129 test('has a nested directory named "tools"', () { |
| 130 dir(appPath, [ |
| 131 dir("foo", [dir("tools")]) |
| 132 ]).scheduleCreate(); |
| 133 expectNoValidationError(directory); |
| 134 run(); |
| 135 }); |
| 124 }); | 136 }); |
| 125 | 137 |
| 126 group('should consider a package invalid if it', () { | 138 group('should consider a package invalid if it', () { |
| 127 setUp(scheduleNormalPackage); | 139 setUp(scheduleNormalPackage); |
| 128 | 140 |
| 129 test('is missing the "homepage" field', () { | 141 test('is missing the "homepage" field', () { |
| 130 var package = package("test_pkg", "1.0.0"); | 142 var package = package("test_pkg", "1.0.0"); |
| 131 package.remove("homepage"); | 143 package.remove("homepage"); |
| 132 dir(appPath, [pubspec(package)]).scheduleCreate(); | 144 dir(appPath, [pubspec(package)]).scheduleCreate(); |
| 133 | 145 |
| (...skipping 402 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 536 dir(appPath, [ | 548 dir(appPath, [ |
| 537 libPubspec("test_pkg", "1.0.0", [ | 549 libPubspec("test_pkg", "1.0.0", [ |
| 538 {'hosted': {'name': 'test_pkg', 'version': '>=1.0.0'}} | 550 {'hosted': {'name': 'test_pkg', 'version': '>=1.0.0'}} |
| 539 ]) | 551 ]) |
| 540 ]).scheduleCreate(); | 552 ]).scheduleCreate(); |
| 541 | 553 |
| 542 expectValidationWarning(dependency); | 554 expectValidationWarning(dependency); |
| 543 | 555 |
| 544 run(); | 556 run(); |
| 545 }); | 557 }); |
| 558 |
| 559 group('has a top-level directory named', () { |
| 560 setUp(scheduleNormalPackage); |
| 561 |
| 562 var names = ["tools", "tests", "docs", "examples", "sample", "samples"]; |
| 563 for (var name in names) { |
| 564 test('"$name"', () { |
| 565 dir(appPath, [dir(name)]).scheduleCreate(); |
| 566 expectValidationWarning(directory); |
| 567 run(); |
| 568 }); |
| 569 } |
| 570 }); |
| 546 }); | 571 }); |
| 547 } | 572 } |
| OLD | NEW |