blob: 2faca202ac583312ca0dd559fd59458a4df6b21c [file] [log] [blame]
// Copyright (c) 2013, 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() {
setUp(() async {
await servePackages()
..serve(
'normal',
'1.2.3',
deps: {'transitive': 'any', 'circular_a': 'any'},
)
..serve('transitive', '1.2.3', deps: {'shared': 'any'})
..serve('shared', '1.2.3', deps: {'other': 'any'})
..serve('dev_only', '1.2.3')
..serve('unittest', '1.2.3', deps: {'shared': 'any', 'dev_only': 'any'})
..serve('other', '1.0.0', deps: {'myapp': 'any'})
..serve('overridden', '1.0.0')
..serve('overridden', '2.0.0')
..serve('override_only', '1.2.3')
..serve('circular_a', '1.2.3', deps: {'circular_b': 'any'})
..serve('circular_b', '1.2.3', deps: {'circular_a': 'any'});
await d.dir(
'from_path',
[d.libDir('from_path'), d.libPubspec('from_path', '1.2.3')],
).create();
await d.dir(appPath, [
d.pubspec({
'name': 'myapp',
'dependencies': {
'normal': 'any',
'overridden': '1.0.0',
'from_path': {'path': '../from_path'},
},
'dev_dependencies': {'unittest': 'any'},
'dependency_overrides': {'overridden': '2.0.0', 'override_only': 'any'},
}),
]).create();
});
group('lists all dependencies', () {
test('in compact form', () async {
await pubGet();
await runPub(
args: ['deps', '-s', 'compact'],
output: '''
Dart SDK 3.1.2+3
myapp 0.0.0
dependencies:
- from_path 1.2.3
- normal 1.2.3 [transitive circular_a]
- overridden 2.0.0
dev dependencies:
- unittest 1.2.3 [shared dev_only]
dependency overrides:
- overridden 2.0.0
- override_only 1.2.3
transitive dependencies:
- circular_a 1.2.3 [circular_b]
- circular_b 1.2.3 [circular_a]
- dev_only 1.2.3
- other 1.0.0 [myapp]
- shared 1.2.3 [other]
- transitive 1.2.3 [shared]
''',
);
});
test('in list form', () async {
await pubGet();
await runPub(
args: ['deps', '--style', 'list'],
output: '''
Dart SDK 3.1.2+3
myapp 0.0.0
dependencies:
- normal 1.2.3
- transitive any
- circular_a any
- overridden 2.0.0
- from_path 1.2.3
dev dependencies:
- unittest 1.2.3
- shared any
- dev_only any
dependency overrides:
- overridden 2.0.0
- override_only 1.2.3
transitive dependencies:
- circular_a 1.2.3
- circular_b any
- circular_b 1.2.3
- circular_a any
- dev_only 1.2.3
- other 1.0.0
- myapp any
- shared 1.2.3
- other any
- transitive 1.2.3
- shared any
''',
);
});
test('in tree form', () async {
await pubGet();
await runPub(
args: ['deps'],
output: '''
Dart SDK 3.1.2+3
myapp 0.0.0
├── from_path 1.2.3
├── normal 1.2.3
│ ├── circular_a 1.2.3
│ │ └── circular_b 1.2.3
│ │ └── circular_a...
│ └── transitive 1.2.3
│ └── shared...
├── overridden 2.0.0
├── override_only 1.2.3
└── unittest 1.2.3
├── dev_only 1.2.3
└── shared 1.2.3
└── other 1.0.0
└── myapp...
''',
);
});
test('in json form', () async {
await pubGet();
await runPub(
args: ['deps', '--json'],
output: '''
{
"root": "myapp",
"packages": [
{
"name": "myapp",
"version": "0.0.0",
"kind": "root",
"source": "root",
"dependencies": [
"normal",
"overridden",
"from_path",
"unittest",
"override_only"
]
},
{
"name": "override_only",
"version": "1.2.3",
"kind": "transitive",
"source": "hosted",
"dependencies": []
},
{
"name": "unittest",
"version": "1.2.3",
"kind": "dev",
"source": "hosted",
"dependencies": [
"shared",
"dev_only"
]
},
{
"name": "dev_only",
"version": "1.2.3",
"kind": "transitive",
"source": "hosted",
"dependencies": []
},
{
"name": "shared",
"version": "1.2.3",
"kind": "transitive",
"source": "hosted",
"dependencies": [
"other"
]
},
{
"name": "other",
"version": "1.0.0",
"kind": "transitive",
"source": "hosted",
"dependencies": [
"myapp"
]
},
{
"name": "from_path",
"version": "1.2.3",
"kind": "direct",
"source": "path",
"dependencies": []
},
{
"name": "overridden",
"version": "2.0.0",
"kind": "direct",
"source": "hosted",
"dependencies": []
},
{
"name": "normal",
"version": "1.2.3",
"kind": "direct",
"source": "hosted",
"dependencies": [
"transitive",
"circular_a"
]
},
{
"name": "circular_a",
"version": "1.2.3",
"kind": "transitive",
"source": "hosted",
"dependencies": [
"circular_b"
]
},
{
"name": "circular_b",
"version": "1.2.3",
"kind": "transitive",
"source": "hosted",
"dependencies": [
"circular_a"
]
},
{
"name": "transitive",
"version": "1.2.3",
"kind": "transitive",
"source": "hosted",
"dependencies": [
"shared"
]
}
],
"sdks": [
{
"name": "Dart",
"version": "3.1.2+3"
}
],
"executables": []
}''',
);
});
test('with the Flutter SDK, if applicable', () async {
await pubGet();
await d.dir('flutter', [d.flutterVersion('4.3.2+1')]).create();
await runPub(
args: ['deps'],
output: contains('Flutter SDK 4.3.2+1'),
environment: {'FLUTTER_ROOT': p.join(d.sandbox, 'flutter')},
);
});
test('with the Fuchsia SDK, if applicable', () async {
await pubGet();
await d.dir('fuchsia', [d.file('version', '4.3.2+1')]).create();
await runPub(
args: ['deps'],
output: contains('Fuchsia SDK 4.3.2+1'),
environment: {'FUCHSIA_DART_SDK_ROOT': p.join(d.sandbox, 'fuchsia')},
);
});
});
group('lists non-dev dependencies', () {
test('in compact form', () async {
await pubGet();
await runPub(
args: ['deps', '-s', 'compact', '--no-dev'],
output: '''
Dart SDK 3.1.2+3
myapp 0.0.0
dependencies:
- from_path 1.2.3
- normal 1.2.3 [transitive circular_a]
- overridden 2.0.0
dependency overrides:
- overridden 2.0.0
- override_only 1.2.3
transitive dependencies:
- circular_a 1.2.3 [circular_b]
- circular_b 1.2.3 [circular_a]
- other 1.0.0 [myapp]
- shared 1.2.3 [other]
- transitive 1.2.3 [shared]
''',
);
});
test('in list form', () async {
await pubGet();
await runPub(
args: ['deps', '--style', 'list', '--no-dev'],
output: '''
Dart SDK 3.1.2+3
myapp 0.0.0
dependencies:
- normal 1.2.3
- transitive any
- circular_a any
- overridden 2.0.0
- from_path 1.2.3
dependency overrides:
- overridden 2.0.0
- override_only 1.2.3
transitive dependencies:
- circular_a 1.2.3
- circular_b any
- circular_b 1.2.3
- circular_a any
- other 1.0.0
- myapp any
- shared 1.2.3
- other any
- transitive 1.2.3
- shared any
''',
);
});
test('in tree form', () async {
await pubGet();
await runPub(
args: ['deps', '--no-dev'],
output: '''
Dart SDK 3.1.2+3
myapp 0.0.0
├── from_path 1.2.3
├── normal 1.2.3
│ ├── circular_a 1.2.3
│ │ └── circular_b 1.2.3
│ │ └── circular_a...
│ └── transitive 1.2.3
│ └── shared 1.2.3
│ └── other 1.0.0
│ └── myapp...
├── overridden 2.0.0
└── override_only 1.2.3
''',
);
});
});
}