Remove user message dependency from level validators

This commit is contained in:
Joe Tretter
2026-06-26 18:10:48 -05:00
parent 4b94173ae5
commit caaf26a541
3 changed files with 26 additions and 7 deletions

View File

@@ -24,10 +24,20 @@ internal fun revertLevel(): Level = level(
addCommit("Second commit", "file2")
true
},
validator = repoPredicate { repo -> repo.commits.any { it.message.startsWith("Revert") } },
validator = repoPredicate { repo ->
repo.headBranch == "master" &&
repo.commits.size >= 4 &&
repo.commits.firstOrNull()?.parentCount == 1 &&
repo.files.none { it.name == "file3" && !it.deleted } &&
repo.commits.map { it.message }.containsAll(listOf("First commit", "Bad commit", "Second commit"))
},
testCases = listOf(
levelTestCase("revert middle commit", "git revert HEAD~1"),
levelTestCase("revert middle commit without editor", "git revert --no-edit HEAD~1"),
levelTestCase("revert caret commit", "git revert HEAD^"),
levelTestCase("revert without commit then arbitrary message", "git revert -n HEAD~1", "git commit -m \"Undo unwanted file\""),
),
negativeTestCases = listOf(
levelTestCase("revert without replacement commit", "git revert -n HEAD~1"),
),
)