From: Adrian Freihofer <[email protected]>

On some systems, ls truncates long user and group names, which causes the
ownership check to fail. For example:

AssertionError: Regex didn't match:
  '^-.+ cmake-example cmake-example .+ /etc/cmake\\-example\\.conf$' not found 
in
  '-rw-r--r--    1 cmake-ex cmake-ex        83 Mar  9  2018 
/etc/cmake-example.conf'

Use "stat -c '%U %G'" instead, which always returns the full user and group
names regardless of terminal width or system configuration.

Signed-off-by: Adrian Freihofer <[email protected]>

  # Please enter the commit message for your changes. Lines starting
  # with '#' will be ignored, and an empty message aborts the commit.
  #
  # Date:      Mon Mar 2 23:32:13 2026 +0100
  #
  # interactive rebase in progress; onto c1fb515f2a
  # Last commands done (3 commands done):
  #    pick 08cf9a6fc0 # Revert "devtool: ide-sdk deploy-target without bitbake"
  #    reword 2ab466cf23 # oe-selftest: devtool: use stat for reading user 
names in ide-sdk tests
  # Next commands to do (3 remaining commands):
  #    reword 81562bd21a # oe-selftest/cpp-example: fix conf file ownership 
with static UIDs/GIDs
  #    reword 1f6fd56a04 # oe-selftest: devtool: GDB breakpoint after 
std::vector is constructed
  # You are currently editing a commit while rebasing branch 
'adrianf/ide-sdk-improvements' on 'c1fb515f2a'.
  #
  # Changes to be committed:
  #     modified:   meta/lib/oeqa/selftest/cases/devtool.py
  #
  # ------------------------ >8 ------------------------
  # Do not modify or remove the line above.
  # Everything below it will be ignored.
  diff --git c/meta/lib/oeqa/selftest/cases/devtool.py 
i/meta/lib/oeqa/selftest/cases/devtool.py
  index 5f25c4803b..9d8ffcc786 100644
  --- c/meta/lib/oeqa/selftest/cases/devtool.py
  +++ i/meta/lib/oeqa/selftest/cases/devtool.py
  @@ -2934,11 +2934,14 @@ class DevtoolIdeSdkTests(DevtoolBase):

       def _verify_conf_file(self, qemu, conf_file, owner, group):
           """Helper to verify a configuration file is owned by the proper user 
and group"""
  -        ls_cmd = "ls -l %s" % conf_file
  -        status, output = qemu.run(ls_cmd)
  -        self.assertEqual(status, 0, msg="Failed to ls %s: %s" % (conf_file, 
output))
  -        self.assertRegex(output, rf"^-.+ {owner} {group} .+ 
{re.escape(conf_file)}$",
  -                         msg="%s not owned by %s:%s: %s" % (conf_file, 
owner, group, output))
  +        stat_cmd = "stat -c '%%U %%G' %s" % conf_file
  +        status, output = qemu.run(stat_cmd)
  +        self.assertEqual(status, 0, msg="Failed to stat %s: %s" % 
(conf_file, output))
  +        actual_owner, actual_group = output.strip().split()
  +        self.assertEqual(actual_owner, owner,
  +                         msg="%s not owned by user %s: got %s" % (conf_file, 
owner, actual_owner))
  +        self.assertEqual(actual_group, group,
  +                         msg="%s not owned by group %s: got %s" % 
(conf_file, group, actual_group))

       @OETestTag("runqemu")
       def test_devtool_ide_sdk_none_qemu(self):

Signed-off-by: Adrian Freihofer <[email protected]>
---
 meta/lib/oeqa/selftest/cases/devtool.py | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/meta/lib/oeqa/selftest/cases/devtool.py 
b/meta/lib/oeqa/selftest/cases/devtool.py
index 5f25c4803b..9d8ffcc786 100644
--- a/meta/lib/oeqa/selftest/cases/devtool.py
+++ b/meta/lib/oeqa/selftest/cases/devtool.py
@@ -2934,11 +2934,14 @@ class DevtoolIdeSdkTests(DevtoolBase):
 
     def _verify_conf_file(self, qemu, conf_file, owner, group):
         """Helper to verify a configuration file is owned by the proper user 
and group"""
-        ls_cmd = "ls -l %s" % conf_file
-        status, output = qemu.run(ls_cmd)
-        self.assertEqual(status, 0, msg="Failed to ls %s: %s" % (conf_file, 
output))
-        self.assertRegex(output, rf"^-.+ {owner} {group} .+ 
{re.escape(conf_file)}$",
-                         msg="%s not owned by %s:%s: %s" % (conf_file, owner, 
group, output))
+        stat_cmd = "stat -c '%%U %%G' %s" % conf_file
+        status, output = qemu.run(stat_cmd)
+        self.assertEqual(status, 0, msg="Failed to stat %s: %s" % (conf_file, 
output))
+        actual_owner, actual_group = output.strip().split()
+        self.assertEqual(actual_owner, owner,
+                         msg="%s not owned by user %s: got %s" % (conf_file, 
owner, actual_owner))
+        self.assertEqual(actual_group, group,
+                         msg="%s not owned by group %s: got %s" % (conf_file, 
group, actual_group))
 
     @OETestTag("runqemu")
     def test_devtool_ide_sdk_none_qemu(self):
-- 
2.53.0

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#233440): 
https://lists.openembedded.org/g/openembedded-core/message/233440
Mute This Topic: https://lists.openembedded.org/mt/118391918/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to