Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cf: use fallback URL for curseforge files like modpack files #493

Merged
merged 3 commits into from
Nov 23, 2024

Refactored subdir resolution

fca19e4
Select commit
Loading
Failed to load commit list.
Sign in for the full log view
Merged

cf: use fallback URL for curseforge files like modpack files #493

Refactored subdir resolution
fca19e4
Select commit
Loading
Failed to load commit list.
GitHub Actions / test results succeeded Nov 22, 2024 in 1s

332 passed, 0 failed and 2 skipped

Tests passed successfully

Report Passed Failed Skipped Time
build/test-results/test/TEST-me.itzg.helpers.assertcmd.FileExistsTest.xml 7✅ 191ms
build/test-results/test/TEST-me.itzg.helpers.assertcmd.FileNotExistsTest.xml 4✅ 26ms
build/test-results/test/TEST-me.itzg.helpers.assertcmd.JsonPathEqualsTest.xml 6✅ 185ms
build/test-results/test/TEST-me.itzg.helpers.assertcmd.PropertyEqualsTest.xml 4✅ 13ms
build/test-results/test/TEST-me.itzg.helpers.CharsetDetectorTest.xml 2✅ 46ms
build/test-results/test/TEST-me.itzg.helpers.curseforge.CurseForgeApiClientTest.xml 1✅ 646ms
build/test-results/test/TEST-me.itzg.helpers.curseforge.CurseForgeFilesCommandTest.xml 3✅ 498ms
build/test-results/test/TEST-me.itzg.helpers.curseforge.CurseForgeInstallerTest.xml 1⚪ 1ms
build/test-results/test/TEST-me.itzg.helpers.curseforge.FileHashVerifierTest.xml 3✅ 14ms
build/test-results/test/TEST-me.itzg.helpers.curseforge.ModFileRefResolverTest.xml 5✅ 127ms
build/test-results/test/TEST-me.itzg.helpers.curseforge.ModpacksPageUrlParserTest.xml 10✅ 13ms
build/test-results/test/TEST-me.itzg.helpers.env.InterpolatorTest.xml 2✅ 865ms
build/test-results/test/TEST-me.itzg.helpers.fabric.FabricLauncherInstallerTest.xml 6✅ 1⚪ 291ms
build/test-results/test/TEST-me.itzg.helpers.files.AntPathMatcherTest.xml 4✅ 15ms
build/test-results/test/TEST-me.itzg.helpers.files.ManifestsTest.xml 1✅ 18ms
build/test-results/test/TEST-me.itzg.helpers.files.TabularOutputTest.xml 1✅ 6ms
build/test-results/test/TEST-me.itzg.helpers.find.FindCommandTest.xml 17✅ 184ms
build/test-results/test/TEST-me.itzg.helpers.find.FindCommandTest$appliesMinDepth.xml 3✅ 15ms
build/test-results/test/TEST-me.itzg.helpers.find.FindCommandTest$deletes.xml 6✅ 36ms
build/test-results/test/TEST-me.itzg.helpers.find.FindCommandTest$formatsDirname.xml 3✅ 15ms
build/test-results/test/TEST-me.itzg.helpers.find.FindCommandTest$formatsRelative.xml 3✅ 17ms
build/test-results/test/TEST-me.itzg.helpers.forge.NeoForgeInstallerResolverTest.xml 9✅ 201ms
build/test-results/test/TEST-me.itzg.helpers.forge.ProvidedInstallerResolverTest.xml 1✅ 7ms
build/test-results/test/TEST-me.itzg.helpers.get.ExistsTest.xml 3✅ 325ms
build/test-results/test/TEST-me.itzg.helpers.get.GetCommandTest.xml 9✅ 2s
build/test-results/test/TEST-me.itzg.helpers.get.JsonPathTests.xml 12✅ 280ms
build/test-results/test/TEST-me.itzg.helpers.get.OutputToDirTest.xml 11✅ 292ms
build/test-results/test/TEST-me.itzg.helpers.get.OutputToFileTest.xml 8✅ 188ms
build/test-results/test/TEST-me.itzg.helpers.github.DownloadLatestAssetCommandTest.xml 3✅ 54ms
build/test-results/test/TEST-me.itzg.helpers.http.LenientUriConverterTest.xml 3✅ 2ms
build/test-results/test/TEST-me.itzg.helpers.http.ObjectFetchBuilderTest.xml 4✅ 32ms
build/test-results/test/TEST-me.itzg.helpers.http.ObjectListFetchBuilderTest.xml 1✅ 8ms
build/test-results/test/TEST-me.itzg.helpers.http.OutputToDirectoryFetchBuilderTest.xml 7✅ 79ms
build/test-results/test/TEST-me.itzg.helpers.http.SpecificFileFetchBuilderTest.xml 3✅ 15ms
build/test-results/test/TEST-me.itzg.helpers.modrinth.InstallModrinthModpackCommandTest.xml 7✅ 223ms
build/test-results/test/TEST-me.itzg.helpers.modrinth.ModrinthApiClientTest.xml 2✅ 15ms
build/test-results/test/TEST-me.itzg.helpers.modrinth.ModrinthApiClientTest$resolveProjectVersion.xml 3✅ 17ms
build/test-results/test/TEST-me.itzg.helpers.modrinth.ModrinthApiPackFetcherTest.xml 4✅ 43ms
build/test-results/test/TEST-me.itzg.helpers.modrinth.ModrinthCommandTest.xml 10✅ 316ms
build/test-results/test/TEST-me.itzg.helpers.modrinth.ModrinthHttpPackFetcherTest.xml 1✅ 7ms
build/test-results/test/TEST-me.itzg.helpers.modrinth.ModrinthPackInstallerTest.xml 16✅ 95ms
build/test-results/test/TEST-me.itzg.helpers.modrinth.ProjectRefTest.xml 19✅ 15ms
build/test-results/test/TEST-me.itzg.helpers.mvn.MavenRepoApiTest.xml 3✅ 48ms
build/test-results/test/TEST-me.itzg.helpers.paper.PaperDownloadsClientTest.xml 4✅ 40ms
build/test-results/test/TEST-me.itzg.helpers.patch.PatchSetProcessorTest.xml 7✅ 126ms
build/test-results/test/TEST-me.itzg.helpers.patch.ValueTypeConverterTest.xml 17✅ 24ms
build/test-results/test/TEST-me.itzg.helpers.properties.SetPropertiesCommandTest.xml 18✅ 84ms
build/test-results/test/TEST-me.itzg.helpers.singles.HashCommandTest.xml 1✅ 4ms
build/test-results/test/TEST-me.itzg.helpers.singles.YamlPathCmdTest.xml 1✅ 3ms
build/test-results/test/TEST-me.itzg.helpers.sync.InterpolatingFileProcessorTest.xml 2✅ 55ms
build/test-results/test/TEST-me.itzg.helpers.sync.MulitCopyCommandTest$DirectorySrc.xml 4✅ 23ms
build/test-results/test/TEST-me.itzg.helpers.sync.MulitCopyCommandTest$FileListingSrc.xml 1✅ 3ms
build/test-results/test/TEST-me.itzg.helpers.sync.MulitCopyCommandTest$FileSrc.xml 2✅ 9ms
build/test-results/test/TEST-me.itzg.helpers.sync.MulitCopyCommandTest$RemoteSrc.xml 3✅ 40ms
build/test-results/test/TEST-me.itzg.helpers.users.ManageUsersCommandTest$file.xml 9✅ 75ms
build/test-results/test/TEST-me.itzg.helpers.users.ManageUsersCommandTest$ops.xml 5✅ 66ms
build/test-results/test/TEST-me.itzg.helpers.users.ManageUsersCommandTest$whitelist.xml 9✅ 52ms
build/test-results/test/TEST-me.itzg.helpers.users.ManageUsersCommandTest$whitelistOrOpsText.xml 6✅ 26ms
build/test-results/test/TEST-me.itzg.helpers.vanillatweaks.VanillaTweaksCommandTest.xml 1✅ 49ms
build/test-results/test/TEST-me.itzg.helpers.versions.CompareVersionsCommandTest.xml 12✅ 57ms

