Codebase list python-procrunner / 8a2d486 tests / test_procrunner_resolution.py
8a2d486

Tree @8a2d486 (Download .tar.gz)

test_procrunner_resolution.py @8a2d486raw · 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]))