feature/checkForNewerPackagesAndDatabases #2

Merged
ProfessionalUwU merged 4 commits from feature/checkForNewerPackagesAndDatabases into dev 2023-06-18 17:40:03 +02:00
2 changed files with 50 additions and 33 deletions
Showing only changes of commit 1994e92e9e - Show all commits

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) { public void checkIfDatabasesWereModified(string mode, string filePath) {
string[] databases = Directory.GetFiles(pacmanDatabaseDirectory + "sync/"); 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) { foreach (string database in databases) {
switch (mode) { switch (mode) {
case "before": case "before":
if (!File.Exists(filePath)) { writeDatabaseAccessTimeToFile(filePath, database);
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));
}
}
}
break; break;
case "after": 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)) { if (!File.Exists(filePath)) {
using (File.Open(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite)) { using (File.Open(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite)) {
using (StreamWriter sw = new StreamWriter(filePath)) { 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>(); private static List<String> newerPackagesAndDatabases = new List<String>();