mirror of
https://git.yoctoproject.org/poky
synced 2026-05-31 12:49:46 +00: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 \
|
return [line.split('/')[5].strip() for line in \
|
||||||
debugfs_output.strip().split('/\n')]
|
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):
|
class WicTestCase(OESelftestTestCase):
|
||||||
"""Wic test class."""
|
"""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')
|
self.skipTest('wic-tools cannot be built due its (intltool|gettext)-native dependency and NLS disable')
|
||||||
|
|
||||||
bitbake('core-image-minimal')
|
bitbake('core-image-minimal')
|
||||||
|
bitbake('core-image-minimal-mtdutils')
|
||||||
WicTestCase.image_is_ready = True
|
WicTestCase.image_is_ready = True
|
||||||
|
|
||||||
rmtree(self.resultdir, ignore_errors=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)
|
% (wks_file, self.resultdir), ignore_status=True).status)
|
||||||
os.remove(wks_file)
|
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):
|
class Wic2(WicTestCase):
|
||||||
|
|
||||||
def test_bmap_short(self):
|
def test_bmap_short(self):
|
||||||
|
|||||||
Reference in New Issue
Block a user