| // Copyright (c) 2015, 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. |
| |
| import 'package:test/test.dart'; |
| |
| import 'package:pub/src/exit_codes.dart' as exit_codes; |
| |
| import 'descriptor.dart' as d; |
| import 'test_pub.dart'; |
| |
| main() { |
| forBothPubGetAndUpgrade((command) { |
| test('.packages file is created', () async { |
| await servePackages((builder) { |
| builder.serve("foo", "1.2.3", |
| deps: {'baz': '2.2.2'}, contents: [d.dir("lib", [])]); |
| builder.serve("bar", "3.2.1", contents: [d.dir("lib", [])]); |
| builder.serve("baz", "2.2.2", |
| deps: {"bar": "3.2.1"}, contents: [d.dir("lib", [])]); |
| }); |
| |
| await d.dir(appPath, [ |
| d.appPubspec({"foo": "1.2.3"}), |
| d.dir('lib') |
| ]).create(); |
| |
| await pubCommand(command); |
| |
| await d.dir(appPath, [ |
| d.packagesFile( |
| {"foo": "1.2.3", "bar": "3.2.1", "baz": "2.2.2", "myapp": "."}), |
| ]).validate(); |
| }); |
| |
| test('.packages file is overwritten', () async { |
| await servePackages((builder) { |
| builder.serve("foo", "1.2.3", |
| deps: {'baz': '2.2.2'}, contents: [d.dir("lib", [])]); |
| builder.serve("bar", "3.2.1", contents: [d.dir("lib", [])]); |
| builder.serve("baz", "2.2.2", |
| deps: {"bar": "3.2.1"}, contents: [d.dir("lib", [])]); |
| }); |
| |
| await d.dir(appPath, [ |
| d.appPubspec({"foo": "1.2.3"}), |
| d.dir('lib') |
| ]).create(); |
| |
| var oldFile = d.dir(appPath, [ |
| d.packagesFile({"notFoo": "9.9.9"}) |
| ]); |
| await oldFile.create(); |
| await oldFile.validate(); // Sanity-check that file was created correctly. |
| |
| await pubCommand(command); |
| |
| await d.dir(appPath, [ |
| d.packagesFile( |
| {"foo": "1.2.3", "bar": "3.2.1", "baz": "2.2.2", "myapp": "."}) |
| ]).validate(); |
| }); |
| |
| test('.packages file is not created if pub command fails', () async { |
| await d.dir(appPath, [ |
| d.appPubspec({"foo": "1.2.3"}), |
| d.dir('lib') |
| ]).create(); |
| |
| await pubCommand(command, |
| args: ['--offline'], error: equalsIgnoringWhitespace(""" |
| Because myapp depends on foo any which doesn't exist (could not find |
| package foo in cache), version solving failed. |
| """), exitCode: exit_codes.UNAVAILABLE); |
| |
| await d.dir(appPath, [d.nothing('.packages')]).validate(); |
| }); |
| |
| test('.packages file has relative path to path dependency', () async { |
| await servePackages((builder) { |
| builder.serve("foo", "1.2.3", |
| deps: {'baz': 'any'}, contents: [d.dir("lib", [])]); |
| builder.serve("baz", "9.9.9", deps: {}, contents: [d.dir("lib", [])]); |
| }); |
| |
| await d.dir("local_baz", [ |
| d.libDir("baz", 'baz 3.2.1'), |
| d.libPubspec("baz", "3.2.1") |
| ]).create(); |
| |
| await d.dir(appPath, [ |
| d.pubspec({ |
| "name": "myapp", |
| "dependencies": { |
| "foo": "^1.2.3", |
| }, |
| "dependency_overrides": { |
| "baz": {"path": "../local_baz"}, |
| } |
| }), |
| d.dir('lib') |
| ]).create(); |
| |
| await pubCommand(command); |
| |
| await d.dir(appPath, [ |
| d.packagesFile({"myapp": ".", "baz": "../local_baz", "foo": "1.2.3"}), |
| ]).validate(); |
| }); |
| }); |
| } |