✅ build/test-results/test/TEST-me.itzg.helpers.assertcmd.FileExistsTest.xml

7 tests were completed in 191ms with 7 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
me.itzg.helpers.assertcmd.FileExistsTest 7✅ 191ms

✅ me.itzg.helpers.assertcmd.FileExistsTest

✅ failsWhenGlobFailsToFindFiles(Path)
✅ passesWhenGlobFileInWorkingDirectory()
✅ passesWhenGlobFindsAllFiles(Path)
✅ failsWhenSomeMissing(Path)
✅ passesWhenGlobFileSubdir()
✅ passesWhenGlobDoubleStarAndMultipleMatches()
✅ passesWhenAllExist(Path)

✅ build/test-results/test/TEST-me.itzg.helpers.assertcmd.FileNotExistsTest.xml

4 tests were completed in 26ms with 4 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
me.itzg.helpers.assertcmd.FileNotExistsTest 4✅ 26ms

✅ me.itzg.helpers.assertcmd.FileNotExistsTest

✅ passesWhenAllMissing(Path)
✅ passesWhenGlobFindsNothing(Path)
✅ failsWhenAnyExist(Path)
✅ failsWhenGlobFindsAnyFiles(Path)

✅ build/test-results/test/TEST-me.itzg.helpers.assertcmd.JsonPathEqualsTest.xml

6 tests were completed in 185ms with 6 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
me.itzg.helpers.assertcmd.JsonPathEqualsTest 6✅ 185ms

✅ me.itzg.helpers.assertcmd.JsonPathEqualsTest

✅ passesForNumber(Path)
✅ failsForMissingField(Path)
✅ passesForString(Path)
✅ failsForMismatch(Path)
✅ failsForNullField(Path)
✅ failsForMissingFile(Path)

✅ build/test-results/test/TEST-me.itzg.helpers.assertcmd.PropertyEqualsTest.xml

4 tests were completed in 13ms with 4 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
me.itzg.helpers.assertcmd.PropertyEqualsTest 4✅ 13ms

✅ me.itzg.helpers.assertcmd.PropertyEqualsTest

✅ failOnMissingProperty(Path)
✅ successOnMatch(Path)
✅ failOnMismatchProperty(Path)
✅ failOnMissingFile(Path)

✅ build/test-results/test/TEST-me.itzg.helpers.CharsetDetectorTest.xml

2 tests were completed in 46ms with 2 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
me.itzg.helpers.CharsetDetectorTest 2✅ 46ms

✅ me.itzg.helpers.CharsetDetectorTest

✅ canDetectIso8859_1()
✅ canDetectUtf8()

✅ build/test-results/test/TEST-me.itzg.helpers.curseforge.CurseForgeApiClientTest.xml

1 tests were completed in 646ms with 1 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
me.itzg.helpers.curseforge.CurseForgeApiClientTest 1✅ 646ms

✅ me.itzg.helpers.curseforge.CurseForgeApiClientTest

✅ apiKeyHeaderIsTrimmed(WireMockRuntimeInfo)

✅ build/test-results/test/TEST-me.itzg.helpers.curseforge.CurseForgeFilesCommandTest.xml

3 tests were completed in 498ms with 3 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
me.itzg.helpers.curseforge.CurseForgeFilesCommandTest 3✅ 498ms

