| // 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('package_config.json 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.packageConfigFile([ |
| d.packageConfigEntry( |
| name: 'foo', |
| version: '1.2.3', |
| ), |
| d.packageConfigEntry( |
| name: 'bar', |
| version: '3.2.1', |
| ), |
| d.packageConfigEntry( |
| name: 'baz', |
| version: '2.2.2', |
| ), |
| d.packageConfigEntry( |
| name: 'myapp', |
| path: '.', |
| ), |
| ]), |
| ]).validate(); |
| }); |
| |
| test('package_config.json 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.packageConfigFile([ |
| d.packageConfigEntry( |
| name: 'notFoo', |
| version: '9.9.9', |
| ), |
| ]), |
| ]); |
| await oldFile.create(); |
| await oldFile.validate(); // Sanity-check that file was created correctly. |
| |
| await pubCommand(command); |
| |
| await d.dir(appPath, [ |
| d.packageConfigFile([ |
| d.packageConfigEntry( |
| name: 'foo', |
| version: '1.2.3', |
| ), |
| d.packageConfigEntry( |
| name: 'bar', |
| version: '3.2.1', |
| ), |
| d.packageConfigEntry( |
| name: 'baz', |
| version: '2.2.2', |
| ), |
| d.packageConfigEntry( |
| name: 'myapp', |
| path: '.', |
| ), |
| ]), |
| ]).validate(); |
| }); |
| |
| test('package_config.json file is not created if pub 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('.dart_tool/package_config.json'), |
| ]).validate(); |
| }); |
| |
| test( |
| '.dart_tool/package_config.json 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.packageConfigFile([ |
| d.packageConfigEntry( |
| name: 'foo', |
| version: '1.2.3', |
| ), |
| d.packageConfigEntry( |
| name: 'baz', |
| path: '../local_baz', |
| ), |
| d.packageConfigEntry( |
| name: 'myapp', |
| path: '.', |
| ), |
| ]), |
| ]).validate(); |
| }); |
| |
| test('package_config.json has language version', () async { |
| await servePackages((builder) { |
| builder.serve( |
| "foo", |
| "1.2.3", |
| pubspec: { |
| 'environment': { |
| 'sdk': '>=0.0.1 <=0.2.2+2', // tests runs with '0.1.2+3' |
| }, |
| }, |
| contents: [d.dir("lib", [])], |
| ); |
| }); |
| |
| await d.dir(appPath, [ |
| d.pubspec({ |
| 'name': 'myapp', |
| 'dependencies': { |
| 'foo': '^1.2.3', |
| }, |
| 'environment': { |
| 'sdk': '>=0.1.0 <=0.2.2+2', // tests runs with '0.1.2+3' |
| }, |
| }), |
| d.dir('lib') |
| ]).create(); |
| |
| await pubCommand(command); |
| |
| await d.dir(appPath, [ |
| d.packageConfigFile([ |
| d.packageConfigEntry( |
| name: 'foo', |
| version: '1.2.3', |
| languageVersion: '0.0', |
| ), |
| d.packageConfigEntry( |
| name: 'myapp', |
| path: '.', |
| languageVersion: '0.1', |
| ), |
| ]), |
| ]).validate(); |
| }); |
| }); |
| } |