blob: 5408b6f133533148783719bc6d62fe96e2e22e4a [file] [log] [blame]
// Copyright 2013 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:io';
import 'package:engine_tool/src/commands/command_runner.dart';
import 'package:engine_tool/src/logger.dart';
import 'package:path/path.dart' as p;
import 'package:test/test.dart';
import '../src/matchers.dart';
import '../src/utils.dart';
void main() {
test('prints instead of deleting when --dry-run', () async {
final fakeNow = DateTime.now().add(const Duration(days: 100));
final testEnv = TestEnvironment.withTestEngine(now: () => fakeNow);
addTearDown(testEnv.cleanup);
final targetDir = Directory(p.join(
testEnv.environment.engine.outDir.path,
'host_old',
));
await targetDir.create(recursive: true);
final runner = ToolCommandRunner(
environment: testEnv.environment,
configs: {},
);
final result = await runner.run(['cleanup', '--dry-run']);
expect(result, 0);
expect(
targetDir.existsSync(),
true,
reason: '--dry-run should not delete directories',
);
expect(
testEnv.testLogs,
containsAllInOrder([
logRecord(
contains('Checking ${testEnv.environment.engine.outDir.path}'),
),
logRecord(
contains('The following directories were accessed later than'),
),
logRecord(
contains('host_old'),
),
]),
);
});
test('uses 30 days if --untouched-since is omitted', () async {
final fakeNow = DateTime.now().add(const Duration(days: 32));
final testEnv = TestEnvironment.withTestEngine(now: () => fakeNow);
addTearDown(testEnv.cleanup);
final targetDir = Directory(p.join(
testEnv.environment.engine.outDir.path,
'host_old',
));
await targetDir.create(recursive: true);
final runner = ToolCommandRunner(
environment: testEnv.environment,
configs: {},
);
final result = await runner.run(['cleanup']);
expect(result, 0);
expect(
targetDir.existsSync(),
false,
reason: 'Should be > 30 days since accessed',
);
expect(
testEnv.testLogs,
containsAllInOrder([
logRecord(
contains('Checking ${testEnv.environment.engine.outDir.path}'),
),
logRecord(
contains('Deleted 1 output directories'),
),
]),
);
});
test('parses the provided YYYY-MM-DD', () async {
final fakeNow = DateTime.now();
final testEnv = TestEnvironment.withTestEngine(now: () => fakeNow);
addTearDown(testEnv.cleanup);
final targetDir = Directory(p.join(
testEnv.environment.engine.outDir.path,
'host_old',
));
await targetDir.create(recursive: true);
final runner = ToolCommandRunner(
environment: testEnv.environment,
configs: {},
);
final result = await runner.run([
'cleanup',
'--untouched-since=${fakeNow.year + 1}-01-01',
]);
expect(result, 0);
expect(
targetDir.existsSync(),
false,
reason: 'Due to --untouched-since being a year in the future',
);
expect(
testEnv.testLogs,
containsAllInOrder([
logRecord(
contains('Checking ${testEnv.environment.engine.outDir.path}'),
),
logRecord(
contains('Deleted 1 output directories'),
),
]),
);
});
test('refuses an invalid YYYY-MM-DD date', () async {
final testEnv = TestEnvironment.withTestEngine();
addTearDown(testEnv.cleanup);
final runner = ToolCommandRunner(
environment: testEnv.environment,
configs: {},
);
expect(
runner.run([
'cleanup',
'--untouched-since=02-14-2024',
]),
throwsA(isA<FatalError>()),
);
});
}