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

Unified 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 side-by-side diff with in-line comments
Download patch
Index: utils/tests/pub/pub_lish_test.dart
diff --git a/utils/tests/pub/pub_lish_test.dart b/utils/tests/pub/pub_lish_test.dart
index 7382a1257ba4805ad741975e1e4f98f513ee8914..05b8ff532daa2551cb25ca78ea9ad489d17facf5 100644
--- a/utils/tests/pub/pub_lish_test.dart
+++ b/utils/tests/pub/pub_lish_test.dart
@@ -9,6 +9,7 @@ import 'dart:json' as json;
import 'test_pub.dart';
import '../../../pkg/unittest/lib/unittest.dart';
+import '../../pub/exit_codes.dart' as exit_codes;
import '../../pub/io.dart';
void handleUploadForm(ScheduledServer server, [Map body]) {
@@ -104,12 +105,12 @@ main() {
pub.shouldExit(0);
expectLater(pub.remainingStderr(),
- contains('Suggestions:\n* Author "Nathan Weizenbaum" in pubspec.yaml'
+ contains('Suggestions:\n* Author "Nathan Weizenbaum" in pubspec.yaml'
' should have an email address\n'
' (e.g. "name <email>").\n\n'
'Package has 1 warning.'));
});
-
+
integration('preview package validation has no warnings', () {
var pkg = package("test_pkg", "1.0.0");
pkg["author"] = "Nathan Weizenbaum <nweiz@google.com>";
@@ -122,7 +123,7 @@ main() {
expectLater(pub.remainingStderr(),
contains('Package has 0 warnings.'));
});
-
+
integration('package validation has a warning and is canceled', () {
var pkg = package("test_pkg", "1.0.0");
pkg["author"] = "Nathan Weizenbaum";
@@ -405,4 +406,76 @@ main() {
expectLater(pub.nextErrLine(), equals(json.stringify(body)));
pub.shouldExit(1);
});
+
+ group('--force', () {
+ setUp(() => normalPackage.scheduleCreate());
+
+ integration('cannot be combined with --dry-run', () {
+ schedulePub(args: ['lish', '--force', '--dry-run'],
+ error: "Cannot use both --force and --dry-run.",
+ exitCode: exit_codes.USAGE);
+ });
+
+ integration('publishes if there are no warnings or errors', () {
+ var server = new ScheduledServer();
+ credentialsFile(server, 'access token').scheduleCreate();
+ var pub = startPubLish(server, args: ['--force']);
+
+ handleUploadForm(server);
+ handleUpload(server);
+
+ server.handle('GET', '/create', (request, response) {
+ response.outputStream.writeString(json.stringify({
+ 'success': {'message': 'Package test_pkg 1.0.0 uploaded!'}
+ }));
+ response.outputStream.close();
+ });
+
+ pub.shouldExit(0);
+ expectLater(pub.remainingStdout(), contains(
+ 'Package test_pkg 1.0.0 uploaded!'));
+ });
+
+ integration('publishes if there are warnings', () {
+ var pkg = package("test_pkg", "1.0.0");
+ pkg["author"] = "Nathan Weizenbaum";
+ dir(appPath, [pubspec(pkg)]).scheduleCreate();
+
+ var server = new ScheduledServer();
+ credentialsFile(server, 'access token').scheduleCreate();
+ var pub = startPubLish(server, args: ['--force']);
+
+ handleUploadForm(server);
+ handleUpload(server);
+
+ server.handle('GET', '/create', (request, response) {
+ response.outputStream.writeString(json.stringify({
+ 'success': {'message': 'Package test_pkg 1.0.0 uploaded!'}
+ }));
+ response.outputStream.close();
+ });
+
+ pub.shouldExit(0);
+ expectLater(pub.remainingStderr(), contains(
+ 'Suggestions:\n* Author "Nathan Weizenbaum" in pubspec.yaml'
+ ' should have an email address\n'
+ ' (e.g. "name <email>").'));
+ expectLater(pub.remainingStdout(), contains(
+ 'Package test_pkg 1.0.0 uploaded!'));
+ });
+
+ integration('does not publish if there are errors', () {
+ var pkg = package("test_pkg", "1.0.0");
+ pkg.remove("homepage");
+ dir(appPath, [pubspec(pkg)]).scheduleCreate();
+
+ var server = new ScheduledServer();
+ var pub = startPubLish(server, args: ['--force']);
+
+ pub.shouldExit(0);
+ expectLater(pub.remainingStderr(), contains(
+ "Sorry, your package is missing a requirement and can't be "
+ "published yet."));
+ });
+ });
}

Powered by Google App Engine
This is Rietveld 408576698