Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(358)

Side by Side Diff: utils/tests/pub/validator_test.dart

Issue 11444018: Add a validator that checks package names. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Fix tests. Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « utils/pub/validator/name.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 '../../pub/entrypoint.dart'; 12 import '../../pub/entrypoint.dart';
13 import '../../pub/io.dart'; 13 import '../../pub/io.dart';
14 import '../../pub/validator.dart'; 14 import '../../pub/validator.dart';
15 import '../../pub/validator/name.dart';
15 import '../../pub/validator/pubspec_field.dart'; 16 import '../../pub/validator/pubspec_field.dart';
16 17
17 void expectNoValidationError(ValidatorCreator fn) { 18 void expectNoValidationError(ValidatorCreator fn) {
18 expectLater(schedulePackageValidation(fn), pairOf(isEmpty, isEmpty)); 19 expectLater(schedulePackageValidation(fn), pairOf(isEmpty, isEmpty));
19 } 20 }
20 21
21 void expectValidationError(ValidatorCreator fn) { 22 void expectValidationError(ValidatorCreator fn) {
22 expectLater(schedulePackageValidation(fn), pairOf(isNot(isEmpty), anything)); 23 expectLater(schedulePackageValidation(fn), pairOf(isNot(isEmpty), anything));
23 } 24 }
24 25
25 void expectValidationWarning(ValidatorCreator fn) { 26 void expectValidationWarning(ValidatorCreator fn) {
26 expectLater(schedulePackageValidation(fn), pairOf(isEmpty, isNot(isEmpty))); 27 expectLater(schedulePackageValidation(fn), pairOf(isEmpty, isNot(isEmpty)));
27 } 28 }
28 29
29 Validator pubspecField(Entrypoint entrypoint) => 30 Validator pubspecField(Entrypoint entrypoint) =>
30 new PubspecFieldValidator(entrypoint); 31 new PubspecFieldValidator(entrypoint);
31 32
33 Validator name(Entrypoint entrypoint) => new NameValidator(entrypoint);
34
32 main() { 35 main() {
33 group('should consider a package valid if it', () { 36 group('should consider a package valid if it', () {
34 test('looks normal', () { 37 test('looks normal', () {
35 dir(appPath, [libPubspec("test_pkg", "1.0.0")]).scheduleCreate(); 38 dir(appPath, [libPubspec("test_pkg", "1.0.0")]).scheduleCreate();
36 expectNoValidationError(pubspecField); 39 expectNoValidationError(pubspecField);
37 run(); 40 run();
38 }); 41 });
39 42
40 test('has "authors" instead of "author"', () { 43 test('has "authors" instead of "author"', () {
41 var package = package("test_pkg", "1.0.0"); 44 var package = package("test_pkg", "1.0.0");
42 package["authors"] = [package.remove("author")]; 45 package["authors"] = [package.remove("author")];
43 dir(appPath, [pubspec(package)]).scheduleCreate(); 46 dir(appPath, [pubspec(package)]).scheduleCreate();
44 expectNoValidationError(pubspecField); 47 expectNoValidationError(pubspecField);
45 run(); 48 run();
46 }); 49 });
50
51 test('has a badly-named library in lib/src', () {
52 dir(appPath, [
53 libPubspec("test_pkg", "1.0.0"),
54 dir("lib", [
55 file("test_pkg.dart", "int i = 1;"),
56 dir("src", [file("8ball.dart", "int j = 2;")])
57 ])
58 ]).scheduleCreate();
59 expectNoValidationError(name);
60 run();
Bob Nystrom 2012/12/07 17:07:43 I like this.
61 });
47 }); 62 });
48 63
49 group('should consider a package invalid if it', () { 64 group('should consider a package invalid if it', () {
50 test('is missing the "homepage" field', () { 65 test('is missing the "homepage" field', () {
51 var package = package("test_pkg", "1.0.0"); 66 var package = package("test_pkg", "1.0.0");
52 package.remove("homepage"); 67 package.remove("homepage");
53 dir(appPath, [pubspec(package)]).scheduleCreate(); 68 dir(appPath, [pubspec(package)]).scheduleCreate();
54 69
55 expectValidationError(pubspecField); 70 expectValidationError(pubspecField);
56 run(); 71 run();
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
103 package["authors"] = [ 118 package["authors"] = [
104 "Bob Nystrom <rnystrom@google.com>", 119 "Bob Nystrom <rnystrom@google.com>",
105 "<nweiz@google.com>", 120 "<nweiz@google.com>",
106 "John Messerly <jmesserly@google.com>" 121 "John Messerly <jmesserly@google.com>"
107 ]; 122 ];
108 dir(appPath, [pubspec(package)]).scheduleCreate(); 123 dir(appPath, [pubspec(package)]).scheduleCreate();
109 124
110 expectValidationWarning(pubspecField); 125 expectValidationWarning(pubspecField);
111 run(); 126 run();
112 }); 127 });
128
129 test('has an empty package name', () {
130 dir(appPath, [libPubspec("", "1.0.0")]).scheduleCreate();
131 expectValidationError(name);
132 run();
133 });
134
135 test('has a package name with an invalid character', () {
136 dir(appPath, [libPubspec("test-pkg", "1.0.0")]).scheduleCreate();
137 expectValidationError(name);
138 run();
139 });
140
141 test('has a package name that begins with a number', () {
142 dir(appPath, [libPubspec("8ball", "1.0.0")]).scheduleCreate();
143 expectValidationError(name);
144 run();
145 });
146
147 test('has a package name that contains upper-case letters', () {
148 dir(appPath, [libPubspec("TestPkg", "1.0.0")]).scheduleCreate();
149 expectValidationWarning(name);
150 run();
151 });
152
153 test('has a package name that is a Dart identifier', () {
154 dir(appPath, [libPubspec("operator", "1.0.0")]).scheduleCreate();
155 expectValidationError(name);
156 run();
157 });
158
159 test('has a library name with an invalid character', () {
160 dir(appPath, [
161 libPubspec("test_pkg", "1.0.0"),
162 dir("lib", [file("test-pkg.dart", "int i = 0;")])
163 ]).scheduleCreate();
164 expectValidationError(name);
165 run();
166 });
167
168 test('has a library name that begins with a number', () {
169 dir(appPath, [
170 libPubspec("test_pkg", "1.0.0"),
171 dir("lib", [file("8ball.dart", "int i = 0;")])
172 ]).scheduleCreate();
173 expectValidationError(name);
174 run();
175 });
176
177 test('has a library name that contains upper-case letters', () {
178 dir(appPath, [
179 libPubspec("test_pkg", "1.0.0"),
180 dir("lib", [file("TestPkg.dart", "int i = 0;")])
181 ]).scheduleCreate();
182 expectValidationWarning(name);
183 run();
184 });
185
186 test('has a library name that is a Dart identifier', () {
187 dir(appPath, [
188 libPubspec("test_pkg", "1.0.0"),
189 dir("lib", [file("operator.dart", "int i = 0;")])
190 ]).scheduleCreate();
191 expectValidationError(name);
192 run();
193 });
113 }); 194 });
114 } 195 }
OLDNEW
« no previous file with comments | « utils/pub/validator/name.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698