✅ me.itzg.helpers.curseforge.CurseForgeFilesCommandTest

✅ oneOfEachCategoryAndUpgrade()
✅ handlesDuplicateManifestEntries()
✅ usingListingFile()

✅ build/test-results/test/TEST-me.itzg.helpers.curseforge.CurseForgeInstallerTest.xml

1 tests were completed in 1ms with 0 passed, 0 failed and 1 skipped.

Test suite Passed Failed Skipped Time
me.itzg.helpers.curseforge.CurseForgeInstallerTest 1⚪ 1ms

✅ me.itzg.helpers.curseforge.CurseForgeInstallerTest

⚪ testManual()

✅ build/test-results/test/TEST-me.itzg.helpers.curseforge.FileHashVerifierTest.xml

3 tests were completed in 14ms with 3 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
me.itzg.helpers.curseforge.FileHashVerifierTest 3✅ 14ms

✅ me.itzg.helpers.curseforge.FileHashVerifierTest

✅ handlesInvalid(Path)
✅ validMd5(Path)
✅ validSha1(Path)

✅ build/test-results/test/TEST-me.itzg.helpers.curseforge.ModFileRefResolverTest.xml

5 tests were completed in 127ms with 5 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
me.itzg.helpers.curseforge.ModFileRefResolverTest 5✅ 127ms

✅ me.itzg.helpers.curseforge.ModFileRefResolverTest

✅ [1] 238222:4644453, null, null, null, ModFileIds(modId=238222, fileId=4644453)
✅ [2] jei:4644453, mc-mods, null, null, ModFileIds(modId=238222, fileId=4644453)
✅ [3] [email protected], mc-mods, 1.19.2, Forge, ModFileIds(modId=238222, fileId=4615177)
✅ [4] https://www.curseforge.com/minecraft/mc-mods/jei/files/4644453, null, null, null, ModFileIds(modId=238222, fileId=4644453)
✅ [5] https://www.curseforge.com/minecraft/mc-mods/jei, null, 1.20.1, Fabric, ModFileIds(modId=238222, fileId=4644452)

✅ build/test-results/test/TEST-me.itzg.helpers.curseforge.ModpacksPageUrlParserTest.xml

10 tests were completed in 13ms with 10 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
me.itzg.helpers.curseforge.ModpacksPageUrlParserTest 10✅ 13ms

✅ me.itzg.helpers.curseforge.ModpacksPageUrlParserTest

✅ [1] https://www.curseforge.com/minecraft/modpacks/create-perfect-world
✅ [2] https://beta.curseforge.com/minecraft/modpacks/create-perfect-world
✅ [3] https://www.curseforge.com/minecraft/modpacks/create-perfect-world/
✅ [4] https://www.curseforge.com/minecraft/modpacks/create-perfect-world/files
✅ [5] https://www.curseforge.com/minecraft/modpacks/create-perfect-world/files/
✅ [1] https://www.curseforge.com/minecraft/modpacks/create-perfect-world/files/5181367
✅ [1]
✅ [2] https://www.google.com
✅ [3] https://www.curseforge.com/minecraft/modpacks/create-perfect-world/wrong/
✅ [4] https://www.curseforge.com/minecraft/modpacks/create-perfect-world/invalid/5181367

✅ build/test-results/test/TEST-me.itzg.helpers.env.InterpolatorTest.xml

2 tests were completed in 865ms with 2 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
me.itzg.helpers.env.InterpolatorTest 2✅ 865ms

✅ me.itzg.helpers.env.InterpolatorTest

✅ interpolateToValueWithDollarSign()
✅ typicalReplacements()

✅ build/test-results/test/TEST-me.itzg.helpers.fabric.FabricLauncherInstallerTest.xml

7 tests were completed in 291ms with 6 passed, 0 failed and 1 skipped.

Test suite Passed Failed Skipped Time
me.itzg.helpers.fabric.FabricLauncherInstallerTest 6✅ 1⚪ 291ms

✅ me.itzg.helpers.fabric.FabricLauncherInstallerTest

✅ testUpgradeFromVersionToVersion(WireMockRuntimeInfo)
⚪ forRecordingVersionDiscovery()
✅ testWithLocalLauncherFile()
✅ testInstallUsingVersions_onlyGameVersion(WireMockRuntimeInfo)
✅ testSaveManifest()
✅ testWithProvidedUri_contentDisposition(WireMockRuntimeInfo)
✅ testWithProvidedUri(WireMockRuntimeInfo)

✅ build/test-results/test/TEST-me.itzg.helpers.files.AntPathMatcherTest.xml

4 tests were completed in 15ms with 4 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
me.itzg.helpers.files.AntPathMatcherTest 4✅ 15ms

✅ me.itzg.helpers.files.AntPathMatcherTest

✅ butNotFileSuffixInSubdir()
✅ literal()
✅ fileSuffixTopDir()
✅ fileSuffixInSubdir()

✅ build/test-results/test/TEST-me.itzg.helpers.files.ManifestsTest.xml

1 tests were completed in 18ms with 1 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
me.itzg.helpers.files.ManifestsTest 1✅ 18ms

✅ me.itzg.helpers.files.ManifestsTest

✅ loadFailsGracefullyWhenInvalid()

✅ build/test-results/test/TEST-me.itzg.helpers.files.TabularOutputTest.xml

1 tests were completed in 6ms with 1 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
me.itzg.helpers.files.TabularOutputTest 1✅ 6ms

✅ me.itzg.helpers.files.TabularOutputTest

✅ trimsToLimitAndSuffixes()

✅ build/test-results/test/TEST-me.itzg.helpers.find.FindCommandTest.xml

17 tests were completed in 184ms with 17 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
me.itzg.helpers.find.FindCommandTest 17✅ 184ms

