Unverified Commit dd49e57b authored by Jonah Williams's avatar Jonah Williams Committed by GitHub

[flutter_tools] more test fixes (#60144)

Fixes additional bugs uncovered by tester, style fixes to prevent suggested imports.
parent 850ea6d2
......@@ -837,7 +837,8 @@ class ReleaseAssetServer {
} else {
for (final Uri uri in _searchPaths) {
final Uri potential = uri.resolve(request.url.path);
if (potential == null || !globals.fs.isFileSync(potential.toFilePath())) {
if (potential == null || !globals.fs.isFileSync(
potential.toFilePath(windows: globals.platform.isWindows))) {
continue;
}
fileUri = potential;
......
......@@ -186,7 +186,9 @@ class TestCompiler {
// The idea is to keep the cache file up-to-date and include as
// much as possible in an effort to re-use as many packages as
// possible.
globals.fsUtils.ensureDirectoryExists(testFilePath);
if (!testCache.parent.existsSync()) {
testCache.parent.createSync(recursive: true);
}
await outputFile.copy(testFilePath);
}
request.result.complete(kernelReadyToRun.path);
......
......@@ -4,6 +4,7 @@
import 'dart:async';
import 'package:flutter_tools/src/artifacts.dart';
import 'package:flutter_tools/src/base/io.dart';
import 'package:flutter_tools/src/base/platform.dart';
import 'package:flutter_tools/src/base/terminal.dart';
......@@ -74,6 +75,7 @@ void main() {
ProcessManager: () => mockProcessManager,
OutputPreferences: () => OutputPreferences(showColor: false),
Platform: kNoColorTerminalPlatform,
Artifacts: () => Artifacts.test(),
});
testUsingContext('passes correct AOT config to kernel compiler in aot/profile mode', () async {
......@@ -108,6 +110,7 @@ void main() {
ProcessManager: () => mockProcessManager,
OutputPreferences: () => OutputPreferences(showColor: false),
Platform: kNoColorTerminalPlatform,
Artifacts: () => Artifacts.test(),
});
......@@ -143,6 +146,7 @@ void main() {
ProcessManager: () => mockProcessManager,
OutputPreferences: () => OutputPreferences(showColor: false),
Platform: kNoColorTerminalPlatform,
Artifacts: () => Artifacts.test(),
});
testUsingContext('batch compile single dart failed compilation', () async {
......@@ -169,6 +173,7 @@ void main() {
ProcessManager: () => mockProcessManager,
OutputPreferences: () => OutputPreferences(showColor: false),
Platform: kNoColorTerminalPlatform,
Artifacts: () => Artifacts.test(),
});
testUsingContext('batch compile single dart abnormal compiler termination', () async {
......@@ -197,6 +202,7 @@ void main() {
ProcessManager: () => mockProcessManager,
OutputPreferences: () => OutputPreferences(showColor: false),
Platform: kNoColorTerminalPlatform,
Artifacts: () => Artifacts.test(),
});
testUsingContext('passes dartDefines to the kernel compiler', () async {
......@@ -220,6 +226,7 @@ void main() {
ProcessManager: () => mockProcessManager,
OutputPreferences: () => OutputPreferences(showColor: false),
Platform: kNoColorTerminalPlatform,
Artifacts: () => Artifacts.test(),
});
}
......
......@@ -61,7 +61,7 @@ void main() {
testWithoutContext('can launch chrome and connect to the devtools', () async {
expect(
() async => await testLaunchChrome(
() async => await _testLaunchChrome(
'/.tmp_rand0/flutter_tools_chrome_device.rand0',
processManager,
chromeLauncher,
......@@ -71,14 +71,14 @@ void main() {
});
testWithoutContext('cannot have two concurrent instances of chrome', () async {
await testLaunchChrome(
await _testLaunchChrome(
'/.tmp_rand0/flutter_tools_chrome_device.rand0',
processManager,
chromeLauncher,
);
expect(
() async => await testLaunchChrome(
() async => await _testLaunchChrome(
'/.tmp_rand0/flutter_tools_chrome_device.rand1',
processManager,
chromeLauncher,
......@@ -88,7 +88,7 @@ void main() {
});
testWithoutContext('can launch new chrome after stopping a previous chrome', () async {
final Chromium chrome = await testLaunchChrome(
final Chromium chrome = await _testLaunchChrome(
'/.tmp_rand0/flutter_tools_chrome_device.rand0',
processManager,
chromeLauncher,
......@@ -96,7 +96,7 @@ void main() {
await chrome.close();
expect(
() async => await testLaunchChrome(
() async => await _testLaunchChrome(
'/.tmp_rand0/flutter_tools_chrome_device.rand1',
processManager,
chromeLauncher,
......@@ -221,7 +221,7 @@ void main() {
class MockOperatingSystemUtils extends Mock implements OperatingSystemUtils {}
Future<Chromium> testLaunchChrome(String userDataDir, FakeProcessManager processManager, ChromiumLauncher chromeLauncher) {
Future<Chromium> _testLaunchChrome(String userDataDir, FakeProcessManager processManager, ChromiumLauncher chromeLauncher) {
processManager.addCommand(FakeCommand(
command: <String>[
'example_chrome',
......
......@@ -2,13 +2,15 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'package:file/memory.dart';
import 'package:flutter_tools/src/base/file_system.dart';
import 'package:flutter_tools/src/base/io.dart';
import 'package:flutter_tools/src/globals.dart' as globals;
import 'package:flutter_tools/src/base/platform.dart';
import 'package:flutter_tools/src/build_runner/devfs_web.dart';
import 'package:shelf/shelf.dart';
import '../../src/common.dart';
import '../../src/testbed.dart';
import '../../src/context.dart';
const List<int> kTransparentImage = <int>[
0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A, 0x00, 0x00, 0x00, 0x0D, 0x49,
......@@ -18,30 +20,34 @@ const List<int> kTransparentImage = <int>[
0x0A, 0x2D, 0xB4, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4E, 0x44, 0xAE,
];
final Platform platform = FakePlatform(
operatingSystem: 'linux',
environment: <String, String>{
'HOME': '/'
},
);
void main() {
Testbed testbed;
FileSystem fileSystem;
setUp(() {
testbed = Testbed(
setup: () {
globals.fs.file(globals.fs.path.join('lib', 'main.dart'))
.createSync(recursive: true);
globals.fs.file(globals.fs.path.join('web', 'index.html'))
..createSync(recursive: true)
..writeAsStringSync('hello');
globals.fs.file(globals.fs.path.join('build', 'flutter_assets', 'foo.png'))
..createSync(recursive: true)
..writeAsBytesSync(kTransparentImage);
globals.fs.file(globals.fs.path.join('build', 'flutter_assets', 'bar'))
..createSync(recursive: true)
..writeAsBytesSync(<int>[1, 2, 3]);
}
);
fileSystem = MemoryFileSystem.test();
fileSystem.file('lib/main.dart')
.createSync(recursive: true);
fileSystem.file('web/index.html')
..createSync(recursive: true)
..writeAsStringSync('hello');
fileSystem.file('build/flutter_assets/foo.png')
..createSync(recursive: true)
..writeAsBytesSync(kTransparentImage);
fileSystem.file('build/flutter_assets/bar')
..createSync(recursive: true)
..writeAsBytesSync(<int>[1, 2, 3]);
});
test('release asset server serves correct mime type and content length for png', () => testbed.run(() async {
testUsingContext('release asset server serves correct mime type and content length for png', () async {
final ReleaseAssetServer assetServer = ReleaseAssetServer(Uri.base);
globals.fs.file(globals.fs.path.join('build', 'web', 'assets', 'foo.png'))
fileSystem.file('build/web/assets/foo.png')
..createSync(recursive: true)
..writeAsBytesSync(kTransparentImage);
final Response response = await assetServer
......@@ -51,11 +57,15 @@ void main() {
'Content-Type': 'image/png',
'content-length': '64',
});
}));
}, overrides: <Type, Generator>{
FileSystem: () => fileSystem,
Platform: () => platform,
ProcessManager: () => FakeProcessManager.any(),
});
test('release asset server serves correct mime type and content length for JavaScript', () => testbed.run(() async {
testUsingContext('release asset server serves correct mime type and content length for JavaScript', () async {
final ReleaseAssetServer assetServer = ReleaseAssetServer(Uri.base);
globals.fs.file(globals.fs.path.join('build', 'web', 'assets', 'foo.js'))
fileSystem.file('build/web/assets/foo.js')
..createSync(recursive: true)
..writeAsStringSync('function main() {}');
final Response response = await assetServer
......@@ -65,11 +75,15 @@ void main() {
'Content-Type': 'application/javascript',
'content-length': '18',
});
}));
}, overrides: <Type, Generator>{
FileSystem: () => fileSystem,
Platform: () => platform,
ProcessManager: () => FakeProcessManager.any(),
});
test('release asset server serves correct mime type and content length for html', () => testbed.run(() async {
testUsingContext('release asset server serves correct mime type and content length for html', () async {
final ReleaseAssetServer assetServer = ReleaseAssetServer(Uri.base);
globals.fs.file(globals.fs.path.join('build', 'web', 'assets', 'foo.html'))
fileSystem.file('build/web/assets/foo.html')
..createSync(recursive: true)
..writeAsStringSync('<!doctype html><html></html>');
final Response response = await assetServer
......@@ -79,27 +93,39 @@ void main() {
'Content-Type': 'text/html',
'content-length': '28',
});
}));
}, overrides: <Type, Generator>{
FileSystem: () => fileSystem,
Platform: () => platform,
ProcessManager: () => FakeProcessManager.any(),
});
test('release asset server serves content from flutter root', () => testbed.run(() async {
testUsingContext('release asset server serves content from flutter root', () async {
final ReleaseAssetServer assetServer = ReleaseAssetServer(Uri.base);
globals.fs.file(globals.fs.path.join('flutter', 'bar.dart'))
fileSystem.file('flutter/bar.dart')
..createSync(recursive: true)
..writeAsStringSync('void main() { }');
final Response response = await assetServer
.handle(Request('GET', Uri.parse('http://localhost:8080/flutter/bar.dart')));
expect(response.statusCode, HttpStatus.ok);
}));
}, overrides: <Type, Generator>{
FileSystem: () => fileSystem,
Platform: () => platform,
ProcessManager: () => FakeProcessManager.any(),
});
test('release asset server serves content from project directory', () => testbed.run(() async {
testUsingContext('release asset server serves content from project directory', () async {
final ReleaseAssetServer assetServer = ReleaseAssetServer(Uri.base);
globals.fs.file(globals.fs.path.join('bar.dart'))
fileSystem.file('bar.dart')
..createSync(recursive: true)
..writeAsStringSync('void main() { }');
final Response response = await assetServer
.handle(Request('GET', Uri.parse('http://localhost:8080/bar.dart')));
expect(response.statusCode, HttpStatus.ok);
}));
}, overrides: <Type, Generator>{
FileSystem: () => fileSystem,
Platform: () => platform,
ProcessManager: () => FakeProcessManager.any(),
});
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment