-
Notifications
You must be signed in to change notification settings - Fork 25
/
Copy pathutil_test.py
54 lines (45 loc) · 1.84 KB
/
util_test.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# Copyright 2022 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import sys
from nanoemoji.util import shell_quote, shell_split
import pytest
# Source:
# https://github.com/python/cpython/blob/653e563/Lib/test/test_subprocess.py#L1198-L1214
LIST2CMDLINE_TEST_DATA = [
(["a b c", "d", "e"], '"a b c" d e'),
(['ab"c', "\\", "d"], 'ab\\"c \\ d'),
(['ab"c', " \\", "d"], 'ab\\"c " \\\\" d'),
(["a\\\\\\b", "de fg", "h"], 'a\\\\\\b "de fg" h'),
(['a\\"b', "c", "d"], 'a\\\\\\"b c d'),
(["a\\\\b c", "d", "e"], '"a\\\\b c" d e'),
(["a\\\\b\\ c", "d", "e"], '"a\\\\b\\ c" d e'),
(["ab", ""], 'ab ""'),
]
CMDLINE2LIST_TEST_DATA = [(cmdline, args) for args, cmdline in LIST2CMDLINE_TEST_DATA]
@pytest.mark.skipif(not sys.platform.startswith("win"), reason="Windows only")
@pytest.mark.parametrize(
"args, expected_cmdline",
LIST2CMDLINE_TEST_DATA,
ids=[s for _, s in LIST2CMDLINE_TEST_DATA],
)
def test_windows_shell_quote(args, expected_cmdline):
assert " ".join(shell_quote(s) for s in args) == expected_cmdline
@pytest.mark.skipif(not sys.platform.startswith("win"), reason="Windows only")
@pytest.mark.parametrize(
"cmdline, expected_args",
CMDLINE2LIST_TEST_DATA,
ids=[s for s, _ in CMDLINE2LIST_TEST_DATA],
)
def test_windows_shell_split(cmdline, expected_args):
assert shell_split(cmdline) == expected_args