blob: 54ee6e7bc76c49184c98b79b881c4c6e08de1811 [file] [log] [blame]
// Copyright 2019 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 'package:file/memory.dart';
import 'package:test/test.dart';
import 'package:platform/platform.dart' as platform;
import 'package:cocoon_agent/src/utils.dart';
import 'package:cocoon_agent/src/health.dart';
void main() {
group('testRemoveXcodeDerivedData', () {
MemoryFileSystem fs;
setUp(() {
fs = MemoryFileSystem();
});
test('ignores non-macOS', () async {
platform.FakePlatform pf = platform.FakePlatform()
..operatingSystem = "linux";
HealthCheckResult result = await removeXcodeDerivedData(pf: pf, fs: fs);
expect(result.succeeded, true);
});
test('fails when missing home env var', () async {
platform.FakePlatform pf = platform.FakePlatform()
..operatingSystem = "macos"
..environment = <String, String>{"HOME": null};
HealthCheckResult result = await removeXcodeDerivedData(pf: pf, fs: fs);
expect(result.succeeded, false);
});
test('throws no excpetion when missing DerivedData', () async {
platform.FakePlatform pf = platform.FakePlatform()
..operatingSystem = "macos"
..environment = <String, String>{"HOME": "/foo"};
HealthCheckResult result = await removeXcodeDerivedData(pf: pf, fs: fs);
expect(result.succeeded, true);
});
test('removes DerivedData directory', () async {
platform.FakePlatform pf = platform.FakePlatform()
..operatingSystem = "macos"
..environment = <String, String>{"HOME": "/foo"};
const String path = "/foo/Library/Developer/Xcode/DerivedData/bar";
fs.file(path)..createSync(recursive: true);
HealthCheckResult result = await removeXcodeDerivedData(pf: pf, fs: fs);
expect(await fs.file(path).exists(), isFalse);
expect(result.succeeded, true);
});
});
group('testRemoveCachedData', () {
MemoryFileSystem fs;
setUp(() {
fs = MemoryFileSystem();
});
test('removes cache directories all exist', () async {
platform.FakePlatform pf = platform.FakePlatform()
..operatingSystem = "macos"
..environment = <String, String>{"HOME": "/foo"};
List<String> folders = <String>['/foo/.graddle', '/foo/.dartServer'];
for (String dir in folders) {
fs.directory(dir)..createSync(recursive: true);
}
HealthCheckResult result = await removeCachedData(pf: pf, fs: fs);
for (String dir in folders) {
expect(await fs.directory(dir).exists(), isFalse);
}
expect(result.succeeded, true);
});
test('removes cache directories not all exist', () async {
platform.FakePlatform pf = platform.FakePlatform()
..operatingSystem = "macos"
..environment = <String, String>{"HOME": "/foo"};
String dir = '/foo/.dartServer';
fs.directory(dir)..createSync(recursive: true);
HealthCheckResult result = await removeCachedData(pf: pf, fs: fs);
expect(await fs.directory(dir).exists(), isFalse);
expect(result.succeeded, true);
});
});
}