mirror of
https://git.yoctoproject.org/poky
synced 2026-05-01 06:32:11 +02:00
wic: selftest: account for occasional newline in debugfs file names
Debugfs output may contain a newline in file names in 'ls -p' output. Make sure
that output is correctly split into lines by matching '/\n' and newlines are
removed from file names.
Fixes the following error appearing in AB tests:
Traceback (most recent call last):
File "/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-oe-selftest/build/meta/lib/oeqa/selftest/wic.py", line 388, in test_exclude_path
files = [line.split('/')[5] for line in res.output.split('\n')]
File "/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-oe-selftest/build/meta/lib/oeqa/selftest/wic.py", line 388, in <listcomp>
files = [line.split('/')[5] for line in res.output.split('\n')]
IndexError: list index out of range
(From OE-Core rev: 477805b913a6c4b4b630e42f08cd9e59f1e4e254)
Signed-off-by: Maciej Borzecki <maciej.borzecki@rndity.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
49c4fb941e
commit
6e20b31d5d
@@ -381,11 +381,28 @@ part /etc --source rootfs --ondisk mmcblk0 --fstype=ext4 --exclude-path bin/ --r
|
||||
self.assertEqual(0, runCmd("dd if=%s of=%s skip=%d count=%d" %
|
||||
(wicimg, part_file, start, length)).status)
|
||||
|
||||
def extract_files(debugfs_output):
|
||||
# extract file names from the output of debugfs -R 'ls -p',
|
||||
# which looks like this:
|
||||
#
|
||||
# /2/040755/0/0/.//\n
|
||||
# /2/040755/0/0/..//\n
|
||||
# /11/040700/0/0/lost+found^M//\n
|
||||
# /12/040755/1002/1002/run//\n
|
||||
# /13/040755/1002/1002/sys//\n
|
||||
# /14/040755/1002/1002/bin//\n
|
||||
# /80/040755/1002/1002/var//\n
|
||||
# /92/040755/1002/1002/tmp//\n
|
||||
#
|
||||
# NOTE the occasional ^M in file names
|
||||
return [line.split('/')[5].strip() for line in \
|
||||
debugfs_output.strip().split('/\n')]
|
||||
|
||||
# Test partition 1, should contain the normal root directories, except
|
||||
# /usr.
|
||||
res = runCmd("debugfs -R 'ls -p' %s 2>/dev/null" % os.path.join(self.resultdir, "selftest_img.part1"))
|
||||
self.assertEqual(0, res.status)
|
||||
files = [line.split('/')[5] for line in res.output.split('\n')]
|
||||
files = extract_files(res.output)
|
||||
self.assertIn("etc", files)
|
||||
self.assertNotIn("usr", files)
|
||||
|
||||
@@ -393,7 +410,7 @@ part /etc --source rootfs --ondisk mmcblk0 --fstype=ext4 --exclude-path bin/ --r
|
||||
# directories.
|
||||
res = runCmd("debugfs -R 'ls -p' %s 2>/dev/null" % os.path.join(self.resultdir, "selftest_img.part2"))
|
||||
self.assertEqual(0, res.status)
|
||||
files = [line.split('/')[5] for line in res.output.split('\n')]
|
||||
files = extract_files(res.output)
|
||||
self.assertNotIn("etc", files)
|
||||
self.assertNotIn("usr", files)
|
||||
self.assertIn("share", files)
|
||||
@@ -402,14 +419,14 @@ part /etc --source rootfs --ondisk mmcblk0 --fstype=ext4 --exclude-path bin/ --r
|
||||
# directory, but not the files inside it.
|
||||
res = runCmd("debugfs -R 'ls -p' %s 2>/dev/null" % os.path.join(self.resultdir, "selftest_img.part3"))
|
||||
self.assertEqual(0, res.status)
|
||||
files = [line.split('/')[5] for line in res.output.split('\n')]
|
||||
files = extract_files(res.output)
|
||||
self.assertNotIn("etc", files)
|
||||
self.assertNotIn("usr", files)
|
||||
self.assertIn("share", files)
|
||||
self.assertIn("bin", files)
|
||||
res = runCmd("debugfs -R 'ls -p bin' %s 2>/dev/null" % os.path.join(self.resultdir, "selftest_img.part3"))
|
||||
self.assertEqual(0, res.status)
|
||||
files = [line.split('/')[5] for line in res.output.split('\n')]
|
||||
files = extract_files(res.output)
|
||||
self.assertIn(".", files)
|
||||
self.assertIn("..", files)
|
||||
self.assertEqual(2, len(files))
|
||||
|
||||
Reference in New Issue
Block a user