Version 2.15.0-74.0.dev

Merge commit '7ccf06ad6392d6105db6879a1acf13e883b71a46' into 'dev'
diff --git a/pkg/analysis_server/lib/src/analysis_server_abstract.dart b/pkg/analysis_server/lib/src/analysis_server_abstract.dart
index 4b28f5c..538236d 100644
--- a/pkg/analysis_server/lib/src/analysis_server_abstract.dart
+++ b/pkg/analysis_server/lib/src/analysis_server_abstract.dart
@@ -168,7 +168,9 @@
     if (baseResourceProvider is PhysicalResourceProvider) {
       processRunner ??= ProcessRunner();
     }
-    final pubCommand = processRunner != null
+    final pubCommand = processRunner != null &&
+            Platform.environment[PubCommand.disablePubCommandEnvironmentKey] ==
+                null
         ? PubCommand(instrumentationService, processRunner)
         : null;
 
diff --git a/pkg/analysis_server/lib/src/services/pub/pub_command.dart b/pkg/analysis_server/lib/src/services/pub/pub_command.dart
index 5f24d1a..f6188e0 100644
--- a/pkg/analysis_server/lib/src/services/pub/pub_command.dart
+++ b/pkg/analysis_server/lib/src/services/pub/pub_command.dart
@@ -15,6 +15,15 @@
 /// `pub` commands will be queued and not run concurrently.
 class PubCommand {
   static const String _pubEnvironmentKey = 'PUB_ENVIRONMENT';
+
+  /// An environment variable that can be set to prevent a [PubCommand] from
+  /// being created/used by the analysis server.
+  ///
+  /// This is generally intended for integration tests to prevent them spawning
+  /// pub commands while testing other functionality.
+  static const String disablePubCommandEnvironmentKey =
+      'DART_SERVER_DISABLE_PUB_COMMAND';
+
   final InstrumentationService _instrumentationService;
   late final ProcessRunner _processRunner;
   late final String _pubPath;
diff --git a/pkg/analysis_server/test/integration/lsp_server/integration_tests.dart b/pkg/analysis_server/test/integration/lsp_server/integration_tests.dart
index 6b05d1a..3022431 100644
--- a/pkg/analysis_server/test/integration/lsp_server/integration_tests.dart
+++ b/pkg/analysis_server/test/integration/lsp_server/integration_tests.dart
@@ -7,6 +7,7 @@
 
 import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
 import 'package:analysis_server/src/lsp/channel/lsp_byte_stream_channel.dart';
+import 'package:analysis_server/src/services/pub/pub_command.dart';
 import 'package:analyzer/instrumentation/instrumentation.dart';
 import 'package:meta/meta.dart';
 import 'package:path/path.dart';
@@ -164,7 +165,11 @@
     }
 
     final arguments = [...?vmArgs, serverPath, '--lsp', '--suppress-analytics'];
-    final process = await Process.start(dartBinary, arguments);
+    final process = await Process.start(
+      dartBinary,
+      arguments,
+      environment: {PubCommand.disablePubCommandEnvironmentKey: 'true'},
+    );
     _process = process;
     process.exitCode.then((int code) {
       if (code != 0) {
diff --git a/pkg/analysis_server/test/integration/support/integration_tests.dart b/pkg/analysis_server/test/integration/support/integration_tests.dart
index 4585df2..dd30a55 100644
--- a/pkg/analysis_server/test/integration/support/integration_tests.dart
+++ b/pkg/analysis_server/test/integration/support/integration_tests.dart
@@ -9,6 +9,7 @@
 
 import 'package:analysis_server/protocol/protocol_constants.dart';
 import 'package:analysis_server/protocol/protocol_generated.dart';
+import 'package:analysis_server/src/services/pub/pub_command.dart';
 import 'package:analyzer/src/test_utilities/package_config_file_builder.dart';
 import 'package:analyzer_plugin/protocol/protocol_common.dart';
 import 'package:path/path.dart' as path;
@@ -681,7 +682,11 @@
     if (useAnalysisHighlight2) {
       arguments.add('--useAnalysisHighlight2');
     }
-    _process = await Process.start(dartBinary, arguments);
+    _process = await Process.start(
+      dartBinary,
+      arguments,
+      environment: {PubCommand.disablePubCommandEnvironmentKey: 'true'},
+    );
     _process.exitCode.then((int code) {
       if (code != 0) {
         _badDataFromServer('server terminated with exit code $code');
diff --git a/tools/VERSION b/tools/VERSION
index 08b82e6..8b74792 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 15
 PATCH 0
-PRERELEASE 73
+PRERELEASE 74
 PRERELEASE_PATCH 0
\ No newline at end of file