from __future__ import absolute_import, division, print_function
import os
import sys
import procrunner
import pytest
@pytest.mark.skipif(sys.platform != "win32", reason="windows specific test only")
def test_pywin32_import():
import win32api
@pytest.mark.skipif(sys.platform != "win32", reason="windows specific test only")
def test_name_resolution_for_simple_exe():
command = ["cmd.exe", "/c", "echo", "hello"]
resolved = procrunner._windows_resolve(command)
# command should be replaced with full path to cmd.exe
assert resolved[0].lower().endswith("\\cmd.exe")
assert os.path.exists(resolved[0])
# parameters are unchanged
assert resolved[1:] == command[1:]
@pytest.mark.skipif(sys.platform != "win32", reason="windows specific test only")
def test_name_resolution_for_complex_cases(tmpdir):
tmpdir.chdir()
bat = "simple_bat_extension"
cmd = "simple_cmd_extension"
exe = "simple_exe_extension"
dotshort = "more_complex_filename_with_a.dot"
dotlong = "more_complex_filename.withadot"
(tmpdir / bat + ".bat").ensure()
(tmpdir / cmd + ".cmd").ensure()
(tmpdir / exe + ".exe").ensure()
(tmpdir / dotshort + ".bat").ensure()
(tmpdir / dotlong + ".cmd").ensure()
def is_valid(command):
assert len(command) == 1
assert os.path.exists(command[0])
is_valid(procrunner._windows_resolve([bat]))
is_valid(procrunner._windows_resolve([cmd]))
is_valid(procrunner._windows_resolve([exe]))
is_valid(procrunner._windows_resolve([dotshort]))
is_valid(procrunner._windows_resolve([dotlong]))