fix issues with subfolders
This commit is contained in:
parent
573f732c2a
commit
4dcc6904b9
|
@ -243,6 +243,20 @@ namespace SMAPI.Tests.Core
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[TestCase("Mods/SomeMod/SomeSubdirectory", "Mods/Some", true, ExpectedResult = true)]
|
||||||
|
[TestCase("Mods/SomeMod/SomeSubdirectory", "Mods/Some", false, ExpectedResult = false)]
|
||||||
|
public bool StartsWith_SubfolderWithPartial(string mainAssetName, string otherAssetName, bool allowSubfolder)
|
||||||
|
{
|
||||||
|
// arrange
|
||||||
|
mainAssetName = PathUtilities.NormalizeAssetName(mainAssetName);
|
||||||
|
|
||||||
|
// act
|
||||||
|
AssetName name = AssetName.Parse(mainAssetName, _ => null);
|
||||||
|
|
||||||
|
// assert value
|
||||||
|
return name.StartsWith(otherAssetName, allowPartialWord: true, allowSubfolder: allowSubfolder);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/****
|
/****
|
||||||
** GetHashCode
|
** GetHashCode
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
<PackageReference Include="Moq" Version="4.18.1" />
|
<PackageReference Include="Moq" Version="4.18.1" />
|
||||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
|
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
|
||||||
<PackageReference Include="NUnit" Version="3.13.3" />
|
<PackageReference Include="NUnit" Version="3.13.3" />
|
||||||
|
<PackageReference Include="NUnit3TestAdapter" Version="4.2.1" PrivateAssets="all" IncludeAssets="runtime; build; native; contentfiles; analyzers; buildtransitive" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|
|
@ -162,8 +162,8 @@ namespace StardewModdingAPI.Framework.Content
|
||||||
if (prefixHasMore)
|
if (prefixHasMore)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// possible match: all prefix segments matched
|
// possible match: all prefix segments matched.
|
||||||
return allowSubfolder || !curParts.Remainder.Contains(pathSeparators, StringComparison.Ordinal);
|
return allowSubfolder || (pathSeparators.Contains(trimmed[^1]) ? curParts.Remainder.Length == 0 : curParts.Current.Length == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
// match: previous segments matched exactly and both reached the end
|
// match: previous segments matched exactly and both reached the end
|
||||||
|
@ -192,7 +192,7 @@ namespace StardewModdingAPI.Framework.Content
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// possible match
|
// possible match
|
||||||
return allowSubfolder || !curParts.Remainder.Contains(pathSeparators, StringComparison.Ordinal);
|
return allowSubfolder || (pathSeparators.Contains(trimmed[^1]) ? curParts.Remainder.IndexOfAny(ToolkitPathUtilities.PossiblePathSeparators) < 0 : curParts.Remainder.Length == 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -203,7 +203,7 @@ namespace StardewModdingAPI.Framework.Content
|
||||||
if (assetFolder is null)
|
if (assetFolder is null)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
return this.StartsWith(assetFolder + "/", allowPartialWord: false, allowSubfolder: false);
|
return this.StartsWith(assetFolder + ToolkitPathUtilities.PreferredPathSeparator, allowPartialWord: false, allowSubfolder: false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
|
|
Loading…
Reference in New Issue