web_validator_test.dart 2.53 KB
Newer Older
Ian Hickson's avatar
Ian Hickson committed
1
// Copyright 2014 The Flutter Authors. All rights reserved.
2 3 4
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

5 6
import 'package:file/memory.dart';
import 'package:flutter_tools/src/base/file_system.dart';
7
import 'package:flutter_tools/src/base/logger.dart';
8
import 'package:flutter_tools/src/base/os.dart';
9
import 'package:flutter_tools/src/base/platform.dart';
10
import 'package:flutter_tools/src/doctor_validator.dart';
11 12 13
import 'package:flutter_tools/src/web/chrome.dart';
import 'package:flutter_tools/src/web/web_validator.dart';

14
import '../../src/common.dart';
15
import '../../src/fake_process_manager.dart';
16 17

void main() {
18 19 20 21 22
  late Platform platform;
  late FakeProcessManager fakeProcessManager;
  late ChromiumLauncher chromeLauncher;
  late FileSystem fileSystem;
  late ChromiumValidator webValidator;
23

24 25
  setUp(() {
    fileSystem = MemoryFileSystem.test();
26
    fakeProcessManager = FakeProcessManager.empty();
27 28 29 30
    platform = FakePlatform(
      operatingSystem: 'macos',
      environment: <String, String>{},
    );
31
    chromeLauncher = ChromiumLauncher(
32 33
      fileSystem: fileSystem,
      platform: platform,
34
      processManager: fakeProcessManager,
35 36 37 38 39 40
      operatingSystemUtils: OperatingSystemUtils(
        fileSystem: fileSystem,
        logger: BufferLogger.test(),
        platform: platform,
        processManager: fakeProcessManager,
      ),
41
      browserFinder: findChromeExecutable,
42
      logger: BufferLogger.test(),
43
    );
44
    webValidator = webValidator = ChromeValidator(
45
      platform: platform,
46
      chromiumLauncher: chromeLauncher,
47 48
    );
  });
49

50 51
  testWithoutContext('WebValidator can find executable on macOS', () async {
    final ValidationResult result = await webValidator.validate();
52

53
    expect(result.type, ValidationType.success);
54 55
  });

56
  testWithoutContext('WebValidator Can notice missing macOS executable ', () async {
57
    fakeProcessManager.excludedExecutables.add(kMacOSExecutable);
58 59 60 61 62 63 64

    final ValidationResult result = await webValidator.validate();

    expect(result.type, ValidationType.missing);
  });

  testWithoutContext('WebValidator does not warn about CHROME_EXECUTABLE unless it cant find chrome ', () async {
65
    fakeProcessManager.excludedExecutables.add(kMacOSExecutable);
66 67 68

    final ValidationResult result = await webValidator.validate();

69
    expect(result.messages, const <ValidationMessage>[
70 71 72 73 74
      ValidationMessage.hint(
          'Cannot find Chrome. Try setting CHROME_EXECUTABLE to a Chrome executable.'),
    ]);
    expect(result.type, ValidationType.missing);
  });
75
}