Matan Lurey ec2ab541dd
Switch flutter_build_apk_health_tests to use a subset of current tests. (#159004)
Towards https://github.com/flutter/flutter/issues/159000 as part of
debugging issues such as
https://github.com/flutter/flutter/issues/158560.

On a `bringup: true` shard, run a number of `flutter build apk` tests in
succession to try and routinely trigger timeouts and crashes, so we can
test other hypotheses on how to fix this problem (i.e. potentially
around increasing memory, changing daemon configuration, aggressively
killing processes, etc).
2024-11-15 22:54:06 +00:00

78 lines
2.2 KiB
Dart

// 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.
// TODO(matanlurey): Remove after debugging https://github.com/flutter/flutter/issues/159000.
@Tags(<String>['flutter-build-apk'])
library;
import 'package:file/file.dart';
import 'package:flutter_tools/src/base/io.dart';
import '../src/common.dart';
import 'test_utils.dart';
void main() {
late Directory tempDir;
setUp(() async {
tempDir = createResolvedTempDirectorySync('run_test.');
});
tearDown(() async {
tryToDelete(tempDir);
});
testWithoutContext('build succeeds with api 33 features', () async {
final String flutterBin = fileSystem.path.join(getFlutterRoot(), 'bin', 'flutter');
ProcessResult result = await processManager.run(<String>[
flutterBin,
'create',
tempDir.path,
'--project-name=testapp',
], workingDirectory: tempDir.path);
expect(result, const ProcessResultMatcher());
final File api33File = tempDir
.childDirectory('android')
.childDirectory('app')
.childDirectory('src')
.childDirectory('main')
.childDirectory('java')
.childFile('Android33Api.java');
api33File.createSync(recursive: true);
// AccessibilityManager.isAudioDescriptionRequested() is an API 33 feature
api33File.writeAsStringSync('''
import android.app.Activity;
import android.view.accessibility.AccessibilityManager;
import androidx.annotation.Keep;
import io.flutter.Log;
@Keep
public final class Android33Api extends Activity {
private AccessibilityManager accessibilityManager;
public Android33Api() {
accessibilityManager = getSystemService(AccessibilityManager.class);
}
public void doSomething() {
if (accessibilityManager.isAudioDescriptionRequested()) {
Log.e("flutter", "User has requested to enable audio descriptions");
}
}
}
''');
result = await processManager.run(<String>[
flutterBin,
...getLocalEngineArguments(),
'build',
'apk',
], workingDirectory: tempDir.path);
expect(result, const ProcessResultMatcher(stdoutPattern: 'app-release.apk'));
});
}