mirror of
https://github.com/dart-lang/sdk
synced 2024-10-14 11:03:19 +00:00
[ CLI / VM ] Add support for disabling DDS
Allows for tooling (e.g., DAP) to spawn their own DDS instance without having to disable the CLI. Fixes https://github.com/dart-lang/sdk/issues/47059 TEST=pkg/dartdev/test/commands/run_test.dart Change-Id: Ie9a4832d424edae67f32560399d3b0a6ca9f1dc0 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/213660 Reviewed-by: Siva Annamalai <asiva@google.com> Commit-Queue: Ben Konyi <bkonyi@google.com>
This commit is contained in:
parent
797bfe5bb0
commit
123950ffa9
|
@ -165,6 +165,12 @@ class RunCommand extends DartdevCommand {
|
|||
negatable: false,
|
||||
help: 'Enables tracing of library and script loading.',
|
||||
)
|
||||
..addFlag('dds',
|
||||
hide: !verbose,
|
||||
help: 'Use the Dart Development Service (DDS) for enhanced debugging '
|
||||
'functionality. Note: Disabling DDS may break some functionality '
|
||||
'in IDEs and other tooling.',
|
||||
defaultsTo: true)
|
||||
..addFlag(
|
||||
'debug-dds',
|
||||
hide: true,
|
||||
|
|
|
@ -12,6 +12,9 @@ import 'package:test/test.dart';
|
|||
import '../utils.dart';
|
||||
|
||||
const String soundNullSafetyMessage = 'Info: Compiling with sound null safety';
|
||||
const devToolsMessagePrefix =
|
||||
'The Dart DevTools debugger and profiler is available at: http://127.0.0.1:';
|
||||
const observatoryMessagePrefix = 'Observatory listening on http://127.0.0.1:';
|
||||
|
||||
void main() {
|
||||
group('run', run, timeout: longTimeout);
|
||||
|
@ -347,10 +350,59 @@ void main(List<String> args) => print("$b $args");
|
|||
expect(result.exitCode, 0);
|
||||
});
|
||||
|
||||
group('DevTools', () {
|
||||
const devToolsMessagePrefix =
|
||||
'The Dart DevTools debugger and profiler is available at: http://127.0.0.1:';
|
||||
group('DDS', () {
|
||||
group('disable', () {
|
||||
test('dart run simple', () {
|
||||
p = project(mainSrc: "void main() { print('Hello World'); }");
|
||||
ProcessResult result = p.runSync([
|
||||
'run',
|
||||
'--no-dds',
|
||||
'--enable-vm-service',
|
||||
p.relativeFilePath,
|
||||
]);
|
||||
expect(result.stdout, isNot(contains(devToolsMessagePrefix)));
|
||||
expect(result.stdout, contains(observatoryMessagePrefix));
|
||||
});
|
||||
|
||||
test('dart simple', () {
|
||||
p = project(mainSrc: "void main() { print('Hello World'); }");
|
||||
ProcessResult result = p.runSync([
|
||||
'--no-dds',
|
||||
'--enable-vm-service',
|
||||
p.relativeFilePath,
|
||||
]);
|
||||
expect(result.stdout, isNot(contains(devToolsMessagePrefix)));
|
||||
expect(result.stdout, contains(observatoryMessagePrefix));
|
||||
});
|
||||
});
|
||||
|
||||
group('explicit enable', () {
|
||||
test('dart run simple', () {
|
||||
p = project(mainSrc: "void main() { print('Hello World'); }");
|
||||
ProcessResult result = p.runSync([
|
||||
'run',
|
||||
'--dds',
|
||||
'--enable-vm-service',
|
||||
p.relativeFilePath,
|
||||
]);
|
||||
expect(result.stdout, contains(devToolsMessagePrefix));
|
||||
expect(result.stdout, contains(observatoryMessagePrefix));
|
||||
});
|
||||
|
||||
test('dart simple', () {
|
||||
p = project(mainSrc: "void main() { print('Hello World'); }");
|
||||
ProcessResult result = p.runSync([
|
||||
'--dds',
|
||||
'--enable-vm-service',
|
||||
p.relativeFilePath,
|
||||
]);
|
||||
expect(result.stdout, contains(devToolsMessagePrefix));
|
||||
expect(result.stdout, contains(observatoryMessagePrefix));
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
group('DevTools', () {
|
||||
test('dart run simple', () async {
|
||||
p = project(mainSrc: "void main() { print('Hello World'); }");
|
||||
ProcessResult result = p.runSync([
|
||||
|
|
|
@ -538,7 +538,7 @@ static Dart_Isolate CreateAndSetupServiceIsolate(const char* script_uri,
|
|||
CHECK_RESULT(result);
|
||||
|
||||
int vm_service_server_port = INVALID_VM_SERVICE_SERVER_PORT;
|
||||
if (Options::disable_dart_dev()) {
|
||||
if (Options::disable_dart_dev() || Options::disable_dds()) {
|
||||
vm_service_server_port = Options::vm_service_server_port();
|
||||
} else if (Options::vm_service_server_port() !=
|
||||
INVALID_VM_SERVICE_SERVER_PORT) {
|
||||
|
@ -549,11 +549,13 @@ static Dart_Isolate CreateAndSetupServiceIsolate(const char* script_uri,
|
|||
// the following scenarios:
|
||||
// - The DartDev CLI is disabled (CLI isolate starts DDS) and VM service is
|
||||
// enabled.
|
||||
// - DDS is disabled.
|
||||
// TODO(bkonyi): do we want to tie DevTools / DDS to the CLI in the long run?
|
||||
bool wait_for_dds_to_advertise_service = !Options::disable_dart_dev();
|
||||
bool wait_for_dds_to_advertise_service =
|
||||
!(Options::disable_dart_dev() || Options::disable_dds());
|
||||
// Load embedder specific bits and return.
|
||||
if (!VmService::Setup(
|
||||
Options::disable_dart_dev() ? Options::vm_service_server_ip()
|
||||
!wait_for_dds_to_advertise_service ? Options::vm_service_server_ip()
|
||||
: DEFAULT_VM_SERVICE_SERVER_IP,
|
||||
vm_service_server_port, Options::vm_service_dev_mode(),
|
||||
Options::vm_service_auth_disabled(),
|
||||
|
|
|
@ -454,6 +454,11 @@ bool Options::ParseArguments(int argc,
|
|||
} else if (IsOption(argv[i], "no-serve-devtools")) {
|
||||
serve_devtools = false;
|
||||
skipVmOption = true;
|
||||
} else if (IsOption(argv[i], "dds")) {
|
||||
// This flag is set by default in dartdev, so we ignore it. --no-dds is
|
||||
// a VM flag as disabling DDS changes how we configure the VM service,
|
||||
// so we don't need to handle that case here.
|
||||
skipVmOption = true;
|
||||
}
|
||||
if (!skipVmOption) {
|
||||
temp_vm_options.AddArgument(argv[i]);
|
||||
|
@ -623,7 +628,8 @@ bool Options::ParseArguments(int argc,
|
|||
if (!run_command && strcmp(argv[i - 1], "run") == 0) {
|
||||
run_command = true;
|
||||
}
|
||||
if (!Options::disable_dart_dev() && enable_vm_service_ && run_command) {
|
||||
if (!Options::disable_dart_dev() && !Options::disable_dds() &&
|
||||
enable_vm_service_ && run_command) {
|
||||
const char* dds_format_str = "--launch-dds=%s\\:%d";
|
||||
size_t size =
|
||||
snprintf(nullptr, 0, dds_format_str, vm_service_server_ip(),
|
||||
|
|
|
@ -44,6 +44,7 @@ namespace bin {
|
|||
V(suppress_core_dump, suppress_core_dump) \
|
||||
V(enable_service_port_fallback, enable_service_port_fallback) \
|
||||
V(disable_dart_dev, disable_dart_dev) \
|
||||
V(no_dds, disable_dds) \
|
||||
V(long_ssl_cert_evaluation, long_ssl_cert_evaluation) \
|
||||
V(bypass_trusting_system_roots, bypass_trusting_system_roots) \
|
||||
V(delayed_filewatch_callback, delayed_filewatch_callback) \
|
||||
|
|
Loading…
Reference in a new issue