Skip to content

Commit 0013eac

Browse files
committed
fix: fix test-reproducibility
1 parent 25cb7c2 commit 0013eac

File tree

3 files changed

+27
-4
lines changed

3 files changed

+27
-4
lines changed

.amazonq/rules/test-case-enhancement.md

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
## Simple Enhancement Workflow
44

5-
When user requests test case enhancement:
5+
When user requests test case enhancement or **test reproducibility verification**:
66

77
### 1. Problem Resolution
88

@@ -69,10 +69,24 @@ make p-gen PROBLEM={problem_name} FORCE=1
6969
make p-lint PROBLEM={problem_name}
7070
```
7171

72+
## Test Reproducibility Verification
73+
74+
Use this same workflow when CI tests fail due to reproducibility issues:
75+
76+
**Process Name**: Test Reproducibility Verification
77+
78+
**When to Use**:
79+
80+
- CI test failures in reproducibility checks
81+
- Inconsistent test results between environments
82+
- Missing edge cases causing coverage gaps
83+
- Need to ensure 100% code coverage
84+
7285
## Success Criteria
7386

7487
- All tests pass with enhanced test cases
7588
- Minimum 12 comprehensive test cases per problem
7689
- Original solution code preserved
7790
- **Enhanced test cases in final test_solution.py**
7891
- JSON template updated for future regeneration
92+
- **100% code coverage including edge cases**

.templates/leetcode/json/construct_binary_tree_from_preorder_and_inorder_traversal.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@
5050
"name": "test_build_tree",
5151
"signature": "(self, preorder: list[int], inorder: list[int], expected_list: list[int | None])",
5252
"parametrize": "preorder, inorder, expected_list",
53-
"test_cases": "[([3, 9, 20, 15, 7], [9, 3, 15, 20, 7], [3, 9, 20, None, None, 15, 7]), ([-1], [-1], [-1]), ([1, 2], [2, 1], [1, 2]), ([1, 2], [1, 2], [1, None, 2]), ([1, 2, 3], [2, 1, 3], [1, 2, 3]), ([3, 9, 20, 15, 7], [9, 3, 15, 20, 7], [3, 9, 20, None, None, 15, 7]), ([1, 2, 4, 5, 3, 6], [4, 2, 5, 1, 6, 3], [1, 2, 3, 4, 5, 6]), ([1], [1], [1]), ([1, 2, 3, 4], [1, 2, 3, 4], [1, None, 2, None, 3, None, 4]), ([4, 3, 2, 1], [1, 2, 3, 4], [4, 3, None, 2, None, 1]), ([5, 4, 11, 7, 2, 8, 13, 4, 1], [7, 11, 2, 4, 5, 13, 8, 4, 1], [5, 4, 8, 11, None, 13, 4, 7, 2, None, None, None, 1]), ([10, 5, 1, 7, 40, 50], [1, 5, 7, 10, 40, 50], [10, 5, 40, 1, 7, None, 50])]",
53+
"test_cases": "[([], [], []), ([1], [1], [1]), ([3, 9, 20, 15, 7], [9, 3, 15, 20, 7], [3, 9, 20, None, None, 15, 7]), ([-1], [-1], [-1]), ([1, 2], [2, 1], [1, 2]), ([1, 2], [1, 2], [1, None, 2]), ([1, 2, 3], [2, 1, 3], [1, 2, 3]), ([1, 2, 4, 5, 3, 6], [4, 2, 5, 1, 6, 3], [1, 2, 3, 4, 5, 6]), ([1, 2, 3, 4], [1, 2, 3, 4], [1, None, 2, None, 3, None, 4]), ([4, 3, 2, 1], [1, 2, 3, 4], [4, 3, None, 2, None, 1]), ([10, 5, 1, 7, 40, 50], [1, 5, 7, 10, 40, 50], [10, 5, 40, 1, 7, None, 50]), ([1, 3, 2], [1, 2, 3], [1, None, 3, 2]), ([2, 1, 3], [1, 2, 3], [2, 1, 3]), ([5, 3, 2, 1, 4, 6, 7], [1, 2, 3, 4, 5, 6, 7], [5, 3, 6, 2, 4, None, 7, 1]), ([7, 3, 2, 1, 5, 4, 6, 10, 9, 11], [1, 2, 3, 4, 5, 6, 7, 9, 10, 11], [7, 3, 10, 2, 5, 9, 11, 1, None, 4, 6]), ([-3000, -2999, -2998], [-2998, -2999, -3000], [-3000, -2999, None, -2998])]",
5454
"body": " result = run_build_tree(Solution, preorder, inorder)\n assert_build_tree(result, expected_list)"
5555
}
5656
]

leetcode/construct_binary_tree_from_preorder_and_inorder_traversal/test_solution.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,26 @@ def setup_method(self):
1414
@pytest.mark.parametrize(
1515
"preorder, inorder, expected_list",
1616
[
17+
([], [], []),
18+
([1], [1], [1]),
1719
([3, 9, 20, 15, 7], [9, 3, 15, 20, 7], [3, 9, 20, None, None, 15, 7]),
1820
([-1], [-1], [-1]),
1921
([1, 2], [2, 1], [1, 2]),
2022
([1, 2], [1, 2], [1, None, 2]),
2123
([1, 2, 3], [2, 1, 3], [1, 2, 3]),
22-
([3, 9, 20, 15, 7], [9, 3, 15, 20, 7], [3, 9, 20, None, None, 15, 7]),
2324
([1, 2, 4, 5, 3, 6], [4, 2, 5, 1, 6, 3], [1, 2, 3, 4, 5, 6]),
24-
([1], [1], [1]),
2525
([1, 2, 3, 4], [1, 2, 3, 4], [1, None, 2, None, 3, None, 4]),
2626
([4, 3, 2, 1], [1, 2, 3, 4], [4, 3, None, 2, None, 1]),
2727
([10, 5, 1, 7, 40, 50], [1, 5, 7, 10, 40, 50], [10, 5, 40, 1, 7, None, 50]),
28+
([1, 3, 2], [1, 2, 3], [1, None, 3, 2]),
29+
([2, 1, 3], [1, 2, 3], [2, 1, 3]),
30+
([5, 3, 2, 1, 4, 6, 7], [1, 2, 3, 4, 5, 6, 7], [5, 3, 6, 2, 4, None, 7, 1]),
31+
(
32+
[7, 3, 2, 1, 5, 4, 6, 10, 9, 11],
33+
[1, 2, 3, 4, 5, 6, 7, 9, 10, 11],
34+
[7, 3, 10, 2, 5, 9, 11, 1, None, 4, 6],
35+
),
36+
([-3000, -2999, -2998], [-2998, -2999, -3000], [-3000, -2999, None, -2998]),
2837
],
2938
)
3039
def test_build_tree(self, preorder: list[int], inorder: list[int], expected_list: list[int | None]):

0 commit comments

Comments
 (0)