Minor changes && Add tests

Made a seperate method for writing the database access time files
Added tests for checkIfDatabasesWereModified
This commit is contained in:
ProfessionalUwU 2023-06-18 17:24:56 +02:00
parent 51aca7a2c2
commit 1994e92e9e
Signed by: ProfessionalUwU
GPG Key ID: 9F28CB1645C4BFB5
2 changed files with 50 additions and 33 deletions

View File

@ -0,0 +1,31 @@
using Pacserver.Utils;
namespace Pacserver.Tests;
public class checkIfDatabasesWereModifiedTest {
[Fact]
public void checkIfDatabasesWereModified_throwsExceptionIfNoValidModeIsGiven() {
// Arrange
PacserverUtils utils = new PacserverUtils();
utils.readPacmanConfig();
// Act
Action act = () => utils.checkIfDatabasesWereModified("test", "/tmp/test.txt");
// Assert
act.Should().Throw<ArgumentException>().WithMessage("No valid mode was given. Valid modes are before and after");
}
[Fact]
public void checkIfDatabasesWereModified_throwsNoExceptionIfValidModeIsGiven() {
// Arrange
PacserverUtils utils = new PacserverUtils();
utils.readPacmanConfig();
// Act
Action act = () => utils.checkIfDatabasesWereModified("before", "/tmp/test.txt");
// Assert
act.Should().NotThrow();
}
}

View File

@ -63,30 +63,21 @@ public class PacserverUtils {
public void checkIfDatabasesWereModified(string mode, string filePath) {
string[] databases = Directory.GetFiles(pacmanDatabaseDirectory + "sync/");
// if (mode == "nuke") {
// using (File.Open(filePath, FileMode.Truncate, FileAccess.ReadWrite, FileShare.Delete)) {
// File.Delete(filePath);
// }
// }
foreach (string database in databases) {
switch (mode) {
case "before":
if (!File.Exists(filePath)) {
using (File.Open(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite)) {
using (StreamWriter sw = new StreamWriter(filePath)) {
sw.WriteLine(database + " " + File.GetLastAccessTime(database));
}
}
} else if (File.Exists(filePath)) {
using (File.Open(filePath, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite)) {
using (var sw = new StreamWriter(filePath, true)) {
sw.WriteLine(database + " " + File.GetLastAccessTime(database));
}
}
}
writeDatabaseAccessTimeToFile(filePath, database);
break;
case "after":
writeDatabaseAccessTimeToFile(filePath, database);
break;
default:
throw new ArgumentException("No valid mode was given. Valid modes are before and after");
}
}
}
public void writeDatabaseAccessTimeToFile(string filePath, string database) {
if (!File.Exists(filePath)) {
using (File.Open(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite)) {
using (StreamWriter sw = new StreamWriter(filePath)) {
@ -100,11 +91,6 @@ public class PacserverUtils {
}
}
}
break;
default:
throw new ArgumentException("No valid mode was selected");
}
}
}
private static List<String> newerPackagesAndDatabases = new List<String>();