-
Notifications
You must be signed in to change notification settings - Fork 74
Expand file tree
/
Copy pathBackupRestoreTests.cs
More file actions
94 lines (84 loc) · 3.43 KB
/
Copy pathBackupRestoreTests.cs
File metadata and controls
94 lines (84 loc) · 3.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
using System;
using System.IO;
using System.Linq;
using GeneralUpdate.Core.FileSystem;
using Xunit;
namespace CoreTest.Backup;
public class BackupRestoreTests
{
[Fact]
public void Backup_And_Restore_Roundtrip()
{
var tmpRoot = Path.Combine(Path.GetTempPath(), "CoreTest.Backup." + Guid.NewGuid().ToString("N"));
var sourceDir = Path.Combine(tmpRoot, "source");
var backupDir = Path.Combine(tmpRoot, "backup");
var restoreDir = Path.Combine(tmpRoot, "restored");
try
{
Directory.CreateDirectory(sourceDir);
File.WriteAllText(Path.Combine(sourceDir, "app.exe"), "v1.0");
File.WriteAllText(Path.Combine(sourceDir, "config.json"), "{}");
var subDir = Path.Combine(sourceDir, "data");
Directory.CreateDirectory(subDir);
File.WriteAllText(Path.Combine(subDir, "data.db"), "mydata");
StorageManager.Backup(sourceDir, backupDir, Array.Empty<string>());
Assert.True(Directory.Exists(backupDir));
Assert.True(File.Exists(Path.Combine(backupDir, "app.exe")));
Assert.True(File.Exists(Path.Combine(backupDir, "config.json")));
StorageManager.Restore(backupDir, restoreDir);
Assert.True(Directory.Exists(restoreDir));
Assert.Equal("v1.0", File.ReadAllText(Path.Combine(restoreDir, "app.exe")));
Assert.Equal("{}", File.ReadAllText(Path.Combine(restoreDir, "config.json")));
}
finally
{
if (Directory.Exists(tmpRoot)) Directory.Delete(tmpRoot, true);
}
}
[Fact]
public void CleanBackup_KeepsOnlyRecentVersions()
{
var installPath = Path.Combine(Path.GetTempPath(), "CoreTest.CleanBackup." + Guid.NewGuid().ToString("N"));
var backupRoot = Path.Combine(installPath, "__backups");
try
{
for (int i = 1; i <= 5; i++)
{
var verDir = Path.Combine(backupRoot, $"{i}.0.0");
Directory.CreateDirectory(verDir);
File.WriteAllText(Path.Combine(verDir, "app.exe"), $"v{i}");
}
StorageManager.CleanBackup(installPath, keepVersions: 3);
var remaining = Directory.GetDirectories(backupRoot);
Assert.Equal(3, remaining.Length);
var names = remaining.Select(Path.GetFileName).OrderBy(n => new Version(n!)).ToList();
Assert.Equal("3.0.0", names[0]);
Assert.Equal("4.0.0", names[1]);
Assert.Equal("5.0.0", names[2]);
}
finally
{
if (Directory.Exists(installPath)) Directory.Delete(installPath, true);
}
}
[Fact]
public void ListBackups_ReturnsMetadata()
{
var installPath = Path.Combine(Path.GetTempPath(), "CoreTest.ListBackups." + Guid.NewGuid().ToString("N"));
var backupRoot = Path.Combine(installPath, "__backups");
try
{
var verDir = Path.Combine(backupRoot, "1.0.0");
Directory.CreateDirectory(verDir);
File.WriteAllText(Path.Combine(verDir, "app.exe"), "v1");
var backups = StorageManager.ListBackups(installPath);
Assert.Single(backups);
Assert.Equal("1.0.0", backups[0].Version);
Assert.Contains("__backups", backups[0].Path);
}
finally
{
if (Directory.Exists(installPath)) Directory.Delete(installPath, true);
}
}
}