diff --git a/.cirrus.yml b/.cirrus.yml index 1b37dc06dd..746393a982 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -10,6 +10,7 @@ task: PATH: "$CIRRUS_WORKING_DIR/bin:$CIRRUS_WORKING_DIR/bin/cache/dart-sdk/bin:$PATH" ANDROID_SDK_ROOT: "/opt/android_sdk" git_fetch_script: + - git clean -xfd - git fetch origin - git fetch origin master # To set FETCH_HEAD for "git merge-base" to work pub_cache: @@ -49,6 +50,7 @@ task: - dart --enable-asserts ./dev/bots/analyze.dart - name: tests-linux env: + GCLOUD_SERVICE_ACCOUNT_KEY: ENCRYPTED[f12abe60f5045d619ef4c79b83dd1e0722a0b0b13dbea95fbe334e2db7fffbcd841a5a92da8824848b539a19afe0c9fb] SHARD: tests test_script: - dart --enable-asserts ./dev/bots/test.dart @@ -57,6 +59,7 @@ task: memory: 12G - name: tool_tests-linux env: + GCLOUD_SERVICE_ACCOUNT_KEY: ENCRYPTED[f12abe60f5045d619ef4c79b83dd1e0722a0b0b13dbea95fbe334e2db7fffbcd841a5a92da8824848b539a19afe0c9fb] SHARD: tool_tests test_script: - dart --enable-asserts ./dev/bots/test.dart @@ -98,6 +101,7 @@ task: env: CIRRUS_WORKING_DIR: "C:\\Windows\\Temp\\flutter sdk" git_fetch_script: + - git clean -xfd - git fetch origin - git fetch origin master # To set FETCH_HEAD for "git merge-base" to work pub_cache: @@ -119,9 +123,11 @@ task: matrix: - name: tests-windows env: + GCLOUD_SERVICE_ACCOUNT_KEY: ENCRYPTED[f12abe60f5045d619ef4c79b83dd1e0722a0b0b13dbea95fbe334e2db7fffbcd841a5a92da8824848b539a19afe0c9fb] SHARD: tests - name: tool_tests-windows env: + GCLOUD_SERVICE_ACCOUNT_KEY: ENCRYPTED[f12abe60f5045d619ef4c79b83dd1e0722a0b0b13dbea95fbe334e2db7fffbcd841a5a92da8824848b539a19afe0c9fb] SHARD: tool_tests - name: build_tests-windows env: @@ -158,6 +164,7 @@ task: osx_instance: image: mojave-xcode-10.1 git_fetch_script: + - git clean -xfd - git fetch origin - git fetch origin master # To set FETCH_HEAD setup_script: @@ -178,6 +185,7 @@ task: install_cocoapods_script: - sudo gem install cocoapods git_fetch_script: + - git clean -xfd - git fetch origin - git fetch origin master # To set FETCH_HEAD for "git merge-base" to work pub_cache: @@ -198,9 +206,11 @@ task: matrix: - name: tests-macos env: + GCLOUD_SERVICE_ACCOUNT_KEY: ENCRYPTED[f12abe60f5045d619ef4c79b83dd1e0722a0b0b13dbea95fbe334e2db7fffbcd841a5a92da8824848b539a19afe0c9fb] SHARD: tests - name: tool_tests-macos env: + GCLOUD_SERVICE_ACCOUNT_KEY: ENCRYPTED[f12abe60f5045d619ef4c79b83dd1e0722a0b0b13dbea95fbe334e2db7fffbcd841a5a92da8824848b539a19afe0c9fb] SHARD: tool_tests - name: build_tests-macos env: diff --git a/dev/automated_tests/pubspec.yaml b/dev/automated_tests/pubspec.yaml index 146c4fcc8a..116f819896 100644 --- a/dev/automated_tests/pubspec.yaml +++ b/dev/automated_tests/pubspec.yaml @@ -22,7 +22,7 @@ dependencies: csslib: 0.14.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" front_end: 0.1.13 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" glob: 1.1.7 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - html: 0.13.3+3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + html: 0.13.4+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" http: 0.12.0+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" http_multi_server: 2.0.5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" http_parser: 3.1.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" @@ -68,4 +68,4 @@ dependencies: flutter: uses-material-design: true -# PUBSPEC CHECKSUM: 5756 +# PUBSPEC CHECKSUM: 9655 diff --git a/dev/benchmarks/complex_layout/pubspec.yaml b/dev/benchmarks/complex_layout/pubspec.yaml index 152f5edf55..299ce115e7 100644 --- a/dev/benchmarks/complex_layout/pubspec.yaml +++ b/dev/benchmarks/complex_layout/pubspec.yaml @@ -48,7 +48,7 @@ dev_dependencies: csslib: 0.14.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" front_end: 0.1.13 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" glob: 1.1.7 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - html: 0.13.3+3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + html: 0.13.4+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" http: 0.12.0+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" http_multi_server: 2.0.5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" http_parser: 3.1.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" @@ -85,4 +85,4 @@ flutter: - packages/flutter_gallery_assets/people/square/ali.png - packages/flutter_gallery_assets/places/india_chettinad_silk_maker.png -# PUBSPEC CHECKSUM: a329 +# PUBSPEC CHECKSUM: ca28 diff --git a/dev/benchmarks/macrobenchmarks/pubspec.yaml b/dev/benchmarks/macrobenchmarks/pubspec.yaml index a091b858df..efa702c596 100644 --- a/dev/benchmarks/macrobenchmarks/pubspec.yaml +++ b/dev/benchmarks/macrobenchmarks/pubspec.yaml @@ -48,7 +48,7 @@ dev_dependencies: csslib: 0.14.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" front_end: 0.1.13 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" glob: 1.1.7 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - html: 0.13.3+3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + html: 0.13.4+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" http: 0.12.0+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" http_multi_server: 2.0.5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" http_parser: 3.1.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" @@ -82,4 +82,4 @@ dev_dependencies: flutter: uses-material-design: true -# PUBSPEC CHECKSUM: a329 +# PUBSPEC CHECKSUM: ca28 diff --git a/dev/benchmarks/microbenchmarks/pubspec.yaml b/dev/benchmarks/microbenchmarks/pubspec.yaml index 8145e83aa8..8e83ca3297 100644 --- a/dev/benchmarks/microbenchmarks/pubspec.yaml +++ b/dev/benchmarks/microbenchmarks/pubspec.yaml @@ -27,7 +27,7 @@ dependencies: dart_style: 1.2.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" front_end: 0.1.13 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" glob: 1.1.7 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - html: 0.13.3+3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + html: 0.13.4+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" http: 0.12.0+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" http_multi_server: 2.0.5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" http_parser: 3.1.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" @@ -47,7 +47,7 @@ dependencies: package_resolver: 1.0.10 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" path: 1.6.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" pedantic: 1.5.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - petitparser: 2.1.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + petitparser: 2.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" plugin: 0.2.0+3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" pool: 1.4.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" pub_semver: 1.4.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" @@ -76,4 +76,4 @@ dependencies: flutter: uses-material-design: true -# PUBSPEC CHECKSUM: 60b0 +# PUBSPEC CHECKSUM: 1baf diff --git a/dev/bots/flutter_compact_formatter.dart b/dev/bots/flutter_compact_formatter.dart new file mode 100644 index 0000000000..912c5a4ae9 --- /dev/null +++ b/dev/bots/flutter_compact_formatter.dart @@ -0,0 +1,263 @@ +// Copyright 2019 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 'dart:convert'; +import 'dart:io'; + +import 'package:meta/meta.dart'; + +final Stopwatch _stopwatch = Stopwatch(); + +/// A wrapper around package:test's JSON reporter. +/// +/// This class behaves similarly to the compact reporter, but supresses all +/// output except for progress until the end of testing. In other words, errors, +/// [print] calls, and skipped test messages will not be printed during the run +/// of the suite. +/// +/// It also processes the JSON data into a collection of [TestResult]s for any +/// other post processing needs, e.g. sending data to analytics. +class FlutterCompactFormatter { + FlutterCompactFormatter() { + _stopwatch.start(); + } + + /// Whether to use color escape codes in writing to stdout. + final bool useColor = stdout.supportsAnsiEscapes; + + /// The terminal escape for green text, or the empty string if this is Windows + /// or not outputting to a terminal. + String get _green => useColor ? '\u001b[32m' : ''; + + /// The terminal escape for red text, or the empty string if this is Windows + /// or not outputting to a terminal. + String get _red => useColor ? '\u001b[31m' : ''; + + /// The terminal escape for yellow text, or the empty string if this is + /// Windows or not outputting to a terminal. + String get _yellow => useColor ? '\u001b[33m' : ''; + + /// The terminal escape for gray text, or the empty string if this is + /// Windows or not outputting to a terminal. + String get _gray => useColor ? '\u001b[1;30m' : ''; + + /// The terminal escape for bold text, or the empty string if this is + /// Windows or not outputting to a terminal. + String get _bold => useColor ? '\u001b[1m' : ''; + + /// The terminal escape for removing test coloring, or the empty string if + /// this is Windows or not outputting to a terminal. + String get _noColor => useColor ? '\u001b[0m' : ''; + + /// The termianl escape for clearing the line, or a carriage return if + /// this is Windows or not outputting to a termianl. + String get _clearLine => useColor ? '\x1b[2K\r' : '\r'; + + final Map _tests = {}; + + /// The test results from this run. + Iterable get tests => _tests.values; + + /// The number of tests that were started. + int started = 0; + + /// The number of test failures. + int failures = 0; + + /// The number of skipped tests. + int skips = 0; + + /// The number of successful tests. + int successes = 0; + + /// Process a single line of JSON output from the JSON test reporter. + /// + /// Callers are responsible for splitting multiple lines before calling this + /// method. + TestResult processRawOutput(String raw) { + assert(raw != null); + // We might be getting messages from Flutter Tool about updating/building. + if (!raw.startsWith('{')) { + print(raw); + return null; + } + final Map decoded = json.decode(raw); + final TestResult originalResult = _tests[decoded['testID']]; + switch (decoded['type']) { + case 'done': + stdout.write(_clearLine); + stdout.write('$_bold${_stopwatch.elapsed}$_noColor '); + stdout.writeln( + '$_green+$successes $_yellow~$skips $_red-$failures:$_bold$_gray Done.$_noColor'); + break; + case 'testStart': + final Map testData = decoded['test']; + if (testData['url'] == null) { + started += 1; + stdout.write(_clearLine); + stdout.write('$_bold${_stopwatch.elapsed}$_noColor '); + stdout.write( + '$_green+$successes $_yellow~$skips $_red-$failures: $_gray${testData['name']}$_noColor'); + break; + } + _tests[testData['id']] = TestResult( + id: testData['id'], + name: testData['name'], + line: testData['root_line'] ?? testData['line'], + column: testData['root_column'] ?? testData['column'], + path: testData['root_url'] ?? testData['url'], + startTime: decoded['time'], + ); + break; + case 'testDone': + if (originalResult == null) { + break; + } + originalResult.endTime = decoded['time']; + if (decoded['skipped'] == true) { + skips += 1; + originalResult.status = TestStatus.skipped; + } else { + if (decoded['result'] == 'success') { + originalResult.status =TestStatus.succeeded; + successes += 1; + } else { + originalResult.status = TestStatus.failed; + failures += 1; + } + } + break; + case 'error': + if (originalResult != null) { + originalResult.errorMessage = decoded['error']; + originalResult.stackTrace = decoded['stackTrace']; + } + break; + case 'print': + if (originalResult != null) { + originalResult.messages.add(decoded['message']); + } + break; + case 'group': + case 'allSuites': + case 'start': + case 'suite': + default: + break; + } + return originalResult; + } + + /// Print summary of test results. + void finish() { + final List skipped = []; + final List failed = []; + for (TestResult result in _tests.values) { + switch (result.status) { + case TestStatus.started: + failed.add('${_red}Unexpectedly failed to complete a test!'); + failed.add(result.toString() + _noColor); + break; + case TestStatus.skipped: + skipped.add( + '${_yellow}Skipped ${result.name} (${result.pathLineColumn}).$_noColor'); + break; + case TestStatus.failed: + failed.addAll([ + '$_bold${_red}Failed ${result.name} (${result.pathLineColumn}):', + result.errorMessage, + _noColor + _red, + result.stackTrace, + ]); + failed.addAll(result.messages); + failed.add(_noColor); + break; + case TestStatus.succeeded: + break; + } + } + skipped.forEach(print); + failed.forEach(print); + if (failed.isEmpty) { + print('${_green}Completed, $successes test(s) passing ($skips skipped).$_noColor'); + } else { + print('$_gray$failures test(s) failed.$_noColor'); + } + } +} + +/// The state of a test received from the JSON reporter. +enum TestStatus { + /// Test execution has started. + started, + /// Test completed successfully. + succeeded, + /// Test failed. + failed, + /// Test was skipped. + skipped, +} + +/// The detailed status of a test run. +class TestResult { + TestResult({ + @required this.id, + @required this.name, + @required this.line, + @required this.column, + @required this.path, + @required this.startTime, + this.status = TestStatus.started, + }) : assert(id != null), + assert(name != null), + assert(line != null), + assert(column != null), + assert(path != null), + assert(startTime != null), + assert(status != null), + messages = []; + + /// The state of the test. + TestStatus status; + + /// The internal ID of the test used by the JSON reporter. + final int id; + + /// The name of the test, specified via the `test` method. + final String name; + + /// The line number from the original file. + final int line; + + /// The column from the original file. + final int column; + + /// The path of the original test file. + final String path; + + /// A friendly print out of the [path], [line], and [column] of the test. + String get pathLineColumn => '$path:$line:$column'; + + /// The start time of the test, in milliseconds relative to suite startup. + final int startTime; + + /// The stdout of the test. + final List messages; + + /// The error message from the test, from an `expect`, an [Exception] or + /// [Error]. + String errorMessage; + + /// The stacktrace from a test failure. + String stackTrace; + + /// The time, in milliseconds relative to suite startup, that the test ended. + int endTime; + + /// The total time, in milliseconds, that the test took. + int get totalTime => (endTime ?? _stopwatch.elapsedMilliseconds) - startTime; + + @override + String toString() => '{$runtimeType: {$id, $name, ${totalTime}ms, $pathLineColumn}}'; +} diff --git a/dev/bots/pubspec.yaml b/dev/bots/pubspec.yaml index 7431a32ef0..2cd47ddf99 100644 --- a/dev/bots/pubspec.yaml +++ b/dev/bots/pubspec.yaml @@ -14,7 +14,10 @@ dependencies: http: 0.12.0+1 http_parser: 3.1.3 test: 1.5.3 + googleapis: 0.53.0 + googleapis_auth: 0.2.7 + _discoveryapis_commons: 0.1.8+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" analyzer: 0.35.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" async: 2.0.8 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" boolean_selector: 1.0.4 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" @@ -26,7 +29,7 @@ dependencies: file: 5.0.7 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" front_end: 0.1.13 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" glob: 1.1.7 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - html: 0.13.3+3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + html: 0.13.4+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" http_multi_server: 2.0.5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" intl: 0.15.7 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" io: 0.3.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" @@ -67,4 +70,4 @@ dev_dependencies: mockito: 4.0.0 test_api: 0.2.2 -# PUBSPEC CHECKSUM: 00fa +# PUBSPEC CHECKSUM: 422e diff --git a/dev/bots/run_command.dart b/dev/bots/run_command.dart index 72382daf19..de90be7f1c 100644 --- a/dev/bots/run_command.dart +++ b/dev/bots/run_command.dart @@ -30,6 +30,50 @@ void printProgress(String action, String workingDir, String command) { print('$arrow $action: cd $cyan$workingDir$reset; $yellow$command$reset'); } +Stream runAndGetStdout(String executable, List arguments, { + String workingDirectory, + Map environment, + bool expectNonZeroExit = false, + int expectedExitCode, + String failureMessage, + Duration timeout = _kLongTimeout, +}) async* { + final String commandDescription = '${path.relative(executable, from: workingDirectory)} ${arguments.join(' ')}'; + final String relativeWorkingDir = path.relative(workingDirectory); + + printProgress('RUNNING', relativeWorkingDir, commandDescription); + + final DateTime start = DateTime.now(); + final Process process = await Process.start(executable, arguments, + workingDirectory: workingDirectory, + environment: environment, + ); + + final Stream lines = process.stdout.transform(utf8.decoder).transform(const LineSplitter()); + await for (String line in lines) { + yield line; + } + + final int exitCode = await process.exitCode.timeout(timeout, onTimeout: () { + stderr.writeln('Process timed out after $timeout'); + return expectNonZeroExit ? 0 : 1; + }); + print('$clock ELAPSED TIME: $bold${elapsedTime(start)}$reset for $commandDescription in $relativeWorkingDir: '); + if ((exitCode == 0) == expectNonZeroExit || (expectedExitCode != null && exitCode != expectedExitCode)) { + if (failureMessage != null) { + print(failureMessage); + } + print( + '$redLine\n' + '${bold}ERROR:$red Last command exited with $exitCode (expected: ${expectNonZeroExit ? (expectedExitCode ?? 'non-zero') : 'zero'}).$reset\n' + '${bold}Command:$cyan $commandDescription$reset\n' + '${bold}Relative working directory:$red $relativeWorkingDir$reset\n' + '$redLine' + ); + exit(1); + } +} + Future runCommand(String executable, List arguments, { String workingDirectory, Map environment, diff --git a/dev/bots/serviceaccount.enc b/dev/bots/serviceaccount.enc new file mode 100644 index 0000000000..b9972711e7 Binary files /dev/null and b/dev/bots/serviceaccount.enc differ diff --git a/dev/bots/test.dart b/dev/bots/test.dart index 08fe0500c1..281a71b295 100644 --- a/dev/bots/test.dart +++ b/dev/bots/test.dart @@ -5,8 +5,12 @@ import 'dart:async'; import 'dart:io'; +import 'package:googleapis/bigquery/v2.dart' as bq; +import 'package:googleapis_auth/auth_io.dart' as auth; +import 'package:http/http.dart' as http; import 'package:path/path.dart' as path; +import 'flutter_compact_formatter.dart'; import 'run_command.dart'; typedef ShardRunner = Future Function(); @@ -140,13 +144,31 @@ Future _runSmokeTests() async { await _verifyVersion(path.join(flutterRoot, 'version')); } +Future _getBigqueryApi() async { + // TODO(dnfield): How will we do this on LUCI? + final String privateKey = Platform.environment['GCLOUD_SERVICE_ACCOUNT_KEY']; + if (privateKey == null || privateKey.isEmpty) { + return null; + } + final auth.ServiceAccountCredentials accountCredentials = auth.ServiceAccountCredentials( //.fromJson(credentials); + 'flutter-ci-test-reporter@flutter-infra.iam.gserviceaccount.com', + auth.ClientId.serviceAccount('114390419920880060881.apps.googleusercontent.com'), + '-----BEGIN PRIVATE KEY-----\n$privateKey\n-----END PRIVATE KEY-----\n', + ); + final List scopes = [bq.BigqueryApi.BigqueryInsertdataScope]; + final http.Client client = await auth.clientViaServiceAccount(accountCredentials, scopes); + return bq.BigqueryApi(client); +} + Future _runToolTests() async { + final bq.BigqueryApi bigqueryApi = await _getBigqueryApi(); await _runSmokeTests(); await _buildRunnerTest( path.join(flutterRoot, 'packages', 'flutter_tools'), flutterRoot, enableFlutterToolAsserts: true, + tableData: bigqueryApi?.tabledata, ); print('${bold}DONE: All tests successful.$reset'); @@ -198,7 +220,6 @@ Future _flutterBuildAot(String relativePathToApplication) async { } Future _flutterBuildApk(String relativePathToApplication) async { - // TODO(dnfield): See if we can get Android SDK on all Cirrus platforms. if ( (Platform.environment['ANDROID_HOME']?.isEmpty ?? true) && (Platform.environment['ANDROID_SDK_ROOT']?.isEmpty ?? true)) { @@ -255,32 +276,33 @@ Future _runAdd2AppTest() async { } Future _runTests() async { + final bq.BigqueryApi bigqueryApi = await _getBigqueryApi(); await _runSmokeTests(); - await _runFlutterTest(path.join(flutterRoot, 'packages', 'flutter')); + await _runFlutterTest(path.join(flutterRoot, 'packages', 'flutter'), tableData: bigqueryApi?.tabledata); // Only packages/flutter/test/widgets/widget_inspector_test.dart really // needs to be run with --track-widget-creation but it is nice to run // all of the tests in package:flutter with the flag to ensure that // the Dart kernel transformer triggered by the flag does not break anything. - await _runFlutterTest(path.join(flutterRoot, 'packages', 'flutter'), options: ['--track-widget-creation']); - await _runFlutterTest(path.join(flutterRoot, 'packages', 'flutter_localizations')); - await _runFlutterTest(path.join(flutterRoot, 'packages', 'flutter_driver')); - await _runFlutterTest(path.join(flutterRoot, 'packages', 'flutter_test')); - await _runFlutterTest(path.join(flutterRoot, 'packages', 'fuchsia_remote_debug_protocol')); - await _pubRunTest(path.join(flutterRoot, 'dev', 'bots')); - await _pubRunTest(path.join(flutterRoot, 'dev', 'devicelab')); - await _pubRunTest(path.join(flutterRoot, 'dev', 'snippets')); - await _runFlutterTest(path.join(flutterRoot, 'dev', 'integration_tests', 'android_semantics_testing')); - await _runFlutterTest(path.join(flutterRoot, 'dev', 'manual_tests')); - await _runFlutterTest(path.join(flutterRoot, 'dev', 'tools', 'vitool')); - await _runFlutterTest(path.join(flutterRoot, 'examples', 'hello_world')); - await _runFlutterTest(path.join(flutterRoot, 'examples', 'layers')); - await _runFlutterTest(path.join(flutterRoot, 'examples', 'stocks')); - await _runFlutterTest(path.join(flutterRoot, 'examples', 'flutter_gallery')); + await _runFlutterTest(path.join(flutterRoot, 'packages', 'flutter'), options: ['--track-widget-creation'], tableData: bigqueryApi?.tabledata); + await _runFlutterTest(path.join(flutterRoot, 'packages', 'flutter_localizations'), tableData: bigqueryApi?.tabledata); + await _runFlutterTest(path.join(flutterRoot, 'packages', 'flutter_driver'), tableData: bigqueryApi?.tabledata); + await _runFlutterTest(path.join(flutterRoot, 'packages', 'flutter_test'), tableData: bigqueryApi?.tabledata); + await _runFlutterTest(path.join(flutterRoot, 'packages', 'fuchsia_remote_debug_protocol'), tableData: bigqueryApi?.tabledata); + await _pubRunTest(path.join(flutterRoot, 'dev', 'bots'), tableData: bigqueryApi?.tabledata); + await _pubRunTest(path.join(flutterRoot, 'dev', 'devicelab'), tableData: bigqueryApi?.tabledata); + await _pubRunTest(path.join(flutterRoot, 'dev', 'snippets'), tableData: bigqueryApi?.tabledata); + await _runFlutterTest(path.join(flutterRoot, 'dev', 'integration_tests', 'android_semantics_testing'), tableData: bigqueryApi?.tabledata); + await _runFlutterTest(path.join(flutterRoot, 'dev', 'manual_tests'), tableData: bigqueryApi?.tabledata); + await _runFlutterTest(path.join(flutterRoot, 'dev', 'tools', 'vitool'), tableData: bigqueryApi?.tabledata); + await _runFlutterTest(path.join(flutterRoot, 'examples', 'hello_world'), tableData: bigqueryApi?.tabledata); + await _runFlutterTest(path.join(flutterRoot, 'examples', 'layers'), tableData: bigqueryApi?.tabledata); + await _runFlutterTest(path.join(flutterRoot, 'examples', 'stocks'), tableData: bigqueryApi?.tabledata); + await _runFlutterTest(path.join(flutterRoot, 'examples', 'flutter_gallery'), tableData: bigqueryApi?.tabledata); // Regression test to ensure that code outside of package:flutter can run // with --track-widget-creation. - await _runFlutterTest(path.join(flutterRoot, 'examples', 'flutter_gallery'), options: ['--track-widget-creation']); - await _runFlutterTest(path.join(flutterRoot, 'examples', 'catalog')); + await _runFlutterTest(path.join(flutterRoot, 'examples', 'flutter_gallery'), options: ['--track-widget-creation'], tableData: bigqueryApi?.tabledata); + await _runFlutterTest(path.join(flutterRoot, 'examples', 'catalog'), tableData: bigqueryApi?.tabledata); print('${bold}DONE: All tests successful.$reset'); } @@ -310,10 +332,10 @@ Future _runCoverage() async { Future _buildRunnerTest( String workingDirectory, String flutterRoot, { - String testPath, - bool enableFlutterToolAsserts = false, - } -) { + String testPath, + bool enableFlutterToolAsserts = false, + bq.TabledataResourceApi tableData, +}) async { final List args = ['run', 'build_runner', 'test', '--', '-rcompact', '-j1']; if (!hasColor) { args.add('--no-color'); @@ -335,19 +357,21 @@ Future _buildRunnerTest( toolsArgs += ' --enable-asserts'; pubEnvironment['FLUTTER_TOOL_ARGS'] = toolsArgs.trim(); } - return runCommand( - pub, args, + + final Stream testOutput = runAndGetStdout(pub, args, workingDirectory: workingDirectory, environment: pubEnvironment, ); + await _processTestOutput(testOutput, tableData); } Future _pubRunTest( String workingDirectory, { String testPath, bool enableFlutterToolAsserts = false, -}) { - final List args = ['run', 'test', '-rcompact', '-j1']; + bq.TabledataResourceApi tableData, +}) async { + final List args = ['run', 'test', '-rjson', '-j1']; if (!hasColor) args.add('--no-color'); if (testPath != null) @@ -364,11 +388,127 @@ Future _pubRunTest( toolsArgs += ' --enable-asserts'; pubEnvironment['FLUTTER_TOOL_ARGS'] = toolsArgs.trim(); } - return runCommand( - pub, args, + final Stream testOutput = runAndGetStdout(pub, args, workingDirectory: workingDirectory, - environment: pubEnvironment, ); + await _processTestOutput(testOutput, tableData); +} + +enum CiProviders { + cirrus, + luci, +} + +CiProviders _getCiProvider() { + if (Platform.environment['CIRRUS_CI'] == 'true') { + return CiProviders.cirrus; + } + if (Platform.environment['LUCI_CONTEXT'] != null) { + return CiProviders.luci; + } + return null; +} + +String _getCiProviderName() { + switch(_getCiProvider()) { + case CiProviders.cirrus: + return 'cirrusci'; + case CiProviders.luci: + return 'luci'; + } + return 'unknown'; +} + +int _getPrNumber() { + switch(_getCiProvider()) { + case CiProviders.cirrus: + return int.tryParse(Platform.environment['CIRRUS_PR']); + case CiProviders.luci: + return -1; // LUCI doesn't know about this. + } + return -1; +} + +Future _getAuthors() async { + final String exe = Platform.isWindows ? '.exe' : ''; + final String author = await runAndGetStdout( + 'git$exe', ['log', _getGitHash(), '--pretty="%an <%ae>"'], + workingDirectory: flutterRoot, + ).first; + return author; +} + +String _getCiUrl() { + switch(_getCiProvider()) { + case CiProviders.cirrus: + return 'https://cirrus-ci.com/task/${Platform.environment['CIRRUS_TASK_ID']}'; + case CiProviders.luci: + return 'https://ci.chromium.org/p/flutter/g/framework/console'; // TODO(dnfield): can we get a direct link to the actual build? + } + return ''; +} + +String _getGitHash() { + switch(_getCiProvider()) { + case CiProviders.cirrus: + return Platform.environment['CIRRUS_CHANGE_IN_REPO']; + case CiProviders.luci: + return 'HEAD'; // TODO(dnfield): Set this in the env for LUCI. + } + return ''; +} + +Future _processTestOutput(Stream testOutput, bq.TabledataResourceApi tableData) async { + final FlutterCompactFormatter formatter = FlutterCompactFormatter(); + await testOutput.forEach(formatter.processRawOutput); + if (tableData == null || formatter.tests.isEmpty) { + return; + } + final bq.TableDataInsertAllRequest request = bq.TableDataInsertAllRequest(); + final String authors = await _getAuthors(); + request.rows = List.from( + formatter.tests.map((TestResult result) => + bq.TableDataInsertAllRequestRows.fromJson( { + 'json': { + 'source': { + 'provider': _getCiProviderName(), + 'url': _getCiUrl(), + 'platform': { + 'os': Platform.operatingSystem, + 'version': Platform.operatingSystemVersion, + }, + }, + 'test': { + 'name': result.name, + 'result': result.status.toString(), + 'file': result.path, + 'line': result.line, + 'column': result.column, + 'time': result.totalTime, + }, + 'git': { + 'author': authors, + 'pull_request': _getPrNumber(), + 'commit': _getGitHash(), + 'organization': 'flutter', + 'repository': 'flutter', + }, + 'error': result.status != TestStatus.failed ? null : { + 'message': result.errorMessage, + 'stack_trace': result.stackTrace, + }, + 'information': result.messages, + }, + }), + ), + growable: false, + ); + final bq.TableDataInsertAllResponse response = await tableData.insertAll(request, 'flutter-infra', 'tests', 'ci'); + if (response.insertErrors != null && response.insertErrors.isNotEmpty) { + print('${red}BigQuery insert errors:'); + print(response.toJson()); + print(reset); + } } class EvalResult { @@ -390,10 +530,16 @@ Future _runFlutterTest(String workingDirectory, { List options = const [], bool skip = false, Duration timeout = _kLongTimeout, -}) { + bq.TabledataResourceApi tableData, +}) async { final List args = ['test']..addAll(options); if (flutterTestArgs != null && flutterTestArgs.isNotEmpty) args.addAll(flutterTestArgs); + + if (!expectFailure) { + args.add('--machine'); + } + if (script != null) { final String fullScriptPath = path.join(workingDirectory, script); if (!FileSystemEntity.isFileSync(fullScriptPath)) { @@ -408,13 +554,21 @@ Future _runFlutterTest(String workingDirectory, { } args.add(script); } - return runCommand(flutter, args, + if (expectFailure) { + return runCommand(flutter, args, + workingDirectory: workingDirectory, + expectNonZeroExit: true, + printOutput: printOutput, + skip: skip, + timeout: timeout, + ); + } + final Stream testOutput = runAndGetStdout(flutter, args, workingDirectory: workingDirectory, expectNonZeroExit: expectFailure, - printOutput: printOutput, - skip: skip, timeout: timeout, ); + await _processTestOutput(testOutput, tableData); } Future _verifyVersion(String filename) async { diff --git a/dev/devicelab/pubspec.yaml b/dev/devicelab/pubspec.yaml index f55de05ec3..3a36011a94 100644 --- a/dev/devicelab/pubspec.yaml +++ b/dev/devicelab/pubspec.yaml @@ -26,14 +26,14 @@ dependencies: crypto: 2.0.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" intl: 0.15.7 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" json_rpc_2: 2.0.9 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - petitparser: 2.1.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + petitparser: 2.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" pub_semver: 1.4.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" source_span: 1.5.5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" stream_channel: 1.6.8 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" term_glyph: 1.1.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" typed_data: 1.1.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" web_socket_channel: 1.0.9 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - xml: 3.3.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + xml: 3.4.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" dev_dependencies: # See packages/flutter_test/pubspec.yaml for why we're pinning this version. @@ -44,7 +44,7 @@ dev_dependencies: csslib: 0.14.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" front_end: 0.1.13 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" glob: 1.1.7 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - html: 0.13.3+3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + html: 0.13.4+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" http: 0.12.0+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" http_multi_server: 2.0.5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" http_parser: 3.1.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" @@ -74,4 +74,4 @@ dev_dependencies: watcher: 0.9.7+10 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" yaml: 2.1.15 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" -# PUBSPEC CHECKSUM: 3de5 +# PUBSPEC CHECKSUM: 20e4 diff --git a/dev/integration_tests/android_semantics_testing/pubspec.yaml b/dev/integration_tests/android_semantics_testing/pubspec.yaml index d5d60651e0..fc34fbbfa4 100644 --- a/dev/integration_tests/android_semantics_testing/pubspec.yaml +++ b/dev/integration_tests/android_semantics_testing/pubspec.yaml @@ -20,7 +20,7 @@ dependencies: file: 5.0.7 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" front_end: 0.1.13 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" glob: 1.1.7 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - html: 0.13.3+3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + html: 0.13.4+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" http: 0.12.0+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" http_multi_server: 2.0.5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" http_parser: 3.1.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" @@ -66,4 +66,4 @@ dependencies: flutter: uses-material-design: true -# PUBSPEC CHECKSUM: e99f +# PUBSPEC CHECKSUM: 2b9e diff --git a/dev/integration_tests/android_views/pubspec.yaml b/dev/integration_tests/android_views/pubspec.yaml index ae3fafe050..9325cf43aa 100644 --- a/dev/integration_tests/android_views/pubspec.yaml +++ b/dev/integration_tests/android_views/pubspec.yaml @@ -45,7 +45,7 @@ dev_dependencies: csslib: 0.14.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" front_end: 0.1.13 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" glob: 1.1.7 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - html: 0.13.3+3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + html: 0.13.4+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" http: 0.12.0+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" http_multi_server: 2.0.5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" http_parser: 3.1.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" @@ -79,4 +79,4 @@ dev_dependencies: flutter: uses-material-design: true -# PUBSPEC CHECKSUM: 4ead +# PUBSPEC CHECKSUM: 49ac diff --git a/dev/integration_tests/channels/pubspec.yaml b/dev/integration_tests/channels/pubspec.yaml index c323df27ac..39872ef4f6 100644 --- a/dev/integration_tests/channels/pubspec.yaml +++ b/dev/integration_tests/channels/pubspec.yaml @@ -24,7 +24,7 @@ dependencies: file: 5.0.7 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" front_end: 0.1.13 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" glob: 1.1.7 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - html: 0.13.3+3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + html: 0.13.4+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" http: 0.12.0+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" http_multi_server: 2.0.5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" http_parser: 3.1.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" @@ -70,4 +70,4 @@ dependencies: flutter: uses-material-design: true -# PUBSPEC CHECKSUM: e99f +# PUBSPEC CHECKSUM: 2b9e diff --git a/dev/integration_tests/codegen/pubspec.yaml b/dev/integration_tests/codegen/pubspec.yaml index 9e01d64bda..c3cbf60e54 100644 --- a/dev/integration_tests/codegen/pubspec.yaml +++ b/dev/integration_tests/codegen/pubspec.yaml @@ -40,7 +40,7 @@ dev_dependencies: csslib: 0.14.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" front_end: 0.1.13 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" glob: 1.1.7 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - html: 0.13.3+3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + html: 0.13.4+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" http: 0.12.0+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" http_multi_server: 2.0.5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" http_parser: 3.1.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" @@ -78,4 +78,4 @@ builders: flutter: uses-material-design: true -# PUBSPEC CHECKSUM: e99f +# PUBSPEC CHECKSUM: 2b9e diff --git a/dev/integration_tests/external_ui/pubspec.yaml b/dev/integration_tests/external_ui/pubspec.yaml index c7de02e996..6e580305ad 100644 --- a/dev/integration_tests/external_ui/pubspec.yaml +++ b/dev/integration_tests/external_ui/pubspec.yaml @@ -24,7 +24,7 @@ dependencies: file: 5.0.7 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" front_end: 0.1.13 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" glob: 1.1.7 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - html: 0.13.3+3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + html: 0.13.4+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" http: 0.12.0+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" http_multi_server: 2.0.5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" http_parser: 3.1.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" @@ -70,4 +70,4 @@ dependencies: flutter: uses-material-design: true -# PUBSPEC CHECKSUM: e99f +# PUBSPEC CHECKSUM: 2b9e diff --git a/dev/integration_tests/flavors/pubspec.yaml b/dev/integration_tests/flavors/pubspec.yaml index e559da90cf..cade712a20 100644 --- a/dev/integration_tests/flavors/pubspec.yaml +++ b/dev/integration_tests/flavors/pubspec.yaml @@ -24,7 +24,7 @@ dependencies: file: 5.0.7 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" front_end: 0.1.13 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" glob: 1.1.7 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - html: 0.13.3+3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + html: 0.13.4+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" http: 0.12.0+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" http_multi_server: 2.0.5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" http_parser: 3.1.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" @@ -70,4 +70,4 @@ dependencies: flutter: uses-material-design: true -# PUBSPEC CHECKSUM: e99f +# PUBSPEC CHECKSUM: 2b9e diff --git a/dev/integration_tests/platform_interaction/pubspec.yaml b/dev/integration_tests/platform_interaction/pubspec.yaml index 9e02cd24cf..bc7c1aaf57 100644 --- a/dev/integration_tests/platform_interaction/pubspec.yaml +++ b/dev/integration_tests/platform_interaction/pubspec.yaml @@ -24,7 +24,7 @@ dependencies: file: 5.0.7 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" front_end: 0.1.13 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" glob: 1.1.7 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - html: 0.13.3+3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + html: 0.13.4+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" http: 0.12.0+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" http_multi_server: 2.0.5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" http_parser: 3.1.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" @@ -70,4 +70,4 @@ dependencies: flutter: uses-material-design: true -# PUBSPEC CHECKSUM: e99f +# PUBSPEC CHECKSUM: 2b9e diff --git a/dev/integration_tests/simple_codegen/pubspec.yaml b/dev/integration_tests/simple_codegen/pubspec.yaml index 1c0d81dc63..eccfd9ce8d 100644 --- a/dev/integration_tests/simple_codegen/pubspec.yaml +++ b/dev/integration_tests/simple_codegen/pubspec.yaml @@ -14,7 +14,7 @@ dependencies: csslib: 0.14.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" front_end: 0.1.13 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" glob: 1.1.7 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - html: 0.13.3+3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + html: 0.13.4+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" kernel: 0.3.13 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" logging: 0.11.3+2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" meta: 1.1.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" @@ -34,4 +34,4 @@ environment: # The pub client defaults to an <2.0.0 sdk constraint which we need to explicitly overwrite. sdk: ">=2.0.0-dev.68.0 <3.0.0" -# PUBSPEC CHECKSUM: a5d3 +# PUBSPEC CHECKSUM: eed2 diff --git a/dev/integration_tests/ui/pubspec.yaml b/dev/integration_tests/ui/pubspec.yaml index 0f2bc18582..32c0550783 100644 --- a/dev/integration_tests/ui/pubspec.yaml +++ b/dev/integration_tests/ui/pubspec.yaml @@ -26,7 +26,7 @@ dependencies: file: 5.0.7 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" front_end: 0.1.13 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" glob: 1.1.7 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - html: 0.13.3+3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + html: 0.13.4+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" http: 0.12.0+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" http_multi_server: 2.0.5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" http_parser: 3.1.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" @@ -45,7 +45,7 @@ dependencies: package_resolver: 1.0.10 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" path: 1.6.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" pedantic: 1.5.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - petitparser: 2.1.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + petitparser: 2.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" plugin: 0.2.0+3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" pool: 1.4.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" pub_semver: 1.4.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" @@ -67,7 +67,7 @@ dependencies: vm_service_client: 0.2.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" watcher: 0.9.7+10 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" web_socket_channel: 1.0.9 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - xml: 3.3.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + xml: 3.4.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" yaml: 2.1.15 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" dev_dependencies: @@ -80,4 +80,4 @@ dev_dependencies: flutter: uses-material-design: true -# PUBSPEC CHECKSUM: 14b7 +# PUBSPEC CHECKSUM: f2b6 diff --git a/dev/snippets/pubspec.yaml b/dev/snippets/pubspec.yaml index 7e2d90fcb5..afbe7d7b84 100644 --- a/dev/snippets/pubspec.yaml +++ b/dev/snippets/pubspec.yaml @@ -27,7 +27,7 @@ dependencies: csslib: 0.14.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" front_end: 0.1.13 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" glob: 1.1.7 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - html: 0.13.3+3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + html: 0.13.4+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" kernel: 0.3.13 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" logging: 0.11.3+2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" package_config: 1.0.5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" @@ -101,4 +101,4 @@ executables: vm_service_client: 0.2.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" web_socket_channel: 1.0.9 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" -# PUBSPEC CHECKSUM: eebb +# PUBSPEC CHECKSUM: 4eba diff --git a/dev/tools/vitool/pubspec.yaml b/dev/tools/vitool/pubspec.yaml index 084ccbc3bf..27a3ee3531 100644 --- a/dev/tools/vitool/pubspec.yaml +++ b/dev/tools/vitool/pubspec.yaml @@ -11,12 +11,12 @@ environment: dependencies: args: 1.5.1 vector_math: 2.0.8 - xml: 3.3.1 + xml: 3.4.0 charcode: 1.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" collection: 1.14.11 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" convert: 2.1.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - petitparser: 2.1.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + petitparser: 2.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" typed_data: 1.1.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" dev_dependencies: @@ -37,4 +37,4 @@ dev_dependencies: term_glyph: 1.1.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" test_api: 0.2.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" -# PUBSPEC CHECKSUM: 8cb1 +# PUBSPEC CHECKSUM: 94b1 diff --git a/examples/catalog/pubspec.yaml b/examples/catalog/pubspec.yaml index 178a8cc794..3f90fcdad7 100644 --- a/examples/catalog/pubspec.yaml +++ b/examples/catalog/pubspec.yaml @@ -33,7 +33,7 @@ dev_dependencies: file: 5.0.7 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" front_end: 0.1.13 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" glob: 1.1.7 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - html: 0.13.3+3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + html: 0.13.4+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" http: 0.12.0+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" http_multi_server: 2.0.5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" http_parser: 3.1.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" @@ -76,4 +76,4 @@ dev_dependencies: flutter: uses-material-design: true -# PUBSPEC CHECKSUM: 3f88 +# PUBSPEC CHECKSUM: 6687 diff --git a/examples/flutter_gallery/pubspec.yaml b/examples/flutter_gallery/pubspec.yaml index c4f80dc81d..fb476efa7c 100644 --- a/examples/flutter_gallery/pubspec.yaml +++ b/examples/flutter_gallery/pubspec.yaml @@ -48,7 +48,7 @@ dev_dependencies: file: 5.0.7 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" front_end: 0.1.13 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" glob: 1.1.7 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - html: 0.13.3+3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + html: 0.13.4+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" http: 0.12.0+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" http_multi_server: 2.0.5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" http_parser: 3.1.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" @@ -256,4 +256,4 @@ flutter: - asset: packages/flutter_gallery_assets/fonts/merriweather/Merriweather-Regular.ttf - asset: packages/flutter_gallery_assets/fonts/merriweather/Merriweather-Light.ttf -# PUBSPEC CHECKSUM: 848d +# PUBSPEC CHECKSUM: d08c diff --git a/examples/platform_channel/pubspec.yaml b/examples/platform_channel/pubspec.yaml index 4e135bc675..d08ee9f37b 100644 --- a/examples/platform_channel/pubspec.yaml +++ b/examples/platform_channel/pubspec.yaml @@ -31,7 +31,7 @@ dev_dependencies: file: 5.0.7 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" front_end: 0.1.13 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" glob: 1.1.7 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - html: 0.13.3+3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + html: 0.13.4+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" http: 0.12.0+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" http_multi_server: 2.0.5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" http_parser: 3.1.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" @@ -75,4 +75,4 @@ dev_dependencies: flutter: uses-material-design: true -# PUBSPEC CHECKSUM: 3f88 +# PUBSPEC CHECKSUM: 6687 diff --git a/examples/stocks/pubspec.yaml b/examples/stocks/pubspec.yaml index ef1d3e6c47..8a60dbb1af 100644 --- a/examples/stocks/pubspec.yaml +++ b/examples/stocks/pubspec.yaml @@ -25,14 +25,14 @@ dependencies: dart_style: 1.2.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" front_end: 0.1.13 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" glob: 1.1.7 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - html: 0.13.3+3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + html: 0.13.4+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" http_parser: 3.1.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" kernel: 0.3.13 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" logging: 0.11.3+2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" meta: 1.1.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" package_config: 1.0.5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" path: 1.6.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - petitparser: 2.1.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + petitparser: 2.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" plugin: 0.2.0+3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" pub_semver: 1.4.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" source_span: 1.5.5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" @@ -65,4 +65,4 @@ dev_dependencies: flutter: uses-material-design: true -# PUBSPEC CHECKSUM: 208d +# PUBSPEC CHECKSUM: 358c diff --git a/packages/flutter_build/pubspec.yaml b/packages/flutter_build/pubspec.yaml index 18ff432c0a..1673ee041f 100644 --- a/packages/flutter_build/pubspec.yaml +++ b/packages/flutter_build/pubspec.yaml @@ -20,7 +20,7 @@ dependencies: csslib: 0.14.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" front_end: 0.1.13 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" glob: 1.1.7 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - html: 0.13.3+3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + html: 0.13.4+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" kernel: 0.3.13 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" logging: 0.11.3+2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" meta: 1.1.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" @@ -38,4 +38,4 @@ dartdoc: # Exclude this package from the hosted API docs. nodoc: true -# PUBSPEC CHECKSUM: a5d3 +# PUBSPEC CHECKSUM: eed2 diff --git a/packages/flutter_tools/pubspec.yaml b/packages/flutter_tools/pubspec.yaml index d81e2871f3..ea206f6dc3 100644 --- a/packages/flutter_tools/pubspec.yaml +++ b/packages/flutter_tools/pubspec.yaml @@ -34,7 +34,7 @@ dependencies: usage: 3.4.1 vm_service_client: 0.2.6 web_socket_channel: 1.0.9 - xml: 3.3.1 + xml: 3.4.0 yaml: 2.1.15 flutter_goldens_client: path: ../flutter_goldens_client @@ -50,8 +50,8 @@ dependencies: dart_style: 1.2.3 code_builder: 3.2.0 build: 1.1.1 - build_modules: 1.0.8 - build_daemon: 0.4.1 + build_modules: 1.0.9 + build_daemon: 0.4.2 async: 2.0.8 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" bazel_worker: 0.1.20 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" @@ -67,7 +67,7 @@ dependencies: front_end: 0.1.13 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" glob: 1.1.7 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" graphs: 0.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - html: 0.13.3+3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + html: 0.13.4+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" http_parser: 3.1.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" io: 0.3.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" json_annotation: 2.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" @@ -77,7 +77,7 @@ dependencies: package_resolver: 1.0.10 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" path: 1.6.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" pedantic: 1.5.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - petitparser: 2.1.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" + petitparser: 2.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" pool: 1.4.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" protobuf: 0.13.4 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" pub_semver: 1.4.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" @@ -118,4 +118,4 @@ dartdoc: # Exclude this package from the hosted API docs. nodoc: true -# PUBSPEC CHECKSUM: d62c +# PUBSPEC CHECKSUM: 222d