Skip to content

Commit 4b99ada

Browse files
committed
Collapse the remaining duplicate blocks Sonar flagged
Sonar's per-file view on PR 179 showed two clusters of duplication: - The three AC_mouse_* registration lines were duplicated between action_executor.py and callback_function_executor.py. Move the three name->callable bindings into a MOUSE_BUTTON_COMMANDS dict on mouse_aliases.py and spread it (**) into both executors so the registration block exists in exactly one place. - The html / json / xml report smoke scripts were near-100% copies of each other. Extract the shared driver into report_smoke.py and reduce each script to a one-liner that names its report command.
1 parent 62a7c32 commit 4b99ada

7 files changed

Lines changed: 56 additions & 139 deletions

File tree

je_auto_control/utils/callback/callback_function_executor.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,7 @@
77
from je_auto_control.utils.logging.logging_instance import autocontrol_logger
88
# executor
99
from je_auto_control.utils.executor.action_executor import execute_action, execute_files
10-
from je_auto_control.utils.executor.mouse_aliases import (
11-
click_mouse_left, click_mouse_middle, click_mouse_right,
12-
)
10+
from je_auto_control.utils.executor.mouse_aliases import MOUSE_BUTTON_COMMANDS
1311
# file process
1412
from je_auto_control.utils.file_process.get_dir_file_list import get_dir_files_as_list
1513
# html report
@@ -64,9 +62,7 @@ def __init__(self):
6462
# 事件字典,對應字串名稱到實際函式
6563
self.event_dict: dict = {
6664
# mouse 滑鼠相關
67-
"AC_mouse_left": click_mouse_left,
68-
"AC_mouse_right": click_mouse_right,
69-
"AC_mouse_middle": click_mouse_middle,
65+
**MOUSE_BUTTON_COMMANDS,
7066
"AC_click_mouse": click_mouse,
7167
"AC_get_mouse_table": get_mouse_table,
7268
"AC_get_mouse_position": get_mouse_position,

je_auto_control/utils/executor/action_executor.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,7 @@
2222
from je_auto_control.utils.executor.flow_control import (
2323
BLOCK_COMMANDS, LoopBreak, LoopContinue,
2424
)
25-
from je_auto_control.utils.executor.mouse_aliases import (
26-
click_mouse_left, click_mouse_middle, click_mouse_right,
27-
)
25+
from je_auto_control.utils.executor.mouse_aliases import MOUSE_BUTTON_COMMANDS
2826
from je_auto_control.utils.ocr.ocr_engine import (
2927
click_text as ocr_click_text,
3028
locate_text_center as ocr_locate_text_center,
@@ -127,9 +125,7 @@ def __init__(self):
127125
# 事件字典,對應字串名稱到函式
128126
self.event_dict: dict = {
129127
# Mouse 滑鼠相關
130-
"AC_mouse_left": click_mouse_left,
131-
"AC_mouse_right": click_mouse_right,
132-
"AC_mouse_middle": click_mouse_middle,
128+
**MOUSE_BUTTON_COMMANDS,
133129
"AC_click_mouse": click_mouse,
134130
"AC_get_mouse_table": get_mouse_table,
135131
"AC_get_mouse_position": get_mouse_position,

je_auto_control/utils/executor/mouse_aliases.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,4 +27,13 @@ def click(x: Optional[int] = None,
2727
click_mouse_right: ClickFn = _make_button_click("mouse_right")
2828
click_mouse_middle: ClickFn = _make_button_click("mouse_middle")
2929

30-
__all__ = ["click_mouse_left", "click_mouse_right", "click_mouse_middle"]
30+
MOUSE_BUTTON_COMMANDS: dict = {
31+
"AC_mouse_left": click_mouse_left,
32+
"AC_mouse_right": click_mouse_right,
33+
"AC_mouse_middle": click_mouse_middle,
34+
}
35+
36+
__all__ = [
37+
"click_mouse_left", "click_mouse_right", "click_mouse_middle",
38+
"MOUSE_BUTTON_COMMANDS",
39+
]
Lines changed: 2 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,3 @@
1-
import sys
1+
from report_smoke import run_report_smoke
22

3-
from je_auto_control import execute_action
4-
from je_auto_control import test_record_instance
5-
6-
test_list = None
7-
test_record_instance.init_record = True
8-
if sys.platform in ["win32", "cygwin", "msys"]:
9-
test_list = [
10-
["AC_set_record_enable", {"set_enable": True}],
11-
["AC_type_keyboard", {"keycode": 65}],
12-
["AC_mouse_left", {"x": 500, "y": 500}],
13-
["AC_get_mouse_position"],
14-
["AC_press_mouse", {"mouse_keycode": "mouse_left", "x": 500, "y": 500}],
15-
["AC_release_mouse", {"mouse_keycode": "mouse_left", "x": 500, "y": 500}],
16-
["AC_type_keyboard", {"mouse_keycode": "dwadwawda", "dwadwad": 500, "wdawddwawad": 500}],
17-
["AC_generate_html_report"],
18-
]
19-
20-
elif sys.platform in ["linux", "linux2"]:
21-
test_list = [
22-
["AC_set_record_enable", {"set_enable": True}],
23-
["AC_type_keyboard", {"keycode": 38}],
24-
["AC_mouse_left", {"x": 500, "y": 500}],
25-
["AC_get_mouse_position"],
26-
["AC_press_mouse", {"mouse_keycode": "mouse_left", "x": 500, "y": 500}],
27-
["AC_release_mouse", {"mouse_keycode": "mouse_left", "x": 500, "y": 500}],
28-
["AC_type_keyboard", {"mouse_keycode": "dwadwawda", "dwadwad": 500, "wdawddwawad": 500}],
29-
["AC_generate_html_report"],
30-
]
31-
elif sys.platform in ["darwin"]:
32-
test_list = [
33-
["AC_set_record_enable", {"set_enable": True}],
34-
["AC_type_keyboard", {"keycode": 0x00}],
35-
["AC_mouse_left", {"x": 500, "y": 500}],
36-
["AC_get_mouse_position"],
37-
["AC_press_mouse", {"mouse_keycode": "mouse_left", "x": 500, "y": 500}],
38-
["AC_release_mouse", {"mouse_keycode": "mouse_left", "x": 500, "y": 500}],
39-
["AC_type_keyboard", {"mouse_keycode": "dwadwawda", "dwadwad": 500, "wdawddwawad": 500}],
40-
["AC_generate_html_report"],
41-
]
42-
print("\n\n")
43-
execute_action(test_list)
3+
run_report_smoke("AC_generate_html_report")
Lines changed: 2 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,3 @@
1-
import sys
1+
from report_smoke import run_report_smoke
22

3-
from je_auto_control import execute_action
4-
from je_auto_control import test_record_instance
5-
6-
test_list = None
7-
test_record_instance.init_record = True
8-
if sys.platform in ["win32", "cygwin", "msys"]:
9-
test_list = [
10-
["AC_set_record_enable", {"set_enable": True}],
11-
["AC_type_keyboard", {"keycode": 65}],
12-
["AC_mouse_left", {"x": 500, "y": 500}],
13-
["AC_get_mouse_position"],
14-
["AC_press_mouse", {"mouse_keycode": "mouse_left", "x": 500, "y": 500}],
15-
["AC_release_mouse", {"mouse_keycode": "mouse_left", "x": 500, "y": 500}],
16-
["AC_type_keyboard", {"mouse_keycode": "dwadwawda", "dwadwad": 500, "wdawddwawad": 500}],
17-
["AC_generate_json_report"],
18-
]
19-
20-
elif sys.platform in ["linux", "linux2"]:
21-
test_list = [
22-
["AC_set_record_enable", {"set_enable": True}],
23-
["AC_type_keyboard", {"keycode": 38}],
24-
["AC_mouse_left", {"x": 500, "y": 500}],
25-
["AC_get_mouse_position"],
26-
["AC_press_mouse", {"mouse_keycode": "mouse_left", "x": 500, "y": 500}],
27-
["AC_release_mouse", {"mouse_keycode": "mouse_left", "x": 500, "y": 500}],
28-
["AC_type_keyboard", {"mouse_keycode": "dwadwawda", "dwadwad": 500, "wdawddwawad": 500}],
29-
["AC_generate_json_report"],
30-
]
31-
elif sys.platform in ["darwin"]:
32-
test_list = [
33-
["AC_set_record_enable", {"set_enable": True}],
34-
["AC_type_keyboard", {"keycode": 0x00}],
35-
["AC_mouse_left", {"x": 500, "y": 500}],
36-
["AC_get_mouse_position"],
37-
["AC_press_mouse", {"mouse_keycode": "mouse_left", "x": 500, "y": 500}],
38-
["AC_release_mouse", {"mouse_keycode": "mouse_left", "x": 500, "y": 500}],
39-
["AC_type_keyboard", {"mouse_keycode": "dwadwawda", "dwadwad": 500, "wdawddwawad": 500}],
40-
["AC_generate_json_report"],
41-
]
42-
print("\n\n")
43-
execute_action(test_list)
3+
run_report_smoke("AC_generate_json_report")
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
"""Shared smoke-test driver for the html / json / xml report generators.
2+
3+
Each report-format script (``html_report_test.py``, ``json_report.py``,
4+
``xml_report_test.py``) drives the same mouse + keyboard sequence,
5+
intentionally throws one parameter error so the report exercises both
6+
success and failure paths, and then invokes the format-specific
7+
``AC_generate_*_report`` command. Hosting the sequence here keeps the
8+
three smoke scripts down to a single line of intent each.
9+
"""
10+
import sys
11+
12+
from je_auto_control import execute_action, test_record_instance
13+
14+
_TYPE_KEYCODE_BY_PLATFORM = {
15+
"win32": 65, "cygwin": 65, "msys": 65,
16+
"linux": 38, "linux2": 38,
17+
"darwin": 0x00,
18+
}
19+
20+
21+
def run_report_smoke(report_command: str) -> None:
22+
"""Run the canonical action sequence then call ``report_command``."""
23+
test_record_instance.init_record = True
24+
keycode = _TYPE_KEYCODE_BY_PLATFORM.get(sys.platform, 65)
25+
test_list = [
26+
["AC_set_record_enable", {"set_enable": True}],
27+
["AC_type_keyboard", {"keycode": keycode}],
28+
["AC_mouse_left", {"x": 500, "y": 500}],
29+
["AC_get_mouse_position"],
30+
["AC_press_mouse", {"mouse_keycode": "mouse_left", "x": 500, "y": 500}],
31+
["AC_release_mouse", {"mouse_keycode": "mouse_left", "x": 500, "y": 500}],
32+
["AC_type_keyboard", {"mouse_keycode": "dwadwawda", "dwadwad": 500, "wdawddwawad": 500}],
33+
[report_command],
34+
]
35+
print("\n\n")
36+
execute_action(test_list)
Lines changed: 2 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,3 @@
1-
import sys
1+
from report_smoke import run_report_smoke
22

3-
from je_auto_control import execute_action
4-
from je_auto_control import test_record_instance
5-
6-
test_list = None
7-
test_record_instance.init_record = True
8-
if sys.platform in ["win32", "cygwin", "msys"]:
9-
test_list = [
10-
["AC_set_record_enable", {"set_enable": True}],
11-
["AC_type_keyboard", {"keycode": 65}],
12-
["AC_mouse_left", {"x": 500, "y": 500}],
13-
["AC_get_mouse_position"],
14-
["AC_press_mouse", {"mouse_keycode": "mouse_left", "x": 500, "y": 500}],
15-
["AC_release_mouse", {"mouse_keycode": "mouse_left", "x": 500, "y": 500}],
16-
["AC_type_keyboard", {"mouse_keycode": "dwadwawda", "dwadwad": 500, "wdawddwawad": 500}],
17-
["AC_generate_xml_report"]
18-
]
19-
20-
elif sys.platform in ["linux", "linux2"]:
21-
test_list = [
22-
["AC_set_record_enable", {"set_enable": True}],
23-
["AC_type_keyboard", {"keycode": 38}],
24-
["AC_mouse_left", {"x": 500, "y": 500}],
25-
["AC_get_mouse_position"],
26-
["AC_press_mouse", {"mouse_keycode": "mouse_left", "x": 500, "y": 500}],
27-
["AC_release_mouse", {"mouse_keycode": "mouse_left", "x": 500, "y": 500}],
28-
["AC_type_keyboard", {"mouse_keycode": "dwadwawda", "dwadwad": 500, "wdawddwawad": 500}],
29-
["AC_generate_xml_report"]
30-
]
31-
elif sys.platform in ["darwin"]:
32-
test_list = [
33-
["AC_set_record_enable", {"set_enable": True}],
34-
["AC_type_keyboard", {"keycode": 0x00}],
35-
["AC_mouse_left", {"x": 500, "y": 500}],
36-
["AC_get_mouse_position"],
37-
["AC_press_mouse", {"mouse_keycode": "mouse_left", "x": 500, "y": 500}],
38-
["AC_release_mouse", {"mouse_keycode": "mouse_left", "x": 500, "y": 500}],
39-
["AC_type_keyboard", {"mouse_keycode": "dwadwawda", "dwadwad": 500, "wdawddwawad": 500}],
40-
["AC_generate_xml_report"]
41-
]
42-
print("\n\n")
43-
execute_action(test_list)
3+
run_report_smoke("AC_generate_xml_report")

0 commit comments

Comments
 (0)