Skip to content

Commit 9320a85

Browse files
committed
Implement new codemod API
1 parent ac74626 commit 9320a85

163 files changed

Lines changed: 2615 additions & 2295 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.coveragerc‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ source = codemodder
33
omit =
44
*/codemodder/scripts/*
55
*/codemodder/_version.py
6+
*/core_codemods/refactor/*
67

78
[paths]
89
codemodder =

‎integration_tests/base_test.py‎

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,14 @@ def setup_class(cls):
6262

6363
def setup_method(self):
6464
try:
65-
self.codemod_wrapper = self.codemod_registry.match_codemods(
66-
codemod_include=[self.codemod.name()]
65+
name = (
66+
self.codemod().name
67+
if isinstance(self.codemod, type)
68+
else self.codemod.name
69+
)
70+
# This is how we ensure that the codemod is actually in the registry
71+
self.codemod_instance = self.codemod_registry.match_codemods(
72+
codemod_include=[name]
6773
)[0]
6874
except IndexError as exc:
6975
raise IndexError(
@@ -77,16 +83,18 @@ def _assert_run_fields(self, run, output_path):
7783
assert run["elapsed"] != ""
7884
assert (
7985
run["commandLine"]
80-
== f"codemodder {SAMPLES_DIR} --output {output_path} --codemod-include={self.codemod_wrapper.name} --path-include={self.code_path}"
86+
== f"codemodder {SAMPLES_DIR} --output {output_path} --codemod-include={self.codemod_instance.name} --path-include={self.code_path}"
8187
)
8288
assert run["directory"] == os.path.abspath(SAMPLES_DIR)
8389
assert run["sarifs"] == []
8490

8591
def _assert_results_fields(self, results, output_path):
8692
assert len(results) == 1
8793
result = results[0]
88-
assert result["codemod"] == self.codemod_wrapper.id
89-
assert result["references"] == self.codemod_wrapper.references
94+
assert result["codemod"] == self.codemod_instance.id
95+
assert result["references"] == [
96+
ref.to_json() for ref in self.codemod_instance.references
97+
]
9098

9199
# TODO: once we add description for each url.
92100
for reference in result["references"]:
@@ -147,7 +155,7 @@ def test_file_rewritten(self):
147155
SAMPLES_DIR,
148156
"--output",
149157
self.output_path,
150-
f"--codemod-include={self.codemod_wrapper.name}",
158+
f"--codemod-include={self.codemod_instance.name}",
151159
f"--path-include={self.code_path}",
152160
]
153161

‎integration_tests/test_add_requests_timeout.py‎

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1-
from core_codemods.add_requests_timeouts import AddRequestsTimeouts
1+
from core_codemods.add_requests_timeouts import (
2+
AddRequestsTimeouts,
3+
TransformAddRequestsTimeouts,
4+
)
25
from integration_tests.base_test import (
36
BaseIntegrationTest,
47
original_and_expected_from_code_path,
@@ -33,4 +36,4 @@ class TestAddRequestsTimeouts(BaseIntegrationTest):
3336

3437
num_changes = 2
3538
expected_line_change = "3"
36-
change_description = AddRequestsTimeouts.CHANGE_DESCRIPTION
39+
change_description = TransformAddRequestsTimeouts.change_description

‎integration_tests/test_combine_startswith_endswith.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,4 @@ class TestCombineStartswithEndswith(BaseIntegrationTest):
1313
)
1414
expected_diff = '--- \n+++ \n@@ -1,3 +1,3 @@\n x = \'foo\'\n-if x.startswith("foo") or x.startswith("bar"):\n+if x.startswith(("foo", "bar")):\n print("Yes")\n'
1515
expected_line_change = "2"
16-
change_description = CombineStartswithEndswith.CHANGE_DESCRIPTION
16+
change_description = CombineStartswithEndswith.change_description

‎integration_tests/test_django_debug_flag_on.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,4 @@ class TestDjangoDebugFlagFlip(BaseIntegrationTest):
1414
)
1515
expected_diff = '--- \n+++ \n@@ -23,7 +23,7 @@\n SECRET_KEY = "django-insecure-t*rrda&qd4^#q+50^%q^rrsp-t$##&u5_#=9)&@ei^ppl6$*c*"\n \n # SECURITY WARNING: don\'t run with debug turned on in production!\n-DEBUG = True\n+DEBUG = False\n \n ALLOWED_HOSTS = []\n \n'
1616
expected_line_change = "26"
17-
change_description = DjangoDebugFlagOn.CHANGE_DESCRIPTION
17+
change_description = DjangoDebugFlagOn.change_description

‎integration_tests/test_django_json_response_type.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,5 +32,5 @@ class TestDjangoJsonResponseType(BaseIntegrationTest):
3232
# fmt: on
3333

3434
expected_line_change = "6"
35-
change_description = DjangoJsonResponseType.CHANGE_DESCRIPTION
35+
change_description = DjangoJsonResponseType.change_description
3636
num_changed_files = 1

‎integration_tests/test_django_receiver_on_top.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,5 +33,5 @@ class TestDjangoReceiverOnTop(BaseIntegrationTest):
3333
# fmt: on
3434

3535
expected_line_change = "7"
36-
change_description = DjangoReceiverOnTop.CHANGE_DESCRIPTION
36+
change_description = DjangoReceiverOnTop.change_description
3737
num_changed_files = 1

‎integration_tests/test_django_session_cookie_secure_off.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,4 @@ class TestDjangoSessionCookieSecureOff(BaseIntegrationTest):
1616
)
1717
expected_diff = '--- \n+++ \n@@ -121,3 +121,4 @@\n # https://docs.djangoproject.com/en/4.2/ref/settings/#default-auto-field\n \n DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField"\n+SESSION_COOKIE_SECURE = True\n'
1818
expected_line_change = "124"
19-
change_description = DjangoSessionCookieSecureOff.CHANGE_DESCRIPTION
19+
change_description = DjangoSessionCookieSecureOff.change_description

‎integration_tests/test_exception_without_raise.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,5 +29,5 @@ class TestExceptionWithoutRaise(BaseIntegrationTest):
2929
# fmt: on
3030

3131
expected_line_change = "2"
32-
change_description = ExceptionWithoutRaise.CHANGE_DESCRIPTION
32+
change_description = ExceptionWithoutRaise.change_description
3333
num_changed_files = 1

‎integration_tests/test_file_resource_leak.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,5 +33,5 @@ class TestFileResourceLeak(BaseIntegrationTest):
3333
# fmt: on
3434

3535
expected_line_change = "3"
36-
change_description = FileResourceLeak.CHANGE_DESCRIPTION
36+
change_description = FileResourceLeak.change_description
3737
num_changed_files = 1

0 commit comments

Comments
 (0)