| Index: sdk/lib/_internal/pub/test/install/unknown_source_test.dart
|
| diff --git a/sdk/lib/_internal/pub/test/install/unknown_source_test.dart b/sdk/lib/_internal/pub/test/install/unknown_source_test.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..e8250c5b4cdf022c25872d10201d2115f19a1557
|
| --- /dev/null
|
| +++ b/sdk/lib/_internal/pub/test/install/unknown_source_test.dart
|
| @@ -0,0 +1,80 @@
|
| +// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS d.file
|
| +// for details. All rights reserved. Use of this source code is governed by a
|
| +// BSD-style license that can be found in the LICENSE d.file.
|
| +
|
| +library pub_tests;
|
| +
|
| +import 'dart:io';
|
| +import 'dart:json' as json;
|
| +
|
| +import '../descriptor.dart' as d;
|
| +import '../test_pub.dart';
|
| +
|
| +main() {
|
| + initConfig();
|
| + integration('fails gracefully on a dependency from an unknown source', () {
|
| + d.appDir([{"bad": "foo"}]).create();
|
| +
|
| + schedulePub(args: ['install'],
|
| + error: new RegExp("Package 'myapp' depends on 'foo' from unknown "
|
| + "source 'bad'.\$"),
|
| + exitCode: 1);
|
| + });
|
| +
|
| + integration('fails gracefully on transitive dependency from an unknown '
|
| + 'source', () {
|
| + d.dir('foo', [
|
| + d.libDir('foo', 'foo 0.0.1'),
|
| + d.libPubspec('foo', '0.0.1', deps: [{"bad": "bar"}])
|
| + ]).create();
|
| +
|
| + d.appDir([{"path": "../foo"}]).create();
|
| +
|
| + schedulePub(args: ['install'],
|
| + error: new RegExp("Package 'foo' depends on 'bar' from unknown "
|
| + "source 'bad'.\$"),
|
| + exitCode: 1);
|
| + });
|
| +
|
| + integration('ignores unknown source in lockfile', () {
|
| + d.dir('foo', [
|
| + d.libDir('foo'),
|
| + d.libPubspec('foo', '0.0.1')
|
| + ]).create();
|
| +
|
| + // Depend on "foo" from a valid source.
|
| + d.dir(appPath, [
|
| + d.pubspec({
|
| + "name": "myapp",
|
| + "dependencies": {
|
| + "foo": {"path": "../foo"}
|
| + }
|
| + })
|
| + ]).create();
|
| +
|
| + // But lock it to a bad one.
|
| + d.dir(appPath, [
|
| + d.file("pubspec.lock", json.stringify({
|
| + 'packages': {
|
| + 'foo': {
|
| + 'version': '0.0.0',
|
| + 'source': 'bad',
|
| + 'description': {
|
| + 'name': 'foo'
|
| + }
|
| + }
|
| + }
|
| + }))
|
| + ]).create();
|
| +
|
| + schedulePub(args: ['install'],
|
| + output: new RegExp(r"Dependencies installed!$"));
|
| +
|
| + // Should update to the new one.
|
| + d.dir(packagesPath, [
|
| + d.dir("foo", [
|
| + d.file("foo.dart", 'main() => "foo";')
|
| + ])
|
| + ]).validate();
|
| + });
|
| +}
|
|
|