Codebase list python-procrunner / 16c4c94 tests / test_procrunner_resolution.py
16c4c94

Tree @16c4c94 (Download .tar.gz)

test_procrunner_resolution.py @16c4c94raw · history · blame

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]))