Skip to content

Commit

Permalink
[Linux] Add a 'flutter run' console output test (#118279)
Browse files Browse the repository at this point in the history
* Add Linux support for the UI integration test project

* Add Linux run console test
  • Loading branch information
loic-sharma authored Jan 13, 2023
1 parent a523f79 commit cea55d9
Show file tree
Hide file tree
Showing 14 changed files with 560 additions and 0 deletions.
40 changes: 40 additions & 0 deletions .ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -687,6 +687,46 @@ targets:
- bin/**
- .ci.yaml

- name: Linux run_debug_test_linux
recipe: devicelab/devicelab_drone
bringup: true
timeout: 60
properties:
dependencies: >-
[
{"dependency": "clang", "version": "git_revision:5d5aba78dbbee75508f01bcaa69aedb2ab79065a"},
{"dependency": "cmake", "version": "version:3.16.1"},
{"dependency": "ninja", "version": "version:1.9.0"}
]
tags: >
["devicelab", "hostonly", "linux"]
task_name: run_debug_test_linux
runIf:
- dev/**
- packages/flutter_tools/**
- bin/**
- .ci.yaml

- name: Linux run_release_test_linux
recipe: devicelab/devicelab_drone
bringup: true
timeout: 60
properties:
dependencies: >-
[
{"dependency": "clang", "version": "git_revision:5d5aba78dbbee75508f01bcaa69aedb2ab79065a"},
{"dependency": "cmake", "version": "version:3.16.1"},
{"dependency": "ninja", "version": "version:1.9.0"}
]
tags: >
["devicelab", "hostonly", "linux"]
task_name: run_release_test_linux
runIf:
- dev/**
- packages/flutter_tools/**
- bin/**
- .ci.yaml

- name: Linux skp_generator
enabled_branches:
- main
Expand Down
2 changes: 2 additions & 0 deletions TESTOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -251,8 +251,10 @@
/dev/devicelab/bin/tasks/plugin_test_macos.dart @jmagman @flutter/desktop
/dev/devicelab/bin/tasks/plugin_test.dart @stuartmorgan @flutter/plugin
/dev/devicelab/bin/tasks/run_debug_test_android.dart @zanderso @flutter/tool
/dev/devicelab/bin/tasks/run_debug_test_linux.dart @loic-sharma @flutter/tool
/dev/devicelab/bin/tasks/run_debug_test_macos.dart @cbracken @flutter/tool
/dev/devicelab/bin/tasks/run_debug_test_windows.dart @loic-sharma @flutter/tool
/dev/devicelab/bin/tasks/run_release_test_linux.dart @loic-sharma @flutter/tool
/dev/devicelab/bin/tasks/run_release_test_macos.dart @cbracken @flutter/tool
/dev/devicelab/bin/tasks/run_release_test_windows.dart @loic-sharma @flutter/tool
/dev/devicelab/bin/tasks/technical_debt__cost.dart @HansMuller @flutter/framework
Expand Down
12 changes: 12 additions & 0 deletions dev/devicelab/bin/tasks/run_debug_test_linux.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
// 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.

import 'package:flutter_devicelab/framework/devices.dart';
import 'package:flutter_devicelab/framework/framework.dart';
import 'package:flutter_devicelab/tasks/run_tests.dart';

Future<void> main() async {
deviceOperatingSystem = DeviceOperatingSystem.linux;
await task(createLinuxRunDebugTest());
}
12 changes: 12 additions & 0 deletions dev/devicelab/bin/tasks/run_release_test_linux.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
// 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.

import 'package:flutter_devicelab/framework/devices.dart';
import 'package:flutter_devicelab/framework/framework.dart';
import 'package:flutter_devicelab/tasks/run_tests.dart';

Future<void> main() async {
deviceOperatingSystem = DeviceOperatingSystem.linux;
await task(createLinuxRunReleaseTest());
}
89 changes: 89 additions & 0 deletions dev/devicelab/lib/framework/devices.dart
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ enum DeviceOperatingSystem {
fake,
fuchsia,
ios,
linux,
macos,
windows,
}
Expand All @@ -79,6 +80,8 @@ abstract class DeviceDiscovery {
return IosDeviceDiscovery();
case DeviceOperatingSystem.fuchsia:
return FuchsiaDeviceDiscovery();
case DeviceOperatingSystem.linux:
return LinuxDeviceDiscovery();
case DeviceOperatingSystem.macos:
return MacosDeviceDiscovery();
case DeviceOperatingSystem.windows:
Expand Down Expand Up @@ -356,6 +359,40 @@ class AndroidDeviceDiscovery implements DeviceDiscovery {
}
}

class LinuxDeviceDiscovery implements DeviceDiscovery {
factory LinuxDeviceDiscovery() {
return _instance ??= LinuxDeviceDiscovery._();
}

LinuxDeviceDiscovery._();

static LinuxDeviceDiscovery? _instance;

static const LinuxDevice _device = LinuxDevice();

@override
Future<Map<String, HealthCheckResult>> checkDevices() async {
return <String, HealthCheckResult>{};
}

@override
Future<void> chooseWorkingDevice() async { }

@override
Future<void> chooseWorkingDeviceById(String deviceId) async { }

@override
Future<List<String>> discoverDevices() async {
return <String>['linux'];
}

@override
Future<void> performPreflightTasks() async { }

@override
Future<Device> get workingDevice async => _device;
}

class MacosDeviceDiscovery implements DeviceDiscovery {
factory MacosDeviceDiscovery() {
return _instance ??= MacosDeviceDiscovery._();
Expand Down Expand Up @@ -1046,6 +1083,58 @@ class IosDevice extends Device {
}
}

class LinuxDevice extends Device {
const LinuxDevice();

@override
String get deviceId => 'linux';

@override
Future<Map<String, dynamic>> getMemoryStats(String packageName) async {
return <String, dynamic>{};
}

@override
Future<void> home() async { }

@override
Future<bool> isAsleep() async {
return false;
}

@override
Future<bool> isAwake() async {
return true;
}

@override
Stream<String> get logcat => const Stream<String>.empty();

@override
Future<void> clearLogs() async {}

@override
Future<void> reboot() async { }

@override
Future<void> sendToSleep() async { }

@override
Future<void> stop(String packageName) async { }

@override
Future<void> tap(int x, int y) async { }

@override
Future<void> togglePower() async { }

@override
Future<void> unlock() async { }

@override
Future<void> wakeUp() async { }
}

class MacosDevice extends Device {
const MacosDevice();

Expand Down
7 changes: 7 additions & 0 deletions dev/devicelab/lib/tasks/perf_tests.dart
Original file line number Diff line number Diff line change
Expand Up @@ -716,6 +716,7 @@ class StartupTest {
break;
case DeviceOperatingSystem.fake:
case DeviceOperatingSystem.fuchsia:
case DeviceOperatingSystem.linux:
break;
case DeviceOperatingSystem.ios:
case DeviceOperatingSystem.macos:
Expand Down Expand Up @@ -860,6 +861,7 @@ class DevtoolsStartupTest {
break;
case DeviceOperatingSystem.fake:
case DeviceOperatingSystem.fuchsia:
case DeviceOperatingSystem.linux:
case DeviceOperatingSystem.macos:
case DeviceOperatingSystem.windows:
break;
Expand Down Expand Up @@ -1571,6 +1573,8 @@ class CompileTest {
throw Exception('Unsupported option for fake devices');
case DeviceOperatingSystem.fuchsia:
throw Exception('Unsupported option for Fuchsia devices');
case DeviceOperatingSystem.linux:
throw Exception('Unsupported option for Linux devices');
case DeviceOperatingSystem.windows:
unawaited(stderr.flush());
options.insert(0, 'windows');
Expand Down Expand Up @@ -1634,6 +1638,8 @@ class CompileTest {
throw Exception('Unsupported option for fake devices');
case DeviceOperatingSystem.fuchsia:
throw Exception('Unsupported option for Fuchsia devices');
case DeviceOperatingSystem.linux:
throw Exception('Unsupported option for Linux devices');
case DeviceOperatingSystem.macos:
unawaited(stderr.flush());
options.insert(0, 'macos');
Expand Down Expand Up @@ -1687,6 +1693,7 @@ class CompileTest {
case DeviceOperatingSystem.androidArm64:
case DeviceOperatingSystem.fake:
case DeviceOperatingSystem.fuchsia:
case DeviceOperatingSystem.linux:
case DeviceOperatingSystem.windows:
throw Exception('Called ${CompileTest.getSizesFromDarwinApp} with $operatingSystem.');
}
Expand Down
16 changes: 16 additions & 0 deletions dev/devicelab/lib/tasks/run_tests.dart
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,22 @@ TaskFunction createAndroidRunReleaseTest() {
return AndroidRunOutputTest(release: true).call;
}

TaskFunction createLinuxRunDebugTest() {
return DesktopRunOutputTest(
'${flutterDirectory.path}/dev/integration_tests/ui',
'lib/empty.dart',
release: false,
).call;
}

TaskFunction createLinuxRunReleaseTest() {
return DesktopRunOutputTest(
'${flutterDirectory.path}/dev/integration_tests/ui',
'lib/empty.dart',
release: true,
).call;
}

TaskFunction createMacOSRunDebugTest() {
return DesktopRunOutputTest(
// TODO(cbracken): https://github.com/flutter/flutter/issues/87508#issuecomment-1043753201
Expand Down
1 change: 1 addition & 0 deletions dev/integration_tests/ui/linux/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
flutter/ephemeral
Loading

0 comments on commit cea55d9

Please sign in to comment.