Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/remote_ops.py
Original file line number Diff line number Diff line change
Expand Up @@ -706,10 +706,10 @@ def readlines(

if binary:
assert type(result) is bytes
lines = result.splitlines()
lines = result.splitlines(keepends=True)
else:
assert type(result) is str
lines = result.splitlines()
lines = result.splitlines(keepends=True)

assert type(lines) is list
return lines
Expand Down
115 changes: 115 additions & 0 deletions tests/test_os_ops_common.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
# coding: utf-8
from __future__ import annotations

from tests.helpers.global_data import OsOpsDescr
from tests.helpers.global_data import OsOpsDescrs
from tests.helpers.global_data import OsOperations
Expand All @@ -19,6 +21,7 @@
import psutil
import time
import signal as os_signal
import dataclasses

from src.exceptions import InvalidOperationException
from src.exceptions import ExecUtilException
Expand Down Expand Up @@ -1705,3 +1708,115 @@ def test_get_process_children__bad_pid(self, os_ops: OsOperations):
type(os_ops).__name__,
))
return

@dataclasses.dataclass
class tagReadLinesData_TXT:
sign: str
source: str
result: typing.List[str]

sm_ReadLinesData_TXT: typing.List[tagReadLinesData_TXT] = [
tagReadLinesData_TXT(
sign="empty",
source="",
result=[],
),
tagReadLinesData_TXT(
sign="eol",
source="\n",
result=["\n"],
),
tagReadLinesData_TXT(
sign="null_char",
source="\x00",
result=["\x00"],
),
tagReadLinesData_TXT(
sign="null_char_and_eol",
source="\x00\n",
result=["\x00\n"],
),
tagReadLinesData_TXT(
sign="one_char",
source="-",
result=["-"],
),
tagReadLinesData_TXT(
sign="one_char_and_eol",
source="-\n",
result=["-\n"],
),
tagReadLinesData_TXT(
sign="one_char_and_eol",
source="-\n",
result=["-\n"],
),
tagReadLinesData_TXT(
sign="two_empty_lines",
source="\n\n",
result=["\n", "\n"],
),
tagReadLinesData_TXT(
sign="two_lines_without_final_eol",
source="\n123",
result=["\n", "123"],
),
tagReadLinesData_TXT(
sign="A0001",
source="12\x0034\n\x00123\nabcdefg\x00\x00",
result=["12\x0034\n", "\x00123\n", "abcdefg\x00\x00"],
),
]

@pytest.fixture(
params=[
pytest.param(
x,
id=x.sign,
)
for x in sm_ReadLinesData_TXT
]
)
def readlines_data_txt(self, request: pytest.FixtureRequest) -> tagReadLinesData_TXT:
assert isinstance(request, pytest.FixtureRequest)
return request.param

def test_readlines__TXT(
self,
os_ops: OsOperations,
readlines_data_txt: tagReadLinesData_TXT,
):
assert isinstance(os_ops, OsOperations)
assert isinstance(readlines_data_txt, __class__.tagReadLinesData_TXT)

tmpfile = os_ops.mkstemp()

os_ops.write(tmpfile, readlines_data_txt.source, binary=False)

lines = os_ops.readlines(tmpfile)

assert type(lines) is list

assert lines == readlines_data_txt.result
return

def test_readlines__BIN(
self,
os_ops: OsOperations,
readlines_data_txt: tagReadLinesData_TXT,
):
assert isinstance(os_ops, OsOperations)
assert isinstance(readlines_data_txt, __class__.tagReadLinesData_TXT)

tmpfile = os_ops.mkstemp()

os_ops.write(tmpfile, readlines_data_txt.source, binary=True)

lines = os_ops.readlines(tmpfile, binary=True)

assert type(lines) is list

result_bin = [s.encode() for s in readlines_data_txt.result]

assert lines == result_bin
return