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

forge: support CleanroomMC installer #516

Merged
merged 1 commit into from
Feb 2, 2025

forge: support CleanroomMC installer

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

forge: support CleanroomMC installer #516

forge: support CleanroomMC installer
73ad09b
Select commit
Loading
Failed to load commit list.
GitHub Actions / test results succeeded Feb 2, 2025 in 0s

337 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✅ 162ms
build/test-results/test/TEST-me.itzg.helpers.assertcmd.FileNotExistsTest.xml 4✅ 22ms
build/test-results/test/TEST-me.itzg.helpers.assertcmd.JsonPathEqualsTest.xml 6✅ 188ms
build/test-results/test/TEST-me.itzg.helpers.assertcmd.PropertyEqualsTest.xml 4✅ 14ms
build/test-results/test/TEST-me.itzg.helpers.CharsetDetectorTest.xml 2✅ 51ms
build/test-results/test/TEST-me.itzg.helpers.curseforge.CurseForgeApiClientTest.xml 1✅ 553ms
build/test-results/test/TEST-me.itzg.helpers.curseforge.CurseForgeFilesCommandTest.xml 3✅ 465ms
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✅ 15ms
build/test-results/test/TEST-me.itzg.helpers.curseforge.ModFileRefResolverTest.xml 5✅ 112ms
build/test-results/test/TEST-me.itzg.helpers.curseforge.ModpacksPageUrlParserTest.xml 10✅ 12ms
build/test-results/test/TEST-me.itzg.helpers.env.InterpolatorTest.xml 2✅ 925ms
build/test-results/test/TEST-me.itzg.helpers.fabric.FabricLauncherInstallerTest.xml 6✅ 1⚪ 454ms
build/test-results/test/TEST-me.itzg.helpers.files.AntPathMatcherTest.xml 4✅ 7ms
build/test-results/test/TEST-me.itzg.helpers.files.ManifestsTest.xml 1✅ 32ms
build/test-results/test/TEST-me.itzg.helpers.files.TabularOutputTest.xml 1✅ 2ms
build/test-results/test/TEST-me.itzg.helpers.find.FindCommandTest.xml 17✅ 170ms
build/test-results/test/TEST-me.itzg.helpers.find.FindCommandTest$appliesMinDepth.xml 3✅ 14ms
build/test-results/test/TEST-me.itzg.helpers.find.FindCommandTest$deletes.xml 6✅ 45ms
build/test-results/test/TEST-me.itzg.helpers.find.FindCommandTest$formatsDirname.xml 3✅ 17ms
build/test-results/test/TEST-me.itzg.helpers.find.FindCommandTest$formatsRelative.xml 3✅ 29ms
build/test-results/test/TEST-me.itzg.helpers.forge.NeoForgeInstallerResolverTest.xml 11✅ 274ms
build/test-results/test/TEST-me.itzg.helpers.forge.ProvidedInstallerResolverTest.xml 4✅ 14ms
build/test-results/test/TEST-me.itzg.helpers.get.ExistsTest.xml 3✅ 276ms
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✅ 334ms
build/test-results/test/TEST-me.itzg.helpers.get.OutputToDirTest.xml 11✅ 240ms
build/test-results/test/TEST-me.itzg.helpers.get.OutputToFileTest.xml 8✅ 141ms
build/test-results/test/TEST-me.itzg.helpers.github.DownloadLatestAssetCommandTest.xml 3✅ 51ms
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✅ 25ms
build/test-results/test/TEST-me.itzg.helpers.http.ObjectListFetchBuilderTest.xml 1✅ 6ms
build/test-results/test/TEST-me.itzg.helpers.http.OutputToDirectoryFetchBuilderTest.xml 7✅ 66ms
build/test-results/test/TEST-me.itzg.helpers.http.SpecificFileFetchBuilderTest.xml 3✅ 12ms
build/test-results/test/TEST-me.itzg.helpers.modrinth.InstallModrinthModpackCommandTest.xml 7✅ 220ms
build/test-results/test/TEST-me.itzg.helpers.modrinth.ModrinthApiClientTest.xml 2✅ 12ms
build/test-results/test/TEST-me.itzg.helpers.modrinth.ModrinthApiClientTest$resolveProjectVersion.xml 3✅ 26ms
build/test-results/test/TEST-me.itzg.helpers.modrinth.ModrinthApiPackFetcherTest.xml 4✅ 54ms
build/test-results/test/TEST-me.itzg.helpers.modrinth.ModrinthCommandTest.xml 10✅ 268ms
build/test-results/test/TEST-me.itzg.helpers.modrinth.ModrinthHttpPackFetcherTest.xml 1✅ 8ms
build/test-results/test/TEST-me.itzg.helpers.modrinth.ModrinthPackInstallerTest.xml 16✅ 87ms
build/test-results/test/TEST-me.itzg.helpers.modrinth.ProjectRefTest.xml 19✅ 47ms
build/test-results/test/TEST-me.itzg.helpers.mvn.MavenRepoApiTest.xml 3✅ 50ms
build/test-results/test/TEST-me.itzg.helpers.paper.PaperDownloadsClientTest.xml 4✅ 42ms
build/test-results/test/TEST-me.itzg.helpers.patch.PatchSetProcessorTest.xml 7✅ 68ms
build/test-results/test/TEST-me.itzg.helpers.patch.ValueTypeConverterTest.xml 17✅ 12ms
build/test-results/test/TEST-me.itzg.helpers.properties.SetPropertiesCommandTest.xml 18✅ 72ms
build/test-results/test/TEST-me.itzg.helpers.singles.HashCommandTest.xml 1✅ 3ms
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✅ 24ms
build/test-results/test/TEST-me.itzg.helpers.sync.MulitCopyCommandTest$FileListingSrc.xml 1✅ 4ms
build/test-results/test/TEST-me.itzg.helpers.sync.MulitCopyCommandTest$FileSrc.xml 2✅ 7ms
build/test-results/test/TEST-me.itzg.helpers.sync.MulitCopyCommandTest$RemoteSrc.xml 3✅ 35ms
build/test-results/test/TEST-me.itzg.helpers.users.ManageUsersCommandTest$file.xml 9✅ 119ms
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✅ 46ms
build/test-results/test/TEST-me.itzg.helpers.users.ManageUsersCommandTest$whitelistOrOpsText.xml 6✅ 24ms
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✅ 44ms

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

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

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

