Skip to content

Commit 54c86bd

Browse files
committed
tests: threat Framework as an internal Session object
Signed-off-by: Andrea Cervesato <andrea.cervesato@suse.com>
1 parent 1e4fab7 commit 54c86bd

File tree

6 files changed

+51
-265
lines changed

6 files changed

+51
-265
lines changed

libkirk/tests/conftest.py

Lines changed: 31 additions & 167 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,12 @@
33
"""
44

55
import os
6-
from typing import Dict, List
76

87
import pytest
98

109
import libkirk
1110
import libkirk.com
12-
from libkirk.data import Suite, Test
13-
from libkirk.framework import Framework
14-
from libkirk.results import TestResults
15-
from libkirk.sut import SUT
11+
import libkirk.sut
1612

1713

1814
@pytest.fixture(scope="session")
@@ -42,170 +38,38 @@ def _discover_plugins():
4238
libkirk.sut.discover(os.path.join(currdir, ".."), extend=False)
4339

4440

45-
class DummyFramework(Framework):
41+
@pytest.fixture
42+
def ltpdir(tmpdir):
4643
"""
47-
A generic framework created for testing.
44+
Setup the temporary folder with LTP tests.
4845
"""
46+
os.environ["LTPROOT"] = str(tmpdir)
4947

50-
def __init__(self) -> None:
51-
self._root = None
52-
53-
def setup(self, **kwargs: Dict[str, str]) -> None:
54-
self._root = kwargs.get("root", "/")
55-
self._env = kwargs.get("env", None)
56-
57-
@property
58-
def name(self) -> str:
59-
return "dummy"
60-
61-
@property
62-
def config_help(self) -> Dict[str, str]:
63-
return {}
64-
65-
async def get_suites(self, sut: SUT) -> List[str]:
66-
return ["suite01", "suite02", "sleep", "environ", "kernel_panic"]
67-
68-
async def find_command(self, sut: SUT, command: str) -> Test:
69-
return Test(name=command, cmd=command)
70-
71-
async def find_suite(self, sut: SUT, name: str) -> Suite:
72-
if name in "suite01":
73-
test0 = Test(
74-
name="test01",
75-
cwd=self._root,
76-
env=self._env,
77-
cmd="echo",
78-
args=["-n", "ciao0"],
79-
parallelizable=False,
80-
)
81-
82-
test1 = Test(
83-
name="test02",
84-
cwd=self._root,
85-
env=self._env,
86-
cmd="echo",
87-
args=["-n", "ciao0"],
88-
parallelizable=False,
89-
)
90-
91-
return Suite(name, [test0, test1])
92-
if name == "suite02":
93-
test0 = Test(
94-
name="test01",
95-
cwd=self._root,
96-
env=self._env,
97-
cmd="echo",
98-
args=["-n", "ciao0"],
99-
parallelizable=False,
100-
)
101-
102-
test1 = Test(
103-
name="test02",
104-
cwd=self._root,
105-
env=self._env,
106-
cmd="sleep",
107-
args=["0.2", "&&", "echo", "-n", "ciao1"],
108-
parallelizable=True,
109-
)
110-
111-
return Suite(name, [test0, test1])
112-
elif name == "sleep":
113-
test0 = Test(
114-
name="test01",
115-
cwd=self._root,
116-
env=self._env,
117-
cmd="sleep",
118-
args=["2"],
119-
parallelizable=False,
120-
)
121-
122-
test1 = Test(
123-
name="test02",
124-
cwd=self._root,
125-
env=self._env,
126-
cmd="sleep",
127-
args=["2"],
128-
parallelizable=False,
129-
)
130-
131-
return Suite(name, [test0, test1])
132-
elif name == "environ":
133-
test0 = Test(
134-
name="test01",
135-
cwd=self._root,
136-
env=self._env,
137-
cmd="echo",
138-
args=["-n", "$hello"],
139-
parallelizable=False,
140-
)
141-
142-
return Suite(name, [test0])
143-
elif name == "kernel_panic":
144-
test0 = Test(
145-
name="test01",
146-
cwd=self._root,
147-
env=self._env,
148-
cmd="echo",
149-
args=["Kernel", "panic"],
150-
parallelizable=False,
151-
)
152-
153-
test1 = Test(
154-
name="test01",
155-
cwd=self._root,
156-
env=self._env,
157-
cmd="sleep",
158-
args=["0.2"],
159-
parallelizable=False,
160-
)
161-
162-
return Suite(name, [test0, test1])
163-
164-
return None
165-
166-
async def read_result(
167-
self, test: Test, stdout: str, retcode: int, exec_t: float
168-
) -> TestResults:
169-
passed = 0
170-
failed = 0
171-
skipped = 0
172-
broken = 0
173-
skipped = 0
174-
warnings = 0
175-
error = retcode == -1
176-
177-
if retcode == 0:
178-
passed = 1
179-
elif retcode == 4:
180-
warnings = 1
181-
elif retcode == 32:
182-
skipped = 1
183-
elif not error:
184-
failed = 1
185-
186-
if error:
187-
broken = 1
188-
189-
result = TestResults(
190-
test=test,
191-
passed=passed,
192-
failed=failed,
193-
broken=broken,
194-
skipped=skipped,
195-
warnings=warnings,
196-
exec_time=exec_t,
197-
retcode=retcode,
198-
stdout=stdout,
199-
)
200-
201-
return result
48+
tmpdir.mkdir("testcases").mkdir("bin")
49+
runtest = tmpdir.mkdir("runtest")
20250

51+
suite01 = runtest / "suite01"
52+
suite01.write_text(
53+
"test01 echo -n ciao\ntest02 echo -n ciao\n",
54+
encoding="utf-8")
20355

204-
@pytest.fixture
205-
def dummy_framework():
206-
"""
207-
A fummy framework implementation used for testing.
208-
"""
209-
obj = DummyFramework()
210-
obj.setup(root="/tmp")
211-
yield obj
56+
suite02 = runtest / "suite02"
57+
suite02.write_text(
58+
"test01 echo -n ciao\ntest02 sleep 0.2 && echo -n ciao",
59+
encoding="utf-8")
60+
61+
sleep = runtest / "sleep"
62+
sleep.write_text(
63+
"sleep01 sleep 2\nsleep02 sleep 2",
64+
encoding="utf-8")
65+
66+
environ = runtest / "environ"
67+
environ.write_text("test01 echo -n $hello",
68+
encoding="utf-8")
69+
70+
kernel_panic = runtest / "kernel_panic"
71+
kernel_panic.write_text(
72+
"test01 echo 'Kernel panic'\ntest02 sleep 0.2",
73+
encoding="utf-8")
74+
75+
return tmpdir

libkirk/tests/test_ltp.py

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -35,20 +35,20 @@ async def sut(self):
3535
await obj.stop()
3636

3737
@pytest.fixture
38-
def framework(self, tmpdir):
38+
def framework(self):
3939
"""
4040
LTP framework object.
4141
"""
4242
fw = LTPFramework()
43-
fw.setup(root=str(tmpdir))
44-
4543
yield fw
4644

4745
@pytest.fixture(autouse=True)
4846
def prepare_tmpdir(self, tmpdir):
4947
"""
5048
Prepare the temporary directory adding runtest folder.
5149
"""
50+
os.environ["LTPROOT"] = str(tmpdir)
51+
5252
# create simple testing suites
5353
content = ""
5454
for i in range(self.TESTS_NUM):
@@ -83,13 +83,7 @@ def prepare_tmpdir(self, tmpdir):
8383
test_sh = testcases / "test.sh"
8484
test_sh.write("#!/bin/bash\necho $1 $2\n")
8585

86-
async def test_name(self, framework):
87-
"""
88-
Test that name property is not empty.
89-
"""
90-
assert framework.name == "ltp"
91-
92-
async def test_get_suites(self, framework, sut, tmpdir):
86+
async def test_get_suites(self, framework, sut):
9387
"""
9488
Test get_suites method.
9589
"""
@@ -142,12 +136,11 @@ async def test_find_suite(self, framework, sut, tmpdir):
142136
assert "TMPDIR" in test.env
143137
assert "LTP_COLORIZE_OUTPUT" in test.env
144138

145-
async def test_find_suite_max_runtime(self, sut, tmpdir):
139+
async def test_find_suite_max_runtime(self, sut):
146140
"""
147141
Test find_suite method when max_runtime is defined.
148142
"""
149-
framework = LTPFramework()
150-
framework.setup(root=str(tmpdir), max_runtime=5)
143+
framework = LTPFramework(max_runtime=5)
151144

152145
suite = await framework.find_suite(sut, "slow_suite")
153146
assert len(suite.tests) == 0

0 commit comments

Comments
 (0)