✅ me.itzg.helpers.find.FindCommandTest

✅ emptyWhenNoPatterns()
✅ excludesByDirectory()
✅ appliesMaxDepth()
✅ failsAsExpectedWhenNotFound()
✅ findsShallowestDir()
✅ findsFilesAndDirectories()
✅ failWhenNoArgs()
✅ findsShallowestFile()
✅ excludesByFiles()
✅ outputsCountWhenRequested()
✅ handlesMultipleStartingPoints()
✅ handlesMultipleNames()
✅ stopsOnFirstMatch()
✅ findsDirectoryType()
✅ findsDirectoriesWithinDirectories(Path)
✅ regularSuffixGlob()
✅ acceptsShortFindTypes()

✅ build/test-results/test/TEST-me.itzg.helpers.find.FindCommandTest$appliesMinDepth.xml

3 tests were completed in 15ms with 3 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
me.itzg.helpers.find.FindCommandTest$appliesMinDepth 3✅ 15ms

✅ me.itzg.helpers.find.FindCommandTest$appliesMinDepth

✅ fileInDir()
✅ dirAtStartingPoint()
✅ defaultDepthZero()

✅ build/test-results/test/TEST-me.itzg.helpers.find.FindCommandTest$deletes.xml

6 tests were completed in 36ms with 6 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
me.itzg.helpers.find.FindCommandTest$deletes 6✅ 36ms

✅ me.itzg.helpers.find.FindCommandTest$deletes

✅ directories()
✅ files()
✅ keepEmptyDirectoriesWhenRequested()
✅ nothingWhenNoMatches()
✅ withExcludesByFilesInSubdir()
✅ removesEmptiedDirectoriesByDefault()

✅ build/test-results/test/TEST-me.itzg.helpers.find.FindCommandTest$formatsDirname.xml

3 tests were completed in 15ms with 3 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
me.itzg.helpers.find.FindCommandTest$formatsDirname 3✅ 15ms

✅ me.itzg.helpers.find.FindCommandTest$formatsDirname

✅ atStartingPoint()
✅ oneLevelDeep()
✅ shallowest()

✅ build/test-results/test/TEST-me.itzg.helpers.find.FindCommandTest$formatsRelative.xml

3 tests were completed in 17ms with 3 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
me.itzg.helpers.find.FindCommandTest$formatsRelative 3✅ 17ms

✅ me.itzg.helpers.find.FindCommandTest$formatsRelative

✅ topLevel()
✅ shallowestMultipleStartingPoints()
✅ shallowest()

✅ build/test-results/test/TEST-me.itzg.helpers.forge.NeoForgeInstallerResolverTest.xml

9 tests were completed in 201ms with 9 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
me.itzg.helpers.forge.NeoForgeInstallerResolverTest 9✅ 201ms

✅ me.itzg.helpers.forge.NeoForgeInstallerResolverTest

✅ [1] 1.20.4, beta, 1.20.4, 20.4.62-beta
✅ [2] 1.20.4, latest, null, null
✅ [3] 1.20.2, latest, 1.20.2, 20.2.88
✅ [4] 1.20.2, beta, 1.20.2, 20.2.88
✅ [5] 1.20.3, beta, 1.20.3, 20.3.8-beta
✅ [6] latest, 20.2.85-beta, 1.20.2, 20.2.85-beta
✅ [7] latest, 20.2.88, 1.20.2, 20.2.88
✅ [8] 1.20.1, latest, 1.20.1, 47.1.84
✅ [9] 1.21, beta, 1.21, 21.0.42-beta

✅ build/test-results/test/TEST-me.itzg.helpers.forge.ProvidedInstallerResolverTest.xml

1 tests were completed in 7ms with 1 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
me.itzg.helpers.forge.ProvidedInstallerResolverTest 1✅ 7ms

✅ me.itzg.helpers.forge.ProvidedInstallerResolverTest

✅ resolvesVersionFromFile()

✅ build/test-results/test/TEST-me.itzg.helpers.get.ExistsTest.xml

3 tests were completed in 325ms with 3 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
me.itzg.helpers.get.ExistsTest 3✅ 325ms

✅ me.itzg.helpers.get.ExistsTest

✅ notOkWhenOneMissing()
✅ okWhenExists()
✅ includesAcceptHeader()

✅ build/test-results/test/TEST-me.itzg.helpers.get.GetCommandTest.xml

9 tests were completed in 2s with 9 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
me.itzg.helpers.get.GetCommandTest 9✅ 2s

✅ me.itzg.helpers.get.GetCommandTest

✅ usesGivenAcceptHeader(WireMockRuntimeInfo)
✅ handlesRetryThenFails(WireMockRuntimeInfo)
✅ handlesNotFound(WireMockRuntimeInfo)
✅ handlesRetryOn403ThenSuccess(WireMockRuntimeInfo)
✅ usesBasicAuth(WireMockRuntimeInfo)
✅ handlesExtraSlashAtStartOfPath(WireMockRuntimeInfo)
✅ outputsDownload(WireMockRuntimeInfo)
✅ usesGivenApiKeyHeader(WireMockRuntimeInfo)
✅ tryHttps(WireMockRuntimeInfo)

✅ build/test-results/test/TEST-me.itzg.helpers.get.JsonPathTests.xml

12 tests were completed in 280ms with 12 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
me.itzg.helpers.get.JsonPathTests 12✅ 280ms

✅ me.itzg.helpers.get.JsonPathTests