✅ 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 22ms with 4 passed, 0 failed and 0 skipped.

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

✅ 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 188ms with 6 passed, 0 failed and 0 skipped.

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

✅ 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 14ms with 4 passed, 0 failed and 0 skipped.

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

✅ 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 51ms with 2 passed, 0 failed and 0 skipped.

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

✅ me.itzg.helpers.CharsetDetectorTest

✅ canDetectIso8859_1()
✅ canDetectUtf8()

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

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

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

✅ me.itzg.helpers.curseforge.CurseForgeApiClientTest

✅ apiKeyHeaderIsTrimmed(WireMockRuntimeInfo)

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

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

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

✅ 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 15ms with 3 passed, 0 failed and 0 skipped.

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

✅ 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 112ms with 5 passed, 0 failed and 0 skipped.

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

✅ 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 12ms with 10 passed, 0 failed and 0 skipped.

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

✅ 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 925ms with 2 passed, 0 failed and 0 skipped.

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

✅ me.itzg.helpers.env.InterpolatorTest

✅ interpolateToValueWithDollarSign()
✅ typicalReplacements()

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

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

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

✅ 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 7ms with 4 passed, 0 failed and 0 skipped.

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

✅ 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 32ms with 1 passed, 0 failed and 0 skipped.

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

✅ me.itzg.helpers.files.ManifestsTest

✅ loadFailsGracefullyWhenInvalid()

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

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

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

✅ me.itzg.helpers.files.TabularOutputTest

✅ trimsToLimitAndSuffixes()

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

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

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

