36 lines
2.0 KiB
Dart
36 lines
2.0 KiB
Dart
import 'package:flutter_test/flutter_test.dart';
|
||
import 'package:jj_mkvmaker/app/live_sync.dart';
|
||
import 'package:jj_mkvmaker/app/settings.dart';
|
||
|
||
/// 97: 실시간 동기화의 지우기는 쌍의 "지우기 포함" 으로만 (설정 옵션의 --delete · --del · /MIR · /PURGE 는 빼고)
|
||
void main() {
|
||
test('rsync: 설정 옵션의 지우기는 빼고, 쌍이 지우기 포함일 때만 --delete 하나', () {
|
||
final s = AppSettings()..rsyncOptions = '-avPog --delete --del --delete-after';
|
||
final off = LiveSync.rsyncArgsFor(LiveSyncPair('/a', '/b'), s, windows: false);
|
||
expect(off.where((o) => o.startsWith('--del')), isEmpty);
|
||
final on = LiveSync.rsyncArgsFor(LiveSyncPair('/a', '/b', delete: true), s, windows: false);
|
||
expect(on.where((o) => o.startsWith('--del')), ['--delete']);
|
||
});
|
||
|
||
test('robocopy: /MIR 는 /E 로, /PURGE 는 쌍이 지우기 포함일 때만', () {
|
||
final s = AppSettings()..robocopyOptions = '/MIR /PURGE /R:2';
|
||
final off = LiveSync.robocopyArgsFor(LiveSyncPair(r'C:\a', r'D:\b'), s).map((o) => o.toUpperCase()).toList();
|
||
expect(off, isNot(contains('/MIR')));
|
||
expect(off, isNot(contains('/PURGE')));
|
||
expect(off, contains('/E'));
|
||
final on = LiveSync.robocopyArgsFor(LiveSyncPair(r'C:\a', r'D:\b', delete: true), s).map((o) => o.toUpperCase()).toList();
|
||
expect(on.where((o) => o == '/PURGE'), hasLength(1));
|
||
});
|
||
|
||
test('107: 원본을 지우는 옵션 (--remove-source-files · /MOV · /MOVE) 도 실시간 동기화에서는 쓰지 않는다', () {
|
||
final s = AppSettings()
|
||
..rsyncOptions = '-avPog --remove-source-files --remove-sent-files'
|
||
..robocopyOptions = '/E /MOV /MOVE';
|
||
final r = LiveSync.rsyncArgsFor(LiveSyncPair('/a', '/b', delete: true), s, windows: false);
|
||
expect(r.where((o) => o.startsWith('--remove')), isEmpty);
|
||
final w = LiveSync.robocopyArgsFor(LiveSyncPair(r'C:', r'D:', delete: true), s).map((o) => o.toUpperCase()).toList();
|
||
expect(w, isNot(contains('/MOV')));
|
||
expect(w, isNot(contains('/MOVE')));
|
||
});
|
||
}
|