diff options
Diffstat (limited to 'meta/lib')
| -rw-r--r-- | meta/lib/oeqa/selftest/cases/wic.py | 73 |
1 files changed, 55 insertions, 18 deletions
diff --git a/meta/lib/oeqa/selftest/cases/wic.py b/meta/lib/oeqa/selftest/cases/wic.py index 3c5be2f501..46cd98b193 100644 --- a/meta/lib/oeqa/selftest/cases/wic.py +++ b/meta/lib/oeqa/selftest/cases/wic.py | |||
| @@ -44,6 +44,24 @@ def only_for_arch(archs, image='core-image-minimal'): | |||
| 44 | return wrapped_f | 44 | return wrapped_f |
| 45 | return wrapper | 45 | return wrapper |
| 46 | 46 | ||
| 47 | def extract_files(debugfs_output): | ||
| 48 | """ | ||
| 49 | extract file names from the output of debugfs -R 'ls -p', | ||
| 50 | which looks like this: | ||
| 51 | |||
| 52 | /2/040755/0/0/.//\n | ||
| 53 | /2/040755/0/0/..//\n | ||
| 54 | /11/040700/0/0/lost+found^M//\n | ||
| 55 | /12/040755/1002/1002/run//\n | ||
| 56 | /13/040755/1002/1002/sys//\n | ||
| 57 | /14/040755/1002/1002/bin//\n | ||
| 58 | /80/040755/1002/1002/var//\n | ||
| 59 | /92/040755/1002/1002/tmp//\n | ||
| 60 | """ | ||
| 61 | # NOTE the occasional ^M in file names | ||
| 62 | return [line.split('/')[5].strip() for line in \ | ||
| 63 | debugfs_output.strip().split('/\n')] | ||
| 64 | |||
| 47 | 65 | ||
| 48 | class WicTestCase(OESelftestTestCase): | 66 | class WicTestCase(OESelftestTestCase): |
| 49 | """Wic test class.""" | 67 | """Wic test class.""" |
| @@ -393,24 +411,6 @@ part /etc --source rootfs --ondisk mmcblk0 --fstype=ext4 --exclude-path bin/ --r | |||
| 393 | runCmd("dd if=%s of=%s skip=%d count=%d" % | 411 | runCmd("dd if=%s of=%s skip=%d count=%d" % |
| 394 | (wicimg, part_file, start, length)) | 412 | (wicimg, part_file, start, length)) |
| 395 | 413 | ||
| 396 | def extract_files(debugfs_output): | ||
| 397 | """ | ||
| 398 | extract file names from the output of debugfs -R 'ls -p', | ||
| 399 | which looks like this: | ||
| 400 | |||
| 401 | /2/040755/0/0/.//\n | ||
| 402 | /2/040755/0/0/..//\n | ||
| 403 | /11/040700/0/0/lost+found^M//\n | ||
| 404 | /12/040755/1002/1002/run//\n | ||
| 405 | /13/040755/1002/1002/sys//\n | ||
| 406 | /14/040755/1002/1002/bin//\n | ||
| 407 | /80/040755/1002/1002/var//\n | ||
| 408 | /92/040755/1002/1002/tmp//\n | ||
| 409 | """ | ||
| 410 | # NOTE the occasional ^M in file names | ||
| 411 | return [line.split('/')[5].strip() for line in \ | ||
| 412 | debugfs_output.strip().split('/\n')] | ||
| 413 | |||
| 414 | # Test partition 1, should contain the normal root directories, except | 414 | # Test partition 1, should contain the normal root directories, except |
| 415 | # /usr. | 415 | # /usr. |
| 416 | res = runCmd("debugfs -R 'ls -p' %s 2>/dev/null" % \ | 416 | res = runCmd("debugfs -R 'ls -p' %s 2>/dev/null" % \ |
| @@ -451,6 +451,43 @@ part /etc --source rootfs --ondisk mmcblk0 --fstype=ext4 --exclude-path bin/ --r | |||
| 451 | finally: | 451 | finally: |
| 452 | os.environ['PATH'] = oldpath | 452 | os.environ['PATH'] = oldpath |
| 453 | 453 | ||
| 454 | def test_include_path(self): | ||
| 455 | """Test --include-path wks option.""" | ||
| 456 | |||
| 457 | oldpath = os.environ['PATH'] | ||
| 458 | os.environ['PATH'] = get_bb_var("PATH", "wic-tools") | ||
| 459 | |||
| 460 | try: | ||
| 461 | include_path = os.path.join(self.resultdir, 'test-include') | ||
| 462 | os.makedirs(include_path) | ||
| 463 | with open(os.path.join(include_path, 'test-file'), 'w') as t: | ||
| 464 | t.write("test\n") | ||
| 465 | wks_file = os.path.join(include_path, 'temp.wks') | ||
| 466 | with open(wks_file, 'w') as wks: | ||
| 467 | rootfs_dir = get_bb_var('IMAGE_ROOTFS', 'core-image-minimal') | ||
| 468 | wks.write(""" | ||
| 469 | part /part1 --source rootfs --ondisk mmcblk0 --fstype=ext4 | ||
| 470 | part /part2 --source rootfs --ondisk mmcblk0 --fstype=ext4 --include-path %s""" | ||
| 471 | % (include_path)) | ||
| 472 | runCmd("wic create %s -e core-image-minimal -o %s" \ | ||
| 473 | % (wks_file, self.resultdir)) | ||
| 474 | |||
| 475 | part1 = glob(os.path.join(self.resultdir, 'temp-*.direct.p1'))[0] | ||
| 476 | part2 = glob(os.path.join(self.resultdir, 'temp-*.direct.p2'))[0] | ||
| 477 | |||
| 478 | # Test partition 1, should not contain 'test-file' | ||
| 479 | res = runCmd("debugfs -R 'ls -p' %s 2>/dev/null" % (part1)) | ||
| 480 | files = extract_files(res.output) | ||
| 481 | self.assertNotIn('test-file', files) | ||
| 482 | |||
| 483 | # Test partition 2, should not contain 'test-file' | ||
| 484 | res = runCmd("debugfs -R 'ls -p' %s 2>/dev/null" % (part2)) | ||
| 485 | files = extract_files(res.output) | ||
| 486 | self.assertIn('test-file', files) | ||
| 487 | |||
| 488 | finally: | ||
| 489 | os.environ['PATH'] = oldpath | ||
| 490 | |||
| 454 | def test_exclude_path_errors(self): | 491 | def test_exclude_path_errors(self): |
| 455 | """Test --exclude-path wks option error handling.""" | 492 | """Test --exclude-path wks option error handling.""" |
| 456 | wks_file = 'temp.wks' | 493 | wks_file = 'temp.wks' |
