mirror of
https://github.com/Awakenchan/LanternEngine.git
synced 2026-11-10 01:11:45 -10:00
45 lines
1.6 KiB
Python
45 lines
1.6 KiB
Python
from paths import ROOT
|
|
from pathlib import Path
|
|
import subprocess
|
|
import unittest
|
|
|
|
EXE = ROOT / 'out/runtime-test'
|
|
|
|
|
|
@unittest.skipUnless(EXE.exists(), 'run bash build.sh --test first')
|
|
class RuntimeTests(unittest.TestCase):
|
|
def run_case(self, *args):
|
|
return subprocess.run([str(EXE.resolve()), *args], capture_output=True, text=True, timeout=10)
|
|
|
|
def test_runtime_contracts(self):
|
|
r=self.run_case()
|
|
self.assertEqual(r.returncode,0,r.stdout+r.stderr)
|
|
self.assertIn('PASS: callback lifecycle',r.stdout)
|
|
|
|
def test_recursive_guard_fails_explicitly(self):
|
|
r=self.run_case('--guard-recursion')
|
|
self.assertEqual(r.returncode,21)
|
|
self.assertIn('recursive/concurrent static initialization',r.stderr)
|
|
|
|
def test_stack_corruption_is_not_ignored(self):
|
|
r=self.run_case('--stack-failure')
|
|
self.assertEqual(r.returncode,22)
|
|
self.assertIn('stack protector detected corruption',r.stderr)
|
|
|
|
def test_tls_bounds_are_checked(self):
|
|
r=self.run_case('--bad-tls')
|
|
self.assertEqual(r.returncode,21)
|
|
self.assertIn('unsupported TLS module/offset',r.stderr)
|
|
|
|
def test_rwlock_lifecycle_and_ownership(self):
|
|
r=self.run_case('--rwlock-lifecycle')
|
|
self.assertEqual(r.returncode,0,r.stdout+r.stderr)
|
|
|
|
def test_rwlock_multiple_readers_exclude_writer(self):
|
|
r=self.run_case('--rwlock-concurrency')
|
|
self.assertEqual(r.returncode,0,r.stdout+r.stderr)
|
|
|
|
def test_rwlock_timeouts_use_orbis_errors(self):
|
|
r=self.run_case('--rwlock-timeouts')
|
|
self.assertEqual(r.returncode,0,r.stdout+r.stderr)
|