Add test for dart compilation error build output (#78381)

This commit is contained in:
Jenn Magder 2021-03-19 15:33:46 -07:00 committed by GitHub
parent c90cd65a38
commit 2e06ed0787
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 77 additions and 21 deletions

View file

@ -0,0 +1,76 @@
// Copyright 2014 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// @dart = 2.8
import 'package:file/file.dart';
import 'package:flutter_tools/src/base/io.dart';
import '../src/common.dart';
import 'test_utils.dart';
void main() {
Directory tempDir;
Directory projectRoot;
String flutterBin;
final List<String> targetPlatforms = <String>[
'apk',
'web',
if (platform.isWindows)
'windows',
if (platform.isMacOS)
...<String>['macos', 'ios'],
];
setUpAll(() {
tempDir = createResolvedTempDirectorySync('build_compilation_error_test.');
flutterBin = fileSystem.path.join(
getFlutterRoot(),
'bin',
'flutter',
);
processManager.runSync(<String>[flutterBin, 'config',
'--enable-macos-desktop',
'--enable-windows-desktop',
'--enable-web',
]);
processManager.runSync(<String>[
flutterBin,
...getLocalEngineArguments(),
'create',
'hello',
], workingDirectory: tempDir.path);
projectRoot = tempDir.childDirectory('hello');
writeFile(fileSystem.path.join(projectRoot.path, 'lib', 'main.dart'), '''
int x = 'String';
''');
});
tearDownAll(() {
tryToDelete(tempDir);
});
for (final String targetPlatform in targetPlatforms) {
testWithoutContext('flutter build $targetPlatform shows dart compilation error in non-verbose', () {
final ProcessResult result = processManager.runSync(<String>[
flutterBin,
...getLocalEngineArguments(),
'build',
targetPlatform,
'--no-pub',
if (targetPlatform == 'ios')
'--no-codesign',
], workingDirectory: projectRoot.path);
expect(
// iOS shows this as stdout.
targetPlatform == 'ios' ? result.stdout : result.stderr,
contains("A value of type 'String' can't be assigned to a variable of type 'int'."),
);
expect(result.exitCode, 1);
}, timeout: const Timeout(Duration(minutes: 3)));
}
}

View file

@ -57,26 +57,6 @@ void main() {
File outputAppFrameworkBinary;
setUpAll(() {
flutterRoot = getFlutterRoot();
tempDir = createResolvedTempDirectorySync('ios_content_validation.');
flutterBin = fileSystem.path.join(
flutterRoot,
'bin',
'flutter',
);
processManager.runSync(<String>[
flutterBin,
...getLocalEngineArguments(),
'create',
'--platforms=ios',
'-i',
'objc',
'hello',
], workingDirectory: tempDir.path);
projectRoot = tempDir.childDirectory('hello').path;
processManager.runSync(<String>[
flutterBin,
...getLocalEngineArguments(),

View file

@ -107,7 +107,7 @@ void main() {
expect(outputFlutterFramework.childDirectory('Modules'), isNot(exists));
// Archiving should contain a bitcode blob, but not building.
// This mimics Xcode behavior and present a developer from having to install a
// This mimics Xcode behavior and prevents a developer from having to install a
// 300+MB app.
final File outputFlutterFrameworkBinary = outputFlutterFramework
.childDirectory('Versions')