Files
powertrain-build/tests/powertrain_build/test_pt_win32.py
olindgre 2ece01e1d7 Make powertrain-build not overlap with pybuild in site-packages
Change-Id: I7b59f3f04f0f787d35db0b9389f295bf1ad24f56
2024-09-17 10:25:04 +02:00

78 lines
3.4 KiB
Python

# Copyright 2024 Volvo Car Corporation
# Licensed under Apache 2.0.
"""Unit tests for the pt_win32 module."""
import unittest
try:
import win32job
import win32api
except ImportError as import_error:
raise unittest.SkipTest("Failed to import win32api, probably wrong platform") from import_error
from powertrain_build import pt_win32
class TestPtWin32Process(unittest.TestCase):
"""Tests for the pt_win32 module."""
def test_kill_on_job_close(self):
"""Test that the process is killed when the job object is closed."""
pt_process = pt_win32.PtWin32Process(kill_on_job_close=True)
limit_flags = pt_process.limit_info_dict['BasicLimitInformation']['LimitFlags']
self.assertEqual(limit_flags, win32job.JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE)
pt_process.run(command='cmd')
self.assertEqual(pt_process.poll(), pt_win32.STILL_ACTIVE)
win32api.CloseHandle(pt_process.job_handle)
self.assertNotEqual(pt_process.poll(), pt_win32.STILL_ACTIVE)
def test_add_limit_flags(self):
"""Test adding limit flags."""
limit_a = 8
limit_b = 32
limit_ab = limit_a | limit_b
pt_process = pt_win32.PtWin32Process(kill_on_job_close=False)
pt_process.add_limit_flags(limit_a)
self.assertEqual(pt_process.limit_info_dict['BasicLimitInformation']['LimitFlags'], limit_a)
pt_process.add_limit_flags(limit_b)
self.assertEqual(pt_process.limit_info_dict['BasicLimitInformation']['LimitFlags'], limit_ab)
def test_remove_limit_flags(self):
"""Test removing limit flags."""
limit_a = 8
limit_b = 32
limit_ab = limit_a | limit_b
pt_process = pt_win32.PtWin32Process(kill_on_job_close=False)
pt_process.limit_info_dict['BasicLimitInformation']['LimitFlags'] = limit_ab
pt_process.remove_limit_flags(limit_a)
self.assertEqual(pt_process.limit_info_dict['BasicLimitInformation']['LimitFlags'], limit_b)
pt_process.remove_limit_flags(limit_b)
self.assertEqual(pt_process.limit_info_dict['BasicLimitInformation']['LimitFlags'], 0)
def test_set_limit_flags(self):
"""Test setting limit flags."""
limit_a = 8
limit_b = 32
limit_ab = limit_a | limit_b
pt_process = pt_win32.PtWin32Process(kill_on_job_close=False)
pt_process.set_limit_flags(limit_a)
self.assertEqual(pt_process.limit_info_dict['BasicLimitInformation']['LimitFlags'], limit_a)
pt_process.set_limit_flags(limit_b)
self.assertEqual(pt_process.limit_info_dict['BasicLimitInformation']['LimitFlags'], limit_b)
pt_process.set_limit_flags(limit_ab)
self.assertEqual(pt_process.limit_info_dict['BasicLimitInformation']['LimitFlags'], limit_ab)
def test_get_limit_flags(self):
"""Test getting limit flags."""
limit_a = 8
limit_b = 32
limit_ab = limit_a | limit_b
pt_process = pt_win32.PtWin32Process(kill_on_job_close=False)
pt_process.limit_info_dict['BasicLimitInformation']['LimitFlags'] = limit_ab
self.assertEqual(pt_process.get_limit_flags(), limit_ab)
pt_process.limit_info_dict['BasicLimitInformation']['LimitFlags'] = limit_a
self.assertEqual(pt_process.get_limit_flags(), limit_a)
pt_process.limit_info_dict['BasicLimitInformation']['LimitFlags'] = limit_b
self.assertEqual(pt_process.get_limit_flags(), limit_b)