gparted/include
Mike Fleetwood 4ce37d4fde Add initial unit test of erase_filesystem_signatures() (#220)
Initially just testing erasing of Intel Software RAID signatures.
Chosen because it was expected to work, but turned out not to be true in
all cases.

The code needs to initialise GParted_Core::mainthread, construct
Gtk::Main() and execute xvfb-run because of this call chain:
    GParted_Core::erase_filesystem_signatures()
      GParted_Core::settle_device()
        Utils::execute_command ("udevadm settle ...")
          status.foreground = (Glib::Thread::self() == GParted_Core::mainthread)
          Gtk::Main::run()
This was also needed when testing file system interface classes as
discussed in commits [1][2].

The test fails like this:
    $ ./test_EraseFileSystemSignatures
    ...
    [ RUN      ] EraseFileSystemSignaturesTest.IntelSoftwareRAIDAligned
    [       OK ] EraseFileSystemSignaturesTest.IntelSoftwareRAIDAligned (155 ms)
    [ RUN      ] EraseFileSystemSignaturesTest.IntelSoftwareRAIDUnaligned
    test_EraseFileSystemSignatures.cc:286: Failure
    Failed
    image_contains_all_zeros(): First non-zero bytes:
    0x00001A00  "Intel Raid ISM C"  49 6E 74 65 6C 20 52 61 69 64 20 49 53 4D 20 43
    test_EraseFileSystemSignatures.cc:320: Failure
    Value of: image_contains_all_zeros()
      Actual: false
    Expected: true
    [  FAILED  ] EraseFileSystemSignaturesTest.IntelSoftwareRAIDUnaligned (92 ms)

Manually write the same test image:
    $ python << 'EOF'
    signature = b'Intel Raid ISM Cfg Sig. '
    import os
    fd = os.open('/tmp/test.img', os.O_CREAT|os.O_WRONLY)
    os.ftruncate(fd, 16*1024*1024 - 512)
    os.lseek(fd, -(2*512), os.SEEK_END)
    os.write(fd, signature)
    os.close(fd)
    EOF

Run gpartedbin /tmp/test.img and Format to > Cleared.  GParted continues
to display the the image file as containing an ataraid signature.
    $ blkid /tmp/test.img
    /tmp/test.img: TYPE="isw_raid_member"
    $ hexdump -C /tmp/test.img
    00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    *
    00fffa00  49 6e 74 65 6c 20 52 61  69 64 20 49 53 4d 20 43  |Intel Raid ISM C|
    00fffa10  66 67 20 53 69 67 2e 20  00 00 00 00 00 00 00 00  |fg Sig. ........|
    00fffa20  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    *
    00fffe00

This signature is not being cleared when the device/partition/image size
is 512 bytes smaller than a whole MiB because the last 3.5 KiB is left
unwritten.  This is because the last block of zeros written is 8 KiB
aligned to 4 KiB at the end of the device.

[1] a97c23c57c
    Add initial create ext2 only FileSystem interface class test (!49)
[2] 8db9a83b39
    Run test program under xvfb-run to satisfy need for an X11 display (!49)

Closes #220 - Format to Cleared not clearing "pdc" ataraid signature
2023-02-13 16:33:57 +00:00
..
BCache_Info.h Show bcache device as mount point of registered backing device (#183) 2022-03-01 16:58:46 +00:00
BlockSpecial.h Pre-populate BlockSpecial cache while reading /proc/partitions (#767842) 2016-08-06 09:47:58 -06:00
CopyBlocks.h Remove "../include/" from GParted header #includes 2016-12-12 13:15:34 -07:00
DMRaid.h Make 4 internally used only DMRaid methods private 2019-12-02 16:35:22 +00:00
Device.h Return and use constant reference from Device::get_path() (!94) 2021-11-16 16:08:17 +00:00
DialogFeatures.h White space tidy-up some of DialogFeatures 2021-07-30 16:12:24 +00:00
DialogManageFlags.h Remove "../include/" from GParted header #includes 2016-12-12 13:15:34 -07:00
DialogPasswordEntry.h Report this LUKS passphrase request reason as resize (#59) 2021-04-25 15:49:35 +00:00
Dialog_Base_Partition.h Make MB_Needed_for_Boot_Record() a static member function 2021-10-27 15:04:20 +00:00
Dialog_Disklabel.h Ensure icon sizes (#39) 2019-04-06 11:42:28 +01:00
Dialog_FileSystem_Label.h Simplify from Gtk::Table to HBox in FileSystem Label dialog 2018-06-18 10:15:33 -06:00
Dialog_Partition_Copy.h Pass the current device down to Dialog_Base_Partition class (#48) 2019-06-11 15:55:02 +00:00
Dialog_Partition_Info.h Use Gtk::Grid for Dialog_Partition_Info (!25) 2019-04-27 12:03:05 +01:00
Dialog_Partition_Name.h Simplify from Gtk::Table to HBox in Partition Name dialog 2018-06-18 10:15:33 -06:00
Dialog_Partition_New.h Rename member variable to default_fs 2021-03-04 16:55:06 +00:00
Dialog_Partition_Resize_Move.h Pass the current device down to Dialog_Base_Partition class (#48) 2019-06-11 15:55:02 +00:00
Dialog_Progress.h Rename Dialog_Progress member variable to m_curr_op 2019-04-11 10:06:36 -06:00
Dialog_Rescue_Data.h Remove "../include/" from GParted header #includes 2016-12-12 13:15:34 -07:00
DrawingAreaVisualDisk.h Use Gdk::RGBA (!25) 2019-04-27 12:03:04 +01:00
FS_Info.h Make FS_Info (blkid) cache incrementally loadable (#148) 2021-04-03 17:02:04 +00:00
FileSystem.h Add labelling of mounted btrfs (#163) 2021-07-30 16:12:24 +00:00
Frame_Resizer_Base.h Use Gdk::RGBA (!25) 2019-04-27 12:03:04 +01:00
Frame_Resizer_Extended.h Put Frame_Resizer_{Base,Extended} modules into GParted namespace (!20) 2018-11-26 17:56:32 +00:00
GParted_Core.h Add initial unit test of erase_filesystem_signatures() (#220) 2023-02-13 16:33:57 +00:00
HBoxOperations.h Use Gtk::Box for HBoxOperations (!25) 2019-04-27 12:03:04 +01:00
LUKS_Info.h Capture LUKS mapping master encryption key location (#59) 2021-04-25 15:49:35 +00:00
LVM2_PV_Info.h Return and use constant reference from LVM2_PV_Info::get_vg_name() (!94) 2021-11-16 16:08:17 +00:00
Makefile.am Report busy status of bcache (#183) 2022-03-01 16:58:46 +00:00
MenuHelpers.h prepare-for-gtk3: Prepare for removal of Gtk::Menu_Helpers::Element (#7) 2019-02-11 08:57:18 +00:00
Mount_Info.h Constify string parameters to add_mountpoint_entry() 2022-05-31 17:04:10 +00:00
Operation.h Create and use general find_extended_partition() function 2017-01-14 08:49:58 -07:00
OperationChangeUUID.h Remove "../include/" from GParted header #includes 2016-12-12 13:15:34 -07:00
OperationCheck.h Remove "../include/" from GParted header #includes 2016-12-12 13:15:34 -07:00
OperationCopy.h Remove "../include/" from GParted header #includes 2016-12-12 13:15:34 -07:00
OperationCreate.h Remove "../include/" from GParted header #includes 2016-12-12 13:15:34 -07:00
OperationDelete.h Remove "../include/" from GParted header #includes 2016-12-12 13:15:34 -07:00
OperationDetail.h Return constant reference from OperationDetail::get_treepath() (!94) 2021-11-16 16:08:17 +00:00
OperationFormat.h Remove "../include/" from GParted header #includes 2016-12-12 13:15:34 -07:00
OperationLabelFileSystem.h Remove "../include/" from GParted header #includes 2016-12-12 13:15:34 -07:00
OperationNamePartition.h Remove "../include/" from GParted header #includes 2016-12-12 13:15:34 -07:00
OperationResizeMove.h Remove "../include/" from GParted header #includes 2016-12-12 13:15:34 -07:00
OptionComboBox.h modern-gtk2: Delay construction of Gtk::TreeModel* objects (!17) 2018-11-12 21:50:42 +00:00
Partition.h Return and use constant reference from Partition::get_mountpoints() (!94) 2021-11-16 16:08:17 +00:00
PartitionLUKS.h Rename enum FILESYSTEM to FSType 2018-01-28 10:09:35 -07:00
PartitionVector.h Create and use general find_extended_partition() function 2017-01-14 08:49:58 -07:00
PasswordRAMStore.h Change to insert or replace PasswordRAMStore::store() interface (#795617) 2018-04-30 09:10:48 -06:00
PipeCapture.h Refactor ::OnReadable() creating get_utf8_char_validated() (#136) 2021-02-22 16:14:35 +00:00
Proc_Partitions_Info.h Read partition names from /proc/partitions too (#131) 2021-02-10 16:30:13 +00:00
ProgressBar.h Write a generic progress bar class (#760709) 2016-02-12 09:09:56 -07:00
SWRaid_Info.h Return and use constant reference from SWRaid_Info::get_label() (!94) 2021-11-16 16:08:17 +00:00
SupportedFileSystems.h Split FILESYSTEMS and FILESYSTEM_MAP into separate module (!49) 2019-11-09 17:18:34 +00:00
TreeView_Detail.h Remove unneeded #include <vector> from TreeView_Detail.h 2020-09-18 16:00:44 +00:00
Utils.h Extract repeated code into trim_trailing_new_line() (!105) 2022-08-25 15:41:31 +00:00
Win_GParted.h Return and use constant reference from Device::get_path() (!94) 2021-11-16 16:08:17 +00:00
btrfs.h Use btrfs filesystem show --raw to read usage (!105) 2022-08-25 15:41:31 +00:00
exfat.h Add support for updating the exFAT UUID (!67) 2021-02-17 17:16:48 +00:00
ext2.h Remove checks for e4fsprogs commands (#794253) 2018-03-26 10:16:45 -06:00
f2fs.h Enhance F2FS support (!29) 2019-03-26 08:08:10 +00:00
fat16.h Switch to faster minfo and mdir to read FAT16/32 usage (#569921) 2019-07-04 10:51:50 -06:00
hfs.h Remove "../include/" from GParted header #includes 2016-12-12 13:15:34 -07:00
hfsplus.h Remove "../include/" from GParted header #includes 2016-12-12 13:15:34 -07:00
i18n.h Drop compose subdir (#46) 2019-03-27 16:45:22 +00:00
jfs.h Stop providing a default for FileSystem::resize() fill_partition argument 2016-12-12 13:15:34 -07:00
linux_swap.h Make get_custom_text() and get_generic_text() return by reference 2018-06-18 10:15:33 -06:00
luks.h Make get_custom_text() and get_generic_text() return by reference 2018-06-18 10:15:33 -06:00
lvm2_pv.h Make get_custom_text() and get_generic_text() return by reference 2018-06-18 10:15:33 -06:00
minix.h Add support for minix file system (!12) 2018-08-24 20:22:08 +01:00
nilfs2.h Stop providing a default for FileSystem::resize() fill_partition argument 2016-12-12 13:15:34 -07:00
ntfs.h Rework scope of fat16:: and ntfs::Change_UUID_Warning vectors 2018-06-18 14:47:17 -06:00
reiser4.h Remove "../include/" from GParted header #includes 2016-12-12 13:15:34 -07:00
reiserfs.h Stop providing a default for FileSystem::resize() fill_partition argument 2016-12-12 13:15:34 -07:00
udf.h Set dynamic UDF file system size limits (#787204) 2018-01-28 10:09:35 -07:00
xfs.h Stop providing a default for FileSystem::resize() fill_partition argument 2016-12-12 13:15:34 -07:00