Unverified Commit b5f9612c authored by Greg Spencer's avatar Greg Spencer Committed by GitHub

Randomize Framework tests, opt out some tests that currently fail. (#85159)

This turns on order shuffling for all tests that don't fail with it on, marking those tests that do fail with a tag so that they will be run without shuffling on.

To determine which tests fail with it on, I ran all the tests 100 times with different random shuffle seeds, and then also ran it with the date seeds from today until the end of July, and tagged all of the test suites (files) that fail, with a seed that caused them to fail.
parent dcd48862
...@@ -22,6 +22,7 @@ Stream<String> runAndGetStdout(String executable, List<String> arguments, { ...@@ -22,6 +22,7 @@ Stream<String> runAndGetStdout(String executable, List<String> arguments, {
String workingDirectory, String workingDirectory,
Map<String, String> environment, Map<String, String> environment,
bool expectNonZeroExit = false, bool expectNonZeroExit = false,
bool expectNoTests = false,
}) async* { }) async* {
final StreamController<String> output = StreamController<String>(); final StreamController<String> output = StreamController<String>();
final Future<CommandResult> command = runCommand( final Future<CommandResult> command = runCommand(
...@@ -30,6 +31,7 @@ Stream<String> runAndGetStdout(String executable, List<String> arguments, { ...@@ -30,6 +31,7 @@ Stream<String> runAndGetStdout(String executable, List<String> arguments, {
workingDirectory: workingDirectory, workingDirectory: workingDirectory,
environment: environment, environment: environment,
expectNonZeroExit: expectNonZeroExit, expectNonZeroExit: expectNonZeroExit,
expectNoTests: expectNoTests,
// Capture the output so it's not printed to the console by default. // Capture the output so it's not printed to the console by default.
outputMode: OutputMode.capture, outputMode: OutputMode.capture,
outputListener: (String line, io.Process process) { outputListener: (String line, io.Process process) {
...@@ -113,7 +115,8 @@ Future<Command> startCommand(String executable, List<String> arguments, { ...@@ -113,7 +115,8 @@ Future<Command> startCommand(String executable, List<String> arguments, {
environment: environment, environment: environment,
); );
Future<List<List<int>>> savedStdout, savedStderr; Future<List<List<int>>> savedStdout = Future<List<List<int>>>.value(<List<int>>[]);
Future<List<List<int>>> savedStderr = Future<List<List<int>>>.value(<List<int>>[]);
final Stream<List<int>> stdoutSource = process.stdout final Stream<List<int>> stdoutSource = process.stdout
.transform<String>(const Utf8Decoder()) .transform<String>(const Utf8Decoder())
.transform(const LineSplitter()) .transform(const LineSplitter())
...@@ -128,8 +131,14 @@ Future<Command> startCommand(String executable, List<String> arguments, { ...@@ -128,8 +131,14 @@ Future<Command> startCommand(String executable, List<String> arguments, {
.transform(const Utf8Encoder()); .transform(const Utf8Encoder());
switch (outputMode) { switch (outputMode) {
case OutputMode.print: case OutputMode.print:
stdoutSource.listen(io.stdout.add); stdoutSource.listen((List<int> output) {
process.stderr.listen(io.stderr.add); io.stdout.add(output);
savedStdout.then((List<List<int>> list) => list.add(output));
});
process.stderr.listen((List<int> output) {
io.stderr.add(output);
savedStdout.then((List<List<int>> list) => list.add(output));
});
break; break;
case OutputMode.capture: case OutputMode.capture:
savedStdout = stdoutSource.toList(); savedStdout = stdoutSource.toList();
...@@ -158,6 +167,7 @@ Future<CommandResult> runCommand(String executable, List<String> arguments, { ...@@ -158,6 +167,7 @@ Future<CommandResult> runCommand(String executable, List<String> arguments, {
String workingDirectory, String workingDirectory,
Map<String, String> environment, Map<String, String> environment,
bool expectNonZeroExit = false, bool expectNonZeroExit = false,
bool expectNoTests = false,
int expectedExitCode, int expectedExitCode,
String failureMessage, String failureMessage,
OutputMode outputMode = OutputMode.print, OutputMode outputMode = OutputMode.print,
...@@ -182,7 +192,21 @@ Future<CommandResult> runCommand(String executable, List<String> arguments, { ...@@ -182,7 +192,21 @@ Future<CommandResult> runCommand(String executable, List<String> arguments, {
final CommandResult result = await command.onExit; final CommandResult result = await command.onExit;
if ((result.exitCode == 0) == expectNonZeroExit || (expectedExitCode != null && result.exitCode != expectedExitCode)) { // Currently, the test infrastructure fails if it doesn't find any tests to
// run, but in the case of tests tagged as "no-shuffle", there might either be
// none that can be shuffled, or none that shouldn't be shuffled, and since
// we're running it twice to get all the tests in either category, it
// shouldn't fail if no tests are run.
//
// TODO(gspencergoog): This is a workaround until
// https://github.com/dart-lang/test/issues/1546 is addressed. Remove the
// workaround (parsing the test output) when/if that issue is fixed.
final bool skipErrorExit = expectNoTests &&
result != null &&
result.flattenedStdout != null &&
result.flattenedStdout.trimRight().endsWith('No tests ran.');
if (!skipErrorExit && ((result.exitCode == 0) == expectNonZeroExit || (expectedExitCode != null && result.exitCode != expectedExitCode))) {
// Print the output when we get unexpected results (unless output was // Print the output when we get unexpected results (unless output was
// printed already). // printed already).
switch (outputMode) { switch (outputMode) {
......
...@@ -620,6 +620,7 @@ Future<void> _runFrameworkTests() async { ...@@ -620,6 +620,7 @@ Future<void> _runFrameworkTests() async {
path.join(flutterRoot, 'packages', 'flutter'), path.join(flutterRoot, 'packages', 'flutter'),
options: <String>[trackWidgetCreationOption, ...soundNullSafetyOptions], options: <String>[trackWidgetCreationOption, ...soundNullSafetyOptions],
tests: <String>[ path.join('test', 'widgets') + path.separator ], tests: <String>[ path.join('test', 'widgets') + path.separator ],
shuffleOrder: true,
); );
} }
// Try compiling code outside of the packages/flutter directory with and without --track-widget-creation // Try compiling code outside of the packages/flutter directory with and without --track-widget-creation
...@@ -627,6 +628,7 @@ Future<void> _runFrameworkTests() async { ...@@ -627,6 +628,7 @@ Future<void> _runFrameworkTests() async {
await _runFlutterTest( await _runFlutterTest(
path.join(flutterRoot, 'dev', 'integration_tests', 'flutter_gallery'), path.join(flutterRoot, 'dev', 'integration_tests', 'flutter_gallery'),
options: <String>[trackWidgetCreationOption], options: <String>[trackWidgetCreationOption],
shuffleOrder: true,
); );
} }
// Run release mode tests (see packages/flutter/test_release/README.md) // Run release mode tests (see packages/flutter/test_release/README.md)
...@@ -634,6 +636,7 @@ Future<void> _runFrameworkTests() async { ...@@ -634,6 +636,7 @@ Future<void> _runFrameworkTests() async {
path.join(flutterRoot, 'packages', 'flutter'), path.join(flutterRoot, 'packages', 'flutter'),
options: <String>['--dart-define=dart.vm.product=true', ...soundNullSafetyOptions], options: <String>['--dart-define=dart.vm.product=true', ...soundNullSafetyOptions],
tests: <String>['test_release${path.separator}'], tests: <String>['test_release${path.separator}'],
shuffleOrder: true,
); );
} }
...@@ -650,6 +653,7 @@ Future<void> _runFrameworkTests() async { ...@@ -650,6 +653,7 @@ Future<void> _runFrameworkTests() async {
path.join(flutterRoot, 'packages', 'flutter'), path.join(flutterRoot, 'packages', 'flutter'),
options: <String>[trackWidgetCreationOption, ...soundNullSafetyOptions], options: <String>[trackWidgetCreationOption, ...soundNullSafetyOptions],
tests: tests, tests: tests,
shuffleOrder: true,
); );
} }
} }
...@@ -1376,6 +1380,18 @@ Future<void> _pubRunTest(String workingDirectory, { ...@@ -1376,6 +1380,18 @@ Future<void> _pubRunTest(String workingDirectory, {
} }
} }
// Used as an argument to the runTests internal function in the _runFlutterTest
// function.
enum _ShuffleMode {
// Runs only the tests not tagged with "no-shuffle" in a shuffled order.
shuffled,
// Runs only the tests that would fail if shuffled (those tagged with
// "no-shuffle").
unshuffled,
// Runs all tests without shuffling.
sequential,
}
Future<void> _runFlutterTest(String workingDirectory, { Future<void> _runFlutterTest(String workingDirectory, {
String script, String script,
bool expectFailure = false, bool expectFailure = false,
...@@ -1383,20 +1399,20 @@ Future<void> _runFlutterTest(String workingDirectory, { ...@@ -1383,20 +1399,20 @@ Future<void> _runFlutterTest(String workingDirectory, {
OutputChecker outputChecker, OutputChecker outputChecker,
List<String> options = const <String>[], List<String> options = const <String>[],
bool skip = false, bool skip = false,
bool shuffleOrder = false,
Map<String, String> environment, Map<String, String> environment,
List<String> tests = const <String>[], List<String> tests = const <String>[],
}) async { }) async {
assert(!printOutput || outputChecker == null, 'Output either can be printed or checked but not both'); assert(!printOutput || outputChecker == null, 'Output either can be printed or checked but not both');
final List<String> args = <String>[ final List<String> testArgs = <String>[
'test',
...options, ...options,
...?flutterTestArgs, ...?flutterTestArgs,
]; ];
final bool shouldProcessOutput = useFlutterTestFormatter && !expectFailure && !options.contains('--coverage'); final bool shouldProcessOutput = useFlutterTestFormatter && !expectFailure && !options.contains('--coverage');
if (shouldProcessOutput) if (shouldProcessOutput)
args.add('--machine'); testArgs.add('--machine');
if (script != null) { if (script != null) {
final String fullScriptPath = path.join(workingDirectory, script); final String fullScriptPath = path.join(workingDirectory, script);
...@@ -1410,56 +1426,98 @@ Future<void> _runFlutterTest(String workingDirectory, { ...@@ -1410,56 +1426,98 @@ Future<void> _runFlutterTest(String workingDirectory, {
print('This is one of the tests that is normally skipped in this configuration.'); print('This is one of the tests that is normally skipped in this configuration.');
exit(1); exit(1);
} }
args.add(script); testArgs.add(script);
} }
args.addAll(tests); testArgs.addAll(tests);
if (!shouldProcessOutput) { Future<void> runTests(_ShuffleMode shuffleMode) async {
final OutputMode outputMode = outputChecker == null && printOutput int seed = 0;
? OutputMode.print final List<String> shuffleArgs = <String>[];
: OutputMode.capture; switch (shuffleMode) {
case _ShuffleMode.shuffled:
final CommandResult result = await runCommand( final DateTime now = DateTime.now();
flutter, // Generates YYYYMMDD as the seed, so that testing continues to fail on the
args, // day it was originally run, and on other days the seed can be used to
workingDirectory: workingDirectory, // replicate failures.
expectNonZeroExit: expectFailure, seed = now.year * 10000 + now.month * 100 + now.day;
outputMode: outputMode, print('Shuffling test order using arbitrary daily seed $seed.');
skip: skip, print('To run locally, run "flutter test -x no-shuffle --test-randomize-ordering-seed=$seed '
environment: environment, '&& flutter test -t no-shuffle" to run all tests (the latter part runs all the tests that '
); "currently don't work when shuffled, the former skips those tests and shuffles the order "
'of the remaining tests).');
if (outputChecker != null) { shuffleArgs.addAll(<String>['-x', 'no-shuffle', '--test-randomize-ordering-seed=$seed']);
final String message = outputChecker(result); break;
if (message != null) case _ShuffleMode.unshuffled:
exitWithError(<String>[message]); shuffleArgs.addAll(<String>['-t', 'no-shuffle']);
break;
case _ShuffleMode.sequential:
break;
} }
return; final List<String> args = <String>[
} 'test',
...shuffleArgs,
...testArgs,
];
if (!shouldProcessOutput) {
final OutputMode outputMode = outputChecker == null && printOutput
? OutputMode.print
: OutputMode.capture;
if (useFlutterTestFormatter) { final CommandResult result = await runCommand(
final FlutterCompactFormatter formatter = FlutterCompactFormatter();
Stream<String> testOutput;
try {
testOutput = runAndGetStdout(
flutter, flutter,
args, args,
workingDirectory: workingDirectory, workingDirectory: workingDirectory,
expectNonZeroExit: expectFailure, expectNonZeroExit: expectFailure,
expectNoTests: shuffleMode == _ShuffleMode.unshuffled,
outputMode: outputMode,
skip: skip,
environment: environment, environment: environment,
); );
} finally { if (outputChecker != null) {
formatter.finish(); final String message = outputChecker(result);
if (message != null)
exitWithError(<String>[message]);
}
return;
} }
await _processTestOutput(formatter, testOutput);
if (useFlutterTestFormatter) {
final FlutterCompactFormatter formatter = FlutterCompactFormatter();
Stream<String> testOutput;
try {
testOutput = runAndGetStdout(
flutter,
args,
workingDirectory: workingDirectory,
expectNonZeroExit: expectFailure,
expectNoTests: shuffleMode == _ShuffleMode.unshuffled,
environment: environment,
);
} finally {
formatter.finish();
}
await _processTestOutput(formatter, testOutput);
} else {
await runCommand(
flutter,
args,
workingDirectory: workingDirectory,
expectNonZeroExit: expectFailure,
expectNoTests: shuffleMode == _ShuffleMode.unshuffled,
);
}
}
if (shuffleOrder) {
// Runs only the tests not tagged with "no-shuffle" in a shuffled order.
await runTests(_ShuffleMode.shuffled);
// Runs only the tests that would fail if shuffled (those tagged with
// "no-shuffle").
await runTests(_ShuffleMode.unshuffled);
} else { } else {
await runCommand( // Runs all tests without shuffling.
flutter, await runTests(_ShuffleMode.sequential);
args,
workingDirectory: workingDirectory,
expectNonZeroExit: expectFailure,
);
} }
} }
......
tags:
# This tag tells the test framework to not shuffle the test order according to
# the --test-randomize-ordering-seed for the suites that have this tag.
no-shuffle:
...@@ -2,6 +2,12 @@ ...@@ -2,6 +2,12 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
// TODO(gspencergoog): Remove this tag once this test's state leaks/test
// dependency have been fixed.
// https://github.com/flutter/flutter/issues/85160
// Fails with "flutter test --test-randomize-ordering-seed=123"
@Tags(<String>['no-shuffle'])
import 'dart:ui' as ui; import 'dart:ui' as ui;
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
......
...@@ -2,6 +2,12 @@ ...@@ -2,6 +2,12 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
// TODO(gspencergoog): Remove this tag once this test's state leaks/test
// dependency have been fixed.
// https://github.com/flutter/flutter/issues/85160
// Fails with "flutter test --test-randomize-ordering-seed=123"
@Tags(<String>['no-shuffle'])
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
......
...@@ -2,6 +2,12 @@ ...@@ -2,6 +2,12 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
// TODO(gspencergoog): Remove this tag once this test's state leaks/test
// dependency have been fixed.
// https://github.com/flutter/flutter/issues/85160
// Fails with "flutter test --test-randomize-ordering-seed=123"
@Tags(<String>['no-shuffle'])
import 'dart:ui'; import 'dart:ui';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
......
...@@ -3,6 +3,12 @@ ...@@ -3,6 +3,12 @@
// found in the LICENSE file. // found in the LICENSE file.
@TestOn('!chrome') @TestOn('!chrome')
// TODO(gspencergoog): Remove this tag once this test's state leaks/test
// dependency have been fixed.
// https://github.com/flutter/flutter/issues/85160
// Fails with "flutter test --test-randomize-ordering-seed=456"
@Tags(<String>['no-shuffle'])
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/rendering.dart'; import 'package:flutter/rendering.dart';
import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_test/flutter_test.dart';
......
...@@ -2,6 +2,12 @@ ...@@ -2,6 +2,12 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
// TODO(gspencergoog): Remove this tag once this test's state leaks/test
// dependency have been fixed.
// https://github.com/flutter/flutter/issues/85160
// Fails with "flutter test --test-randomize-ordering-seed=123"
@Tags(<String>['no-shuffle'])
import 'dart:ui' as ui show BoxHeightStyle, BoxWidthStyle, Color; import 'dart:ui' as ui show BoxHeightStyle, BoxWidthStyle, Color;
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
......
...@@ -2,6 +2,12 @@ ...@@ -2,6 +2,12 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
// TODO(gspencergoog): Remove this tag once this test's state leaks/test
// dependency have been fixed.
// https://github.com/flutter/flutter/issues/85160
// Fails with "flutter test --test-randomize-ordering-seed=123"
@Tags(<String>['no-shuffle'])
import 'dart:async'; import 'dart:async';
import 'dart:convert'; import 'dart:convert';
import 'dart:ui' as ui; import 'dart:ui' as ui;
......
...@@ -2,6 +2,12 @@ ...@@ -2,6 +2,12 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
// TODO(gspencergoog): Remove this tag once this test's state leaks/test
// dependency have been fixed.
// https://github.com/flutter/flutter/issues/85160
// Fails with "flutter test --test-randomize-ordering-seed=123"
@Tags(<String>['no-shuffle'])
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/gestures.dart'; import 'package:flutter/gestures.dart';
import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_test/flutter_test.dart';
......
...@@ -2,6 +2,12 @@ ...@@ -2,6 +2,12 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
// TODO(gspencergoog): Remove this tag once this test's state leaks/test
// dependency have been fixed.
// https://github.com/flutter/flutter/issues/85160
// Fails with "flutter test --test-randomize-ordering-seed=123"
@Tags(<String>['no-shuffle'])
import 'package:flutter/gestures.dart'; import 'package:flutter/gestures.dart';
import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_test/flutter_test.dart';
......
...@@ -2,6 +2,12 @@ ...@@ -2,6 +2,12 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
// TODO(gspencergoog): Remove this tag once this test's state leaks/test
// dependency have been fixed.
// https://github.com/flutter/flutter/issues/85160
// Fails with "flutter test --test-randomize-ordering-seed=1000"
@Tags(<String>['no-shuffle'])
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/gestures.dart'; import 'package:flutter/gestures.dart';
import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_test/flutter_test.dart';
......
...@@ -2,6 +2,12 @@ ...@@ -2,6 +2,12 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
// TODO(gspencergoog): Remove this tag once this test's state leaks/test
// dependency have been fixed.
// https://github.com/flutter/flutter/issues/85160
// Fails with "flutter test --test-randomize-ordering-seed=123"
@Tags(<String>['no-shuffle'])
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
......
...@@ -2,6 +2,12 @@ ...@@ -2,6 +2,12 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
// TODO(gspencergoog): Remove this tag once this test's state leaks/test
// dependency have been fixed.
// https://github.com/flutter/flutter/issues/85160
// Fails with "flutter test --test-randomize-ordering-seed=1408669812"
@Tags(<String>['no-shuffle'])
import 'dart:math' as math; import 'dart:math' as math;
import 'dart:ui' show window; import 'dart:ui' show window;
......
...@@ -2,6 +2,12 @@ ...@@ -2,6 +2,12 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
// TODO(gspencergoog): Remove this tag once this test's state leaks/test
// dependency have been fixed.
// https://github.com/flutter/flutter/issues/85160
// Fails with "flutter test --test-randomize-ordering-seed=1000"
@Tags(<String>['no-shuffle'])
import 'package:flutter/gestures.dart' show DragStartBehavior; import 'package:flutter/gestures.dart' show DragStartBehavior;
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart'; import 'package:flutter/rendering.dart';
......
...@@ -2,6 +2,12 @@ ...@@ -2,6 +2,12 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
// TODO(gspencergoog): Remove this tag once this test's state leaks/test
// dependency have been fixed.
// https://github.com/flutter/flutter/issues/85160
// Fails with "flutter test --test-randomize-ordering-seed=456"
@Tags(<String>['no-shuffle'])
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart'; import 'package:flutter/rendering.dart';
......
...@@ -2,6 +2,12 @@ ...@@ -2,6 +2,12 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
// TODO(gspencergoog): Remove this tag once this test's state leaks/test
// dependency have been fixed.
// https://github.com/flutter/flutter/issues/85160
// Fails with "flutter test --test-randomize-ordering-seed=123"
@Tags(<String>['no-shuffle'])
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/gestures.dart' show DragStartBehavior; import 'package:flutter/gestures.dart' show DragStartBehavior;
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
......
...@@ -2,6 +2,12 @@ ...@@ -2,6 +2,12 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
// TODO(gspencergoog): Remove this tag once this test's state leaks/test
// dependency have been fixed.
// https://github.com/flutter/flutter/issues/85160
// Fails with "flutter test --test-randomize-ordering-seed=382757700"
@Tags(<String>['no-shuffle'])
import 'dart:ui' as ui; import 'dart:ui' as ui;
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
......
...@@ -2,6 +2,12 @@ ...@@ -2,6 +2,12 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
// TODO(gspencergoog): Remove this tag once this test's state leaks/test
// dependency have been fixed.
// https://github.com/flutter/flutter/issues/85160
// Fails with "flutter test --test-randomize-ordering-seed=3890307731"
@Tags(<String>['no-shuffle'])
import 'dart:math' as math; import 'dart:math' as math;
import 'dart:ui' as ui show window, BoxHeightStyle, BoxWidthStyle; import 'dart:ui' as ui show window, BoxHeightStyle, BoxWidthStyle;
......
...@@ -2,6 +2,12 @@ ...@@ -2,6 +2,12 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
// TODO(gspencergoog): Remove this tag once this test's state leaks/test
// dependency have been fixed.
// https://github.com/flutter/flutter/issues/85160
// Fails with "flutter test --test-randomize-ordering-seed=456"
@Tags(<String>['no-shuffle'])
import 'dart:async'; import 'dart:async';
import 'dart:typed_data'; import 'dart:typed_data';
import 'dart:ui'; import 'dart:ui';
......
...@@ -2,6 +2,12 @@ ...@@ -2,6 +2,12 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
// TODO(gspencergoog): Remove this tag once this test's state leaks/test
// dependency have been fixed.
// https://github.com/flutter/flutter/issues/85160
// Fails with "flutter test --test-randomize-ordering-seed=123"
@Tags(<String>['no-shuffle'])
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/physics.dart'; import 'package:flutter/physics.dart';
import 'package:flutter/widgets.dart'; import 'package:flutter/widgets.dart';
......
...@@ -2,6 +2,12 @@ ...@@ -2,6 +2,12 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
// TODO(gspencergoog): Remove this tag once this test's state leaks/test
// dependency have been fixed.
// https://github.com/flutter/flutter/issues/85160
// Fails with "flutter test --test-randomize-ordering-seed=20210704"
@Tags(<String>['no-shuffle'])
import 'dart:io' show Platform; import 'dart:io' show Platform;
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
......
...@@ -7,6 +7,12 @@ ...@@ -7,6 +7,12 @@
// initialize a binding, which rendering_tester will attempt to re-initialize // initialize a binding, which rendering_tester will attempt to re-initialize
// (or vice versa). // (or vice versa).
// TODO(gspencergoog): Remove this tag once this test's state leaks/test
// dependency have been fixed.
// https://github.com/flutter/flutter/issues/85160
// Fails with "flutter test --test-randomize-ordering-seed=123"
@Tags(<String>['no-shuffle'])
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/rendering.dart'; import 'package:flutter/rendering.dart';
import 'package:flutter/widgets.dart'; import 'package:flutter/widgets.dart';
......
...@@ -2,6 +2,12 @@ ...@@ -2,6 +2,12 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
// TODO(gspencergoog): Remove this tag once this test's state leaks/test
// dependency have been fixed.
// https://github.com/flutter/flutter/issues/85160
// Fails with "flutter test --test-randomize-ordering-seed=123"
@Tags(<String>['no-shuffle'])
import 'dart:async'; import 'dart:async';
import 'dart:ui' show window; import 'dart:ui' show window;
......
...@@ -2,6 +2,12 @@ ...@@ -2,6 +2,12 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
// TODO(gspencergoog): Remove this tag once this test's state leaks/test
// dependency have been fixed.
// https://github.com/flutter/flutter/issues/85160
// Fails with "flutter test --test-randomize-ordering-seed=4281596210"
@Tags(<String>['no-shuffle'])
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/scheduler.dart'; import 'package:flutter/scheduler.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
......
...@@ -2,6 +2,12 @@ ...@@ -2,6 +2,12 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
// TODO(gspencergoog): Remove this tag once this test's state leaks/test
// dependency have been fixed.
// https://github.com/flutter/flutter/issues/85160
// Fails with "flutter test --test-randomize-ordering-seed=456"
@Tags(<String>['no-shuffle'])
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_test/flutter_test.dart';
......
...@@ -2,6 +2,12 @@ ...@@ -2,6 +2,12 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
// TODO(gspencergoog): Remove this tag once this test's state leaks/test
// dependency have been fixed.
// https://github.com/flutter/flutter/issues/85160
// Fails with "flutter test --test-randomize-ordering-seed=123"
@Tags(<String>['no-shuffle'])
import 'package:flutter/widgets.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_test/flutter_test.dart';
......
...@@ -2,6 +2,12 @@ ...@@ -2,6 +2,12 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
// TODO(gspencergoog): Remove this tag once this test's state leaks/test
// dependency have been fixed.
// https://github.com/flutter/flutter/issues/85160
// Fails with "flutter test --test-randomize-ordering-seed=382757700"
@Tags(<String>['no-shuffle'])
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:flutter/widgets.dart'; import 'package:flutter/widgets.dart';
......
...@@ -2,6 +2,12 @@ ...@@ -2,6 +2,12 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
// TODO(gspencergoog): Remove this tag once this test's state leaks/test
// dependency have been fixed.
// https://github.com/flutter/flutter/issues/85160
// Fails with "flutter test --test-randomize-ordering-seed=456"
@Tags(<String>['no-shuffle'])
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart'; import 'package:flutter/rendering.dart';
import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_test/flutter_test.dart';
......
...@@ -2,6 +2,12 @@ ...@@ -2,6 +2,12 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
// TODO(gspencergoog): Remove this tag once this test's state leaks/test
// dependency have been fixed.
// https://github.com/flutter/flutter/issues/85160
// Fails with "flutter test --test-randomize-ordering-seed=123"
@Tags(<String>['no-shuffle'])
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/widgets.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_test/flutter_test.dart';
......
...@@ -2,6 +2,12 @@ ...@@ -2,6 +2,12 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
// TODO(gspencergoog): Remove this tag once this test's state leaks/test
// dependency have been fixed.
// https://github.com/flutter/flutter/issues/85160
// Fails with "flutter test --test-randomize-ordering-seed=456"
@Tags(<String>['no-shuffle'])
import 'package:flutter/gestures.dart' show DragStartBehavior; import 'package:flutter/gestures.dart' show DragStartBehavior;
import 'package:flutter/widgets.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_test/flutter_test.dart';
......
...@@ -2,6 +2,12 @@ ...@@ -2,6 +2,12 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
// TODO(gspencergoog): Remove this tag once this test's state leaks/test
// dependency have been fixed.
// https://github.com/flutter/flutter/issues/85160
// Fails with "flutter test --test-randomize-ordering-seed=123"
@Tags(<String>['no-shuffle'])
import 'package:flutter/gestures.dart'; import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/semantics.dart'; import 'package:flutter/semantics.dart';
......
...@@ -3,6 +3,12 @@ ...@@ -3,6 +3,12 @@
// found in the LICENSE file. // found in the LICENSE file.
@TestOn('!chrome') @TestOn('!chrome')
// TODO(gspencergoog): Remove this tag once this test's state leaks/test
// dependency have been fixed.
// https://github.com/flutter/flutter/issues/85160
// Fails with "flutter test --test-randomize-ordering-seed=4281596210"
@Tags(<String>['no-shuffle'])
import 'dart:async'; import 'dart:async';
import 'dart:typed_data'; import 'dart:typed_data';
import 'dart:ui'; import 'dart:ui';
......
...@@ -2,6 +2,12 @@ ...@@ -2,6 +2,12 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
// TODO(gspencergoog): Remove this tag once this test's state leaks/test
// dependency have been fixed.
// https://github.com/flutter/flutter/issues/85160
// Fails with "flutter test --test-randomize-ordering-seed=123"
@Tags(<String>['no-shuffle'])
import 'dart:collection'; import 'dart:collection';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
......
...@@ -2,6 +2,12 @@ ...@@ -2,6 +2,12 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
// TODO(gspencergoog): Remove this tag once this test's state leaks/test
// dependency have been fixed.
// https://github.com/flutter/flutter/issues/85160
// Fails with "flutter test --test-randomize-ordering-seed=123"
@Tags(<String>['no-shuffle'])
import 'dart:ui' as ui show Image; import 'dart:ui' as ui show Image;
import 'package:flutter/widgets.dart'; import 'package:flutter/widgets.dart';
......
...@@ -3,6 +3,13 @@ ...@@ -3,6 +3,13 @@
// found in the LICENSE file. // found in the LICENSE file.
@TestOn('!chrome') @TestOn('!chrome')
// TODO(gspencergoog): Remove this tag once this test's state leaks/test
// dependency have been fixed.
// https://github.com/flutter/flutter/issues/85160
// Fails with "flutter test --test-randomize-ordering-seed=456"
@Tags(<String>['no-shuffle'])
import 'dart:async'; import 'dart:async';
import 'dart:convert'; import 'dart:convert';
import 'dart:math'; import 'dart:math';
...@@ -1983,7 +1990,7 @@ class _TestWidgetInspectorService extends TestWidgetInspectorService { ...@@ -1983,7 +1990,7 @@ class _TestWidgetInspectorService extends TestWidgetInspectorService {
_CreationLocation location = knownLocations[id]!; _CreationLocation location = knownLocations[id]!;
expect(location.file, equals(file)); expect(location.file, equals(file));
// ClockText widget. // ClockText widget.
expect(location.line, equals(53)); expect(location.line, equals(60));
expect(location.column, equals(9)); expect(location.column, equals(9));
expect(location.name, equals('ClockText')); expect(location.name, equals('ClockText'));
expect(count, equals(1)); expect(count, equals(1));
...@@ -1993,7 +2000,7 @@ class _TestWidgetInspectorService extends TestWidgetInspectorService { ...@@ -1993,7 +2000,7 @@ class _TestWidgetInspectorService extends TestWidgetInspectorService {
location = knownLocations[id]!; location = knownLocations[id]!;
expect(location.file, equals(file)); expect(location.file, equals(file));
// Text widget in _ClockTextState build method. // Text widget in _ClockTextState build method.
expect(location.line, equals(91)); expect(location.line, equals(98));
expect(location.column, equals(12)); expect(location.column, equals(12));
expect(location.name, equals('Text')); expect(location.name, equals('Text'));
expect(count, equals(1)); expect(count, equals(1));
...@@ -2020,7 +2027,7 @@ class _TestWidgetInspectorService extends TestWidgetInspectorService { ...@@ -2020,7 +2027,7 @@ class _TestWidgetInspectorService extends TestWidgetInspectorService {
location = knownLocations[id]!; location = knownLocations[id]!;
expect(location.file, equals(file)); expect(location.file, equals(file));
// ClockText widget. // ClockText widget.
expect(location.line, equals(53)); expect(location.line, equals(60));
expect(location.column, equals(9)); expect(location.column, equals(9));
expect(location.name, equals('ClockText')); expect(location.name, equals('ClockText'));
expect(count, equals(3)); // 3 clock widget instances rebuilt. expect(count, equals(3)); // 3 clock widget instances rebuilt.
...@@ -2030,7 +2037,7 @@ class _TestWidgetInspectorService extends TestWidgetInspectorService { ...@@ -2030,7 +2037,7 @@ class _TestWidgetInspectorService extends TestWidgetInspectorService {
location = knownLocations[id]!; location = knownLocations[id]!;
expect(location.file, equals(file)); expect(location.file, equals(file));
// Text widget in _ClockTextState build method. // Text widget in _ClockTextState build method.
expect(location.line, equals(91)); expect(location.line, equals(98));
expect(location.column, equals(12)); expect(location.column, equals(12));
expect(location.name, equals('Text')); expect(location.name, equals('Text'));
expect(count, equals(3)); // 3 clock widget instances rebuilt. expect(count, equals(3)); // 3 clock widget instances rebuilt.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment