diff --git a/gitgud/skills/level_builder.py b/gitgud/skills/level_builder.py index 064a978f..d5517f54 100644 --- a/gitgud/skills/level_builder.py +++ b/gitgud/skills/level_builder.py @@ -55,7 +55,7 @@ def goal(self): pass def status(self): - show_level_name(self) + show_tree() def has_ever_been_completed(self): return self._test() @@ -148,7 +148,7 @@ def solution(self): for command in solution: print(command) - def _test(self): + def get_trees(self): file_operator = operations.get_operator() commits, head = parse_spec(self.file('test.spec')) @@ -173,8 +173,11 @@ def _test(self): # Name merges name_merges(level_tree, test_tree) + return level_tree, test_tree + + def _test(self): # Test for similarity - return test_ancestry(level_tree, test_tree) + return test_ancestry(*self.get_trees()) def test_passed(self): if self.file('passed.txt').exists(): diff --git a/gitgud/skills/parsing.py b/gitgud/skills/parsing.py index 40b17886..2d5093e9 100644 --- a/gitgud/skills/parsing.py +++ b/gitgud/skills/parsing.py @@ -226,7 +226,7 @@ def name_merges(skill, test): def test_ancestry(skill, test): - # Tests that the graph of the git history matches + # Tests that the graph of the git history matches exactly if not check_commits(skill, test): return False diff --git a/gitgud/skills/rewriting/__init__.py b/gitgud/skills/rewriting/__init__.py index a3469a0c..3282ef0a 100644 --- a/gitgud/skills/rewriting/__init__.py +++ b/gitgud/skills/rewriting/__init__.py @@ -17,5 +17,6 @@ def status(self): 'Rewriting History', 'rewriting', [ + BasicLevel('A Backwards Level', 'backwards', __name__) ] ) diff --git a/gitgud/skills/rewriting/_backwards/details.yaml b/gitgud/skills/rewriting/_backwards/details.yaml new file mode 100644 index 00000000..722e6623 --- /dev/null +++ b/gitgud/skills/rewriting/_backwards/details.yaml @@ -0,0 +1,46 @@ +'1': + message: "This" + add-files: + This.txt: + - "Hello, this file doesn't do anything" +'2': + message: "level" + add-files: + level.txt: + - "Hello, this file doesn't do anything" +'3': + message: "has" + add-files: + has.txt: + - "Hello, this file doesn't do anything" +'4': + message: "to" + add-files: + to.txt: + - "Hello, this file doesn't do anything" +'5': + message: "be" + add-files: + be.txt: + - "Hello, this file doesn't do anything" +'6': + message: "done" + add-files: + done.txt: + - "Hello, this file doesn't do anything" +'7': + message: "in" + add-files: + in.txt: + - "Hello, this file doesn't do anything" +'8': + message: "reverse" + add-files: + reverse.txt: + - "Hello, this file doesn't do anything" +'9': + message: "order" + add-files: + order.txt: + - "Hello, this file doesn't do anything" + diff --git a/gitgud/skills/rewriting/_backwards/explanation.txt b/gitgud/skills/rewriting/_backwards/explanation.txt new file mode 100644 index 00000000..f632181b --- /dev/null +++ b/gitgud/skills/rewriting/_backwards/explanation.txt @@ -0,0 +1,3 @@ +Use this file to explain to the users how to use the git feature that this level focuses on. +>>> +Separate blocks using ">>>", and be sure to include tips and examples as explanation aids. diff --git a/gitgud/skills/rewriting/_backwards/filename.txt b/gitgud/skills/rewriting/_backwards/filename.txt new file mode 100644 index 00000000..779df2b0 --- /dev/null +++ b/gitgud/skills/rewriting/_backwards/filename.txt @@ -0,0 +1,4 @@ +Hey, this file is getting added by details.yaml to commit 4! + +All this content will be copied exactly as it appears here, even with extra blank lines at the end of the file! + diff --git a/gitgud/skills/rewriting/_backwards/goal.txt b/gitgud/skills/rewriting/_backwards/goal.txt new file mode 100644 index 00000000..674aaaae --- /dev/null +++ b/gitgud/skills/rewriting/_backwards/goal.txt @@ -0,0 +1 @@ +In this file, write a short explanation of the level's goal (e.g. "Merge commits 1 and 2"). diff --git a/gitgud/skills/rewriting/_backwards/setup.spec b/gitgud/skills/rewriting/_backwards/setup.spec new file mode 100644 index 00000000..c8dac442 --- /dev/null +++ b/gitgud/skills/rewriting/_backwards/setup.spec @@ -0,0 +1,10 @@ +1 (master) +2 (level) +3 : 1 +4 +5 (hasto) +6 : 1 (done) +7 : 1 +8 +9 (reverse) +master diff --git a/gitgud/skills/rewriting/_backwards/solution.txt b/gitgud/skills/rewriting/_backwards/solution.txt new file mode 100644 index 00000000..fab45721 --- /dev/null +++ b/gitgud/skills/rewriting/_backwards/solution.txt @@ -0,0 +1,3 @@ +git rebase done reverse +git rebase hasto +git rebase level diff --git a/gitgud/skills/rewriting/_backwards/test.spec b/gitgud/skills/rewriting/_backwards/test.spec new file mode 100644 index 00000000..1c8e1524 --- /dev/null +++ b/gitgud/skills/rewriting/_backwards/test.spec @@ -0,0 +1,14 @@ +1 (master) +2 (level) +3 : 1 +4 +5 (hasto) +6 : 1 (done) +3' : 2 +4' +5' +6'' +7''' +8''' +9''' (reverse) +reverse diff --git a/gitgud/skills/test_levels.py b/gitgud/skills/test_levels.py index 40dfb378..ca318586 100644 --- a/gitgud/skills/test_levels.py +++ b/gitgud/skills/test_levels.py @@ -68,4 +68,4 @@ def test_rebases_have_originals(level): rebases = [name for name in names if name[-1] == "'"] for rebase in rebases: - assert rebase[:-1] in names + assert rebase.replace("'", "") in names