import 'dart:io'; import 'package:desktop_plugin/utils/file_log.dart'; import 'package:flutter_test/flutter_test.dart'; void main() { late Directory tmp; setUp(() { tmp = Directory.systemTemp.createTempSync('filelog-test'); FileLog.init(tmp.path); }); tearDown(() { FileLog.dispose(); try { tmp.deleteSync(recursive: true); } catch (_) {} }); test('写入按天命名的日志文件,行带完整时间戳', () { FileLog.write('hello 世界'); FileLog.write('second line'); final path = FileLog.currentPath!; expect(path, contains('app-')); expect(path, endsWith('.log')); final text = File(path).readAsStringSync(); expect(text, contains('hello 世界')); expect(text, contains('second line')); // 完整时间戳:YYYYMMDD HH:MM:SS expect(RegExp(r'^\d{8} \d{2}:\d{2}:\d{2} ', multiLine: true).hasMatch(text), isTrue); }); test('清理 7 天前的旧日志,保留新日志', () { final old = File('${tmp.path}/app-20200101.log')..writeAsStringSync('old'); expect(old.existsSync(), isTrue); FileLog.init(tmp.path); // 重新 init 触发清理 expect(old.existsSync(), isFalse, reason: '7 天前的日志应被删除'); expect(FileLog.currentPath != null, isTrue, reason: '当天日志正常打开'); }); test('未 init(目录不可用)时 write 静默不抛', () { FileLog.dispose(); // 不 init 直接 write:无句柄,应静默通过 FileLog.write('no sink'); }); }