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: 4 additions & 0 deletions src/local_ops.py
Original file line number Diff line number Diff line change
Expand Up @@ -728,3 +728,7 @@ def get_dirname(self, path: str) -> str:
def is_abs_path(self, path: str) -> bool:
assert type(path) is str
return os.path.isabs(path)

def get_basename(self, path: str) -> str:
assert type(path) is str
return os.path.basename(path)
4 changes: 4 additions & 0 deletions src/os_ops.py
Original file line number Diff line number Diff line change
Expand Up @@ -275,3 +275,7 @@ def get_dirname(self, path: str) -> str:
def is_abs_path(self, path: str) -> bool:
assert type(path) is str
raise NotImplementedError()

def get_basename(self, path: str) -> str:
assert type(path) is str
raise NotImplementedError()
4 changes: 4 additions & 0 deletions src/remote_ops.py
Original file line number Diff line number Diff line change
Expand Up @@ -988,6 +988,10 @@ def is_abs_path(self, path: str) -> bool:
assert type(path) is str
return posixpath.isabs(path)

def get_basename(self, path: str) -> str:
assert type(path) is str
return posixpath.basename(path)

@staticmethod
def _build_cmdline(
cmd,
Expand Down
91 changes: 91 additions & 0 deletions tests/test_os_ops_common.py
Original file line number Diff line number Diff line change
Expand Up @@ -1548,6 +1548,97 @@ def test_is_abs_path__no(self, os_ops: OsOperations):
assert actual_value is False
return

# --------------------------------------------------------------------
@dataclasses.dataclass
class tagGetBaseNameData:
sign: str
value: str
result: str

sm_GetBaseNameDatas: typing.List[tagGetBaseNameData] = [
tagGetBaseNameData(
sign="empty",
value="",
result="",
),
tagGetBaseNameData(
sign="relative_curdir",
value=".",
result=".",
),
tagGetBaseNameData(
sign="relative_parentdir",
value="..",
result="..",
),
tagGetBaseNameData(
sign="a",
value="a",
result="a",
),
tagGetBaseNameData(
sign="a.txt",
value="a.txt",
result="a.txt",
),
tagGetBaseNameData(
sign="root__a.txt",
value="/a.txt",
result="a.txt",
),
tagGetBaseNameData(
sign="curdir__a.txt",
value="./a.txt",
result="a.txt",
),
tagGetBaseNameData(
sign="parentdir__a.txt",
value="../a.txt",
result="a.txt",
),
tagGetBaseNameData(
sign="path001",
value="a/b/c/my-file-name.txt",
result="my-file-name.txt",
),
tagGetBaseNameData(
sign="path002",
value="a/b/c/my-file-name",
result="my-file-name",
),
]

@pytest.fixture(
params=[
pytest.param(
x,
id=x.sign,
)
for x in sm_GetBaseNameDatas
]
)
def fx_get_basename_data(
self,
request: pytest.FixtureRequest,
) -> tagGetBaseNameData:
assert isinstance(request, pytest.FixtureRequest)
assert type(request.param).__name__ == "tagGetBaseNameData"
return request.param

def test_get_basename(
self,
os_ops: OsOperations,
fx_get_basename_data: tagGetBaseNameData,
):
assert isinstance(os_ops, OsOperations)
assert type(fx_get_basename_data) is __class__.tagGetBaseNameData

actual_value = os_ops.get_basename(fx_get_basename_data.value)
assert type(actual_value) is str
assert actual_value == fx_get_basename_data.result
return

# --------------------------------------------------------------------
def test_get_process_children__no_children(self, os_ops: OsOperations):
assert isinstance(os_ops, OsOperations)

Expand Down