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

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

Issue 12217156: Add --force to pub lish. (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
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 pub_lish_test; 5 library pub_lish_test;
6 6
7 import 'dart:io'; 7 import 'dart:io';
8 import 'dart:json' as json; 8 import 'dart:json' as 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/exit_codes.dart' as exit_codes;
12 import '../../pub/io.dart'; 13 import '../../pub/io.dart';
13 14
14 void handleUploadForm(ScheduledServer server, [Map body]) { 15 void handleUploadForm(ScheduledServer server, [Map body]) {
15 server.handle('GET', '/packages/versions/new.json', (request, response) { 16 server.handle('GET', '/packages/versions/new.json', (request, response) {
16 return server.url.then((url) { 17 return server.url.then((url) {
17 expect(request.headers.value('authorization'), 18 expect(request.headers.value('authorization'),
18 equals('Bearer access token')); 19 equals('Bearer access token'));
19 20
20 if (body == null) { 21 if (body == null) {
21 body = { 22 body = {
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
97 integration('preview package validation has a warning', () { 98 integration('preview package validation has a warning', () {
98 var pkg = package("test_pkg", "1.0.0"); 99 var pkg = package("test_pkg", "1.0.0");
99 pkg["author"] = "Nathan Weizenbaum"; 100 pkg["author"] = "Nathan Weizenbaum";
100 dir(appPath, [pubspec(pkg)]).scheduleCreate(); 101 dir(appPath, [pubspec(pkg)]).scheduleCreate();
101 102
102 var server = new ScheduledServer(); 103 var server = new ScheduledServer();
103 var pub = startPubLish(server, args: ['--dry-run']); 104 var pub = startPubLish(server, args: ['--dry-run']);
104 105
105 pub.shouldExit(0); 106 pub.shouldExit(0);
106 expectLater(pub.remainingStderr(), 107 expectLater(pub.remainingStderr(),
107 contains('Suggestions:\n* Author "Nathan Weizenbaum" in pubspec.yaml' 108 contains('Suggestions:\n* Author "Nathan Weizenbaum" in pubspec.yaml'
108 ' should have an email address\n' 109 ' should have an email address\n'
109 ' (e.g. "name <email>").\n\n' 110 ' (e.g. "name <email>").\n\n'
110 'Package has 1 warning.')); 111 'Package has 1 warning.'));
111 }); 112 });
112 113
113 integration('preview package validation has no warnings', () { 114 integration('preview package validation has no warnings', () {
114 var pkg = package("test_pkg", "1.0.0"); 115 var pkg = package("test_pkg", "1.0.0");
115 pkg["author"] = "Nathan Weizenbaum <nweiz@google.com>"; 116 pkg["author"] = "Nathan Weizenbaum <nweiz@google.com>";
116 dir(appPath, [pubspec(pkg)]).scheduleCreate(); 117 dir(appPath, [pubspec(pkg)]).scheduleCreate();
117 118
118 var server = new ScheduledServer(); 119 var server = new ScheduledServer();
119 var pub = startPubLish(server, args: ['--dry-run']); 120 var pub = startPubLish(server, args: ['--dry-run']);
120 121
121 pub.shouldExit(0); 122 pub.shouldExit(0);
122 expectLater(pub.remainingStderr(), 123 expectLater(pub.remainingStderr(),
123 contains('Package has 0 warnings.')); 124 contains('Package has 0 warnings.'));
124 }); 125 });
125 126
126 integration('package validation has a warning and is canceled', () { 127 integration('package validation has a warning and is canceled', () {
127 var pkg = package("test_pkg", "1.0.0"); 128 var pkg = package("test_pkg", "1.0.0");
128 pkg["author"] = "Nathan Weizenbaum"; 129 pkg["author"] = "Nathan Weizenbaum";
129 dir(appPath, [pubspec(pkg)]).scheduleCreate(); 130 dir(appPath, [pubspec(pkg)]).scheduleCreate();
130 131
131 var server = new ScheduledServer(); 132 var server = new ScheduledServer();
132 var pub = startPubLish(server); 133 var pub = startPubLish(server);
133 134
134 pub.writeLine("n"); 135 pub.writeLine("n");
135 pub.shouldExit(0); 136 pub.shouldExit(0);
(...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after
398 var body = {'success': 'Your package was awesome.'}; 399 var body = {'success': 'Your package was awesome.'};
399 server.handle('GET', '/create', (request, response) { 400 server.handle('GET', '/create', (request, response) {
400 response.outputStream.writeString(json.stringify(body)); 401 response.outputStream.writeString(json.stringify(body));
401 response.outputStream.close(); 402 response.outputStream.close();
402 }); 403 });
403 404
404 expectLater(pub.nextErrLine(), equals('Invalid server response:')); 405 expectLater(pub.nextErrLine(), equals('Invalid server response:'));
405 expectLater(pub.nextErrLine(), equals(json.stringify(body))); 406 expectLater(pub.nextErrLine(), equals(json.stringify(body)));
406 pub.shouldExit(1); 407 pub.shouldExit(1);
407 }); 408 });
409
410 group('--force', () {
411 setUp(() => normalPackage.scheduleCreate());
412
413 integration('cannot be combined with --dry-run', () {
414 schedulePub(args: ['lish', '--force', '--dry-run'],
415 error: "Cannot use both --force and --dry-run.",
416 exitCode: exit_codes.USAGE);
417 });
418
419 integration('publishes if there are no warnings or errors', () {
420 var server = new ScheduledServer();
421 credentialsFile(server, 'access token').scheduleCreate();
422 var pub = startPubLish(server, args: ['--force']);
423
424 handleUploadForm(server);
425 handleUpload(server);
426
427 server.handle('GET', '/create', (request, response) {
428 response.outputStream.writeString(json.stringify({
429 'success': {'message': 'Package test_pkg 1.0.0 uploaded!'}
430 }));
431 response.outputStream.close();
432 });
433
434 pub.shouldExit(0);
435 expectLater(pub.remainingStdout(), contains(
436 'Package test_pkg 1.0.0 uploaded!'));
437 });
438
439 integration('publishes if there are warnings', () {
440 var pkg = package("test_pkg", "1.0.0");
441 pkg["author"] = "Nathan Weizenbaum";
442 dir(appPath, [pubspec(pkg)]).scheduleCreate();
443
444 var server = new ScheduledServer();
445 credentialsFile(server, 'access token').scheduleCreate();
446 var pub = startPubLish(server, args: ['--force']);
447
448 handleUploadForm(server);
449 handleUpload(server);
450
451 server.handle('GET', '/create', (request, response) {
452 response.outputStream.writeString(json.stringify({
453 'success': {'message': 'Package test_pkg 1.0.0 uploaded!'}
454 }));
455 response.outputStream.close();
456 });
457
458 pub.shouldExit(0);
459 expectLater(pub.remainingStderr(), contains(
460 'Suggestions:\n* Author "Nathan Weizenbaum" in pubspec.yaml'
461 ' should have an email address\n'
462 ' (e.g. "name <email>").'));
463 expectLater(pub.remainingStdout(), contains(
464 'Package test_pkg 1.0.0 uploaded!'));
465 });
466
467 integration('does not publish if there are errors', () {
468 var pkg = package("test_pkg", "1.0.0");
469 pkg.remove("homepage");
470 dir(appPath, [pubspec(pkg)]).scheduleCreate();
471
472 var server = new ScheduledServer();
473 var pub = startPubLish(server, args: ['--force']);
474
475 pub.shouldExit(0);
476 expectLater(pub.remainingStderr(), contains(
477 "Sorry, your package is missing a requirement and can't be "
478 "published yet."));
479 });
480 });
408 } 481 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698