✅ handlesMissingField_alternateValue()
✅ handlesMissingField_defaultOutputNull()
✅ stringField()
✅ handlesMissingField_errorWhenEmptyValue()
✅ booleanField()
✅ handlesMissingIntermediateField()
✅ useConcatWithListField()
✅ [1] {"values": [{"value": "v1", "name": "one"}, {"value": "v2", "name": "two"}]}, v1
✅ [2] {"values": [{"value": 1, "name": "one"}, {"value": 1, "name": "two"}]}, 1
✅ [3] {"values": [{"value": true, "name": "one"}, {"value": false, "name": "two"}]}, true
✅ handlesJqStylePath()
✅ numberField()

✅ build/test-results/test/TEST-me.itzg.helpers.get.OutputToDirTest.xml

11 tests were completed in 292ms with 11 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
me.itzg.helpers.get.OutputToDirTest 11✅ 292ms

✅ me.itzg.helpers.get.OutputToDirTest

✅ doesntWriteFileWhenNotFound(Path)
✅ saveFileFromGithubRelease(Path)
✅ saveFileLikeBukkit(Path)
✅ multipleUrisConcatenated(Path)
✅ combinesWithUrisFile(Path)
✅ skipsUpToDate(Path)
✅ multipleUrisSeparated(Path)
✅ skipExisting(Path)
✅ pruneDepthIsUsed(Path)
✅ prunesOthers(Path)
✅ skipExistingWithContentDisposition(Path)

✅ build/test-results/test/TEST-me.itzg.helpers.get.OutputToFileTest.xml

8 tests were completed in 188ms with 8 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
me.itzg.helpers.get.OutputToFileTest 8✅ 188ms

✅ me.itzg.helpers.get.OutputToFileTest

✅ skipsUpToDate_butDownloadsWhenAbsent(Path)
✅ doesNotAllowMultipleUris(Path)
✅ succeedsAcceptMatch_commaSeparated(Path)
✅ successful(Path)
✅ skipsUpToDate(Path)
✅ failsAcceptMismatch(Path)
✅ skipExisting(Path)
✅ succeedsAcceptMatch(Path)

✅ build/test-results/test/TEST-me.itzg.helpers.github.DownloadLatestAssetCommandTest.xml

3 tests were completed in 54ms with 3 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
me.itzg.helpers.github.DownloadLatestAssetCommandTest 3✅ 54ms

✅ me.itzg.helpers.github.DownloadLatestAssetCommandTest

✅ usingNamePattern(Path, WireMockRuntimeInfo)
✅ notFound(Path, WireMockRuntimeInfo)
✅ rateLimitExceeded(Path, WireMockRuntimeInfo)

✅ build/test-results/test/TEST-me.itzg.helpers.http.LenientUriConverterTest.xml

3 tests were completed in 2ms with 3 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
me.itzg.helpers.http.LenientUriConverterTest 3✅ 2ms

✅ me.itzg.helpers.http.LenientUriConverterTest

✅ leavesPlusAsIs()
✅ leavesLegalUriAsIs()
✅ convertsSquareBrackets()

✅ build/test-results/test/TEST-me.itzg.helpers.http.ObjectFetchBuilderTest.xml

4 tests were completed in 32ms with 4 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
me.itzg.helpers.http.ObjectFetchBuilderTest 4✅ 32ms

✅ me.itzg.helpers.http.ObjectFetchBuilderTest

✅ verifyAllExpectedHeaders(WireMockRuntimeInfo)
✅ handlesNotFound(WireMockRuntimeInfo)
✅ basicScenario(WireMockRuntimeInfo)
✅ responseHasContentTypeWithCharset(WireMockRuntimeInfo)

✅ build/test-results/test/TEST-me.itzg.helpers.http.ObjectListFetchBuilderTest.xml

1 tests were completed in 8ms with 1 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
me.itzg.helpers.http.ObjectListFetchBuilderTest 1✅ 8ms

✅ me.itzg.helpers.http.ObjectListFetchBuilderTest

✅ testBasicScenario(WireMockRuntimeInfo)

✅ build/test-results/test/TEST-me.itzg.helpers.http.OutputToDirectoryFetchBuilderTest.xml

7 tests were completed in 79ms with 7 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
me.itzg.helpers.http.OutputToDirectoryFetchBuilderTest 7✅ 79ms

✅ me.itzg.helpers.http.OutputToDirectoryFetchBuilderTest

✅ supportsIfModifiedSince(WireMockRuntimeInfo, Path)
✅ tolerateInvalidContentDispositionFileName(WireMockRuntimeInfo, Path)
✅ geyser(WireMockRuntimeInfo, Path)
✅ githubReleaseFile(WireMockRuntimeInfo, Path)
✅ geyserSkipsUpToDate(WireMockRuntimeInfo, Path)
✅ bukkitDoesNotSupportHead(WireMockRuntimeInfo, Path)
✅ basicScenario(WireMockRuntimeInfo, Path)

✅ build/test-results/test/TEST-me.itzg.helpers.http.SpecificFileFetchBuilderTest.xml

3 tests were completed in 15ms with 3 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
me.itzg.helpers.http.SpecificFileFetchBuilderTest 3✅ 15ms

✅ me.itzg.helpers.http.SpecificFileFetchBuilderTest

✅ overwritesWhenNoConstraints(WireMockRuntimeInfo, Path)
✅ handlesNotFound(WireMockRuntimeInfo, Path)
✅ whenRequestSkipNotExists_butExists(WireMockRuntimeInfo, Path)

✅ build/test-results/test/TEST-me.itzg.helpers.modrinth.InstallModrinthModpackCommandTest.xml

7 tests were completed in 223ms with 7 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
me.itzg.helpers.modrinth.InstallModrinthModpackCommandTest 7✅ 223ms

✅ me.itzg.helpers.modrinth.InstallModrinthModpackCommandTest

