Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Move tests
  • Loading branch information
stuartmorgan-g committed Apr 25, 2023
commit b4676c0719c7c59c8bc9cfd0f22441d2e3572d27
54 changes: 54 additions & 0 deletions script/tool/test/gradle_check_command_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -501,4 +501,58 @@ dependencies {
]),
);
});

test('fails if gradle-driven lint-warnings-as-errors is missing', () async {
const String pluginName = 'a_plugin';
final RepositoryPackage plugin =
createFakePlugin(pluginName, packagesDir, examples: <String>[]);
writeFakePluginBuildGradle(plugin,
includeLanguageVersion: true, warningsConfigured: false);
writeFakeManifest(plugin);

Error? commandError;
final List<String> output = await runCapturingPrint(
runner, <String>['gradle-check'], errorHandler: (Error e) {
commandError = e;
});

expect(commandError, isA<ToolExit>());
expect(
output,
containsAllInOrder(
<Matcher>[
contains('This package is not configured to enable all '
'Gradle-driven lint warnings and treat them as errors.'),
contains('The following packages had errors:'),
],
));
});

test('fails if javac lint-warnings-as-errors is missing', () async {
const String pluginName = 'a_plugin';
final RepositoryPackage plugin = createFakePlugin(pluginName, packagesDir);
writeFakePluginBuildGradle(plugin, includeLanguageVersion: true);
writeFakeManifest(plugin);
final RepositoryPackage example = plugin.getExamples().first;
writeFakeExampleBuildGradles(example,
pluginName: pluginName, warningsConfigured: false);
writeFakeManifest(example, isApp: true);

Error? commandError;
final List<String> output = await runCapturingPrint(
runner, <String>['gradle-check'], errorHandler: (Error e) {
commandError = e;
});

expect(commandError, isA<ToolExit>());
expect(
output,
containsAllInOrder(
<Matcher>[
contains('The example "example" is not configured to treat javac '
'lints and warnings as errors.'),
contains('The following packages had errors:'),
],
));
});
}
139 changes: 0 additions & 139 deletions script/tool/test/lint_android_command_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -37,88 +37,13 @@ void main() {
runner.addCommand(command);
});

void writeFakePluginBuildGradle(RepositoryPackage plugin,
{bool warningsConfigured = true}) {
const String warningConfig = '''
lintOptions {
checkAllWarnings true
warningsAsErrors true
disable 'AndroidGradlePluginVersion', 'InvalidPackage', 'GradleDependency'
baseline file("lint-baseline.xml")
}
''';
final File gradleFile = plugin
.platformDirectory(FlutterPlatform.android)
.childFile('build.gradle');
gradleFile.createSync(recursive: true);
gradleFile.writeAsStringSync('''
android {
compileSdkVersion 33

defaultConfig {
minSdkVersion 16
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
${warningsConfigured ? warningConfig : ''}
testOptions {
unitTests.returnDefaultValues = true
unitTests.all {
testLogging {
events "passed", "skipped", "failed", "standardOut", "standardError"
outputs.upToDateWhen {false}
showStandardStreams = true
}
}
}
}

''');
}

void writeFakeExampleBuildGradle(
RepositoryPackage example, String pluginName,
{bool warningsConfigured = true}) {
final String warningConfig = '''
gradle.projectsEvaluated {
project(":$pluginName") {
tasks.withType(JavaCompile) {
options.compilerArgs << "-Xlint:all" << "-Werror"
}
}
}
''';
example
.platformDirectory(FlutterPlatform.android)
.childFile('build.gradle')
.writeAsStringSync('''
buildscript {
repositories {
google()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:8.0.1'
}
}
allprojects {
repositories {
google()
mavenCentral()
}
}
${warningsConfigured ? warningConfig : ''}
''');
}

test('runs gradle lint', () async {
final RepositoryPackage plugin =
createFakePlugin('plugin1', packagesDir, extraFiles: <String>[
'example/android/gradlew',
], platformSupport: <String, PlatformDetails>{
platformAndroid: const PlatformDetails(PlatformSupport.inline)
});
writeFakePluginBuildGradle(plugin);
writeFakeExampleBuildGradle(plugin.getExamples().first, 'plugin1');

final Directory androidDir =
plugin.getExamples().first.platformDirectory(FlutterPlatform.android);
Expand Down Expand Up @@ -156,10 +81,6 @@ ${warningsConfigured ? warningConfig : ''}
platformSupport: <String, PlatformDetails>{
platformAndroid: const PlatformDetails(PlatformSupport.inline)
});
writeFakePluginBuildGradle(plugin);
for (final RepositoryPackage example in plugin.getExamples()) {
writeFakeExampleBuildGradle(example, 'plugin1');
}

final Iterable<Directory> exampleAndroidDirs = plugin.getExamples().map(
(RepositoryPackage example) =>
Expand Down Expand Up @@ -193,7 +114,6 @@ ${warningsConfigured ? warningConfig : ''}
platformSupport: <String, PlatformDetails>{
platformAndroid: const PlatformDetails(PlatformSupport.inline)
});
writeFakePluginBuildGradle(plugin);

Error? commandError;
final List<String> output = await runCapturingPrint(
Expand All @@ -218,8 +138,6 @@ ${warningsConfigured ? warningConfig : ''}
], platformSupport: <String, PlatformDetails>{
platformAndroid: const PlatformDetails(PlatformSupport.inline)
});
writeFakePluginBuildGradle(plugin);
writeFakeExampleBuildGradle(plugin.getExamples().first, 'plugin1');

final String gradlewPath = plugin
.getExamples()
Expand Down Expand Up @@ -247,63 +165,6 @@ ${warningsConfigured ? warningConfig : ''}
));
});

test('fails if gradle-driven lint-warnings-as-errors is missing', () async {
final RepositoryPackage plugin =
createFakePlugin('plugin1', packagesDir, extraFiles: <String>[
'example/android/gradlew',
], platformSupport: <String, PlatformDetails>{
platformAndroid: const PlatformDetails(PlatformSupport.inline)
});
writeFakePluginBuildGradle(plugin, warningsConfigured: false);
writeFakeExampleBuildGradle(plugin.getExamples().first, 'plugin1');

Error? commandError;
final List<String> output = await runCapturingPrint(
runner, <String>['lint-android'], errorHandler: (Error e) {
commandError = e;
});

expect(commandError, isA<ToolExit>());
expect(
output,
containsAllInOrder(
<Matcher>[
contains('This plugin is not configured to enable all '
'Gradle-driven lint warnings and treat them as errors.'),
contains('The following packages had errors:'),
],
));
});

test('fails if javac lint-warnings-as-errors is missing', () async {
final RepositoryPackage plugin =
createFakePlugin('plugin1', packagesDir, extraFiles: <String>[
'example/android/gradlew',
], platformSupport: <String, PlatformDetails>{
platformAndroid: const PlatformDetails(PlatformSupport.inline)
});
writeFakePluginBuildGradle(plugin);
writeFakeExampleBuildGradle(plugin.getExamples().first, 'plugin1',
warningsConfigured: false);

Error? commandError;
final List<String> output = await runCapturingPrint(
runner, <String>['lint-android'], errorHandler: (Error e) {
commandError = e;
});

expect(commandError, isA<ToolExit>());
expect(
output,
containsAllInOrder(
<Matcher>[
contains('The example "example" is not configured to treat javac '
'lints and warnings as errors.'),
contains('The following packages had errors:'),
],
));
});

test('skips non-Android plugins', () async {
createFakePlugin('plugin1', packagesDir);

Expand Down