persistent_tool_state_test.dart 2.94 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
// @dart = 2.8

7
import 'package:file/memory.dart';
8
import 'package:flutter_tools/src/base/file_system.dart';
9
import 'package:flutter_tools/src/base/logger.dart';
10
import 'package:flutter_tools/src/persistent_tool_state.dart';
11
import 'package:flutter_tools/src/version.dart';
12 13 14

import '../src/common.dart';

15 16
void main() {
  testWithoutContext('state can be set and persists', () {
17
    final MemoryFileSystem fileSystem = MemoryFileSystem.test();
18
    final Directory directory = fileSystem.directory('state_dir');
19 20 21 22
    directory.createSync();
    final File stateFile = directory.childFile('.flutter_tool_state');
    final PersistentToolState state1 = PersistentToolState.test(
      directory: directory,
23
      logger: BufferLogger.test(),
24
    );
25 26 27 28 29 30 31
    expect(state1.redisplayWelcomeMessage, null);
    state1.redisplayWelcomeMessage = true;
    expect(stateFile.existsSync(), true);
    expect(state1.redisplayWelcomeMessage, true);
    state1.redisplayWelcomeMessage = false;
    expect(state1.redisplayWelcomeMessage, false);

32 33
    final PersistentToolState state2 = PersistentToolState.test(
      directory: directory,
34
      logger: BufferLogger.test(),
35
    );
36
    expect(state2.redisplayWelcomeMessage, false);
37
  });
38 39

  testWithoutContext('channel versions can be cached and stored', () {
40
    final MemoryFileSystem fileSystem = MemoryFileSystem.test();
41 42 43
    final Directory directory = fileSystem.directory('state_dir')..createSync();
    final PersistentToolState state1 = PersistentToolState.test(
      directory: directory,
44
      logger: BufferLogger.test(),
45 46 47 48 49 50 51 52 53
    );

    state1.updateLastActiveVersion('abc', Channel.master);
    state1.updateLastActiveVersion('def', Channel.dev);
    state1.updateLastActiveVersion('ghi', Channel.beta);
    state1.updateLastActiveVersion('jkl', Channel.stable);

    final PersistentToolState state2 = PersistentToolState.test(
      directory: directory,
54
      logger: BufferLogger.test(),
55 56 57 58 59 60 61
    );

    expect(state2.lastActiveVersion(Channel.master), 'abc');
    expect(state2.lastActiveVersion(Channel.dev), 'def');
    expect(state2.lastActiveVersion(Channel.beta), 'ghi');
    expect(state2.lastActiveVersion(Channel.stable), 'jkl');
  });
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80

  testWithoutContext('lastDevToolsActivationTime can be cached and stored', () {
    final MemoryFileSystem fileSystem = MemoryFileSystem.test();
    final Directory directory = fileSystem.directory('state_dir')..createSync();
    final PersistentToolState state1 = PersistentToolState.test(
      directory: directory,
      logger: BufferLogger.test(),
    );

    final DateTime time = DateTime.now();
    state1.lastDevToolsActivationTime = time;

    final PersistentToolState state2 = PersistentToolState.test(
      directory: directory,
      logger: BufferLogger.test(),
    );

    expect(state2.lastDevToolsActivationTime, equals(time));
  });
81
}