| // Copyright (c) 2014, 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 'dart:io'; |
| |
| import 'package:path/path.dart' as p; |
| import 'package:pub/src/exit_codes.dart' as exit_codes; |
| import 'package:test/test.dart'; |
| |
| import '../descriptor.dart' as d; |
| import '../test_pub.dart'; |
| |
| final dotExample = p.join('.', 'example'); |
| |
| void main() { |
| forBothPubGetAndUpgrade((command) { |
| test( |
| 'pub ${command.name} --example also retrieves dependencies in example/', |
| () async { |
| await d.dir(appPath, [ |
| d.appPubspec(), |
| d.dir('example', [ |
| d.pubspec({ |
| 'name': 'app_example', |
| 'dependencies': { |
| 'myapp': {'path': '..'} |
| } |
| }) |
| ]) |
| ]).create(); |
| |
| await pubCommand(command, args: []); |
| final lockFile = File(p.join(d.sandbox, appPath, 'pubspec.lock')); |
| final exampleLockFile = File( |
| p.join(d.sandbox, appPath, 'example', 'pubspec.lock'), |
| ); |
| |
| expect(lockFile.existsSync(), true); |
| expect(exampleLockFile.existsSync(), false); |
| await pubCommand(command, |
| args: ['--example'], |
| output: command.name == 'get' |
| ? ''' |
| Resolving dependencies... |
| Got dependencies! |
| Resolving dependencies in $dotExample... |
| Got dependencies in $dotExample.''' |
| : ''' |
| Resolving dependencies... |
| No dependencies changed. |
| Resolving dependencies in $dotExample... |
| Got dependencies in $dotExample.'''); |
| expect(lockFile.existsSync(), true); |
| expect(exampleLockFile.existsSync(), true); |
| }); |
| |
| test('Failures are met with a suggested command', () async { |
| await d.dir(appPath, [ |
| d.appPubspec(), |
| d.dir('example', [ |
| d.pubspec({ |
| 'name': 'broken name', |
| 'dependencies': { |
| 'myapp': {'path': '..'} |
| } |
| }) |
| ]) |
| ]).create(); |
| await pubGet( |
| args: ['--example'], |
| error: contains( |
| 'Resolving dependencies in $dotExample failed. For details run `dart pub get --directory $dotExample`'), |
| exitCode: 1, |
| ); |
| await pubGet( |
| args: ['--directory', dotExample], |
| error: contains( |
| 'Error on line 1, column 9 of example${p.separator}pubspec.yaml'), |
| exitCode: exit_codes.DATA, |
| ); |
| }); |
| }); |
| } |