diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index afe48dc4..d2afdfd3 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -38,7 +38,7 @@ jobs: test: name: Run pytest runs-on: ubuntu-20.04 - timeout-minutes: 22 + timeout-minutes: 25 strategy: matrix: python-version: ['3.10', '3.11', '3.12'] diff --git a/tests/codemods/test_walrus_if.py b/tests/codemods/test_walrus_if.py index 4cd90411..1a6b404d 100644 --- a/tests/codemods/test_walrus_if.py +++ b/tests/codemods/test_walrus_if.py @@ -181,3 +181,35 @@ def func(y): print("whatever", y) """ self.run_and_assert(tmpdir, input_code, expected_output) + + @pytest.mark.xfail(reason="Need to recompute line numbers to reflect removed lines") + def test_multiple_walrus_changes(self, tmpdir): + input_code = """ + val = do_something() + if val is not None: + do_something_else(val) + + foo = hello() + if foo == "bar": + whatever(foo) + + bar = do_something_else() + if bar is not None: + do_something(bar) + """ + expected_output = """ + if (val := do_something()) is not None: + do_something_else(val) + + if (foo := hello()) == "bar": + whatever(foo) + + if (bar := do_something_else()) is not None: + do_something(bar) + """ + self.run_and_assert(tmpdir, input_code, expected_output, num_changes=3) + + changes = self.changeset[0].changes + assert changes[0].lineNumber == 2 + assert changes[1].lineNumber == 5 + assert changes[2].lineNumber == 8