diff --git a/tools/debt_split.py b/tools/debt_split.py index bfb7f9d52..c344192ec 100644 --- a/tools/debt_split.py +++ b/tools/debt_split.py @@ -170,7 +170,7 @@ def apply_change(root, base, new, index_text): position = entries.index(anchored) + 1 entries.insert(position, moved) - matcher = difflib.SequenceMatcher(None, [entry[2] for entry in before], [entry[2] for entry in after], autojunk=False) + matcher = difflib.SequenceMatcher(None, [entry[1:3] for entry in before], [entry[1:3] for entry in after], autojunk=False) for tag, i1, i2, j1, j2 in matcher.get_opcodes(): if tag == "equal": continue diff --git a/tools/tests/test_debt_split.py b/tools/tests/test_debt_split.py index 1b5c9acc3..a9bb72e27 100644 --- a/tools/tests/test_debt_split.py +++ b/tools/tests/test_debt_split.py @@ -110,6 +110,27 @@ class DebtSplitTests(unittest.TestCase): self.assertFalse((self.root / "docs/dev/debt/libSceC.md").exists()) self.assertEqual(self.read(INDEX), self.git("show", "main:" + INDEX).stdout) + def test_resolve_moves_unchanged_entry_to_functional(self): + result = self.rebase([A_STUB, B_STUB], [C_STUB, A_FUNCTIONAL, SHADER, SHARED]) + self.assertEqual(result.returncode, 0, result.stdout + result.stderr) + self.assertEqual(self.git("diff", "--name-only", "--diff-filter=U").stdout, "") + self.git("rebase", "--continue") + self.assertEqual(self.read("docs/dev/debt/libSceC.md"), + "# libSceC technical debt\n\n### Functional\n\n" + C_STUB.replace("../../", "../../../") + "\n") + self.assertEqual(result.stdout.split(), ["docs/dev/debt/libSceC.md"]) + self.assertEqual(self.read(INDEX), self.git("show", "main:" + INDEX).stdout) + + def test_resolve_moves_unchanged_entry_to_silent_stubs(self): + result = self.rebase([A_STUB, B_STUB, C_STUB, A_FUNCTIONAL], [SHADER, SHARED]) + self.assertEqual(result.returncode, 0, result.stdout + result.stderr) + self.assertEqual(self.git("diff", "--name-only", "--diff-filter=U").stdout, "") + self.git("rebase", "--continue") + self.assertEqual(self.read("docs/dev/debt/libSceA.md"), + "# libSceA technical debt\n\n### Silent stubs\n\n" + A_STUB.replace("../../", "../../../") + + "\n" + A_FUNCTIONAL.replace("../../", "../../../") + "\n") + self.assertEqual(result.stdout.split(), ["docs/dev/debt/libSceA.md"]) + self.assertEqual(self.read(INDEX), self.git("show", "main:" + INDEX).stdout) + def test_resolve_refuses_changes_to_lines_that_stay_in_the_index(self): result = self.rebase([A_STUB, B_STUB, C_STUB], [A_FUNCTIONAL, SHADER, SHARED + " too"]) self.assertNotEqual(result.returncode, 0)