| // Copyright (c) 2022, the Dart project authors. Please see the AUTHORS 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 file. |
| |
| import 'package:path/path.dart' as p; |
| import 'package:test/test.dart'; |
| |
| import 'descriptor.dart' as d; |
| import 'test_pub.dart'; |
| |
| void main() { |
| forBothPubGetAndUpgrade((command) { |
| test('supports dependency_overrides', () async { |
| await servePackages() |
| ..serve('lib', '1.0.0') |
| ..serve('lib', '2.0.0'); |
| |
| await d.dir(appPath, [ |
| d.appPubspec(dependencies: {'lib': '1.0.0'}), |
| d.dir('lib'), |
| d.pubspecOverrides({ |
| 'dependency_overrides': {'lib': '2.0.0'}, |
| }), |
| ]).create(); |
| |
| final overridesPath = p.join('.', 'pubspec_overrides.yaml'); |
| await pubCommand( |
| command, |
| output: contains( |
| '! lib 2.0.0 (overridden in $overridesPath)', |
| ), |
| ); |
| |
| await d.dir(appPath, [ |
| d.packageConfigFile([ |
| d.packageConfigEntry( |
| name: 'lib', |
| version: '2.0.0', |
| languageVersion: '3.0', |
| ), |
| d.packageConfigEntry( |
| name: 'myapp', |
| path: '.', |
| languageVersion: '3.0', |
| ), |
| ]), |
| ]).validate(); |
| }); |
| }); |
| |
| test('pubspec_overrides.yaml shadows overrides from pubspec.yaml', () async { |
| await servePackages() |
| ..serve('lib', '1.0.0') |
| ..serve('lib', '2.0.0') |
| ..serve('lib', '3.0.0') |
| ..serve('foo', '1.0.0') |
| ..serve('foo', '2.0.0'); |
| |
| await d.dir(appPath, [ |
| d.appPubspec( |
| dependencies: {'lib': '1.0.0', 'foo': '1.0.0'}, |
| extras: { |
| 'dependency_overrides': {'lib': '2.0.0', 'foo': '2.0.0'}, |
| }, |
| ), |
| d.dir('lib'), |
| // empty overrides file: |
| d.pubspecOverrides({ |
| 'dependency_overrides': {'lib': '3.0.0'}, |
| }), |
| ]).create(); |
| |
| final overridesPath = p.join('.', 'pubspec_overrides.yaml'); |
| await pubGet( |
| output: allOf( |
| contains('! lib 3.0.0 (overridden in $overridesPath)'), |
| contains('+ foo 1.0.0 (2.0.0 available)'), |
| ), |
| ); |
| }); |
| test( |
| "An empty pubspec_overrides.yaml doesn't shadow overrides from pubspec.yaml", |
| () async { |
| await servePackages() |
| ..serve('lib', '1.0.0') |
| ..serve('lib', '2.0.0'); |
| |
| await d.dir(appPath, [ |
| d.appPubspec( |
| dependencies: { |
| 'lib': '1.0.0', |
| }, |
| extras: { |
| 'dependency_overrides': {'lib': '2.0.0'}, |
| }, |
| ), |
| d.dir('lib'), |
| // empty overrides file: |
| d.pubspecOverrides({}), |
| ]).create(); |
| |
| await pubGet( |
| output: contains('! lib 2.0.0 (overridden)'), |
| ); |
| }); |
| } |