✅ downloadsAndInstallsModrinthModpack_versionNumberAndAnyLoader(WireMockRuntimeInfo, Path)
✅ createsModrinthModpackManifestForModpackInstallation(WireMockRuntimeInfo, Path)
✅ usesLocalModpackFile(WireMockRuntimeInfo, Path)
✅ removesFilesNoLongerNeedeByUpdatedModpack(WireMockRuntimeInfo, Path)
✅ downloadsAndInstallsGenericModpacksOverHttp(WireMockRuntimeInfo, Path)
✅ downloadsAndInstallsModrinthModpack(WireMockRuntimeInfo, Path)
✅ errorWhenNoCompatibleVersions(WireMockRuntimeInfo, Path)

✅ build/test-results/test/TEST-me.itzg.helpers.modrinth.ModrinthApiClientTest.xml

2 tests were completed in 15ms with 2 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
me.itzg.helpers.modrinth.ModrinthApiClientTest 2✅ 15ms

✅ me.itzg.helpers.modrinth.ModrinthApiClientTest

✅ getBulkProjectsWithUnknownServerSide(WireMockRuntimeInfo)
✅ getVersionsForProject(WireMockRuntimeInfo)

✅ build/test-results/test/TEST-me.itzg.helpers.modrinth.ModrinthApiClientTest$resolveProjectVersion.xml

3 tests were completed in 17ms with 3 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
me.itzg.helpers.modrinth.ModrinthApiClientTest$resolveProjectVersion 3✅ 17ms

✅ me.itzg.helpers.modrinth.ModrinthApiClientTest$resolveProjectVersion

✅ noApplicableVersionsOfType(WireMockRuntimeInfo)
✅ latestExists(WireMockRuntimeInfo)
✅ noFiles(WireMockRuntimeInfo)

✅ build/test-results/test/TEST-me.itzg.helpers.modrinth.ModrinthApiPackFetcherTest.xml

4 tests were completed in 43ms with 4 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
me.itzg.helpers.modrinth.ModrinthApiPackFetcherTest 4✅ 43ms

✅ me.itzg.helpers.modrinth.ModrinthApiPackFetcherTest

✅ testApiFetcherFetchesModpackBySlugAndVersionId(WireMockRuntimeInfo, Path)
✅ testApiFetcherFetchesNumberedVersions(WireMockRuntimeInfo, Path)
✅ testApiFetcherFetchesLatestModpackWhenVersionTypeSpecified(WireMockRuntimeInfo, Path)
✅ testIgnoresMissingFile(WireMockRuntimeInfo, Path)

✅ build/test-results/test/TEST-me.itzg.helpers.modrinth.ModrinthCommandTest.xml

10 tests were completed in 316ms with 10 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
me.itzg.helpers.modrinth.ModrinthCommandTest 10✅ 316ms

✅ me.itzg.helpers.modrinth.ModrinthCommandTest

✅ errorWhenNoApplicableVersion(Path)
✅ handlesDatapacksLatestVersion(Path)
✅ commaNewlineDelimited(Path)
✅ [1] true
✅ [2] false
✅ failsWhenNoDependenciesForModLoader(Path)
✅ newlineDelimited(Path)
✅ [1] NONE
✅ [2] REQUIRED
✅ [3] OPTIONAL

✅ build/test-results/test/TEST-me.itzg.helpers.modrinth.ModrinthHttpPackFetcherTest.xml

1 tests were completed in 7ms with 1 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
me.itzg.helpers.modrinth.ModrinthHttpPackFetcherTest 1✅ 7ms

✅ me.itzg.helpers.modrinth.ModrinthHttpPackFetcherTest

✅ fetchesMrpackViaHttp(WireMockRuntimeInfo, Path)

✅ build/test-results/test/TEST-me.itzg.helpers.modrinth.ModrinthPackInstallerTest.xml

16 tests were completed in 95ms with 16 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
me.itzg.helpers.modrinth.ModrinthPackInstallerTest 16✅ 95ms

✅ me.itzg.helpers.modrinth.ModrinthPackInstallerTest

