Make tests more agnostic to the test environment (#3402)
diff --git a/test/get/with_empty_environment_test.dart b/test/get/with_empty_environment_test.dart index 30768c4..5dab9b3 100644 --- a/test/get/with_empty_environment_test.dart +++ b/test/get/with_empty_environment_test.dart
@@ -2,8 +2,6 @@ // 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; @@ -18,10 +16,6 @@ await pubGet(environment: { '_PUB_TEST_CONFIG_DIR': null, - if (Platform.isWindows) ...{ - 'SYSTEMROOT': Platform.environment['SYSTEMROOT'], - 'TMP': Platform.environment['TMP'], - }, - }, includeParentEnvironment: false); + }, includeParentHomeAndPath: false); }); }
diff --git a/test/test_pub.dart b/test/test_pub.dart index e7e7bc7..3c2f102 100644 --- a/test/test_pub.dart +++ b/test/test_pub.dart
@@ -130,7 +130,7 @@ int? exitCode, Map<String, String?>? environment, String? workingDirectory, - includeParentEnvironment = true, + includeParentHomeAndPath = true, }) async { if (error != null && warning != null) { throw ArgumentError("Cannot pass both 'error' and 'warning'."); @@ -155,7 +155,7 @@ exitCode: exitCode, environment: environment, workingDirectory: workingDirectory, - includeParentEnvironment: includeParentEnvironment); + includeParentHomeAndPath: includeParentHomeAndPath); } Future<void> pubAdd({ @@ -186,7 +186,7 @@ int? exitCode, Map<String, String?>? environment, String? workingDirectory, - bool includeParentEnvironment = true, + bool includeParentHomeAndPath = true, }) async => await pubCommand( RunCommand.get, @@ -197,7 +197,7 @@ exitCode: exitCode, environment: environment, workingDirectory: workingDirectory, - includeParentEnvironment: includeParentEnvironment, + includeParentHomeAndPath: includeParentHomeAndPath, ); Future<void> pubUpgrade( @@ -322,7 +322,7 @@ String? workingDirectory, Map<String, String?>? environment, List<String>? input, - includeParentEnvironment = true}) async { + includeParentHomeAndPath = true}) async { exitCode ??= exit_codes.SUCCESS; // Cannot pass both output and outputJson. assert(output == null || outputJson == null); @@ -331,7 +331,7 @@ args: args, workingDirectory: workingDirectory, environment: environment, - includeParentEnvironment: includeParentEnvironment, + includeParentHomeAndPath: includeParentHomeAndPath, ); if (input != null) { @@ -446,7 +446,7 @@ String? workingDirectory, Map<String, String?>? environment, bool verbose = true, - includeParentEnvironment = true}) async { + includeParentHomeAndPath = true}) async { args ??= []; ensureDir(_pathInSandbox(appPath)); @@ -468,7 +468,21 @@ ..addAll([pubPath, if (!verbose) '--verbosity=normal']) ..addAll(args); - final mergedEnvironment = getPubTestEnvironment(tokenEndpoint); + final systemRoot = Platform.environment['SYSTEMROOT']; + final tmp = Platform.environment['TMP']; + + final mergedEnvironment = { + if (includeParentHomeAndPath) ...{ + 'HOME': Platform.environment['HOME'] ?? '', + 'PATH': Platform.environment['PATH'] ?? '', + }, + // These seem to be needed for networking to work. + if (Platform.isWindows) ...{ + if (systemRoot != null) 'SYSTEMROOT': systemRoot, + if (tmp != null) 'TMP': tmp, + }, + ...getPubTestEnvironment(tokenEndpoint) + }; for (final e in (environment ?? {}).entries) { var value = e.value; if (value == null) { @@ -482,7 +496,7 @@ environment: mergedEnvironment, workingDirectory: workingDirectory ?? _pathInSandbox(appPath), description: args.isEmpty ? 'pub' : 'pub ${args.first}', - includeParentEnvironment: includeParentEnvironment); + includeParentEnvironment: false); } /// A subclass of [TestProcess] that parses pub's verbose logging output and
diff --git a/test/token/add_token_test.dart b/test/token/add_token_test.dart index 65f7d56..e8d0dc4 100644 --- a/test/token/add_token_test.dart +++ b/test/token/add_token_test.dart
@@ -147,7 +147,7 @@ error: contains('No config dir found.'), exitCode: exit_codes.DATA, environment: {'_PUB_TEST_CONFIG_DIR': null}, - includeParentEnvironment: false, + includeParentHomeAndPath: false, ); });
diff --git a/test/token/remove_token_test.dart b/test/token/remove_token_test.dart index bfe2428..df880a4 100644 --- a/test/token/remove_token_test.dart +++ b/test/token/remove_token_test.dart
@@ -66,7 +66,7 @@ error: contains('No config dir found.'), exitCode: exit_codes.DATA, environment: {'_PUB_TEST_CONFIG_DIR': null}, - includeParentEnvironment: false, + includeParentHomeAndPath: false, ); }); }
diff --git a/tool/test.dart b/tool/test.dart index 7d98156..3aabf88 100755 --- a/tool/test.dart +++ b/tool/test.dart
@@ -17,6 +17,11 @@ import 'package:pub/src/exceptions.dart'; Future<void> main(List<String> args) async { + if (Platform.environment['FLUTTER_ROOT'] != null) { + print( + 'WARNING: The tests will not run correctly with dart from a flutter checkout!', + ); + } Process? testProcess; final sub = ProcessSignal.sigint.watch().listen((signal) { testProcess?.kill(signal);