mirror of
https://git.yoctoproject.org/poky
synced 2026-04-17 18:32:12 +02:00
oeqa: wic: Add tests for permissions and change-directory
Make sure that the permissions and username are respected when using all the rootfs modifiers. Add tests for change-directory command Cc: Paul Barker <pbarker@konsulko.com> (From OE-Core rev: 4aad9531df44d1b0637bd559161702ad86861b46) Signed-off-by: Ricardo Ribalda Delgado <ricardo@ribalda.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
c81d5c6243
commit
6cfcc149ef
@@ -62,6 +62,12 @@ def extract_files(debugfs_output):
|
||||
return [line.split('/')[5].strip() for line in \
|
||||
debugfs_output.strip().split('/\n')]
|
||||
|
||||
def files_own_by_root(debugfs_output):
|
||||
for line in debugfs_output.strip().split('/\n'):
|
||||
if line.split('/')[3:5] != ['0', '0']:
|
||||
print(debugfs_output)
|
||||
return False
|
||||
return True
|
||||
|
||||
class WicTestCase(OESelftestTestCase):
|
||||
"""Wic test class."""
|
||||
@@ -84,6 +90,7 @@ class WicTestCase(OESelftestTestCase):
|
||||
self.skipTest('wic-tools cannot be built due its (intltool|gettext)-native dependency and NLS disable')
|
||||
|
||||
bitbake('core-image-minimal')
|
||||
bitbake('core-image-minimal-mtdutils')
|
||||
WicTestCase.image_is_ready = True
|
||||
|
||||
rmtree(self.resultdir, ignore_errors=True)
|
||||
@@ -506,6 +513,89 @@ part /part2 --source rootfs --ondisk mmcblk0 --fstype=ext4 --include-path %s"""
|
||||
% (wks_file, self.resultdir), ignore_status=True).status)
|
||||
os.remove(wks_file)
|
||||
|
||||
def test_permissions(self):
|
||||
"""Test permissions are respected"""
|
||||
|
||||
oldpath = os.environ['PATH']
|
||||
os.environ['PATH'] = get_bb_var("PATH", "wic-tools")
|
||||
|
||||
t_normal = """
|
||||
part / --source rootfs --fstype=ext4
|
||||
"""
|
||||
t_exclude = """
|
||||
part / --source rootfs --fstype=ext4 --exclude-path=home
|
||||
"""
|
||||
t_multi = """
|
||||
part / --source rootfs --ondisk sda --fstype=ext4
|
||||
part /export --source rootfs --rootfs=core-image-minimal-mtdutils --fstype=ext4
|
||||
"""
|
||||
t_change = """
|
||||
part / --source rootfs --ondisk sda --fstype=ext4 --exclude-path=etc/
|
||||
part /etc --source rootfs --fstype=ext4 --change-directory=etc
|
||||
"""
|
||||
tests = [t_normal, t_exclude, t_multi, t_change]
|
||||
|
||||
try:
|
||||
for test in tests:
|
||||
include_path = os.path.join(self.resultdir, 'test-include')
|
||||
os.makedirs(include_path)
|
||||
wks_file = os.path.join(include_path, 'temp.wks')
|
||||
with open(wks_file, 'w') as wks:
|
||||
wks.write(test)
|
||||
runCmd("wic create %s -e core-image-minimal -o %s" \
|
||||
% (wks_file, self.resultdir))
|
||||
|
||||
for part in glob(os.path.join(self.resultdir, 'temp-*.direct.p*')):
|
||||
res = runCmd("debugfs -R 'ls -p' %s 2>/dev/null" % (part))
|
||||
self.assertEqual(True, files_own_by_root(res.output))
|
||||
|
||||
rmtree(self.resultdir, ignore_errors=True)
|
||||
|
||||
finally:
|
||||
os.environ['PATH'] = oldpath
|
||||
|
||||
def test_change_directory(self):
|
||||
"""Test --change-directory wks option."""
|
||||
|
||||
oldpath = os.environ['PATH']
|
||||
os.environ['PATH'] = get_bb_var("PATH", "wic-tools")
|
||||
|
||||
try:
|
||||
include_path = os.path.join(self.resultdir, 'test-include')
|
||||
os.makedirs(include_path)
|
||||
wks_file = os.path.join(include_path, 'temp.wks')
|
||||
with open(wks_file, 'w') as wks:
|
||||
wks.write("part /etc --source rootfs --fstype=ext4 --change-directory=etc")
|
||||
runCmd("wic create %s -e core-image-minimal -o %s" \
|
||||
% (wks_file, self.resultdir))
|
||||
|
||||
part1 = glob(os.path.join(self.resultdir, 'temp-*.direct.p1'))[0]
|
||||
|
||||
res = runCmd("debugfs -R 'ls -p' %s 2>/dev/null" % (part1))
|
||||
files = extract_files(res.output)
|
||||
self.assertIn('passwd', files)
|
||||
|
||||
finally:
|
||||
os.environ['PATH'] = oldpath
|
||||
|
||||
def test_change_directory_errors(self):
|
||||
"""Test --change-directory wks option error handling."""
|
||||
wks_file = 'temp.wks'
|
||||
|
||||
# Absolute argument.
|
||||
with open(wks_file, 'w') as wks:
|
||||
wks.write("part / --source rootfs --fstype=ext4 --change-directory /usr")
|
||||
self.assertNotEqual(0, runCmd("wic create %s -e core-image-minimal -o %s" \
|
||||
% (wks_file, self.resultdir), ignore_status=True).status)
|
||||
os.remove(wks_file)
|
||||
|
||||
# Argument pointing to parent directory.
|
||||
with open(wks_file, 'w') as wks:
|
||||
wks.write("part / --source rootfs --fstype=ext4 --change-directory ././..")
|
||||
self.assertNotEqual(0, runCmd("wic create %s -e core-image-minimal -o %s" \
|
||||
% (wks_file, self.resultdir), ignore_status=True).status)
|
||||
os.remove(wks_file)
|
||||
|
||||
class Wic2(WicTestCase):
|
||||
|
||||
def test_bmap_short(self):
|
||||
|
||||
Reference in New Issue
Block a user