mirror of
https://github.com/flutter/flutter
synced 2024-10-13 19:52:53 +00:00
74bd7b6f6d
* opt out the flutter tool * oops EOF * fix import * Update tool_backend.dart * Update daemon_client.dart * fix more
297 lines
8.5 KiB
Dart
297 lines
8.5 KiB
Dart
// Copyright 2014 The Flutter Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
// @dart = 2.8
|
|
|
|
import 'dart:async';
|
|
|
|
import 'package:flutter_tools/src/base/file_system.dart';
|
|
import 'package:flutter_tools/src/base/io.dart';
|
|
import 'package:flutter_tools/src/base/logger.dart';
|
|
import 'package:flutter_tools/src/base/platform.dart';
|
|
import 'package:flutter_tools/src/devtools_launcher.dart';
|
|
import 'package:flutter_tools/src/globals.dart' as globals;
|
|
import 'package:flutter_tools/src/persistent_tool_state.dart';
|
|
import 'package:flutter_tools/src/resident_runner.dart';
|
|
|
|
import '../src/common.dart';
|
|
import '../src/context.dart';
|
|
|
|
void main() {
|
|
BufferLogger logger;
|
|
FakePlatform platform;
|
|
PersistentToolState persistentToolState;
|
|
|
|
setUp(() {
|
|
logger = BufferLogger.test();
|
|
platform = FakePlatform(environment: <String, String>{});
|
|
|
|
final Directory tempDir = globals.fs.systemTempDirectory.createTempSync('devtools_launcher_test');
|
|
persistentToolState = PersistentToolState.test(
|
|
directory: tempDir,
|
|
logger: logger,
|
|
);
|
|
});
|
|
|
|
testWithoutContext('DevtoolsLauncher launches DevTools through pub and saves the URI', () async {
|
|
final Completer<void> completer = Completer<void>();
|
|
final DevtoolsLauncher launcher = DevtoolsServerLauncher(
|
|
pubExecutable: 'pub',
|
|
logger: logger,
|
|
platform: platform,
|
|
persistentToolState: persistentToolState,
|
|
processManager: FakeProcessManager.list(<FakeCommand>[
|
|
const FakeCommand(
|
|
command: <String>[
|
|
'pub',
|
|
'global',
|
|
'activate',
|
|
'devtools',
|
|
],
|
|
stdout: 'Activated DevTools 0.9.5',
|
|
),
|
|
const FakeCommand(
|
|
command: <String>[
|
|
'pub',
|
|
'global',
|
|
'list',
|
|
],
|
|
stdout: 'devtools 0.9.6',
|
|
),
|
|
FakeCommand(
|
|
command: const <String>[
|
|
'pub',
|
|
'global',
|
|
'run',
|
|
'devtools',
|
|
'--no-launch-browser',
|
|
],
|
|
stdout: 'Serving DevTools at http://127.0.0.1:9100\n',
|
|
completer: completer,
|
|
),
|
|
]),
|
|
);
|
|
|
|
final DevToolsServerAddress address = await launcher.serve();
|
|
expect(address.host, '127.0.0.1');
|
|
expect(address.port, 9100);
|
|
});
|
|
|
|
testWithoutContext('DevtoolsLauncher launches DevTools in browser', () async {
|
|
final Completer<void> completer = Completer<void>();
|
|
final DevtoolsLauncher launcher = DevtoolsServerLauncher(
|
|
pubExecutable: 'pub',
|
|
logger: logger,
|
|
platform: platform,
|
|
persistentToolState: persistentToolState,
|
|
processManager: FakeProcessManager.list(<FakeCommand>[
|
|
const FakeCommand(
|
|
command: <String>[
|
|
'pub',
|
|
'global',
|
|
'activate',
|
|
'devtools',
|
|
],
|
|
stdout: 'Activated DevTools 0.9.5',
|
|
),
|
|
const FakeCommand(
|
|
command: <String>[
|
|
'pub',
|
|
'global',
|
|
'list',
|
|
],
|
|
stdout: 'devtools 0.9.6',
|
|
),
|
|
FakeCommand(
|
|
command: const <String>[
|
|
'pub',
|
|
'global',
|
|
'run',
|
|
'devtools',
|
|
'--no-launch-browser',
|
|
],
|
|
stdout: 'Serving DevTools at http://127.0.0.1:9100\n',
|
|
completer: completer,
|
|
),
|
|
]),
|
|
);
|
|
|
|
final DevToolsServerAddress address = await launcher.serve();
|
|
expect(address.host, '127.0.0.1');
|
|
expect(address.port, 9100);
|
|
});
|
|
|
|
testWithoutContext('DevtoolsLauncher does not launch a new DevTools instance if one is already active', () async {
|
|
final Completer<void> completer = Completer<void>();
|
|
final DevtoolsLauncher launcher = DevtoolsServerLauncher(
|
|
pubExecutable: 'pub',
|
|
logger: logger,
|
|
platform: platform,
|
|
persistentToolState: persistentToolState,
|
|
processManager: FakeProcessManager.list(<FakeCommand>[
|
|
const FakeCommand(
|
|
command: <String>[
|
|
'pub',
|
|
'global',
|
|
'activate',
|
|
'devtools',
|
|
],
|
|
stdout: 'Activated DevTools 0.9.5',
|
|
),
|
|
const FakeCommand(
|
|
command: <String>[
|
|
'pub',
|
|
'global',
|
|
'list',
|
|
],
|
|
stdout: 'devtools 0.9.6',
|
|
),
|
|
FakeCommand(
|
|
command: const <String>[
|
|
'pub',
|
|
'global',
|
|
'run',
|
|
'devtools',
|
|
'--no-launch-browser',
|
|
],
|
|
stdout: 'Serving DevTools at http://127.0.0.1:9100\n',
|
|
completer: completer,
|
|
),
|
|
]),
|
|
);
|
|
|
|
DevToolsServerAddress address = await launcher.serve();
|
|
expect(address.host, '127.0.0.1');
|
|
expect(address.port, 9100);
|
|
|
|
// Call `serve` again and verify that the already running server is returned.
|
|
address = await launcher.serve();
|
|
expect(address.host, '127.0.0.1');
|
|
expect(address.port, 9100);
|
|
});
|
|
|
|
testWithoutContext('DevtoolsLauncher does not activate DevTools if it was recently activated', () async {
|
|
persistentToolState.lastDevToolsActivationTime = DateTime.now();
|
|
final DevtoolsLauncher launcher = DevtoolsServerLauncher(
|
|
pubExecutable: 'pub',
|
|
logger: logger,
|
|
platform: platform,
|
|
persistentToolState: persistentToolState,
|
|
processManager: FakeProcessManager.list(<FakeCommand>[
|
|
const FakeCommand(
|
|
command: <String>[
|
|
'pub',
|
|
'global',
|
|
'list',
|
|
],
|
|
stdout: 'devtools 0.9.6',
|
|
),
|
|
const FakeCommand(
|
|
command: <String>[
|
|
'pub',
|
|
'global',
|
|
'run',
|
|
'devtools',
|
|
'--no-launch-browser',
|
|
],
|
|
stdout: 'Serving DevTools at http://127.0.0.1:9100\n',
|
|
),
|
|
]),
|
|
);
|
|
|
|
await launcher.serve();
|
|
});
|
|
|
|
testWithoutContext('DevtoolsLauncher prints error if exception is thrown during activate', () async {
|
|
final DevtoolsLauncher launcher = DevtoolsServerLauncher(
|
|
pubExecutable: 'pub',
|
|
logger: logger,
|
|
platform: platform,
|
|
persistentToolState: persistentToolState,
|
|
processManager: FakeProcessManager.list(<FakeCommand>[
|
|
const FakeCommand(
|
|
command: <String>[
|
|
'pub',
|
|
'global',
|
|
'activate',
|
|
'devtools',
|
|
],
|
|
stderr: 'Error - could not activate devtools',
|
|
exitCode: 1,
|
|
),
|
|
const FakeCommand(
|
|
command: <String>[
|
|
'pub',
|
|
'global',
|
|
'list',
|
|
],
|
|
stdout: 'devtools 0.9.6',
|
|
),
|
|
FakeCommand(
|
|
command: const <String>[
|
|
'pub',
|
|
'global',
|
|
'run',
|
|
'devtools',
|
|
'--no-launch-browser',
|
|
'--vm-uri=http://127.0.0.1:1234/abcdefg',
|
|
],
|
|
onRun: () {
|
|
throw const ProcessException('pub', <String>[]);
|
|
}
|
|
)
|
|
]),
|
|
);
|
|
|
|
await launcher.launch(Uri.parse('http://127.0.0.1:1234/abcdefg'));
|
|
|
|
expect(logger.errorText, contains('Error running `pub global activate devtools`:\nError - could not activate devtools'));
|
|
});
|
|
|
|
testWithoutContext('DevtoolsLauncher prints error if exception is thrown during launch', () async {
|
|
final DevtoolsLauncher launcher = DevtoolsServerLauncher(
|
|
pubExecutable: 'pub',
|
|
logger: logger,
|
|
platform: platform,
|
|
persistentToolState: persistentToolState,
|
|
processManager: FakeProcessManager.list(<FakeCommand>[
|
|
const FakeCommand(
|
|
command: <String>[
|
|
'pub',
|
|
'global',
|
|
'activate',
|
|
'devtools',
|
|
],
|
|
stdout: 'Activated DevTools 0.9.5',
|
|
),
|
|
const FakeCommand(
|
|
command: <String>[
|
|
'pub',
|
|
'global',
|
|
'list',
|
|
],
|
|
stdout: 'devtools 0.9.6',
|
|
),
|
|
FakeCommand(
|
|
command: const <String>[
|
|
'pub',
|
|
'global',
|
|
'run',
|
|
'devtools',
|
|
'--no-launch-browser',
|
|
'--vm-uri=http://127.0.0.1:1234/abcdefg',
|
|
],
|
|
onRun: () {
|
|
throw const ProcessException('pub', <String>[]);
|
|
}
|
|
)
|
|
]),
|
|
);
|
|
|
|
await launcher.launch(Uri.parse('http://127.0.0.1:1234/abcdefg'));
|
|
|
|
expect(logger.errorText, contains('Failed to launch DevTools: ProcessException'));
|
|
});
|
|
}
|