All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/4] oe/path: three fixes plus selftest coverage
@ 2026-07-17 14:34 Trevor Woerner
  2026-07-17 14:34 ` [PATCH v2 1/4] oe/path: fix bare `false` NameError in __realpath's isdir guard Trevor Woerner
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Trevor Woerner @ 2026-07-17 14:34 UTC (permalink / raw)
  To: openembedded-core

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 46 tests,
all passing.

changes in v2:
  - No source changes; the three oe/path.py fixes are unchanged from v1.
  - Expand liboe.PathTests from 37 to 46 cases, mostly around the
    harder realpath() contracts (self-referential and A->B->A symlink
    loops both raising ELOOP, multi-component resolution under
    use_physdir, and the assume_dir ENOENT-vs-tolerated contract), plus
    a dangling symlink(), a make_relative_symlink() several directories
    below its target, and two more canonicalize() cases.

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 | 376 ++++++++++++++++++++++++++
 2 files changed, 394 insertions(+), 3 deletions(-)

-- 
2.50.0.173.g8b6f19ccfc3a


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2026-07-17 14:35 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-17 14:34 [PATCH v2 0/4] oe/path: three fixes plus selftest coverage Trevor Woerner
2026-07-17 14:34 ` [PATCH v2 1/4] oe/path: fix bare `false` NameError in __realpath's isdir guard Trevor Woerner
2026-07-17 14:34 ` [PATCH v2 2/4] oe/path: don't glob-expand the destination in symlink(force=True) Trevor Woerner
2026-07-17 14:34 ` [PATCH v2 3/4] oe/path: canonicalize('') should return '' rather than the cwd Trevor Woerner
2026-07-17 14:34 ` [PATCH v2 4/4] oeqa/selftest/liboe: cover oe.path's own path logic Trevor Woerner

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.