✅ 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 14ms with 3 passed, 0 failed and 0 skipped.

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

✅ 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 45ms with 6 passed, 0 failed and 0 skipped.

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

✅ 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 17ms with 3 passed, 0 failed and 0 skipped.

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

✅ 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 29ms with 3 passed, 0 failed and 0 skipped.

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

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

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

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

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

Test suite Passed Failed Skipped Time
me.itzg.helpers.forge.NeoForgeInstallerResolverTest 11✅ 274ms

✅ me.itzg.helpers.forge.NeoForgeInstallerResolverTest

✅ [1] 1.20.4, beta, 1.20.4, 20.4.166-beta
✅ [2] 1.21.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.85-beta
✅ [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.142-beta
✅ [10] latest, beta, 1.21.4, 21.4.48-beta
✅ [11] latest, latest, 1.21.1, 21.1.93

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

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

Test suite Passed Failed Skipped Time
me.itzg.helpers.forge.ProvidedInstallerResolverTest 4✅ 14ms

✅ me.itzg.helpers.forge.ProvidedInstallerResolverTest

✅ [1] version-forge-1.20.2.json, 1.20.2, 48.1.0
✅ [2] version-forge-1.12.2.json, 1.12.2, 14.23.5.2860
✅ [3] version-cleanroom.json, 1.12.2, 0.2.4-alpha
✅ resolvesVersionFromFile()

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

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

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

✅ 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 334ms with 12 passed, 0 failed and 0 skipped.

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

✅ 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 240ms with 11 passed, 0 failed and 0 skipped.

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

✅ 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 141ms with 8 passed, 0 failed and 0 skipped.

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

✅ 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 51ms with 3 passed, 0 failed and 0 skipped.

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

✅ 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 25ms with 4 passed, 0 failed and 0 skipped.

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

✅ 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 6ms with 1 passed, 0 failed and 0 skipped.

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

✅ me.itzg.helpers.http.ObjectListFetchBuilderTest

✅ testBasicScenario(WireMockRuntimeInfo)

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

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

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

✅ 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 12ms with 3 passed, 0 failed and 0 skipped.

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

✅ 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 220ms with 7 passed, 0 failed and 0 skipped.

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

✅ 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 12ms with 2 passed, 0 failed and 0 skipped.

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

✅ 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 26ms with 3 passed, 0 failed and 0 skipped.

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

✅ 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 54ms with 4 passed, 0 failed and 0 skipped.

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

✅ 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 268ms with 10 passed, 0 failed and 0 skipped.

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

✅ 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 8ms with 1 passed, 0 failed and 0 skipped.

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

✅ me.itzg.helpers.modrinth.ModrinthHttpPackFetcherTest

✅ fetchesMrpackViaHttp(WireMockRuntimeInfo, Path)

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

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

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

✅ 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 47ms with 19 passed, 0 failed and 0 skipped.

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

✅ 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 50ms with 3 passed, 0 failed and 0 skipped.

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

✅ 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 42ms with 4 passed, 0 failed and 0 skipped.

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

✅ 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 68ms with 7 passed, 0 failed and 0 skipped.

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

✅ 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 12ms with 17 passed, 0 failed and 0 skipped.

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

✅ 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 72ms with 18 passed, 0 failed and 0 skipped.

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

✅ 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 3ms with 1 passed, 0 failed and 0 skipped.

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

✅ 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 24ms with 4 passed, 0 failed and 0 skipped.

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

✅ 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 4ms with 1 passed, 0 failed and 0 skipped.

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

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

✅ justFiles()

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

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

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

✅ 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 35ms with 3 passed, 0 failed and 0 skipped.

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

✅ 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 119ms with 9 passed, 0 failed and 0 skipped.

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

✅ 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 46ms with 9 passed, 0 failed and 0 skipped.

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

✅ 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 24ms with 6 passed, 0 failed and 0 skipped.

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

✅ 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 44ms with 12 passed, 0 failed and 0 skipped.

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

✅ 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