✅ [1] mods/client-mod.jar, client-mod, false
✅ [2] mods/ClientMod.jar, clientmod, false
✅ [3] mods/client-mod.jar, client-mod, true
✅ [4] mods/ClientMod.jar, clientmod, true
✅ installReturnsTheModpackIndexAndInstalledFiles(WireMockRuntimeInfo, Path)
✅ handlesOverrides(WireMockRuntimeInfo, Path)
✅ [1] forge, 111
✅ [2] neoforge, 222
✅ [3] fabricLoader, 333
✅ [4] quiltLoader, 444
✅ sanitizesModFilePath(WireMockRuntimeInfo, Path)
✅ [1] extra/file.txt
✅ [2] extra/*.txt
✅ [3] **/*.txt
✅ [4] extra/**
✅ installDownloadsDependentFilesToInstallation(WireMockRuntimeInfo, Path)

✅ build/test-results/test/TEST-me.itzg.helpers.modrinth.ProjectRefTest.xml

19 tests were completed in 15ms with 19 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
me.itzg.helpers.modrinth.ProjectRefTest 19✅ 15ms

✅ me.itzg.helpers.modrinth.ProjectRefTest

✅ fromPossibleUrlExtractsProjectSlugFromUrl()
✅ constructorPullsProjectSlugFromURI()
✅ fromPossibleUrlDefaultsToGeneratingRefWithPassedValues()
✅ [1] slug.mrpack
✅ [2] /slug.mrpack
✅ [3] /abs/slug.mrpack
✅ [4] rel/slug.mrpack
✅ [5] slug
✅ testProjectRefHasProjectSlug()
✅ testProjectRefHasVersionTypeWhenVersionIsType()
✅ testProjectRefHasVersionIDWhenVersionIs8CharAlphaNum()
✅ fromPossibleUrlExtractsProjectVersionFromUrlWhenPresent()
✅ testProjectRefHasVersionNameForOtherValues()
✅ [1] just slugId
✅ [2] datapack
✅ [3] with version ID
✅ [4] with version type
✅ [5] with version name
✅ fromPossibleUrlCreatesProjectRefWithProjectUrlWhenUrlIsNotModrinthProject()

✅ build/test-results/test/TEST-me.itzg.helpers.mvn.MavenRepoApiTest.xml

3 tests were completed in 48ms with 3 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
me.itzg.helpers.mvn.MavenRepoApiTest 3✅ 48ms

✅ me.itzg.helpers.mvn.MavenRepoApiTest

✅ [1] false, false
✅ [2] true, false
✅ [3] true, true

✅ build/test-results/test/TEST-me.itzg.helpers.paper.PaperDownloadsClientTest.xml

4 tests were completed in 40ms with 4 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
me.itzg.helpers.paper.PaperDownloadsClientTest 4✅ 40ms

✅ me.itzg.helpers.paper.PaperDownloadsClientTest

✅ getLatestBuild_butNoMatchingChannel(WireMockRuntimeInfo)
✅ getLatestBuild(WireMockRuntimeInfo)
✅ getLatestVersionBuild_withExperimentalThenMix(WireMockRuntimeInfo)
✅ getLatestVersionBuild_wantsExperimental(WireMockRuntimeInfo)

✅ build/test-results/test/TEST-me.itzg.helpers.patch.PatchSetProcessorTest.xml

7 tests were completed in 126ms with 7 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
me.itzg.helpers.patch.PatchSetProcessorTest 7✅ 126ms

✅ me.itzg.helpers.patch.PatchSetProcessorTest

✅ setNativeTypes(Path)
✅ resolvesFileNameFromEnv(Path)
✅ setWithEnv(Path)
✅ setInJson(Path)
✅ setInToml(Path)
✅ setInYaml(Path)
✅ setInJson5(Path)

✅ build/test-results/test/TEST-me.itzg.helpers.patch.ValueTypeConverterTest.xml

17 tests were completed in 24ms with 17 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
me.itzg.helpers.patch.ValueTypeConverterTest 17✅ 24ms

✅ me.itzg.helpers.patch.ValueTypeConverterTest

✅ [1] int, 5, 5
✅ [2] float, 5.1, 5.1
✅ [3] bool, true, true
✅ [4] auto, 5, 5
✅ [5] auto, 5.1, 5.1
✅ [6] auto, true, true
✅ [7] auto, yes, true
✅ [8] auto, no, false
✅ [9] auto, false, false
✅ [10] auto, something else, something else
✅ [11] null, 5, 5
✅ [12] null, true, true
✅ [13] null, something else, something else
✅ [14] list of int, 5,6,7, [5, 6, 7]
✅ [15] list of float, 5.1,6.2,7.3, [5.1, 6.2, 7.3]
✅ [16] list of bool, true,yes,no,false, [true, true, false, false]
✅ [17] list of string, 5,6.2,testing,false, [5, 6.2, testing, false]

✅ build/test-results/test/TEST-me.itzg.helpers.properties.SetPropertiesCommandTest.xml

18 tests were completed in 84ms with 18 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
me.itzg.helpers.properties.SetPropertiesCommandTest 18✅ 84ms

✅ me.itzg.helpers.properties.SetPropertiesCommandTest

✅ simpleNeedsChange()
✅ encodesWithGivenEncoding()
✅ handlesNewCustomProperty()
✅ hasMapping()
✅ disallowedValue()
✅ removesMarkedForRemoval()
✅ handlesModifiedCustomProperties()
✅ encodesPreEscaped()
✅ [1] simple, simple
✅ [2] Running %MODPACK_NAME%, Running modpack
✅ [3] Running %env:MODPACK_NAME%, Running modpack
✅ [4] Running %MODPACK_NAME% at %MODPACK_VERSION%, Running modpack at version
✅ [5] Date is %date:yyyy-MM-dd%, Date is 2007-12-03
✅ [6] Stays %UNKNOWN%, Stays %UNKNOWN%
✅ [7] %%, %%
✅ [8] %MODPACK_NAME% and stray %, modpack and stray %
✅ [1] with-unicode.txt
✅ [2] with-escapes.txt

✅ build/test-results/test/TEST-me.itzg.helpers.singles.HashCommandTest.xml

1 tests were completed in 4ms with 1 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
me.itzg.helpers.singles.HashCommandTest 1✅ 4ms

✅ me.itzg.helpers.singles.HashCommandTest

✅ simple()

✅ build/test-results/test/TEST-me.itzg.helpers.singles.YamlPathCmdTest.xml

1 tests were completed in 3ms with 1 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
me.itzg.helpers.singles.YamlPathCmdTest 1✅ 3ms

✅ me.itzg.helpers.singles.YamlPathCmdTest

✅ pickOutFieldFromServerSetupConfig()

✅ build/test-results/test/TEST-me.itzg.helpers.sync.InterpolatingFileProcessorTest.xml

2 tests were completed in 55ms with 2 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
me.itzg.helpers.sync.InterpolatingFileProcessorTest 2✅ 55ms

✅ me.itzg.helpers.sync.InterpolatingFileProcessorTest

✅ processFileEnv(Path)
✅ processFile(Path)

✅ build/test-results/test/TEST-me.itzg.helpers.sync.MulitCopyCommandTest$DirectorySrc.xml

4 tests were completed in 23ms with 4 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
me.itzg.helpers.sync.MulitCopyCommandTest$DirectorySrc 4✅ 23ms

✅ me.itzg.helpers.sync.MulitCopyCommandTest$DirectorySrc

✅ handlesUpdatedFile()
✅ noGlob()
✅ withGlob()
✅ managedWithManifest()

✅ build/test-results/test/TEST-me.itzg.helpers.sync.MulitCopyCommandTest$FileListingSrc.xml

1 tests were completed in 3ms with 1 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
me.itzg.helpers.sync.MulitCopyCommandTest$FileListingSrc 1✅ 3ms

✅ me.itzg.helpers.sync.MulitCopyCommandTest$FileListingSrc

✅ justFiles()

✅ build/test-results/test/TEST-me.itzg.helpers.sync.MulitCopyCommandTest$FileSrc.xml

2 tests were completed in 9ms with 2 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
me.itzg.helpers.sync.MulitCopyCommandTest$FileSrc 2✅ 9ms

✅ me.itzg.helpers.sync.MulitCopyCommandTest$FileSrc

✅ one()
✅ commaDelimited()

✅ build/test-results/test/TEST-me.itzg.helpers.sync.MulitCopyCommandTest$RemoteSrc.xml

3 tests were completed in 40ms with 3 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
me.itzg.helpers.sync.MulitCopyCommandTest$RemoteSrc 3✅ 40ms

✅ me.itzg.helpers.sync.MulitCopyCommandTest$RemoteSrc

✅ listingOfRemoteFiles(WireMockRuntimeInfo)
✅ remoteListingOfRemoteFiles(WireMockRuntimeInfo)
✅ remoteFile(WireMockRuntimeInfo)

✅ build/test-results/test/TEST-me.itzg.helpers.users.ManageUsersCommandTest$file.xml

9 tests were completed in 75ms with 9 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
me.itzg.helpers.users.ManageUsersCommandTest$file 9✅ 75ms

✅ me.itzg.helpers.users.ManageUsersCommandTest$file

✅ [1] JAVA_WHITELIST
✅ [2] JAVA_OPS
✅ [1] JAVA_WHITELIST
✅ [2] JAVA_OPS
✅ handlesSameInputFileAsOutput(WireMockRuntimeInfo)
✅ [1] JAVA_WHITELIST
✅ [2] JAVA_OPS
✅ [1] JAVA_WHITELIST
✅ [2] JAVA_OPS

✅ build/test-results/test/TEST-me.itzg.helpers.users.ManageUsersCommandTest$ops.xml

5 tests were completed in 66ms with 5 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
me.itzg.helpers.users.ManageUsersCommandTest$ops 5✅ 66ms

✅ me.itzg.helpers.users.ManageUsersCommandTest$ops

✅ [1] mojang
✅ [2] playerdb
✅ givenNamesAndAllExist(WireMockRuntimeInfo)
✅ [1] mojang
✅ [2] playerdb

✅ build/test-results/test/TEST-me.itzg.helpers.users.ManageUsersCommandTest$whitelist.xml

9 tests were completed in 52ms with 9 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
me.itzg.helpers.users.ManageUsersCommandTest$whitelist 9✅ 52ms

✅ me.itzg.helpers.users.ManageUsersCommandTest$whitelist

✅ allRemoved(WireMockRuntimeInfo)
✅ givenNames(WireMockRuntimeInfo)
✅ givenNamesAndAllExist(WireMockRuntimeInfo)
✅ merge(WireMockRuntimeInfo)
✅ fromScratchGivenIdAndUuid(WireMockRuntimeInfo)
✅ skipExisting(WireMockRuntimeInfo)
✅ oneLessInList(WireMockRuntimeInfo)
✅ givenUuidsAndAllExist(WireMockRuntimeInfo)
✅ givenNameExistsInCache(WireMockRuntimeInfo)

✅ build/test-results/test/TEST-me.itzg.helpers.users.ManageUsersCommandTest$whitelistOrOpsText.xml

6 tests were completed in 26ms with 6 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
me.itzg.helpers.users.ManageUsersCommandTest$whitelistOrOpsText 6✅ 26ms

✅ me.itzg.helpers.users.ManageUsersCommandTest$whitelistOrOpsText

✅ [1] JAVA_WHITELIST
✅ [2] JAVA_OPS
✅ [1] JAVA_WHITELIST
✅ [2] JAVA_OPS
✅ [1] JAVA_WHITELIST
✅ [2] JAVA_OPS

✅ build/test-results/test/TEST-me.itzg.helpers.vanillatweaks.VanillaTweaksCommandTest.xml

1 tests were completed in 49ms with 1 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
me.itzg.helpers.vanillatweaks.VanillaTweaksCommandTest 1✅ 49ms

✅ me.itzg.helpers.vanillatweaks.VanillaTweaksCommandTest

✅ testOneOfEachSharecode(WireMockRuntimeInfo, Path)

✅ build/test-results/test/TEST-me.itzg.helpers.versions.CompareVersionsCommandTest.xml

12 tests were completed in 57ms with 12 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
me.itzg.helpers.versions.CompareVersionsCommandTest 12✅ 57ms

✅ me.itzg.helpers.versions.CompareVersionsCommandTest

✅ failsUsageWithBlankVersion()
✅ noArgs()
✅ [1] 1.18, lt, 1.18.1, 0
✅ [2] 1.18.1, lt, 1.18.1, 1
✅ [3] 1.12.1, lt, 1.12.2, 0
✅ [4] b1.7.3, lt, 1.18, 0
✅ [5] b1.7.3, lt, b1.6, 1
✅ [6] a1.4, lt, b1.7.3, 0
✅ [7] 1.18, lt, a1.4, 1
✅ [8] 1.18.1-rc3, lt, 1.18.1, 0
✅ [9] 21w44a, lt, 1.18.1, 1
✅ [10] 21w44a, lt, 1.18.1, 1