File: test_emu.py

package info (click to toggle)
ceccomp 4.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,632 kB
  • sloc: ansic: 6,474; python: 1,039; makefile: 248; sh: 145
file content (65 lines) | stat: -rw-r--r-- 2,093 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import pytest
from shared_vars import *

EMU_TARGETS = []
for filename in FILENAMES:
    EMU_TARGETS.append((filename, 'accept'))
    EMU_TARGETS.append((filename, 'open'))
    EMU_TARGETS.append((filename, 'pipe'))

@pytest.mark.parametrize('filename, suffix', EMU_TARGETS)
def test_emu(filename: str, suffix: str, errns: SimpleNamespace):
    maybe_skip(filename)
    input_file = TXT_DIR / filename
    expect_file = EMU_DIR / f'{filename}.{suffix}'
    emu_args = [suffix, '1', '2', '3', '4', '5', '6']
    _, stdout, stderr = run_process(
        [CECCOMP, 'emu', *COMMON_OPTS, str(input_file), *emu_args],
    )
    errns.stderr = stderr

    with expect_file.open('r') as expect:
        assert stdout == expect.read()

def test_s390x_emu(errns: SimpleNamespace):
    input_file = BE_DIR / 's390x.text'
    expect_file = BE_DIR / 's390x.text.mmap'
    _, stdout, stderr = run_process(
        [CECCOMP, 'emu', str(input_file), 'mmap', '-a', 's390x'],
    )
    errns.stderr = stderr

    with expect_file.open() as expect:
        assert stdout == expect.read()

def test_return_A(errns: SimpleNamespace):
    input_str = '$A = 0x50005\nreturn $A\n'
    _, stdout, stderr = run_process(
        [CECCOMP, 'emu', '-', '1', '-q'], stdin=input_str,
    )
    errns.stderr = stderr
    assert stdout == 'ERRNO(5)\n'

def test_return_A_long(errns: SimpleNamespace):
    input_str = 'return $A\n'
    _, stdout, stderr = run_process(
        [CECCOMP, 'emu', '-', '1'], stdin=input_str,
    )
    errns.stderr = stderr
    assert stdout == 'return $A # A = 0, KILL\n'

def test_return_number(errns: SimpleNamespace):
    input_str = 'return 0x13371337\n'
    _, stdout, stderr = run_process(
        [CECCOMP, 'emu', '-', '1', '-q'], stdin=input_str,
    )
    errns.stderr = stderr
    assert stdout == 'KILL_PROCESS\n'

def test_return_number_long(errns: SimpleNamespace):
    input_str = 'return 0x7ff01000\n'
    _, stdout, stderr = run_process(
        [CECCOMP, 'emu', '-', '1'], stdin=input_str,
    )
    errns.stderr = stderr
    assert stdout == 'return 0x7ff01000 # TRACE(4096)\n'