While adding unit coverage for the copy of oe/path.py vendored into the
standalone wic repository, three real bugs turned up in the shared
meta/lib/oe/path.py. They are fixed here at the source so the whole
project benefits, each as its own standalone commit:
- __realpath()'s isdir guard assigns a bare `false`, which is not a
Python name; when os.path.isdir() raises, the handler meant to
absorb the error raises NameError instead. Use the builtin False.
- symlink(force=True) cleared the destination through remove(), which
globs its argument; a destination containing glob metacharacters
could fail to match itself (leaving a stale entry) or match
unrelated files. Remove the literal destination instead.
- canonicalize('') and canonicalize(None) returned the current
working directory, because os.path.realpath('') does; a stray
separator injected a spurious cwd entry too. Skip empty tokens.
The final commit extends meta/lib/oeqa/selftest/cases/liboe.py with a
PathTests class covering oe.path's own logic (join(), is_path_parent(),
symlink(), make_relative_symlink(), canonicalize(), which_wild(),
realpath()) and locking in the three fixes; backing any fix out turns
the matching test red. oe-selftest -r liboe.PathTests runs 37 tests,
all passing.
Trevor Woerner (4):
oe/path: fix bare `false` NameError in __realpath's isdir guard
oe/path: don't glob-expand the destination in symlink(force=True)
oe/path: canonicalize('') should return '' rather than the cwd
oeqa/selftest/liboe: cover oe.path's own path logic
meta/lib/oe/path.py | 21 +-
meta/lib/oeqa/selftest/cases/liboe.py | 289 ++++++++++++++++++++++++++
2 files changed, 307 insertions(+), 3 deletions(-)
--
2.50.0.173.g8b6f19ccfc3a
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#241043):
https://lists.openembedded.org/g/openembedded-core/message/241043
Mute This Topic: https://lists.openembedded.org/mt/120290482/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-