mirror of
https://github.com/flutter/flutter.git
synced 2025-06-03 00:51:18 +00:00
Gradle artifacts and tasks tests without context (#56335)
This commit is contained in:
parent
06fcf5146b
commit
415401102c
@ -36,68 +36,74 @@ void main() {
|
||||
Cache.flutterRoot = getFlutterRoot();
|
||||
|
||||
group('build artifacts', () {
|
||||
test('getApkDirectory in app projects', () {
|
||||
FileSystem fileSystem;
|
||||
|
||||
setUp(() {
|
||||
fileSystem = MemoryFileSystem.test();
|
||||
});
|
||||
|
||||
testWithoutContext('getApkDirectory in app projects', () {
|
||||
final FlutterProject project = MockFlutterProject();
|
||||
final AndroidProject androidProject = MockAndroidProject();
|
||||
when(project.android).thenReturn(androidProject);
|
||||
when(project.isModule).thenReturn(false);
|
||||
when(androidProject.buildDirectory).thenReturn(globals.fs.directory('foo'));
|
||||
when(androidProject.buildDirectory).thenReturn(fileSystem.directory('foo'));
|
||||
|
||||
expect(
|
||||
getApkDirectory(project).path,
|
||||
equals(globals.fs.path.join('foo', 'app', 'outputs', 'flutter-apk')),
|
||||
equals(fileSystem.path.join('foo', 'app', 'outputs', 'flutter-apk')),
|
||||
);
|
||||
});
|
||||
|
||||
test('getApkDirectory in module projects', () {
|
||||
testWithoutContext('getApkDirectory in module projects', () {
|
||||
final FlutterProject project = MockFlutterProject();
|
||||
final AndroidProject androidProject = MockAndroidProject();
|
||||
when(project.android).thenReturn(androidProject);
|
||||
when(project.isModule).thenReturn(true);
|
||||
when(androidProject.buildDirectory).thenReturn(globals.fs.directory('foo'));
|
||||
when(androidProject.buildDirectory).thenReturn(fileSystem.directory('foo'));
|
||||
|
||||
expect(
|
||||
getApkDirectory(project).path,
|
||||
equals(globals.fs.path.join('foo', 'host', 'outputs', 'apk')),
|
||||
equals(fileSystem.path.join('foo', 'host', 'outputs', 'apk')),
|
||||
);
|
||||
});
|
||||
|
||||
test('getBundleDirectory in app projects', () {
|
||||
testWithoutContext('getBundleDirectory in app projects', () {
|
||||
final FlutterProject project = MockFlutterProject();
|
||||
final AndroidProject androidProject = MockAndroidProject();
|
||||
when(project.android).thenReturn(androidProject);
|
||||
when(project.isModule).thenReturn(false);
|
||||
when(androidProject.buildDirectory).thenReturn(globals.fs.directory('foo'));
|
||||
when(androidProject.buildDirectory).thenReturn(fileSystem.directory('foo'));
|
||||
|
||||
expect(
|
||||
getBundleDirectory(project).path,
|
||||
equals(globals.fs.path.join('foo', 'app', 'outputs', 'bundle')),
|
||||
equals(fileSystem.path.join('foo', 'app', 'outputs', 'bundle')),
|
||||
);
|
||||
});
|
||||
|
||||
test('getBundleDirectory in module projects', () {
|
||||
testWithoutContext('getBundleDirectory in module projects', () {
|
||||
final FlutterProject project = MockFlutterProject();
|
||||
final AndroidProject androidProject = MockAndroidProject();
|
||||
when(project.android).thenReturn(androidProject);
|
||||
when(project.isModule).thenReturn(true);
|
||||
when(androidProject.buildDirectory).thenReturn(globals.fs.directory('foo'));
|
||||
when(androidProject.buildDirectory).thenReturn(fileSystem.directory('foo'));
|
||||
|
||||
expect(
|
||||
getBundleDirectory(project).path,
|
||||
equals(globals.fs.path.join('foo', 'host', 'outputs', 'bundle')),
|
||||
equals(fileSystem.path.join('foo', 'host', 'outputs', 'bundle')),
|
||||
);
|
||||
});
|
||||
|
||||
test('getRepoDirectory', () {
|
||||
testWithoutContext('getRepoDirectory', () {
|
||||
expect(
|
||||
getRepoDirectory(globals.fs.directory('foo')).path,
|
||||
equals(globals.fs.path.join('foo','outputs', 'repo')),
|
||||
getRepoDirectory(fileSystem.directory('foo')).path,
|
||||
equals(fileSystem.path.join('foo','outputs', 'repo')),
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
group('gradle tasks', () {
|
||||
test('assemble release', () {
|
||||
testWithoutContext('assemble release', () {
|
||||
expect(
|
||||
getAssembleTaskFor(const BuildInfo(BuildMode.release, null, treeShakeIcons: false)),
|
||||
equals('assembleRelease'),
|
||||
@ -108,7 +114,7 @@ void main() {
|
||||
);
|
||||
});
|
||||
|
||||
test('assemble debug', () {
|
||||
testWithoutContext('assemble debug', () {
|
||||
expect(
|
||||
getAssembleTaskFor(const BuildInfo(BuildMode.debug, null, treeShakeIcons: false)),
|
||||
equals('assembleDebug'),
|
||||
@ -119,7 +125,7 @@ void main() {
|
||||
);
|
||||
});
|
||||
|
||||
test('assemble profile', () {
|
||||
testWithoutContext('assemble profile', () {
|
||||
expect(
|
||||
getAssembleTaskFor(const BuildInfo(BuildMode.profile, null, treeShakeIcons: false)),
|
||||
equals('assembleProfile'),
|
||||
@ -132,156 +138,117 @@ void main() {
|
||||
});
|
||||
|
||||
group('findBundleFile', () {
|
||||
final Usage mockUsage = MockUsage();
|
||||
FileSystem fileSystem;
|
||||
Usage mockUsage;
|
||||
|
||||
testUsingContext('Finds app bundle when flavor contains underscores in release mode', () {
|
||||
final FlutterProject project = generateFakeAppBundle('foo_barRelease', 'app.aab');
|
||||
final File bundle = findBundleFile(project, const BuildInfo(BuildMode.release, 'foo_bar', treeShakeIcons: false));
|
||||
expect(bundle, isNotNull);
|
||||
expect(bundle.path, globals.fs.path.join('irrelevant', 'app', 'outputs', 'bundle', 'foo_barRelease', 'app.aab'));
|
||||
}, overrides: <Type, Generator>{
|
||||
FileSystem: () => MemoryFileSystem(),
|
||||
ProcessManager: () => FakeProcessManager.any(),
|
||||
setUp(() {
|
||||
fileSystem = MemoryFileSystem.test();
|
||||
mockUsage = MockUsage();
|
||||
});
|
||||
|
||||
testUsingContext("Finds app bundle when flavor doesn't contain underscores in release mode", () {
|
||||
final FlutterProject project = generateFakeAppBundle('fooRelease', 'app.aab');
|
||||
testWithoutContext('Finds app bundle when flavor contains underscores in release mode', () {
|
||||
final FlutterProject project = generateFakeAppBundle('foo_barRelease', 'app.aab', fileSystem);
|
||||
final File bundle = findBundleFile(project, const BuildInfo(BuildMode.release, 'foo_bar', treeShakeIcons: false));
|
||||
expect(bundle, isNotNull);
|
||||
expect(bundle.path, fileSystem.path.join('irrelevant', 'app', 'outputs', 'bundle', 'foo_barRelease', 'app.aab'));
|
||||
});
|
||||
|
||||
testWithoutContext("Finds app bundle when flavor doesn't contain underscores in release mode", () {
|
||||
final FlutterProject project = generateFakeAppBundle('fooRelease', 'app.aab', fileSystem);
|
||||
final File bundle = findBundleFile(project, const BuildInfo(BuildMode.release, 'foo', treeShakeIcons: false));
|
||||
expect(bundle, isNotNull);
|
||||
expect(bundle.path, globals.fs.path.join('irrelevant', 'app', 'outputs', 'bundle', 'fooRelease', 'app.aab'));
|
||||
}, overrides: <Type, Generator>{
|
||||
FileSystem: () => MemoryFileSystem(),
|
||||
ProcessManager: () => FakeProcessManager.any(),
|
||||
expect(bundle.path, fileSystem.path.join('irrelevant', 'app', 'outputs', 'bundle', 'fooRelease', 'app.aab'));
|
||||
});
|
||||
|
||||
testUsingContext('Finds app bundle when no flavor is used in release mode', () {
|
||||
final FlutterProject project = generateFakeAppBundle('release', 'app.aab');
|
||||
testWithoutContext('Finds app bundle when no flavor is used in release mode', () {
|
||||
final FlutterProject project = generateFakeAppBundle('release', 'app.aab', fileSystem);
|
||||
final File bundle = findBundleFile(project, const BuildInfo(BuildMode.release, null, treeShakeIcons: false));
|
||||
expect(bundle, isNotNull);
|
||||
expect(bundle.path, globals.fs.path.join('irrelevant', 'app', 'outputs', 'bundle', 'release', 'app.aab'));
|
||||
}, overrides: <Type, Generator>{
|
||||
FileSystem: () => MemoryFileSystem(),
|
||||
ProcessManager: () => FakeProcessManager.any(),
|
||||
expect(bundle.path, fileSystem.path.join('irrelevant', 'app', 'outputs', 'bundle', 'release', 'app.aab'));
|
||||
});
|
||||
|
||||
testUsingContext('Finds app bundle when flavor contains underscores in debug mode', () {
|
||||
final FlutterProject project = generateFakeAppBundle('foo_barDebug', 'app.aab');
|
||||
testWithoutContext('Finds app bundle when flavor contains underscores in debug mode', () {
|
||||
final FlutterProject project = generateFakeAppBundle('foo_barDebug', 'app.aab', fileSystem);
|
||||
final File bundle = findBundleFile(project, const BuildInfo(BuildMode.debug, 'foo_bar', treeShakeIcons: false));
|
||||
expect(bundle, isNotNull);
|
||||
expect(bundle.path, globals.fs.path.join('irrelevant', 'app', 'outputs', 'bundle', 'foo_barDebug', 'app.aab'));
|
||||
}, overrides: <Type, Generator>{
|
||||
FileSystem: () => MemoryFileSystem(),
|
||||
ProcessManager: () => FakeProcessManager.any(),
|
||||
expect(bundle.path, fileSystem.path.join('irrelevant', 'app', 'outputs', 'bundle', 'foo_barDebug', 'app.aab'));
|
||||
});
|
||||
|
||||
testUsingContext("Finds app bundle when flavor doesn't contain underscores in debug mode", () {
|
||||
final FlutterProject project = generateFakeAppBundle('fooDebug', 'app.aab');
|
||||
testWithoutContext("Finds app bundle when flavor doesn't contain underscores in debug mode", () {
|
||||
final FlutterProject project = generateFakeAppBundle('fooDebug', 'app.aab', fileSystem);
|
||||
final File bundle = findBundleFile(project, const BuildInfo(BuildMode.debug, 'foo', treeShakeIcons: false));
|
||||
expect(bundle, isNotNull);
|
||||
expect(bundle.path, globals.fs.path.join('irrelevant', 'app', 'outputs', 'bundle', 'fooDebug', 'app.aab'));
|
||||
}, overrides: <Type, Generator>{
|
||||
FileSystem: () => MemoryFileSystem(),
|
||||
ProcessManager: () => FakeProcessManager.any(),
|
||||
expect(bundle.path, fileSystem.path.join('irrelevant', 'app', 'outputs', 'bundle', 'fooDebug', 'app.aab'));
|
||||
});
|
||||
|
||||
testUsingContext('Finds app bundle when no flavor is used in debug mode', () {
|
||||
final FlutterProject project = generateFakeAppBundle('debug', 'app.aab');
|
||||
testWithoutContext('Finds app bundle when no flavor is used in debug mode', () {
|
||||
final FlutterProject project = generateFakeAppBundle('debug', 'app.aab', fileSystem);
|
||||
final File bundle = findBundleFile(project, const BuildInfo(BuildMode.debug, null, treeShakeIcons: false));
|
||||
expect(bundle, isNotNull);
|
||||
expect(bundle.path, globals.fs.path.join('irrelevant', 'app', 'outputs', 'bundle', 'debug', 'app.aab'));
|
||||
}, overrides: <Type, Generator>{
|
||||
FileSystem: () => MemoryFileSystem(),
|
||||
ProcessManager: () => FakeProcessManager.any(),
|
||||
expect(bundle.path, fileSystem.path.join('irrelevant', 'app', 'outputs', 'bundle', 'debug', 'app.aab'));
|
||||
});
|
||||
|
||||
testUsingContext('Finds app bundle when flavor contains underscores in profile mode', () {
|
||||
final FlutterProject project = generateFakeAppBundle('foo_barProfile', 'app.aab');
|
||||
testWithoutContext('Finds app bundle when flavor contains underscores in profile mode', () {
|
||||
final FlutterProject project = generateFakeAppBundle('foo_barProfile', 'app.aab', fileSystem);
|
||||
final File bundle = findBundleFile(project, const BuildInfo(BuildMode.profile, 'foo_bar', treeShakeIcons: false));
|
||||
expect(bundle, isNotNull);
|
||||
expect(bundle.path, globals.fs.path.join('irrelevant', 'app', 'outputs', 'bundle', 'foo_barProfile', 'app.aab'));
|
||||
}, overrides: <Type, Generator>{
|
||||
FileSystem: () => MemoryFileSystem(),
|
||||
ProcessManager: () => FakeProcessManager.any(),
|
||||
expect(bundle.path, fileSystem.path.join('irrelevant', 'app', 'outputs', 'bundle', 'foo_barProfile', 'app.aab'));
|
||||
});
|
||||
|
||||
testUsingContext("Finds app bundle when flavor doesn't contain underscores in profile mode", () {
|
||||
final FlutterProject project = generateFakeAppBundle('fooProfile', 'app.aab');
|
||||
testWithoutContext("Finds app bundle when flavor doesn't contain underscores in profile mode", () {
|
||||
final FlutterProject project = generateFakeAppBundle('fooProfile', 'app.aab', fileSystem);
|
||||
final File bundle = findBundleFile(project, const BuildInfo(BuildMode.profile, 'foo', treeShakeIcons: false));
|
||||
expect(bundle, isNotNull);
|
||||
expect(bundle.path, globals.fs.path.join('irrelevant', 'app', 'outputs', 'bundle', 'fooProfile', 'app.aab'));
|
||||
}, overrides: <Type, Generator>{
|
||||
FileSystem: () => MemoryFileSystem(),
|
||||
ProcessManager: () => FakeProcessManager.any(),
|
||||
expect(bundle.path, fileSystem.path.join('irrelevant', 'app', 'outputs', 'bundle', 'fooProfile', 'app.aab'));
|
||||
});
|
||||
|
||||
testUsingContext('Finds app bundle when no flavor is used in profile mode', () {
|
||||
final FlutterProject project = generateFakeAppBundle('profile', 'app.aab');
|
||||
testWithoutContext('Finds app bundle when no flavor is used in profile mode', () {
|
||||
final FlutterProject project = generateFakeAppBundle('profile', 'app.aab', fileSystem);
|
||||
final File bundle = findBundleFile(project, const BuildInfo(BuildMode.profile, null, treeShakeIcons: false));
|
||||
expect(bundle, isNotNull);
|
||||
expect(bundle.path, globals.fs.path.join('irrelevant', 'app', 'outputs', 'bundle', 'profile', 'app.aab'));
|
||||
}, overrides: <Type, Generator>{
|
||||
FileSystem: () => MemoryFileSystem(),
|
||||
ProcessManager: () => FakeProcessManager.any(),
|
||||
expect(bundle.path, fileSystem.path.join('irrelevant', 'app', 'outputs', 'bundle', 'profile', 'app.aab'));
|
||||
});
|
||||
|
||||
testUsingContext('Finds app bundle in release mode - Gradle 3.5', () {
|
||||
final FlutterProject project = generateFakeAppBundle('release', 'app-release.aab');
|
||||
testWithoutContext('Finds app bundle in release mode - Gradle 3.5', () {
|
||||
final FlutterProject project = generateFakeAppBundle('release', 'app-release.aab', fileSystem);
|
||||
final File bundle = findBundleFile(project, const BuildInfo(BuildMode.release, null, treeShakeIcons: false));
|
||||
expect(bundle, isNotNull);
|
||||
expect(bundle.path, globals.fs.path.join('irrelevant', 'app', 'outputs', 'bundle', 'release', 'app-release.aab'));
|
||||
}, overrides: <Type, Generator>{
|
||||
FileSystem: () => MemoryFileSystem(),
|
||||
ProcessManager: () => FakeProcessManager.any(),
|
||||
expect(bundle.path, fileSystem.path.join('irrelevant', 'app', 'outputs', 'bundle', 'release', 'app-release.aab'));
|
||||
});
|
||||
|
||||
testUsingContext('Finds app bundle in profile mode - Gradle 3.5', () {
|
||||
final FlutterProject project = generateFakeAppBundle('profile', 'app-profile.aab');
|
||||
testWithoutContext('Finds app bundle in profile mode - Gradle 3.5', () {
|
||||
final FlutterProject project = generateFakeAppBundle('profile', 'app-profile.aab', fileSystem);
|
||||
final File bundle = findBundleFile(project, const BuildInfo(BuildMode.profile, null, treeShakeIcons: false));
|
||||
expect(bundle, isNotNull);
|
||||
expect(bundle.path, globals.fs.path.join('irrelevant', 'app', 'outputs', 'bundle', 'profile', 'app-profile.aab'));
|
||||
}, overrides: <Type, Generator>{
|
||||
FileSystem: () => MemoryFileSystem(),
|
||||
ProcessManager: () => FakeProcessManager.any(),
|
||||
expect(bundle.path, fileSystem.path.join('irrelevant', 'app', 'outputs', 'bundle', 'profile', 'app-profile.aab'));
|
||||
});
|
||||
|
||||
testUsingContext('Finds app bundle in debug mode - Gradle 3.5', () {
|
||||
final FlutterProject project = generateFakeAppBundle('debug', 'app-debug.aab');
|
||||
testWithoutContext('Finds app bundle in debug mode - Gradle 3.5', () {
|
||||
final FlutterProject project = generateFakeAppBundle('debug', 'app-debug.aab', fileSystem);
|
||||
final File bundle = findBundleFile(project, const BuildInfo(BuildMode.debug, null, treeShakeIcons: false));
|
||||
expect(bundle, isNotNull);
|
||||
expect(bundle.path, globals.fs.path.join('irrelevant', 'app', 'outputs', 'bundle', 'debug', 'app-debug.aab'));
|
||||
}, overrides: <Type, Generator>{
|
||||
FileSystem: () => MemoryFileSystem(),
|
||||
ProcessManager: () => FakeProcessManager.any(),
|
||||
expect(bundle.path, fileSystem.path.join('irrelevant', 'app', 'outputs', 'bundle', 'debug', 'app-debug.aab'));
|
||||
});
|
||||
|
||||
testUsingContext('Finds app bundle when flavor contains underscores in release mode - Gradle 3.5', () {
|
||||
final FlutterProject project = generateFakeAppBundle('foo_barRelease', 'app-foo_bar-release.aab');
|
||||
testWithoutContext('Finds app bundle when flavor contains underscores in release mode - Gradle 3.5', () {
|
||||
final FlutterProject project = generateFakeAppBundle('foo_barRelease', 'app-foo_bar-release.aab', fileSystem);
|
||||
final File bundle = findBundleFile(project, const BuildInfo(BuildMode.release, 'foo_bar', treeShakeIcons: false));
|
||||
expect(bundle, isNotNull);
|
||||
expect(bundle.path, globals.fs.path.join('irrelevant', 'app', 'outputs', 'bundle', 'foo_barRelease', 'app-foo_bar-release.aab'));
|
||||
}, overrides: <Type, Generator>{
|
||||
FileSystem: () => MemoryFileSystem(),
|
||||
ProcessManager: () => FakeProcessManager.any(),
|
||||
expect(bundle.path, fileSystem.path.join('irrelevant', 'app', 'outputs', 'bundle', 'foo_barRelease', 'app-foo_bar-release.aab'));
|
||||
});
|
||||
|
||||
testUsingContext('Finds app bundle when flavor contains underscores in profile mode - Gradle 3.5', () {
|
||||
final FlutterProject project = generateFakeAppBundle('foo_barProfile', 'app-foo_bar-profile.aab');
|
||||
testWithoutContext('Finds app bundle when flavor contains underscores in profile mode - Gradle 3.5', () {
|
||||
final FlutterProject project = generateFakeAppBundle('foo_barProfile', 'app-foo_bar-profile.aab', fileSystem);
|
||||
final File bundle = findBundleFile(project, const BuildInfo(BuildMode.profile, 'foo_bar', treeShakeIcons: false));
|
||||
expect(bundle, isNotNull);
|
||||
expect(bundle.path, globals.fs.path.join('irrelevant', 'app', 'outputs', 'bundle', 'foo_barProfile', 'app-foo_bar-profile.aab'));
|
||||
}, overrides: <Type, Generator>{
|
||||
FileSystem: () => MemoryFileSystem(),
|
||||
ProcessManager: () => FakeProcessManager.any(),
|
||||
expect(bundle.path, fileSystem.path.join('irrelevant', 'app', 'outputs', 'bundle', 'foo_barProfile', 'app-foo_bar-profile.aab'));
|
||||
});
|
||||
|
||||
testUsingContext('Finds app bundle when flavor contains underscores in debug mode - Gradle 3.5', () {
|
||||
final FlutterProject project = generateFakeAppBundle('foo_barDebug', 'app-foo_bar-debug.aab');
|
||||
testWithoutContext('Finds app bundle when flavor contains underscores in debug mode - Gradle 3.5', () {
|
||||
final FlutterProject project = generateFakeAppBundle('foo_barDebug', 'app-foo_bar-debug.aab', fileSystem);
|
||||
final File bundle = findBundleFile(project, const BuildInfo(BuildMode.debug, 'foo_bar', treeShakeIcons: false));
|
||||
expect(bundle, isNotNull);
|
||||
expect(bundle.path, globals.fs.path.join('irrelevant','app', 'outputs', 'bundle', 'foo_barDebug', 'app-foo_bar-debug.aab'));
|
||||
}, overrides: <Type, Generator>{
|
||||
FileSystem: () => MemoryFileSystem(),
|
||||
ProcessManager: () => FakeProcessManager.any(),
|
||||
expect(bundle.path, fileSystem.path.join('irrelevant','app', 'outputs', 'bundle', 'foo_barDebug', 'app-foo_bar-debug.aab'));
|
||||
});
|
||||
|
||||
testUsingContext('aab not found', () {
|
||||
@ -701,7 +668,7 @@ flutter:
|
||||
});
|
||||
|
||||
group('gradle version', () {
|
||||
test('should be compatible with the Android plugin version', () {
|
||||
testWithoutContext('should be compatible with the Android plugin version', () {
|
||||
// Granular versions.
|
||||
expect(getGradleVersionFor('1.0.0'), '2.3');
|
||||
expect(getGradleVersionFor('1.0.1'), '2.3');
|
||||
@ -740,7 +707,7 @@ flutter:
|
||||
expect(getGradleVersionFor('3.5.0'), '5.6.2');
|
||||
});
|
||||
|
||||
test('throws on unsupported versions', () {
|
||||
testWithoutContext('throws on unsupported versions', () {
|
||||
expect(() => getGradleVersionFor('3.6.0'),
|
||||
throwsA(predicate<Exception>((Exception e) => e is ToolExit)));
|
||||
});
|
||||
@ -2535,13 +2502,13 @@ plugin1=${plugin1.path}
|
||||
}
|
||||
|
||||
/// Generates a fake app bundle at the location [directoryName]/[fileName].
|
||||
FlutterProject generateFakeAppBundle(String directoryName, String fileName) {
|
||||
FlutterProject generateFakeAppBundle(String directoryName, String fileName, FileSystem fileSystem) {
|
||||
final FlutterProject project = MockFlutterProject();
|
||||
final AndroidProject androidProject = MockAndroidProject();
|
||||
|
||||
when(project.isModule).thenReturn(false);
|
||||
when(project.android).thenReturn(androidProject);
|
||||
when(androidProject.buildDirectory).thenReturn(globals.fs.directory('irrelevant'));
|
||||
when(androidProject.buildDirectory).thenReturn(fileSystem.directory('irrelevant'));
|
||||
|
||||
final Directory bundleDirectory = getBundleDirectory(project);
|
||||
bundleDirectory
|
||||
|
Loading…
Reference in New Issue
Block a user