test_squashfs.py::test_superblock fails unless it's run by root
The data file tests/data/test1.squashfs used in tests/comparators/test_squashfs.py::test_superblock contains a ./null character device that cannot be create by unquashfs unless it is run by root. Recent updates to squashfs-tools made the problem more apparent by causing the test to fail as unquashfs now propagates the inode creation error to its exit status code, previously unquashfs would only report an error message to stderr.
$ unsquashfs -f -no -li -d test diffoscope-121/tests/data/test1.squashfs Parallel unsquashfs: Using 4 processors 3 inodes (3 blocks) to write drwxr-xr-x nobody/nobody 51 2015-06-24 11:47 test lrwxrwxrwx nobody/nobody 6 2015-06-24 11:47 test/link -> broken crw-r--r-- root/root 1, 3 2015-06-24 11:47 test/null create_inode: could not create character device test/null, because you're not superuser! -rw-r--r-- nobody/nobody 446 2015-06-24 11:49 test/text created 1 files created 1 directories created 1 symlinks created 0 devices created 0 fifos
On a newer squashfs-tools tests/comparators/test_squashfs.py::test_superblock fails due to an exit 1. Previously unsquashfs would exit 0 even on some errors, but this new release changed unsquash's error propagation so it will now exit 1.
As a suggestion, the test should be updated to:
- only run when running as root
- run unsquashfs using fakeroot
- use a squashfs data that does not contain a character device