build_test_task_test.dart 2.9 KB
Newer Older
1 2 3 4
// 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.

5 6
import 'dart:async';

7 8 9 10 11 12 13 14
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',
15
    'timeoutInMinutes': '1',
16 17 18 19 20 21 22 23
  };

  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,
    );
24
    expect(result.data!['benchmark'], 'data');
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
  });

  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,
    );
44
    expect(result.data!['benchmark'], 'data');
45 46
  });

47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
  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}'));
68
    expect(capturedPrint, contains('Process terminated with exit code 0.'));
69 70
  });

71 72 73 74 75 76 77 78 79 80
  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.');
  });

81
  test('copies artifacts when build and application binary arg are given', () async {
82 83
    final TaskResult result = await runTask(
      'smoke_test_build_test',
84
      taskArgs: <String>['--build', '--application-binary-path=test'],
85 86 87
      deviceId: 'FAKE_SUCCESS',
      isolateParams: isolateParams,
    );
88
    expect(result.message, 'No tests run');
89 90
  });
}