Tighten Rm level validation
- Require the Rm level to stage or remove the tracked deleted file instead of treating the initial deleted worktree state as solved. - Add a regression test proving read-only commands such as `ls` do not complete the Rm level. - Verify the full JVM level solution suite with the compiled host Git runtime.
This commit is contained in:
@@ -19,8 +19,8 @@ android {
|
||||
applicationId = "solutions.tretter.githugandroid"
|
||||
minSdk = 26
|
||||
targetSdk = 35
|
||||
versionCode = 125
|
||||
versionName = "0.1.124"
|
||||
versionCode = 126
|
||||
versionName = "0.1.125"
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
vectorDrawables.useSupportLibrary = true
|
||||
|
||||
@@ -14,7 +14,10 @@ internal fun rmLevel(): Level = level(
|
||||
hints = emptyList(),
|
||||
commandSuggestions = listOf("git status", "git rm deleteme.rb"),
|
||||
setup = { RepoState(initialized = true, files = listOf(GitFile("deleteme.rb", tracked = true, deleted = true)), commits = listOf(CommitNode("0000001", "Added a temp file")), branches = mapOf("master" to 1)) },
|
||||
validator = repoPredicate { repo -> repo.files.none { it.name == "deleteme.rb" && !it.deleted } || repo.files.any { it.name == "deleteme.rb" && it.deleted && it.staged } },
|
||||
validator = repoPredicate { repo ->
|
||||
repo.files.none { it.name == "deleteme.rb" } ||
|
||||
repo.files.any { it.name == "deleteme.rb" && it.deleted && it.staged }
|
||||
},
|
||||
testCases = listOf(
|
||||
levelTestCase("git rm deleted path", "git rm deleteme.rb"),
|
||||
),
|
||||
|
||||
@@ -37,6 +37,16 @@ class GitSandboxEngineTest {
|
||||
assertFalse(updatedRepo.files.any { it.name == "deleteme.rb" })
|
||||
}
|
||||
|
||||
@Test
|
||||
fun rmLevelIsNotSolvedByReadOnlyCommands() {
|
||||
val level = rmLevel()
|
||||
val repo = level.setup()
|
||||
|
||||
val (updatedRepo, _) = GitSandboxEngine.execute(repo, "ls")
|
||||
|
||||
assertFalse(level.validator(updatedRepo, "ls"))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun gitMvExpandsWildcardSourcesIntoDestinationDirectory() {
|
||||
val repo = RepoState(
|
||||
|
||||
Reference in New Issue
Block a user