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

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

Issue 12094093: Add a validator that tests the size of pub packages. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 10 months 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
« utils/pub/validator/size.dart ('K') | « utils/pub/validator/size.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:async'; 7 import 'dart:async';
8 import 'dart:io'; 8 import 'dart:io';
9 import 'dart:json' as json; 9 import 'dart:json' as json;
10 import 'dart:math' as math;
10 11
11 import 'test_pub.dart'; 12 import 'test_pub.dart';
12 import '../../../pkg/unittest/lib/unittest.dart'; 13 import '../../../pkg/unittest/lib/unittest.dart';
13 import '../../../pkg/http/lib/http.dart' as http; 14 import '../../../pkg/http/lib/http.dart' as http;
14 import '../../../pkg/http/lib/testing.dart'; 15 import '../../../pkg/http/lib/testing.dart';
15 import '../../pub/entrypoint.dart'; 16 import '../../pub/entrypoint.dart';
16 import '../../pub/io.dart'; 17 import '../../pub/io.dart';
17 import '../../pub/validator.dart'; 18 import '../../pub/validator.dart';
18 import '../../pub/validator/compiled_dartdoc.dart'; 19 import '../../pub/validator/compiled_dartdoc.dart';
19 import '../../pub/validator/dependency.dart'; 20 import '../../pub/validator/dependency.dart';
20 import '../../pub/validator/directory.dart'; 21 import '../../pub/validator/directory.dart';
21 import '../../pub/validator/lib.dart'; 22 import '../../pub/validator/lib.dart';
22 import '../../pub/validator/license.dart'; 23 import '../../pub/validator/license.dart';
23 import '../../pub/validator/name.dart'; 24 import '../../pub/validator/name.dart';
24 import '../../pub/validator/pubspec_field.dart'; 25 import '../../pub/validator/pubspec_field.dart';
26 import '../../pub/validator/size.dart';
25 import '../../pub/validator/utf8_readme.dart'; 27 import '../../pub/validator/utf8_readme.dart';
26 28
27 void expectNoValidationError(ValidatorCreator fn) { 29 void expectNoValidationError(ValidatorCreator fn) {
28 expectLater(schedulePackageValidation(fn), pairOf(isEmpty, isEmpty)); 30 expectLater(schedulePackageValidation(fn), pairOf(isEmpty, isEmpty));
29 } 31 }
30 32
31 void expectValidationError(ValidatorCreator fn) { 33 void expectValidationError(ValidatorCreator fn) {
32 expectLater(schedulePackageValidation(fn), pairOf(isNot(isEmpty), anything)); 34 expectLater(schedulePackageValidation(fn), pairOf(isNot(isEmpty), anything));
33 } 35 }
34 36
(...skipping 12 matching lines...) Expand all
47 49
48 Validator lib(Entrypoint entrypoint) => new LibValidator(entrypoint); 50 Validator lib(Entrypoint entrypoint) => new LibValidator(entrypoint);
49 51
50 Validator license(Entrypoint entrypoint) => new LicenseValidator(entrypoint); 52 Validator license(Entrypoint entrypoint) => new LicenseValidator(entrypoint);
51 53
52 Validator name(Entrypoint entrypoint) => new NameValidator(entrypoint); 54 Validator name(Entrypoint entrypoint) => new NameValidator(entrypoint);
53 55
54 Validator pubspecField(Entrypoint entrypoint) => 56 Validator pubspecField(Entrypoint entrypoint) =>
55 new PubspecFieldValidator(entrypoint); 57 new PubspecFieldValidator(entrypoint);
56 58
59 Function size(int size) {
60 return (entrypoint) =>
61 new SizeValidator(entrypoint, new Future.immediate(size));
62 }
63
57 Validator utf8Readme(Entrypoint entrypoint) => 64 Validator utf8Readme(Entrypoint entrypoint) =>
58 new Utf8ReadmeValidator(entrypoint); 65 new Utf8ReadmeValidator(entrypoint);
59 66
60 void scheduleNormalPackage() => normalPackage.scheduleCreate(); 67 void scheduleNormalPackage() => normalPackage.scheduleCreate();
61 68
62 main() { 69 main() {
63 group('should consider a package valid if it', () { 70 group('should consider a package valid if it', () {
64 setUp(scheduleNormalPackage); 71 setUp(scheduleNormalPackage);
65 72
66 integration('looks normal', () { 73 integration('looks normal', () {
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 expectNoValidationError(dependency); 134 expectNoValidationError(dependency);
128 }); 135 });
129 136
130 integration('has a nested directory named "tools"', () { 137 integration('has a nested directory named "tools"', () {
131 dir(appPath, [ 138 dir(appPath, [
132 dir("foo", [dir("tools")]) 139 dir("foo", [dir("tools")])
133 ]).scheduleCreate(); 140 ]).scheduleCreate();
134 expectNoValidationError(directory); 141 expectNoValidationError(directory);
135 }); 142 });
136 143
144 integration('is <= 10 MB', () {
145 expectNoValidationError(size(100));
146 expectNoValidationError(size(10 * math.pow(2, 20)));
147 });
148
137 integration('has most but not all files from compiling dartdoc', () { 149 integration('has most but not all files from compiling dartdoc', () {
138 dir(appPath, [ 150 dir(appPath, [
139 dir("doc-out", [ 151 dir("doc-out", [
140 file("nav.json", ""), 152 file("nav.json", ""),
141 file("index.html", ""), 153 file("index.html", ""),
142 file("styles.css", ""), 154 file("styles.css", ""),
143 file("dart-logo-small.png", "") 155 file("dart-logo-small.png", "")
144 ]) 156 ])
145 ]).scheduleCreate(); 157 ]).scheduleCreate();
146 expectNoValidationError(compiledDartdoc); 158 expectNoValidationError(compiledDartdoc);
(...skipping 395 matching lines...) Expand 10 before | Expand all | Expand 10 after
542 554
543 var names = ["tools", "tests", "docs", "examples", "sample", "samples"]; 555 var names = ["tools", "tests", "docs", "examples", "sample", "samples"];
544 for (var name in names) { 556 for (var name in names) {
545 integration('"$name"', () { 557 integration('"$name"', () {
546 dir(appPath, [dir(name)]).scheduleCreate(); 558 dir(appPath, [dir(name)]).scheduleCreate();
547 expectValidationWarning(directory); 559 expectValidationWarning(directory);
548 }); 560 });
549 } 561 }
550 }); 562 });
551 563
564 integration('is more than 10 MB', () {
565 expectValidationError(size(10 * math.pow(2, 20) + 1));
566 });
567
552 test('contains compiled dartdoc', () { 568 test('contains compiled dartdoc', () {
553 dir(appPath, [ 569 dir(appPath, [
554 dir('doc-out', [ 570 dir('doc-out', [
555 file('nav.json', ''), 571 file('nav.json', ''),
556 file('index.html', ''), 572 file('index.html', ''),
557 file('styles.css', ''), 573 file('styles.css', ''),
558 file('dart-logo-small.png', ''), 574 file('dart-logo-small.png', ''),
559 file('client-live-nav.js', '') 575 file('client-live-nav.js', '')
560 ]) 576 ])
561 ]).scheduleCreate(); 577 ]).scheduleCreate();
562 578
563 expectValidationWarning(compiledDartdoc); 579 expectValidationWarning(compiledDartdoc);
564 }); 580 });
565 581
566 test('has a README with invalid utf-8', () { 582 test('has a README with invalid utf-8', () {
567 dir(appPath, [ 583 dir(appPath, [
568 binaryFile("README", [192]) 584 binaryFile("README", [192])
569 ]).scheduleCreate(); 585 ]).scheduleCreate();
570 expectValidationWarning(utf8Readme); 586 expectValidationWarning(utf8Readme);
571 }); 587 });
572 }); 588 });
573 } 589 }
OLDNEW
« utils/pub/validator/size.dart ('K') | « utils/pub/validator/size.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698