Use the correct base path for Check

This commit is contained in:
Matt Nadareski
2025-06-17 17:55:10 -04:00
parent 000e7d88a8
commit cd19a2e4a0
19 changed files with 150 additions and 109 deletions

View File

@@ -12,6 +12,7 @@
- Fix missed test updates
- Rename disc info to media info
- Fix start index in Check
- Use the correct base path for Check
### 3.3.2 (2025-06-12)

View File

@@ -481,13 +481,13 @@ namespace MPF.Frontend
resultProgress.Report(ResultEventArgs.Success("Gathering submission information... please wait!"));
// Determine the media type from the processor, if not provided
mediaType ??= _processor.DetermineMediaType(OutputPath);
// Get the output directory and filename separately
var outputDirectory = Path.GetDirectoryName(OutputPath);
var outputFilename = Path.GetFileName(OutputPath);
// Determine the media type from the processor, if not provided
mediaType ??= _processor.DetermineMediaType(outputDirectory, outputFilename);
// Check to make sure that the output had all the correct files
List<string> missingFiles = _processor.FoundAllFiles(mediaType, outputDirectory, outputFilename);
if (missingFiles.Count > 0)

View File

@@ -522,7 +522,6 @@ namespace MPF.Frontend.Tools
/// <param name="path">Path value to normalize</param>
public static string NormalizeOutputPaths(string? path, bool getFullPath)
{
// The easy way
try
{
// If we have an invalid path

View File

@@ -15,29 +15,32 @@ namespace MPF.Processors.Test
#region DetermineMediaType
[Fact]
public void DetermineMediaType_Null_Null()
public void DetermineMediaType_Empty_Null()
{
string? basePath = null;
string? outputDirectory = null;
string outputFilename = string.Empty;
var processor = new Aaru(RedumpSystem.IBMPCcompatible);
var actual = processor.DetermineMediaType(basePath);
var actual = processor.DetermineMediaType(outputDirectory, outputFilename);
Assert.Null(actual);
}
[Fact]
public void DetermineMediaType_Invalid_Null()
{
string? basePath = "INVALID";
string? outputDirectory = null;
string outputFilename = "INVALID";
var processor = new Aaru(RedumpSystem.IBMPCcompatible);
var actual = processor.DetermineMediaType(basePath);
var actual = processor.DetermineMediaType(outputDirectory, outputFilename);
Assert.Null(actual);
}
[Fact]
public void DetermineMediaType_CD_Valid_CD()
{
string? basePath = Path.Combine(Environment.CurrentDirectory, "TestData", "Aaru", "CDROM", "test");
string? outputDirectory = Path.Combine(Environment.CurrentDirectory, "TestData", "Aaru", "CDROM");
string outputFilename = "test";
var processor = new Aaru(RedumpSystem.IBMPCcompatible);
var actual = processor.DetermineMediaType(basePath);
var actual = processor.DetermineMediaType(outputDirectory, outputFilename);
Assert.Equal(MediaType.CDROM, actual);
}

View File

@@ -10,83 +10,92 @@ namespace MPF.Processors.Test
#region DetermineMediaType
[Fact]
public void DetermineMediaType_GC_Null_GC()
public void DetermineMediaType_GC_Empty_GC()
{
string? basePath = null;
string? outputDirectory = null;
string outputFilename = string.Empty;
var processor = new CleanRip(RedumpSystem.NintendoGameCube);
var actual = processor.DetermineMediaType(basePath);
var actual = processor.DetermineMediaType(outputDirectory, outputFilename);
Assert.Equal(MediaType.NintendoGameCubeGameDisc, actual);
}
[Fact]
public void DetermineMediaType_Wii_Null_Wii()
{
string? basePath = null;
string? outputDirectory = null;
string outputFilename = string.Empty;
var processor = new CleanRip(RedumpSystem.NintendoWii);
var actual = processor.DetermineMediaType(basePath);
var actual = processor.DetermineMediaType(outputDirectory, outputFilename);
Assert.Equal(MediaType.NintendoWiiOpticalDisc, actual);
}
[Fact]
public void DetermineMediaType_Other_Null_Null()
{
string? basePath = null;
string? outputDirectory = null;
string outputFilename = string.Empty;
var processor = new CleanRip(RedumpSystem.IBMPCcompatible);
var actual = processor.DetermineMediaType(basePath);
var actual = processor.DetermineMediaType(outputDirectory, outputFilename);
Assert.Null(actual);
}
[Fact]
public void DetermineMediaType_GC_Invalid_GC()
{
string? basePath = "INVALID";
string? outputDirectory = null;
string outputFilename = "INVALID";
var processor = new CleanRip(RedumpSystem.NintendoGameCube);
var actual = processor.DetermineMediaType(basePath);
var actual = processor.DetermineMediaType(outputDirectory, outputFilename);
Assert.Equal(MediaType.NintendoGameCubeGameDisc, actual);
}
[Fact]
public void DetermineMediaType_Wii_Invalid_Wii()
{
string? basePath = "INVALID";
string? outputDirectory = null;
string outputFilename = "INVALID";
var processor = new CleanRip(RedumpSystem.NintendoWii);
var actual = processor.DetermineMediaType(basePath);
var actual = processor.DetermineMediaType(outputDirectory, outputFilename);
Assert.Equal(MediaType.NintendoWiiOpticalDisc, actual);
}
[Fact]
public void DetermineMediaType_Other_Invalid_Invalid()
{
string? basePath = "INVALID";
string? outputDirectory = null;
string outputFilename = "INVALID";
var processor = new CleanRip(RedumpSystem.IBMPCcompatible);
var actual = processor.DetermineMediaType(basePath);
var actual = processor.DetermineMediaType(outputDirectory, outputFilename);
Assert.Null(actual);
}
[Fact]
public void DetermineMediaType_GC_Valid_GC()
{
string? basePath = Path.Combine(Environment.CurrentDirectory, "TestData", "CleanRip", "DVD", "test");
string? outputDirectory = Path.Combine(Environment.CurrentDirectory, "TestData", "CleanRip", "DVD");
string outputFilename = "test";
var processor = new CleanRip(RedumpSystem.NintendoGameCube);
var actual = processor.DetermineMediaType(basePath);
var actual = processor.DetermineMediaType(outputDirectory, outputFilename);
Assert.Equal(MediaType.NintendoGameCubeGameDisc, actual);
}
[Fact]
public void DetermineMediaType_Wii_Valid_Wii()
{
string? basePath = Path.Combine(Environment.CurrentDirectory, "TestData", "CleanRip", "DVD", "test");
string? outputDirectory = Path.Combine(Environment.CurrentDirectory, "TestData", "CleanRip", "DVD");
string outputFilename = "test";
var processor = new CleanRip(RedumpSystem.NintendoWii);
var actual = processor.DetermineMediaType(basePath);
var actual = processor.DetermineMediaType(outputDirectory, outputFilename);
Assert.Equal(MediaType.NintendoWiiOpticalDisc, actual);
}
[Fact]
public void DetermineMediaType_Other_Valid_Valid()
{
string? basePath = Path.Combine(Environment.CurrentDirectory, "TestData", "CleanRip", "DVD", "test");
string? outputDirectory = Path.Combine(Environment.CurrentDirectory, "TestData", "CleanRip", "DVD");
string outputFilename = "test";
var processor = new CleanRip(RedumpSystem.IBMPCcompatible);
var actual = processor.DetermineMediaType(basePath);
var actual = processor.DetermineMediaType(outputDirectory, outputFilename);
Assert.Null(actual);
}

View File

@@ -15,59 +15,61 @@ namespace MPF.Processors.Test
[Fact]
public void DetermineMediaType_Null_Null()
{
string? basePath = null;
string? outputDirectory = null;
string outputFilename = string.Empty;
var processor = new DiscImageCreator(RedumpSystem.IBMPCcompatible);
var actual = processor.DetermineMediaType(basePath);
var actual = processor.DetermineMediaType(outputDirectory, outputFilename);
Assert.Null(actual);
}
[Fact]
public void DetermineMediaType_Invalid_Null()
{
string? basePath = "INVALID";
string? outputDirectory = null;
string outputFilename = "INVALID";
var processor = new DiscImageCreator(RedumpSystem.IBMPCcompatible);
var actual = processor.DetermineMediaType(basePath);
var actual = processor.DetermineMediaType(outputDirectory, outputFilename);
Assert.Null(actual);
}
[Fact]
public void DetermineMediaType_BD_Filled()
{
MediaType? expected = MediaType.BluRay;
string? basePath = Path.Combine(Environment.CurrentDirectory, "TestData", "DiscImageCreator", "BluRay", "test");
string? outputDirectory = Path.Combine(Environment.CurrentDirectory, "TestData", "DiscImageCreator", "BluRay");
string outputFilename = "test";
var processor = new DiscImageCreator(RedumpSystem.IBMPCcompatible);
var actual = processor.DetermineMediaType(basePath);
Assert.Equal(expected, actual);
var actual = processor.DetermineMediaType(outputDirectory, outputFilename);
Assert.Equal(MediaType.BluRay, actual);
}
[Fact]
public void DetermineMediaType_CD_Filled()
{
MediaType? expected = MediaType.CDROM;
string? basePath = Path.Combine(Environment.CurrentDirectory, "TestData", "DiscImageCreator", "CDROM", "test");
string? outputDirectory = Path.Combine(Environment.CurrentDirectory, "TestData", "DiscImageCreator", "CDROM");
string outputFilename = "test";
var processor = new DiscImageCreator(RedumpSystem.IBMPCcompatible);
var actual = processor.DetermineMediaType(basePath);
Assert.Equal(expected, actual);
var actual = processor.DetermineMediaType(outputDirectory, outputFilename);
Assert.Equal(MediaType.CDROM, actual);
}
[Fact]
public void DetermineMediaType_DVD_Filled()
{
MediaType? expected = MediaType.DVD;
string? basePath = Path.Combine(Environment.CurrentDirectory, "TestData", "DiscImageCreator", "DVD", "test");
string? outputDirectory = Path.Combine(Environment.CurrentDirectory, "TestData", "DiscImageCreator", "DVD");
string outputFilename = "test";
var processor = new DiscImageCreator(RedumpSystem.IBMPCcompatible);
var actual = processor.DetermineMediaType(basePath);
Assert.Equal(expected, actual);
var actual = processor.DetermineMediaType(outputDirectory, outputFilename);
Assert.Equal(MediaType.DVD, actual);
}
[Fact]
public void DetermineMediaType_HDDVD_Filled()
{
MediaType? expected = MediaType.HDDVD;
string? basePath = Path.Combine(Environment.CurrentDirectory, "TestData", "DiscImageCreator", "HDDVD", "test");
string? outputDirectory = Path.Combine(Environment.CurrentDirectory, "TestData", "DiscImageCreator", "HDDVD");
string outputFilename = "test";
var processor = new DiscImageCreator(RedumpSystem.IBMPCcompatible);
var actual = processor.DetermineMediaType(basePath);
Assert.Equal(expected, actual);
var actual = processor.DetermineMediaType(outputDirectory, outputFilename);
Assert.Equal(MediaType.HDDVD, actual);
}
#endregion

View File

@@ -12,27 +12,30 @@ namespace MPF.Processors.Test
[Fact]
public void DetermineMediaType_Null_BluRay()
{
string? basePath = null;
string? outputDirectory = null;
string outputFilename = string.Empty;
var processor = new PS3CFW(RedumpSystem.SonyPlayStation3);
var actual = processor.DetermineMediaType(basePath);
var actual = processor.DetermineMediaType(outputDirectory, outputFilename);
Assert.Equal(MediaType.BluRay, actual);
}
[Fact]
public void DetermineMediaType_Invalid_BluRay()
{
string? basePath = "INVALID";
string? outputDirectory = null;
string outputFilename = "INVALID";
var processor = new PS3CFW(RedumpSystem.SonyPlayStation3);
var actual = processor.DetermineMediaType(basePath);
var actual = processor.DetermineMediaType(outputDirectory, outputFilename);
Assert.Equal(MediaType.BluRay, actual);
}
[Fact]
public void DetermineMediaType_Valid_BluRay()
{
string? basePath = Path.Combine(Environment.CurrentDirectory, "TestData", "PS3CFW", "BluRay", "test");
string? outputDirectory = Path.Combine(Environment.CurrentDirectory, "TestData", "PS3CFW", "BluRay");
string outputFilename = "test";
var processor = new PS3CFW(RedumpSystem.SonyPlayStation3);
var actual = processor.DetermineMediaType(basePath);
var actual = processor.DetermineMediaType(outputDirectory, outputFilename);
Assert.Equal(MediaType.BluRay, actual);
}

View File

@@ -13,69 +13,71 @@ namespace MPF.Processors.Test
[Fact]
public void DetermineMediaType_Null_Null()
{
string? basePath = null;
string? outputDirectory = null;
string outputFilename = string.Empty;
var processor = new Redumper(RedumpSystem.IBMPCcompatible);
var actual = processor.DetermineMediaType(basePath);
var actual = processor.DetermineMediaType(outputDirectory, outputFilename);
Assert.Null(actual);
}
[Fact]
public void DetermineMediaType_Invalid_Null()
{
string? basePath = "INVALID";
string? outputDirectory = null;
string outputFilename = "INVALID";
var processor = new Redumper(RedumpSystem.IBMPCcompatible);
var actual = processor.DetermineMediaType(basePath);
var actual = processor.DetermineMediaType(outputDirectory, outputFilename);
Assert.Null(actual);
}
[Fact]
public void DetermineMediaType_BD_Filled()
{
MediaType? expected = MediaType.BluRay;
string basePath = Path.Combine(Environment.CurrentDirectory, "TestData", "Redumper", "BluRay", "test");
string? outputDirectory = Path.Combine(Environment.CurrentDirectory, "TestData", "Redumper", "BluRay");
string outputFilename = "test";
var processor = new Redumper(RedumpSystem.IBMPCcompatible);
var actual = processor.DetermineMediaType(basePath);
Assert.Equal(expected, actual);
var actual = processor.DetermineMediaType(outputDirectory, outputFilename);
Assert.Equal(MediaType.BluRay, actual);
}
[Fact]
public void DetermineMediaType_BDR_Filled()
{
MediaType? expected = MediaType.BluRay;
string basePath = Path.Combine(Environment.CurrentDirectory, "TestData", "Redumper", "BDR", "test");
string? outputDirectory = Path.Combine(Environment.CurrentDirectory, "TestData", "Redumper", "BDR");
string outputFilename = "test";
var processor = new Redumper(RedumpSystem.IBMPCcompatible);
var actual = processor.DetermineMediaType(basePath);
Assert.Equal(expected, actual);
var actual = processor.DetermineMediaType(outputDirectory, outputFilename);
Assert.Equal(MediaType.BluRay, actual);
}
[Fact]
public void DetermineMediaType_CD_Filled()
{
MediaType? expected = MediaType.CDROM;
string basePath = Path.Combine(Environment.CurrentDirectory, "TestData", "Redumper", "CDROM", "test");
string? outputDirectory = Path.Combine(Environment.CurrentDirectory, "TestData", "Redumper", "CDROM");
string outputFilename = "test";
var processor = new Redumper(RedumpSystem.IBMPCcompatible);
var actual = processor.DetermineMediaType(basePath);
Assert.Equal(expected, actual);
var actual = processor.DetermineMediaType(outputDirectory, outputFilename);
Assert.Equal(MediaType.CDROM, actual);
}
[Fact]
public void DetermineMediaType_DVD_Filled()
{
MediaType? expected = MediaType.DVD;
string basePath = Path.Combine(Environment.CurrentDirectory, "TestData", "Redumper", "DVD", "test");
string? outputDirectory = Path.Combine(Environment.CurrentDirectory, "TestData", "Redumper", "DVD");
string outputFilename = "test";
var processor = new Redumper(RedumpSystem.IBMPCcompatible);
var actual = processor.DetermineMediaType(basePath);
Assert.Equal(expected, actual);
var actual = processor.DetermineMediaType(outputDirectory, outputFilename);
Assert.Equal(MediaType.DVD, actual);
}
[Fact]
public void DetermineMediaType_HDDVD_Filled()
{
MediaType? expected = MediaType.HDDVD;
string basePath = Path.Combine(Environment.CurrentDirectory, "TestData", "Redumper", "HDDVD", "test");
string? outputDirectory = Path.Combine(Environment.CurrentDirectory, "TestData", "Redumper", "HDDVD");
string outputFilename = "test";
var processor = new Redumper(RedumpSystem.IBMPCcompatible);
var actual = processor.DetermineMediaType(basePath);
Assert.Equal(expected, actual);
var actual = processor.DetermineMediaType(outputDirectory, outputFilename);
Assert.Equal(MediaType.HDDVD, actual);
}
#endregion

View File

@@ -13,27 +13,30 @@ namespace MPF.Processors.Test
[Fact]
public void DetermineMediaType_Null_DVD()
{
string? basePath = null;
string? outputDirectory = null;
string outputFilename = string.Empty;
var processor = new UmdImageCreator(RedumpSystem.SonyPlayStationPortable);
var actual = processor.DetermineMediaType(basePath);
var actual = processor.DetermineMediaType(outputDirectory, outputFilename);
Assert.Equal(MediaType.UMD, actual);
}
[Fact]
public void DetermineMediaType_Invalid_DVD()
{
string? basePath = "INVALID";
string? outputDirectory = null;
string outputFilename = "INVALID";
var processor = new UmdImageCreator(RedumpSystem.SonyPlayStationPortable);
var actual = processor.DetermineMediaType(basePath);
var actual = processor.DetermineMediaType(outputDirectory, outputFilename);
Assert.Equal(MediaType.UMD, actual);
}
[Fact]
public void DetermineMediaType_Valid_DVD()
{
string? basePath = Path.Combine(Environment.CurrentDirectory, "TestData", "UmdImageCreator", "UMD", "test");
string? outputDirectory = Path.Combine(Environment.CurrentDirectory, "TestData", "UmdImageCreator", "UMD");
string outputFilename = "test";
var processor = new UmdImageCreator(RedumpSystem.SonyPlayStationPortable);
var actual = processor.DetermineMediaType(basePath);
var actual = processor.DetermineMediaType(outputDirectory, outputFilename);
Assert.Equal(MediaType.UMD, actual);
}

View File

@@ -11,29 +11,32 @@ namespace MPF.Processors.Test
#region DetermineMediaType
[Fact]
public void DetermineMediaType_Null_DVD()
public void DetermineMediaType_Empty_DVD()
{
string? basePath = null;
string? outputDirectory = null;
string outputFilename = string.Empty;
var processor = new XboxBackupCreator(RedumpSystem.MicrosoftXbox);
var actual = processor.DetermineMediaType(basePath);
var actual = processor.DetermineMediaType(outputDirectory, outputFilename);
Assert.Equal(MediaType.DVD, actual);
}
[Fact]
public void DetermineMediaType_Invalid_DVD()
{
string? basePath = "INVALID";
string? outputDirectory = null;
string outputFilename = "INVALID";
var processor = new XboxBackupCreator(RedumpSystem.MicrosoftXbox);
var actual = processor.DetermineMediaType(basePath);
var actual = processor.DetermineMediaType(outputDirectory, outputFilename);
Assert.Equal(MediaType.DVD, actual);
}
[Fact]
public void DetermineMediaType_Valid_DVD()
{
string? basePath = Path.Combine(Environment.CurrentDirectory, "TestData", "XboxBackupCreator", "DVD", "test");
string? outputDirectory = Path.Combine(Environment.CurrentDirectory, "TestData", "XboxBackupCreator", "DVD");
string outputFilename = "test";
var processor = new XboxBackupCreator(RedumpSystem.MicrosoftXbox);
var actual = processor.DetermineMediaType(basePath);
var actual = processor.DetermineMediaType(outputDirectory, outputFilename);
Assert.Equal(MediaType.DVD, actual);
}

View File

@@ -27,12 +27,17 @@ namespace MPF.Processors
#region BaseProcessor Implementations
/// <inheritdoc/>
public override MediaType? DetermineMediaType(string? basePath)
public override MediaType? DetermineMediaType(string? outputDirectory, string outputFilename)
{
// If the base path is invalid
if (string.IsNullOrEmpty(basePath))
// If the filename is invalid
if (string.IsNullOrEmpty(outputFilename))
return null;
// Reassemble the base path
string basePath = Path.GetFileNameWithoutExtension(outputFilename);
if (!string.IsNullOrEmpty(outputDirectory))
basePath = Path.Combine(outputDirectory, basePath);
// Deserialize the sidecar, if possible
var sidecar = GenerateSidecar($"{basePath}.cicm.xml");

View File

@@ -41,9 +41,10 @@ namespace MPF.Processors
/// <summary>
/// Determine the media type based on the provided files
/// </summary>
/// <param name="basePath">Base filename and path to use for checking</param>
/// <param name="outputDirectory">Output folder to use as the base path</param>
/// <param name="outputFilename">Output filename to use as the base path</param>
/// <returns>MediaType that was determined, if possible</returns>
public abstract MediaType? DetermineMediaType(string? basePath);
public abstract MediaType? DetermineMediaType(string? outputDirectory, string outputFilename);
/// <summary>
/// Generate a SubmissionInfo for the output files

View File

@@ -19,7 +19,7 @@ namespace MPF.Processors
#region BaseProcessor Implementations
/// <inheritdoc/>
public override MediaType? DetermineMediaType(string? basePath)
public override MediaType? DetermineMediaType(string? outputDirectory, string outputFilename)
{
return System switch
{

View File

@@ -68,12 +68,17 @@ namespace MPF.Processors
#region BaseProcessor Implementations
/// <inheritdoc/>
public override MediaType? DetermineMediaType(string? basePath)
public override MediaType? DetermineMediaType(string? outputDirectory, string outputFilename)
{
// If the base path is invalid
if (string.IsNullOrEmpty(basePath))
// If the filename is invalid
if (string.IsNullOrEmpty(outputFilename))
return null;
// Reassemble the base path
string basePath = Path.GetFileNameWithoutExtension(outputFilename);
if (!string.IsNullOrEmpty(outputDirectory))
basePath = Path.Combine(outputDirectory, basePath);
// Get the comma-separated list of values
if (GetDiscType($"{basePath}_disc.txt", out var discType) && discType != null)
{

View File

@@ -19,7 +19,7 @@ namespace MPF.Processors
#region BaseProcessor Implementations
/// <inheritdoc/>
public override MediaType? DetermineMediaType(string? basePath)
public override MediaType? DetermineMediaType(string? outputDirectory, string outputFilename)
{
throw new NotImplementedException();
}

View File

@@ -17,7 +17,7 @@ namespace MPF.Processors
#region BaseProcessor Implementations
/// <inheritdoc/>
public override MediaType? DetermineMediaType(string? basePath)
public override MediaType? DetermineMediaType(string? outputDirectory, string outputFilename)
=> MediaType.BluRay;
/// <inheritdoc/>

View File

@@ -23,12 +23,17 @@ namespace MPF.Processors
#region BaseProcessor Implementations
/// <inheritdoc/>
public override MediaType? DetermineMediaType(string? basePath)
public override MediaType? DetermineMediaType(string? outputDirectory, string outputFilename)
{
// If the base path is invalid
if (string.IsNullOrEmpty(basePath))
// If the filename is invalid
if (string.IsNullOrEmpty(outputFilename))
return null;
// Reassemble the base path
string basePath = Path.GetFileNameWithoutExtension(outputFilename);
if (!string.IsNullOrEmpty(outputDirectory))
basePath = Path.Combine(outputDirectory, basePath);
// Use the log first, if it exists
if (GetDiscType($"{basePath}.log", out MediaType? mediaType))
return mediaType;

View File

@@ -19,7 +19,7 @@ namespace MPF.Processors
#region BaseProcessor Implementations
/// <inheritdoc/>
public override MediaType? DetermineMediaType(string? basePath)
public override MediaType? DetermineMediaType(string? outputDirectory, string outputFilename)
=> MediaType.UMD;
/// <inheritdoc/>

View File

@@ -19,7 +19,7 @@ namespace MPF.Processors
#region BaseProcessor Implementations
/// <inheritdoc/>
public override MediaType? DetermineMediaType(string? basePath)
public override MediaType? DetermineMediaType(string? outputDirectory, string outputFilename)
=> MediaType.DVD;
/// <inheritdoc/>