| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- """
- Copyright (c) Contributors to the Open 3D Engine Project.
- For complete copyright and license terms please see the LICENSE at the root of this distribution.
- SPDX-License-Identifier: Apache-2.0 OR MIT
- """
- import os
- import subprocess
- import pytest
- import ly_test_tools.environment.process_utils as process_utils
- import ly_test_tools.environment.waiter as waiter
- from ly_test_tools import WINDOWS
- if WINDOWS:
- pytestmark = pytest.mark.SUITE_smoke
- else:
- pytestmark = pytest.mark.skipif(not WINDOWS, reason="Only runs on Windows")
- class TestSubprocessCheckOutputWrapper(object):
- def test_KillWindowsProgram_WindowsProgramStarted_KilledSuccessfully(self):
- windows_program = 'timeout.exe'
- windows_directory = os.environ.get('windir')
- command = [
- os.path.join(f'{windows_directory}', 'System32', f'{windows_program}'),
- '/T', # Timeout flag
- '4', # 4 seconds
- ]
- def process_killed():
- return not process_utils.process_exists(windows_program, ignore_extensions=True)
- assert os.path.exists(command[0]), (
- f'The {windows_program} executable does not exist at: {command[0]}'
- )
- with subprocess.Popen(command, creationflags=subprocess.CREATE_NEW_CONSOLE) as process:
- if process_utils.process_exists(windows_program, ignore_extensions=True):
- process_utils.kill_process_with_pid(process.pid)
- waiter.wait_for(process_killed, timeout=2) # Raises exception if the process is alive.
|