| // Copyright (c) 2017, 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:test/test.dart'; |
| |
| import '../descriptor.dart' as d; |
| import '../test_pub.dart'; |
| |
| void main() { |
| forBothPubGetAndUpgrade((command) { |
| test('sends metadata headers for a direct dependency', () async { |
| final server = await servePackages(); |
| server.serve('foo', '1.0.0'); |
| |
| await d.appDir(dependencies: {'foo': '1.0.0'}).create(); |
| |
| await pubCommand( |
| command, |
| silent: allOf([ |
| contains('X-Pub-OS: ${Platform.operatingSystem}'), |
| contains('X-Pub-Command: ${command.name}'), |
| contains('X-Pub-Session-ID:'), |
| contains('X-Pub-Environment: test-environment'), |
| |
| // We should send the reason when we request the pubspec and when we |
| // request the tarball. |
| matchesMultiple('X-Pub-Reason: direct', 2), |
| isNot(contains('X-Pub-Reason: dev')), |
| ]), |
| ); |
| }); |
| |
| test('sends metadata headers for a dev dependency', () async { |
| final server = await servePackages(); |
| server.serve('foo', '1.0.0'); |
| |
| await d.dir(appPath, [ |
| d.pubspec({ |
| 'name': 'myapp', |
| 'dev_dependencies': {'foo': '1.0.0'} |
| }) |
| ]).create(); |
| |
| await pubCommand( |
| command, |
| silent: allOf([ |
| contains('X-Pub-OS: ${Platform.operatingSystem}'), |
| contains('X-Pub-Command: ${command.name}'), |
| contains('X-Pub-Session-ID:'), |
| contains('X-Pub-Environment: test-environment'), |
| |
| // We should send the reason when we request the pubspec and when we |
| // request the tarball. |
| matchesMultiple('X-Pub-Reason: dev', 2), |
| isNot(contains('X-Pub-Reason: direct')), |
| ]), |
| ); |
| }); |
| |
| test('sends metadata headers for a transitive dependency', () async { |
| final server = await servePackages(); |
| server.serve('bar', '1.0.0'); |
| |
| await d.appDir( |
| dependencies: { |
| 'foo': {'path': '../foo'} |
| }, |
| ).create(); |
| |
| await d.dir('foo', [ |
| d.libPubspec('foo', '1.0.0', deps: {'bar': '1.0.0'}) |
| ]).create(); |
| |
| await pubCommand( |
| command, |
| silent: allOf([ |
| contains('X-Pub-OS: ${Platform.operatingSystem}'), |
| contains('X-Pub-Command: ${command.name}'), |
| contains('X-Pub-Session-ID:'), |
| contains('X-Pub-Environment: test-environment'), |
| isNot(contains('X-Pub-Reason:')), |
| ]), |
| ); |
| }); |
| |
| test("doesn't send metadata headers to a foreign server", () async { |
| var server = await startPackageServer() |
| ..serve('foo', '1.0.0'); |
| |
| await d.appDir( |
| dependencies: { |
| 'foo': { |
| 'version': '1.0.0', |
| 'hosted': {'name': 'foo', 'url': 'http://localhost:${server.port}'} |
| } |
| }, |
| ).create(); |
| |
| await pubCommand(command, silent: isNot(contains('X-Pub-'))); |
| }); |
| |
| test("doesn't send metadata headers when CI=true", () async { |
| (await servePackages()).serve('foo', '1.0.0'); |
| |
| await d.appDir(dependencies: {'foo': '1.0.0'}).create(); |
| |
| await pubCommand( |
| command, |
| silent: isNot(contains('X-Pub-')), |
| environment: { |
| 'CI': 'true', |
| }, |
| ); |
| }); |
| }); |
| } |