[flutter_tools] Reland: fix multiple dart defines (#54973)
This commit is contained in:
@@ -590,6 +590,18 @@ Future<void> _runWebIntegrationTests() async {
|
||||
await _runWebDebugTest('lib/stack_trace.dart');
|
||||
await _runWebDebugTest('lib/web_directory_loading.dart');
|
||||
await _runWebDebugTest('test/test.dart');
|
||||
await _runWebDebugTest('lib/web_define_loading.dart',
|
||||
additionalArguments: <String>[
|
||||
'--dart-define=test.valueA=Example',
|
||||
'--dart-define=test.valueB=Value',
|
||||
]
|
||||
);
|
||||
await _runWebReleaseTest('lib/web_define_loading.dart',
|
||||
additionalArguments: <String>[
|
||||
'--dart-define=test.valueA=Example',
|
||||
'--dart-define=test.valueB=Value',
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
Future<void> _runWebStackTraceTest(String buildMode) async {
|
||||
@@ -632,10 +644,56 @@ Future<void> _runWebStackTraceTest(String buildMode) async {
|
||||
}
|
||||
}
|
||||
|
||||
/// Run a web integration test in release mode.
|
||||
Future<void> _runWebReleaseTest(String target, {
|
||||
List<String> additionalArguments = const<String>[],
|
||||
}) async {
|
||||
final String testAppDirectory = path.join(flutterRoot, 'dev', 'integration_tests', 'web');
|
||||
final String appBuildDirectory = path.join(testAppDirectory, 'build', 'web');
|
||||
|
||||
// Build the app.
|
||||
await runCommand(
|
||||
flutter,
|
||||
<String>[ 'clean' ],
|
||||
workingDirectory: testAppDirectory,
|
||||
);
|
||||
await runCommand(
|
||||
flutter,
|
||||
<String>[
|
||||
'build',
|
||||
'web',
|
||||
'--release',
|
||||
...additionalArguments,
|
||||
'-t',
|
||||
target,
|
||||
],
|
||||
workingDirectory: testAppDirectory,
|
||||
environment: <String, String>{
|
||||
'FLUTTER_WEB': 'true',
|
||||
},
|
||||
);
|
||||
|
||||
// Run the app.
|
||||
final String result = await evalTestAppInChrome(
|
||||
appUrl: 'http://localhost:8080/index.html',
|
||||
appDirectory: appBuildDirectory,
|
||||
);
|
||||
|
||||
if (result.contains('--- TEST SUCCEEDED ---')) {
|
||||
print('${green}Web release mode test passed.$reset');
|
||||
} else {
|
||||
print(result);
|
||||
print('${red}Web release mode test failed.$reset');
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
/// Debug mode is special because `flutter build web` doesn't build in debug mode.
|
||||
///
|
||||
/// Instead, we use `flutter run --debug` and sniff out the standard output.
|
||||
Future<void> _runWebDebugTest(String target) async {
|
||||
Future<void> _runWebDebugTest(String target, {
|
||||
List<String> additionalArguments = const<String>[],
|
||||
}) async {
|
||||
final String testAppDirectory = path.join(flutterRoot, 'dev', 'integration_tests', 'web');
|
||||
final CapturedOutput output = CapturedOutput();
|
||||
bool success = false;
|
||||
@@ -647,6 +705,7 @@ Future<void> _runWebDebugTest(String target) async {
|
||||
'-d',
|
||||
'chrome',
|
||||
'--web-run-headless',
|
||||
...additionalArguments,
|
||||
'-t',
|
||||
target,
|
||||
],
|
||||
|
||||
@@ -21,7 +21,8 @@ Future<TaskResult> runDartDefinesTask() async {
|
||||
'--verbose',
|
||||
'-d',
|
||||
deviceId,
|
||||
'--dart-define=test.value=ExampleValue',
|
||||
'--dart-define=test.valueA=Example',
|
||||
'--dart-define=test.valueB=Value',
|
||||
'lib/defines.dart',
|
||||
]);
|
||||
});
|
||||
|
||||
@@ -11,7 +11,7 @@ void main() {
|
||||
runApp(
|
||||
const Center(
|
||||
child: Text(
|
||||
String.fromEnvironment('test.value'),
|
||||
String.fromEnvironment('test.valueA') + String.fromEnvironment('test.valueB'),
|
||||
textDirection: TextDirection.ltr,
|
||||
),
|
||||
),
|
||||
|
||||
@@ -16,7 +16,7 @@ void main() {
|
||||
await driver.close();
|
||||
});
|
||||
|
||||
test('Can run with --dart-deinfe', () async {
|
||||
test('Can run with --dart-define', () async {
|
||||
await driver.waitFor(find.text('ExampleValue'));
|
||||
});
|
||||
}
|
||||
|
||||
24
dev/integration_tests/web/lib/web_define_loading.dart
Normal file
24
dev/integration_tests/web/lib/web_define_loading.dart
Normal file
@@ -0,0 +1,24 @@
|
||||
// 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.
|
||||
|
||||
import 'dart:html' as html;
|
||||
|
||||
Future<void> main() async {
|
||||
final StringBuffer output = StringBuffer();
|
||||
const String combined = String.fromEnvironment('test.valueA') +
|
||||
String.fromEnvironment('test.valueB');
|
||||
if (combined == 'ExampleValue') {
|
||||
output.write('--- TEST SUCCEEDED ---');
|
||||
print('--- TEST SUCCEEDED ---');
|
||||
} else {
|
||||
output.write('--- TEST FAILED ---');
|
||||
print('--- TEST FAILED ---');
|
||||
}
|
||||
|
||||
html.HttpRequest.request(
|
||||
'/test-result',
|
||||
method: 'POST',
|
||||
sendData: '$output',
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user