Add CreateAndWriteUUIDAndReadLabel unit test (!104)
During review and testing of this patchset it was discovered that using
GParted to set a new UUID on a FAT16 or FAT32 file system that there was
a new unwanted side effect of clearing the label.
Add unit test to cover this error scenario. It does the following:
1. Creates a file system with a known label;
2. Writes a new UUID;
3. Reads the label and confirms it matches the initial label.
This new unit test captures the fault like this:
$ ./test_SupportedFileSystems --gtest_filter='*CreateAndWriteUUIDAndReadLabel*'
...
[ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUIDAndReadLabel/fat16
test_SupportedFileSystems.cc:645: Failure
Expected equality of these values:
fs_label
Which is: "TEST_LABEL"
m_partition.get_filesystem_label().c_str()
Which is: ""
[ FAILED ] My/SupportedFileSystemsTest.CreateAndWriteUUIDAndReadLabel/fat16, where GetParam() = 13 (21 ms)
[ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUIDAndReadLabel/fat32
test_SupportedFileSystems.cc:645: Failure
Expected equality of these values:
fs_label
Which is: "TEST_LABEL"
m_partition.get_filesystem_label().c_str()
Which is: ""
[ FAILED ] My/SupportedFileSystemsTest.CreateAndWriteUUIDAndReadLabel/fat32, where GetParam() = 14 (22 ms)
Don't forget to exclude this unit test for file systems which need a
loop device but which fails to be created inside the docker CI image.
Reference:
39fdfe51da
Exclude unit tests needing losetup in Docker CI image (!59)
Closes !104 - Add Alpine Linux CI jobs and resolve label and UUID issues
with FAT16/32
This commit is contained in:
parent
b7f951bcb8
commit
fde76a949f
|
@ -92,6 +92,9 @@ stages:
|
||||||
- GTEST_FILTER="$GTEST_FILTER:My/SupportedFileSystemsTest.CreateAndWriteLabel/nilfs2"
|
- GTEST_FILTER="$GTEST_FILTER:My/SupportedFileSystemsTest.CreateAndWriteLabel/nilfs2"
|
||||||
- GTEST_FILTER="$GTEST_FILTER:My/SupportedFileSystemsTest.CreateAndWriteUUID/lvm2pv"
|
- GTEST_FILTER="$GTEST_FILTER:My/SupportedFileSystemsTest.CreateAndWriteUUID/lvm2pv"
|
||||||
- GTEST_FILTER="$GTEST_FILTER:My/SupportedFileSystemsTest.CreateAndWriteUUID/nilfs2"
|
- GTEST_FILTER="$GTEST_FILTER:My/SupportedFileSystemsTest.CreateAndWriteUUID/nilfs2"
|
||||||
|
- GTEST_FILTER="$GTEST_FILTER:My/SupportedFileSystemsTest.CreateAndWriteUUIDAndReadLabel/btrfs"
|
||||||
|
- GTEST_FILTER="$GTEST_FILTER:My/SupportedFileSystemsTest.CreateAndWriteUUIDAndReadLabel/lvm2pv"
|
||||||
|
- GTEST_FILTER="$GTEST_FILTER:My/SupportedFileSystemsTest.CreateAndWriteUUIDAndReadLabel/nilfs2"
|
||||||
- GTEST_FILTER="$GTEST_FILTER:My/SupportedFileSystemsTest.CreateAndCheck/lvm2pv"
|
- GTEST_FILTER="$GTEST_FILTER:My/SupportedFileSystemsTest.CreateAndCheck/lvm2pv"
|
||||||
- GTEST_FILTER="$GTEST_FILTER:My/SupportedFileSystemsTest.CreateAndRemove/lvm2pv"
|
- GTEST_FILTER="$GTEST_FILTER:My/SupportedFileSystemsTest.CreateAndRemove/lvm2pv"
|
||||||
- GTEST_FILTER="$GTEST_FILTER:My/SupportedFileSystemsTest.CreateAndGrow/btrfs"
|
- GTEST_FILTER="$GTEST_FILTER:My/SupportedFileSystemsTest.CreateAndGrow/btrfs"
|
||||||
|
|
|
@ -617,6 +617,33 @@ TEST_P(SupportedFileSystemsTest, CreateAndWriteUUID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
TEST_P(SupportedFileSystemsTest, CreateAndWriteUUIDAndReadLabel)
|
||||||
|
{
|
||||||
|
SKIP_IF_FS_DOESNT_SUPPORT(create);
|
||||||
|
SKIP_IF_FS_DOESNT_SUPPORT(write_uuid);
|
||||||
|
SKIP_IF_FS_DOESNT_SUPPORT(read_label);
|
||||||
|
SKIP_IF_NOT_ROOT_FOR_REQUIRED_LOOPDEV_FOR_FS(FS_BTRFS);
|
||||||
|
SKIP_IF_NOT_ROOT_FOR_REQUIRED_LOOPDEV_FOR_FS(FS_LVM2_PV);
|
||||||
|
SKIP_IF_NOT_ROOT_FOR_REQUIRED_LOOPDEV_FOR_FS(FS_NILFS2);
|
||||||
|
|
||||||
|
const char* fs_label = "TEST_LABEL";
|
||||||
|
create_image_file();
|
||||||
|
m_partition.set_filesystem_label(fs_label);
|
||||||
|
ASSERT_TRUE(m_fs_object->create(m_partition, m_operation_detail)) << m_operation_detail;
|
||||||
|
|
||||||
|
// Test writing a new random UUID is successful.
|
||||||
|
ASSERT_TRUE(m_fs_object->write_uuid(m_partition, m_operation_detail)) << m_operation_detail;
|
||||||
|
|
||||||
|
// Test reading the label is successful and it hasn't changed.
|
||||||
|
reload_partition();
|
||||||
|
m_fs_object->read_label(m_partition);
|
||||||
|
EXPECT_STREQ(fs_label, m_partition.get_filesystem_label().c_str());
|
||||||
|
|
||||||
|
// Test messages from read operation are empty or print them.
|
||||||
|
EXPECT_TRUE(m_partition.get_messages().empty()) << m_partition;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
TEST_P(SupportedFileSystemsTest, CreateAndCheck)
|
TEST_P(SupportedFileSystemsTest, CreateAndCheck)
|
||||||
{
|
{
|
||||||
SKIP_IF_FS_DOESNT_SUPPORT(create);
|
SKIP_IF_FS_DOESNT_SUPPORT(create);
|
||||||
|
|
Loading…
Reference in New Issue