// 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:async'; import 'package:flutter_devicelab/framework/runner.dart'; import 'package:flutter_devicelab/framework/task_result.dart'; import '../common.dart'; void main() { final Map<String, String> isolateParams = <String, String>{ 'runFlutterConfig': 'false', 'timeoutInMinutes': '1', }; test('runs build and test when no args are passed', () async { final TaskResult result = await runTask( 'smoke_test_build_test', deviceId: 'FAKE_SUCCESS', isolateParams: isolateParams, ); expect(result.data!['benchmark'], 'data'); }); test('runs build only when build arg is given', () async { final TaskResult result = await runTask( 'smoke_test_build_test', taskArgs: <String>['--build'], deviceId: 'FAKE_SUCCESS', isolateParams: isolateParams, ); expect(result.message, 'No tests run'); }); test('runs test only when test arg is given', () async { final TaskResult result = await runTask( 'smoke_test_build_test', taskArgs: <String>['--test'], deviceId: 'FAKE_SUCCESS', isolateParams: isolateParams, ); expect(result.data!['benchmark'], 'data'); }); test('sets environment', () async { final StringBuffer capturedPrintLines = StringBuffer(); await runZoned<Future<void>>( () async { await runTask( 'smoke_test_build_test', taskArgs: <String>['--test'], deviceId: 'FAKE_SUCCESS', isolateParams: isolateParams, ); }, zoneSpecification: ZoneSpecification( // Intercept printing from the task. print: (Zone self, ZoneDelegate parent, Zone zone, String line) async { capturedPrintLines.writeln(line); }, ), ); final String capturedPrint = capturedPrintLines.toString(); expect(capturedPrint, contains('with environment {FLUTTER_DEVICELAB_DEVICEID: FAKE_SUCCESS, BOT: true, LANG: en_US.UTF-8}')); expect(capturedPrint, contains('Process terminated with exit code 0.')); }); test('throws exception when build and test arg are given', () async { final TaskResult result = await runTask( 'smoke_test_build_test', taskArgs: <String>['--build', '--test'], deviceId: 'FAKE_SUCCESS', isolateParams: isolateParams, ); expect(result.message, 'Task failed: Exception: Both build and test should not be passed. Pass only one.'); }); test('copies artifacts when build and application binary arg are given', () async { final TaskResult result = await runTask( 'smoke_test_build_test', taskArgs: <String>['--build', '--application-binary-path=test'], deviceId: 'FAKE_SUCCESS', isolateParams: isolateParams, ); expect(result.message, 'No tests run'); }); }