Migrate more integration tests to process result matcher (#130994)
Part of https://github.com/flutter/flutter/issues/127135
This commit is contained in:
parent
773b667b55
commit
d457287f6c
@ -147,7 +147,7 @@ void main() {
|
||||
tempDir.path,
|
||||
'--project-name=testapp',
|
||||
], workingDirectory: tempDir.path);
|
||||
expect(result.exitCode, 0);
|
||||
expect(result, const ProcessResultMatcher());
|
||||
// Adds intent filters for app links
|
||||
final String androidManifestPath = fileSystem.path.join(tempDir.path, 'android', 'app', 'src', 'main', 'AndroidManifest.xml');
|
||||
final io.File androidManifestFile = io.File(androidManifestPath);
|
||||
@ -166,7 +166,7 @@ void main() {
|
||||
'apk',
|
||||
'--config-only',
|
||||
], workingDirectory: tempDir.path);
|
||||
expect(result.exitCode, 0);
|
||||
expect(result, const ProcessResultMatcher());
|
||||
|
||||
final Directory androidApp = tempDir.childDirectory('android');
|
||||
result = await processManager.run(<String>[
|
||||
@ -176,7 +176,7 @@ void main() {
|
||||
'printDebugAppLinkDomains',
|
||||
], workingDirectory: androidApp.path);
|
||||
|
||||
expect(result.exitCode, 0);
|
||||
expect(result, const ProcessResultMatcher());
|
||||
|
||||
const List<String> expectedLines = <String>[
|
||||
// Should only pick up the pure and hybrid intent filters
|
||||
|
@ -35,7 +35,7 @@ void main() {
|
||||
tempDir.path,
|
||||
'--project-name=testapp',
|
||||
], workingDirectory: tempDir.path);
|
||||
expect(result.exitCode, 0);
|
||||
expect(result, const ProcessResultMatcher());
|
||||
// Ensure that gradle files exists from templates.
|
||||
result = await processManager.run(<String>[
|
||||
flutterBin,
|
||||
@ -43,7 +43,7 @@ void main() {
|
||||
'apk',
|
||||
'--config-only',
|
||||
], workingDirectory: tempDir.path);
|
||||
expect(result.exitCode, 0);
|
||||
expect(result, const ProcessResultMatcher());
|
||||
|
||||
final Directory androidApp = tempDir.childDirectory('android');
|
||||
result = await processManager.run(<String>[
|
||||
@ -53,7 +53,7 @@ void main() {
|
||||
'printDebugApplicationId',
|
||||
], workingDirectory: androidApp.path);
|
||||
// Verify that gradlew has a javaVersion task.
|
||||
expect(result.exitCode, 0);
|
||||
expect(result, const ProcessResultMatcher());
|
||||
// Verify the format is a number on its own line.
|
||||
const List<String> expectedLines = <String>[
|
||||
'ApplicationId: com.example.testapp',
|
||||
|
@ -36,13 +36,7 @@ void main() {
|
||||
];
|
||||
final ProcessResult firstRunResult = await processManager.run(buildCommand, workingDirectory: workingDirectory);
|
||||
|
||||
printOnFailure('Output of flutter build macOS:');
|
||||
final String firstRunStdout = firstRunResult.stdout.toString();
|
||||
printOnFailure('First run stdout: $firstRunStdout');
|
||||
printOnFailure('First run stderr: ${firstRunResult.stderr}');
|
||||
|
||||
expect(firstRunResult.exitCode, 0);
|
||||
expect(firstRunStdout, contains('Running pod install'));
|
||||
expect(firstRunResult, const ProcessResultMatcher(stdoutPattern: 'Running pod install'));
|
||||
|
||||
final File generatedConfig = fileSystem.file(fileSystem.path.join(
|
||||
workingDirectory,
|
||||
@ -73,10 +67,7 @@ void main() {
|
||||
|
||||
// Run again with no changes.
|
||||
final ProcessResult secondRunResult = await processManager.run(buildCommand, workingDirectory: workingDirectory);
|
||||
final String secondRunStdout = secondRunResult.stdout.toString();
|
||||
printOnFailure('Second run stdout: $secondRunStdout');
|
||||
printOnFailure('Second run stderr: ${secondRunResult.stderr}');
|
||||
|
||||
expect(secondRunResult.exitCode, 0);
|
||||
expect(secondRunResult, const ProcessResultMatcher());
|
||||
}, skip: !platform.isMacOS); // [intended] macOS builds only work on macos.
|
||||
}
|
||||
|
@ -158,8 +158,10 @@ void main() {
|
||||
'--debug-url=http://127.0.0.1:3333*/',
|
||||
], workingDirectory: helloWorld);
|
||||
|
||||
expect(result.exitCode, 1);
|
||||
expect(result.stderr, contains('Invalid `--debug-url`: http://127.0.0.1:3333*/'));
|
||||
expect(
|
||||
result,
|
||||
const ProcessResultMatcher(exitCode: 1, stderrPattern: 'Invalid `--debug-url`: http://127.0.0.1:3333*/'),
|
||||
);
|
||||
});
|
||||
|
||||
testWithoutContext('--debug-uri is an alias for --debug-url', () async {
|
||||
@ -175,8 +177,14 @@ void main() {
|
||||
'--debug-uri=http://127.0.0.1:3333*/', // "uri" not "url"
|
||||
], workingDirectory: helloWorld);
|
||||
|
||||
expect(result.exitCode, 1);
|
||||
expect(result.stderr, contains('Invalid `--debug-url`: http://127.0.0.1:3333*/')); // _"url"_ not "uri"!
|
||||
expect(
|
||||
result,
|
||||
const ProcessResultMatcher(
|
||||
exitCode: 1,
|
||||
// _"url"_ not "uri"!
|
||||
stderrPattern: 'Invalid `--debug-url`: http://127.0.0.1:3333*/',
|
||||
),
|
||||
);
|
||||
});
|
||||
|
||||
testWithoutContext('will load bootstrap script before starting', () async {
|
||||
@ -211,8 +219,10 @@ void main() {
|
||||
'--bundle-sksl-path=foo/bar/baz.json', // This file does not exist.
|
||||
], workingDirectory: helloWorld);
|
||||
|
||||
expect(result.exitCode, 1);
|
||||
expect(result.stderr, contains('No SkSL shader bundle found at foo/bar/baz.json'));
|
||||
expect(result, const ProcessResultMatcher(
|
||||
exitCode: 1,
|
||||
stderrPattern: 'No SkSL shader bundle found at foo/bar/baz.json'),
|
||||
);
|
||||
});
|
||||
|
||||
testWithoutContext('flutter attach does not support --release', () async {
|
||||
@ -257,7 +267,7 @@ void main() {
|
||||
'json',
|
||||
], workingDirectory: helloWorld);
|
||||
|
||||
expect(result.exitCode, 0);
|
||||
expect(result, const ProcessResultMatcher());
|
||||
expect(result.stderr, isEmpty);
|
||||
});
|
||||
}
|
||||
|
@ -39,10 +39,7 @@ void main() {
|
||||
'--target-platform=android-arm64',
|
||||
], workingDirectory: tempDir.path);
|
||||
|
||||
printOnFailure('stdout:\n${result.stdout}');
|
||||
printOnFailure('stderr:\n${result.stderr}');
|
||||
expect(result.exitCode, 0);
|
||||
expect(result.stdout.toString(), contains('app-release.aab'));
|
||||
expect(result, const ProcessResultMatcher(stdoutPattern: 'app-release.aab'));
|
||||
expect(result.stdout.toString(), contains('Deferred components prebuild validation passed.'));
|
||||
expect(result.stdout.toString(), contains('Deferred components gen_snapshot validation passed.'));
|
||||
|
||||
@ -106,7 +103,7 @@ void main() {
|
||||
expect(archive.findFile('component1/assets/flutter_assets/test_assets/asset2.txt') != null, true);
|
||||
expect(archive.findFile('base/assets/flutter_assets/test_assets/asset1.txt') != null, true);
|
||||
|
||||
expect(result.exitCode, 0);
|
||||
expect(result, const ProcessResultMatcher());
|
||||
});
|
||||
|
||||
testWithoutContext('simple build appbundle no-deferred-components succeeds', () async {
|
||||
@ -121,11 +118,9 @@ void main() {
|
||||
'--no-deferred-components',
|
||||
], workingDirectory: tempDir.path);
|
||||
|
||||
printOnFailure('stdout:\n${result.stdout}');
|
||||
printOnFailure('stderr:\n${result.stderr}');
|
||||
expect(result.stdout.toString().contains('app-release.aab'), true);
|
||||
expect(result.stdout.toString().contains('Deferred components prebuild validation passed.'), false);
|
||||
expect(result.stdout.toString().contains('Deferred components gen_snapshot validation passed.'), false);
|
||||
expect(result, const ProcessResultMatcher(stdoutPattern: 'app-release.aab'));
|
||||
expect(result.stdout.toString(), isNot(contains('Deferred components prebuild validation passed.')));
|
||||
expect(result.stdout.toString(), isNot(contains('Deferred components gen_snapshot validation passed.')));
|
||||
|
||||
final String line = result.stdout.toString()
|
||||
.split('\n')
|
||||
@ -153,8 +148,6 @@ void main() {
|
||||
expect(archive.findFile('component1/assets/flutter_assets/test_assets/asset2.txt') != null, false);
|
||||
expect(archive.findFile('base/assets/flutter_assets/test_assets/asset2.txt') != null, true);
|
||||
expect(archive.findFile('base/assets/flutter_assets/test_assets/asset1.txt') != null, true);
|
||||
|
||||
expect(result.exitCode, 0);
|
||||
});
|
||||
|
||||
testWithoutContext('simple build appbundle mismatched golden no-validate-deferred-components succeeds', () async {
|
||||
@ -169,14 +162,13 @@ void main() {
|
||||
'--no-validate-deferred-components',
|
||||
], workingDirectory: tempDir.path);
|
||||
|
||||
expect(result, const ProcessResultMatcher(stdoutPattern: 'app-release.aab'));
|
||||
printOnFailure('stdout:\n${result.stdout}');
|
||||
printOnFailure('stderr:\n${result.stderr}');
|
||||
expect(result.stdout.toString().contains('app-release.aab'), true);
|
||||
expect(result.stdout.toString().contains('Deferred components prebuild validation passed.'), false);
|
||||
expect(result.stdout.toString().contains('Deferred components gen_snapshot validation passed.'), false);
|
||||
|
||||
expect(result.stdout.toString().contains('New loading units were found:'), false);
|
||||
expect(result.stdout.toString().contains('Previously existing loading units no longer exist:'), false);
|
||||
expect(result.stdout.toString(), isNot(contains('Deferred components prebuild validation passed.')));
|
||||
expect(result.stdout.toString(), isNot(contains('Deferred components gen_snapshot validation passed.')));
|
||||
expect(result.stdout.toString(), isNot(contains('New loading units were found:')));
|
||||
expect(result.stdout.toString(), isNot(contains('Previously existing loading units no longer exist:')));
|
||||
|
||||
final String line = result.stdout.toString()
|
||||
.split('\n')
|
||||
@ -202,8 +194,6 @@ void main() {
|
||||
|
||||
expect(archive.findFile('component1/assets/flutter_assets/test_assets/asset2.txt') != null, true);
|
||||
expect(archive.findFile('base/assets/flutter_assets/test_assets/asset1.txt') != null, true);
|
||||
|
||||
expect(result.exitCode, 0);
|
||||
});
|
||||
|
||||
testWithoutContext('simple build appbundle missing android dynamic feature module fails', () async {
|
||||
@ -217,16 +207,15 @@ void main() {
|
||||
'appbundle',
|
||||
], workingDirectory: tempDir.path);
|
||||
|
||||
expect(result.stdout.toString().contains('app-release.aab'), false);
|
||||
expect(result.stdout.toString().contains('Deferred components prebuild validation passed.'), false);
|
||||
expect(result.stdout.toString().contains('Deferred components gen_snapshot validation passed.'), false);
|
||||
expect(result, const ProcessResultMatcher(exitCode: 1, stdoutPattern: 'Newly generated android files:'));
|
||||
|
||||
expect(result.stdout.toString(), isNot(contains('app-release.aab')));
|
||||
expect(result.stdout.toString(), isNot(contains('Deferred components prebuild validation passed.')));
|
||||
expect(result.stdout.toString(), isNot(contains('Deferred components gen_snapshot validation passed.')));
|
||||
|
||||
expect(result.stdout.toString(), contains('Newly generated android files:'));
|
||||
final String pathSeparator = fileSystem.path.separator;
|
||||
expect(result.stdout.toString(), contains('build${pathSeparator}android_deferred_components_setup_files${pathSeparator}component1${pathSeparator}build.gradle'));
|
||||
expect(result.stdout.toString(), contains('build${pathSeparator}android_deferred_components_setup_files${pathSeparator}component1${pathSeparator}src${pathSeparator}main${pathSeparator}AndroidManifest.xml'));
|
||||
|
||||
expect(result.exitCode, 1);
|
||||
});
|
||||
|
||||
testWithoutContext('simple build appbundle missing golden fails', () async {
|
||||
@ -240,16 +229,15 @@ void main() {
|
||||
'appbundle',
|
||||
], workingDirectory: tempDir.path);
|
||||
|
||||
expect(result.stdout.toString().contains('app-release.aab'), false);
|
||||
expect(result.stdout.toString().contains('Deferred components prebuild validation passed.'), true);
|
||||
expect(result.stdout.toString().contains('Deferred components gen_snapshot validation passed.'), false);
|
||||
expect(result, const ProcessResultMatcher(exitCode: 1));
|
||||
expect(result.stdout.toString(), isNot(contains('app-release.aab')));
|
||||
expect(result.stdout.toString(), contains('Deferred components prebuild validation passed.'));
|
||||
expect(result.stdout.toString(), isNot(contains('Deferred components gen_snapshot validation passed.')));
|
||||
|
||||
expect(result.stdout.toString(), contains('New loading units were found:'));
|
||||
expect(result.stdout.toString(), contains('- package:test/deferred_library.dart'));
|
||||
|
||||
expect(result.stdout.toString().contains('Previously existing loading units no longer exist:'), false);
|
||||
|
||||
expect(result.exitCode, 1);
|
||||
expect(result.stdout.toString(), isNot(contains('Previously existing loading units no longer exist:')));
|
||||
});
|
||||
|
||||
testWithoutContext('simple build appbundle mismatched golden fails', () async {
|
||||
@ -263,9 +251,15 @@ void main() {
|
||||
'appbundle',
|
||||
], workingDirectory: tempDir.path);
|
||||
|
||||
expect(result.stdout.toString().contains('app-release.aab'), false);
|
||||
expect(result.stdout.toString().contains('Deferred components prebuild validation passed.'), true);
|
||||
expect(result.stdout.toString().contains('Deferred components gen_snapshot validation passed.'), false);
|
||||
expect(
|
||||
result,
|
||||
const ProcessResultMatcher(
|
||||
exitCode: 1,
|
||||
stdoutPattern: 'Deferred components prebuild validation passed.',
|
||||
),
|
||||
);
|
||||
expect(result.stdout.toString(), isNot(contains('app-release.aab')));
|
||||
expect(result.stdout.toString(), isNot(contains('Deferred components gen_snapshot validation passed.')));
|
||||
|
||||
expect(result.stdout.toString(), contains('New loading units were found:'));
|
||||
expect(result.stdout.toString(), contains('- package:test/deferred_library.dart'));
|
||||
@ -275,6 +269,5 @@ void main() {
|
||||
|
||||
expect(result.stdout.toString(), contains('This loading unit check will not fail again on the next build attempt'));
|
||||
|
||||
expect(result.exitCode, 1);
|
||||
});
|
||||
}
|
||||
|
@ -18,6 +18,7 @@ import 'package:flutter_tools/src/globals.dart' as globals;
|
||||
import '../src/common.dart';
|
||||
import '../src/context.dart';
|
||||
import '../src/test_flutter_command_runner.dart';
|
||||
import 'test_utils.dart';
|
||||
|
||||
void main() {
|
||||
late Directory tempDir;
|
||||
@ -275,7 +276,7 @@ Future<void> _ensureFlutterToolsSnapshot() async {
|
||||
printOnFailure('Output of dart ${snapshotArgs.join(" ")}:');
|
||||
printOnFailure(snapshotResult.stdout.toString());
|
||||
printOnFailure(snapshotResult.stderr.toString());
|
||||
expect(snapshotResult.exitCode, 0);
|
||||
expect(snapshotResult, const ProcessResultMatcher());
|
||||
}
|
||||
|
||||
Future<void> _restoreFlutterToolsSnapshot() async {
|
||||
@ -415,10 +416,7 @@ Future<void> _analyzeEntity(FileSystemEntity target) async {
|
||||
args,
|
||||
workingDirectory: target is Directory ? target.path : target.dirname,
|
||||
);
|
||||
printOnFailure('Output of flutter analyze:');
|
||||
printOnFailure(exec.stdout.toString());
|
||||
printOnFailure(exec.stderr.toString());
|
||||
expect(exec.exitCode, 0);
|
||||
expect(exec, const ProcessResultMatcher());
|
||||
}
|
||||
|
||||
Future<void> _buildWebProject(Directory workingDir) async {
|
||||
@ -445,17 +443,14 @@ Future<void> _runFlutterSnapshot(List<String> flutterCommandArgs, Directory work
|
||||
);
|
||||
|
||||
final List<String> args = <String>[
|
||||
globals.artifacts!.getArtifactPath(Artifact.engineDartBinary, platform: TargetPlatform.web_javascript),
|
||||
flutterToolsSnapshotPath,
|
||||
...flutterCommandArgs
|
||||
];
|
||||
|
||||
final ProcessResult exec = await Process.run(
|
||||
globals.artifacts!.getArtifactPath(Artifact.engineDartBinary, platform: TargetPlatform.web_javascript),
|
||||
final ProcessResult exec = await globals.processManager.run(
|
||||
args,
|
||||
workingDirectory: workingDir.path,
|
||||
);
|
||||
printOnFailure('Output of flutter ${flutterCommandArgs.join(" ")}:');
|
||||
printOnFailure(exec.stdout.toString());
|
||||
printOnFailure(exec.stderr.toString());
|
||||
expect(exec.exitCode, 0);
|
||||
expect(exec, const ProcessResultMatcher());
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user