Skip to content

Commit

Permalink
[cross_file] Add run_tests.dart (and remove install_chromium_for_benc…
Browse files Browse the repository at this point in the history
…hmarks.sh) (flutter#1756)
  • Loading branch information
ditman authored May 11, 2022
1 parent 563cb10 commit be4847a
Show file tree
Hide file tree
Showing 7 changed files with 105 additions and 52 deletions.
8 changes: 7 additions & 1 deletion .ci/scripts/custom_package_tests.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,11 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# Exclusions
#
# cross_file
# Custom tests need Chrome. (They run in linux-custom_package_tests)

dart pub global run flutter_plugin_tools custom-test \
--packages-for-branch --log-timing
--packages-for-branch --log-timing \
--exclude=cross_file
35 changes: 20 additions & 15 deletions .cirrus.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,18 @@ only_if: $CIRRUS_TAG == '' && $CIRRUS_BRANCH != 'master'
env:
CHANNEL: "master" # Default to master when not explicitly set by a task.

install_chrome_linux_template: &INSTALL_CHROME_LINUX
env:
CHROME_NO_SANDBOX: true
CHROME_DOWNLOAD_DIR: /tmp/chromium
CHROME_EXECUTABLE: $CHROME_DOWNLOAD_DIR/chrome-linux/chrome
CHROMEDRIVER_EXECUTABLE: $CHROME_DOWNLOAD_DIR/chromedriver/chromedriver
PATH: $PATH:$CHROME_DOWNLOAD_DIR/chrome-linux
install_chromium_script:
# Install a pinned version of Chromium and its corresponding ChromeDriver.
# Setting CHROME_EXECUTABLE above causes this version to be used for tests.
- ./script/install_chromium.sh "$CHROME_DIR"

tool_setup_template: &TOOL_SETUP_TEMPLATE
tool_setup_script:
- .ci/scripts/prepare_tool.sh
Expand Down Expand Up @@ -128,6 +140,7 @@ task:
matrix:
CHANNEL: "master"
CHANNEL: "stable"
<< : *INSTALL_CHROME_LINUX
local_tests_script:
# pigeon tests currently don't support Linux:
# https://github.com/flutter/flutter/issues/100386
Expand Down Expand Up @@ -158,16 +171,9 @@ task:
matrix:
CHANNEL: "master"
CHANNEL: "stable"
CHROME_NO_SANDBOX: true
CHROME_DIR: /tmp/web_chromium/
CHROME_EXECUTABLE: $CHROME_DIR/chrome-linux/chrome
install_script:
# Install a pinned version of Chromium and its corresponding ChromeDriver.
# Setting CHROME_EXECUTABLE above causes this version to be used for tests.
- ./script/install_chromium.sh "$CHROME_DIR"
<< : *INSTALL_CHROME_LINUX
chromedriver_background_script:
- cd "$CHROME_DIR"
- ./chromedriver/chromedriver --port=4444
- $CHROMEDRIVER_EXECUTABLE --port=4444
build_script:
- ./script/tool_runner.sh build-examples --web
drive_script:
Expand All @@ -177,11 +183,8 @@ task:
matrix:
CHROMIUM_BUILD: "768968" # Chromium 84.0.4147.0
CHROMIUM_BUILD: "950363" # Chromium 98.0.4758.0
CHROME_NO_SANDBOX: true
install_chromium_script:
- ./script/install_chromium_for_benchmarks.sh
<< : *INSTALL_CHROME_LINUX
script:
- export CHROME_EXECUTABLE=$(pwd)/.chromium/chrome-linux/chrome
- cd packages/web_benchmarks/testing/test_app
- flutter packages get
- cd ../..
Expand Down Expand Up @@ -226,10 +229,12 @@ task:
local_tests_script:
# flutter_image
# https://github.com/flutter/flutter/issues/100387
# cross_file
# Custom tests need Chrome. (They run in linux-custom_package_tests)
- if [[ "$CHANNEL" == "master" ]]; then
- ./script/tool_runner.sh custom-test
- ./script/tool_runner.sh custom-test --exclude=cross_file
- else
- ./script/tool_runner.sh custom-test --exclude=flutter_image
- ./script/tool_runner.sh custom-test --exclude=cross_file,flutter_image
- fi
### macOS desktop tasks ###
- name: macos-platform_tests
Expand Down
6 changes: 6 additions & 0 deletions packages/cross_file/dart_test.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# See https://github.com/dart-lang/test/blob/master/pkgs/test/doc/configuration.md#arguments
override_platforms:
chrome:
settings:
executable: chrome
arguments: --no-sandbox
1 change: 1 addition & 0 deletions packages/cross_file/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,5 @@ dependencies:
meta: ^1.3.0

dev_dependencies:
path: ^1.8.1
test: ^1.21.1
49 changes: 49 additions & 0 deletions packages/cross_file/tool/run_tests.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
// Copyright 2013 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.

// Runs `dart test -p chrome` in the root of the cross_file package.
//
// Called from the custom-tests CI action.
//
// usage: dart run tool/run_tests.dart
// (needs a `chrome` executable in $PATH, or a tweak to dart_test.yaml)
import 'dart:io';
import 'package:path/path.dart' as p;

Future<void> main(List<String> args) async {
final Directory workingDir =
Directory(p.dirname(Platform.script.path)).parent;

final int status = await _runProcess(
'dart',
<String>[
'test',
'-p',
'chrome',
],
workingDirectory: workingDir.path,
);

exit(status);
}

Future<Process> _streamOutput(Future<Process> processFuture) async {
final Process process = await processFuture;
stdout.addStream(process.stdout);
stderr.addStream(process.stderr);
return process;
}

Future<int> _runProcess(
String command,
List<String> arguments, {
String? workingDirectory,
}) async {
final Process process = await _streamOutput(Process.start(
command,
arguments,
workingDirectory: workingDirectory,
));
return process.exitCode;
}
34 changes: 22 additions & 12 deletions script/install_chromium.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,41 +2,51 @@
# Copyright 2013 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.

# This script may be run as:
# $ CHROME_DOWNLOAD_DIR=./whatever script/install_chromium.sh
set -e
set -x

readonly TARGET_DIR=$1
# The target directory where chromium is going to be downloaded
: "${CHROME_DOWNLOAD_DIR:=/tmp/chromium}" # Default value for the CHROME_DOWNLOAD_DIR env.

# The build of Chromium used to test web functionality.
#
# Chromium builds can be located here: https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html?prefix=Linux_x64/
#
# Check: https://github.com/flutter/engine/blob/master/lib/web_ui/dev/browser_lock.yaml
readonly CHROMIUM_BUILD=929514
: "${CHROMIUM_BUILD:=950363}" # Default value for the CHROMIUM_BUILD env.

# Convenience defaults for CHROME_EXECUTABLE and CHROMEDRIVER_EXECUTABLE. These
# two values should be set in the environment from CI, so this script can validate
# that it has completed downloading chrome and driver successfully (and the expected
# files are executable)
: "${CHROME_EXECUTABLE:=$CHROME_DOWNLOAD_DIR/chrome-linux/chrome}"
: "${CHROMEDRIVER_EXECUTABLE:=$CHROME_DOWNLOAD_DIR/chromedriver/chromedriver}"

# The correct ChromeDriver is distributed alongside the chromium build above, as
# `chromedriver_linux64.zip`, so no need to hardcode any extra info about it.
readonly DOWNLOAD_ROOT="https://www.googleapis.com/download/storage/v1/b/chromium-browser-snapshots/o/Linux_x64%2F${CHROMIUM_BUILD}%2F"

# Install Chromium.
mkdir "$TARGET_DIR"
readonly CHROMIUM_ZIP_FILE="$TARGET_DIR/chromium.zip"
mkdir "$CHROME_DOWNLOAD_DIR"
readonly CHROMIUM_ZIP_FILE="$CHROME_DOWNLOAD_DIR/chromium.zip"
wget --no-verbose "${DOWNLOAD_ROOT}chrome-linux.zip?alt=media" -O "$CHROMIUM_ZIP_FILE"
unzip -q "$CHROMIUM_ZIP_FILE" -d "$TARGET_DIR/"
unzip -q "$CHROMIUM_ZIP_FILE" -d "$CHROME_DOWNLOAD_DIR/"

# Install ChromeDriver.
readonly DRIVER_ZIP_FILE="$TARGET_DIR/chromedriver.zip"
readonly DRIVER_ZIP_FILE="$CHROME_DOWNLOAD_DIR/chromedriver.zip"
wget --no-verbose "${DOWNLOAD_ROOT}chromedriver_linux64.zip?alt=media" -O "$DRIVER_ZIP_FILE"
unzip -q "$DRIVER_ZIP_FILE" -d "$TARGET_DIR/"
# Rename TARGET_DIR/chromedriver_linux64 to the expected TARGET_DIR/chromedriver
mv -T "$TARGET_DIR/chromedriver_linux64" "$TARGET_DIR/chromedriver"

export CHROME_EXECUTABLE="$TARGET_DIR/chrome-linux/chrome"
unzip -q "$DRIVER_ZIP_FILE" -d "$CHROME_DOWNLOAD_DIR/"
# Rename CHROME_DOWNLOAD_DIR/chromedriver_linux64 to the expected CHROME_DOWNLOAD_DIR/chromedriver
mv -T "$CHROME_DOWNLOAD_DIR/chromedriver_linux64" "$CHROME_DOWNLOAD_DIR/chromedriver"

# Echo info at the end for ease of debugging.
#
# exports from this script cannot be used elsewhere in the .cirrus.yml file.
set +x
echo
readonly CHROMEDRIVER_EXECUTABLE="$TARGET_DIR/chromedriver/chromedriver"
echo "$CHROME_EXECUTABLE"
"$CHROME_EXECUTABLE" --version
echo "$CHROMEDRIVER_EXECUTABLE"
Expand Down
24 changes: 0 additions & 24 deletions script/install_chromium_for_benchmarks.sh

This file was deleted.

0 comments on commit be4847a

Please sign in to comment.