Accept alternate squash solution

- validate the upstream requirement of exactly two commits
- accept soft reset followed by a replacement commit
- reject resetting to one commit without creating the squashed commit
- document squash validation parity
This commit is contained in:
Joe Tretter
2026-06-08 15:12:28 -05:00
parent 06c60356e5
commit a70350000c
3 changed files with 12 additions and 4 deletions

View File

@@ -19,8 +19,8 @@ android {
applicationId = "solutions.tretter.githugandroid"
minSdk = 26
targetSdk = 35
versionCode = 169
versionName = "0.1.168"
versionCode = 170
versionName = "0.1.169"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables.useSupportLibrary = true

View File

@@ -28,11 +28,19 @@ internal fun squashLevel(): Level = level(
addCommit("Updating README (squash this commit into Adding README)", "README")
true
},
validator = repoPredicate { repo -> repo.commits.size <= 2 && repo.commits.any { it.message == "Adding README" } },
validator = repoPredicate { repo -> repo.commits.size == 2 },
testCases = listOf(
levelTestCase(
"interactive squash",
"GIT_SEQUENCE_EDITOR=\"sed -i '2,\$s/^pick /squash /'\" GIT_EDITOR=true git rebase -i HEAD~4",
),
levelTestCase(
"soft reset and recommit",
"git reset --soft HEAD~4",
"git commit -m \"New commit message\"",
),
),
negativeTestCases = listOf(
levelTestCase("reset without replacement commit", "git reset --soft HEAD~4"),
),
)