Skip to content

Commit 33ac6b5

Browse files
authored
T12351: Fix --extension being swallowed from the maintenance script (#67)
* T12351: Fix --extension being swallowed from the maintenance script * Add test for maintenance script getting --extension * Fix false mypy errors * Add more tests as requested
1 parent d79dcb1 commit 33ac6b5

File tree

2 files changed

+28
-4
lines changed

2 files changed

+28
-4
lines changed

miraheze/mediawiki/mwscript.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -146,17 +146,17 @@ def run(info: CommandInfo) -> None: # pragma: no cover
146146
print('Aborted!')
147147

148148

149-
def get_args() -> argparse.Namespace:
149+
def get_args(input_args: list | None = None) -> argparse.Namespace:
150150
parser = argparse.ArgumentParser(description='Run a MediaWiki Script')
151151
parser.add_argument('script')
152-
parser.add_argument('arguments', nargs='*', default=[])
152+
parser.add_argument('arguments', nargs=argparse.REMAINDER, default=[])
153153
parser.add_argument('--version', dest='version')
154154
parser.add_argument('--extension', '--skin', dest='extension')
155155
parser.add_argument('--no-log', dest='nolog', action='store_true')
156156
parser.add_argument('--confirm', '--yes', '-y', dest='confirm', action='store_true')
157157

158-
args = parser.parse_known_args()[0]
159-
args.arguments += parser.parse_known_args()[1]
158+
args, arguments = parser.parse_known_args(input_args)
159+
args.arguments += arguments
160160
return args
161161

162162

tests/test_mwscript.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,30 @@
33
from unittest.mock import patch
44

55

6+
# T12351
7+
def test_get_args_extension_left():
8+
args = mwscript.get_args(['--extension=awawa', 'testScript.php', '--test'])
9+
assert args.extension == 'awawa'
10+
assert args.script == 'testScript.php'
11+
assert args.arguments == ['--test']
12+
13+
14+
# T12351
15+
def test_get_args_extension_right():
16+
args = mwscript.get_args(['testScript.php', '--extension=awawa', '--test'])
17+
assert args.extension is None
18+
assert args.script == 'testScript.php'
19+
assert args.arguments == ['--extension=awawa', '--test']
20+
21+
22+
# T12351
23+
def test_get_args_maintenance_script_gets_all_arguments():
24+
args = mwscript.get_args(['--extension=a', 'testScript.php', '--extension=b', '--test'])
25+
assert args.extension == 'a'
26+
assert args.script == 'testScript.php'
27+
assert args.arguments == ['--extension=b', '--test']
28+
29+
630
def test_get_command_simple():
731
args = mwscript.get_args()
832
args.script = 'test.php'

0 commit comments

Comments
 (0)