gparted/tests/test_SupportedFileSystems.cc

570 lines
18 KiB
C++
Raw Normal View History

Add initial create ext2 only FileSystem interface class test (!49) This is the first step of adding testing of the derived FileSystem interface classes which call the file system specific executables. Rather than mocking command execution and returned output the tests run the real commands, effectively making this integration testing. Test case setup determines the file system supported actions using get_filesystem_support() and individual tests are skipped if a feature is not supported, just as GParted does for it's actions. Each test creates it's own sparse image file and a fresh file system, performs a test on one FileSystem interface call and deletes the image file. This makes each test independent and allows them to run as a non-root user, provided the file system command itself doesn't require root. Errors reported for a failed interface call will include the GParted OperationDetails, which in turn includes the file system specific command used and stdout and stderr from it's execution. For example, temporarily breaking the test code to create a 10 KiB image file instead of 256 MiB one produces this: $ ./test_ext2 Running main() from test_ext2.cc [==========] Running 1 test from 1 test case. [----------] Global test environment set-up. [----------] 1 test from ext2Test [ RUN ] ext2Test.Create test_ext2.cc:199: Failure Value of: s_ext2_obj->create(m_partition, m_operation_detail) Actual: false Expected: true Operation details: <b><i>mkfs.ext2 -F -L &apos;&apos; &apos;/home/centos/programming/c/gparted/tests/test_ext2.img&apos;</i></b> 00:00:00 (ERROR) <i></i> <i>mke2fs 1.42.9 (28-Dec-2013) /home/centos/programming/c/gparted/tests/test_ext2.img: Not enough space to build proposed filesystem while setting up superblock </i> [ FAILED ] ext2Test.Create (25 ms) [----------] 1 test from ext2Test (25 ms total) [----------] Global test environment tear-down [==========] 1 test from 1 test case ran. (30 ms total) [ PASSED ] 0 tests. [ FAILED ] 1 test, listed below: [ FAILED ] ext2Test.Create 1 FAILED TEST $ echo $? 1 Also as Utils:: and FileSystem::execute_command() are needed, this requires linking with GParted_Core for GParted_Core::mainthread and therefore with most of the non-UI classes in gpartedbin. Closes !49 - Add file system interface tests
2019-07-17 06:08:08 -06:00
/* Copyright (C) 2019 Mike Fleetwood
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
/* Test SupportedFileSystems
Add initial create ext2 only FileSystem interface class test (!49) This is the first step of adding testing of the derived FileSystem interface classes which call the file system specific executables. Rather than mocking command execution and returned output the tests run the real commands, effectively making this integration testing. Test case setup determines the file system supported actions using get_filesystem_support() and individual tests are skipped if a feature is not supported, just as GParted does for it's actions. Each test creates it's own sparse image file and a fresh file system, performs a test on one FileSystem interface call and deletes the image file. This makes each test independent and allows them to run as a non-root user, provided the file system command itself doesn't require root. Errors reported for a failed interface call will include the GParted OperationDetails, which in turn includes the file system specific command used and stdout and stderr from it's execution. For example, temporarily breaking the test code to create a 10 KiB image file instead of 256 MiB one produces this: $ ./test_ext2 Running main() from test_ext2.cc [==========] Running 1 test from 1 test case. [----------] Global test environment set-up. [----------] 1 test from ext2Test [ RUN ] ext2Test.Create test_ext2.cc:199: Failure Value of: s_ext2_obj->create(m_partition, m_operation_detail) Actual: false Expected: true Operation details: <b><i>mkfs.ext2 -F -L &apos;&apos; &apos;/home/centos/programming/c/gparted/tests/test_ext2.img&apos;</i></b> 00:00:00 (ERROR) <i></i> <i>mke2fs 1.42.9 (28-Dec-2013) /home/centos/programming/c/gparted/tests/test_ext2.img: Not enough space to build proposed filesystem while setting up superblock </i> [ FAILED ] ext2Test.Create (25 ms) [----------] 1 test from ext2Test (25 ms total) [----------] Global test environment tear-down [==========] 1 test from 1 test case ran. (30 ms total) [ PASSED ] 0 tests. [ FAILED ] 1 test, listed below: [ FAILED ] ext2Test.Create 1 FAILED TEST $ echo $? 1 Also as Utils:: and FileSystem::execute_command() are needed, this requires linking with GParted_Core for GParted_Core::mainthread and therefore with most of the non-UI classes in gpartedbin. Closes !49 - Add file system interface tests
2019-07-17 06:08:08 -06:00
*
* Test the derived FileSystem interface classes which call the file system specific
* executables via the SupportedFileSystems class. Rather than mocking command execution
* and returned output just run real commands, effectively making this integration testing.
Add initial create ext2 only FileSystem interface class test (!49) This is the first step of adding testing of the derived FileSystem interface classes which call the file system specific executables. Rather than mocking command execution and returned output the tests run the real commands, effectively making this integration testing. Test case setup determines the file system supported actions using get_filesystem_support() and individual tests are skipped if a feature is not supported, just as GParted does for it's actions. Each test creates it's own sparse image file and a fresh file system, performs a test on one FileSystem interface call and deletes the image file. This makes each test independent and allows them to run as a non-root user, provided the file system command itself doesn't require root. Errors reported for a failed interface call will include the GParted OperationDetails, which in turn includes the file system specific command used and stdout and stderr from it's execution. For example, temporarily breaking the test code to create a 10 KiB image file instead of 256 MiB one produces this: $ ./test_ext2 Running main() from test_ext2.cc [==========] Running 1 test from 1 test case. [----------] Global test environment set-up. [----------] 1 test from ext2Test [ RUN ] ext2Test.Create test_ext2.cc:199: Failure Value of: s_ext2_obj->create(m_partition, m_operation_detail) Actual: false Expected: true Operation details: <b><i>mkfs.ext2 -F -L &apos;&apos; &apos;/home/centos/programming/c/gparted/tests/test_ext2.img&apos;</i></b> 00:00:00 (ERROR) <i></i> <i>mke2fs 1.42.9 (28-Dec-2013) /home/centos/programming/c/gparted/tests/test_ext2.img: Not enough space to build proposed filesystem while setting up superblock </i> [ FAILED ] ext2Test.Create (25 ms) [----------] 1 test from ext2Test (25 ms total) [----------] Global test environment tear-down [==========] 1 test from 1 test case ran. (30 ms total) [ PASSED ] 0 tests. [ FAILED ] 1 test, listed below: [ FAILED ] ext2Test.Create 1 FAILED TEST $ echo $? 1 Also as Utils:: and FileSystem::execute_command() are needed, this requires linking with GParted_Core for GParted_Core::mainthread and therefore with most of the non-UI classes in gpartedbin. Closes !49 - Add file system interface tests
2019-07-17 06:08:08 -06:00
*
* Test case setup determines the file system supported actions using
* get_filesystem_support() and individual tests are skipped if a feature is not
* supported, just as GParted does for it's actions.
*
* Each test creates it's own sparse image file and a fresh file system, performs a test
* on one FileSystem interface call and deletes the image file. This makes each test
* independent and allows them to run as a non-root user, provided the file system command
* itself doesn't require root. Errors reported for a failed interface call will include
* the GParted OperationDetails, which in turn includes the file system specific command
* used and stdout and stderr from it's execution.
*/
#include "GParted_Core.h"
#include "FileSystem.h"
#include "OperationDetail.h"
#include "Partition.h"
#include "Utils.h"
#include "SupportedFileSystems.h"
Add initial create ext2 only FileSystem interface class test (!49) This is the first step of adding testing of the derived FileSystem interface classes which call the file system specific executables. Rather than mocking command execution and returned output the tests run the real commands, effectively making this integration testing. Test case setup determines the file system supported actions using get_filesystem_support() and individual tests are skipped if a feature is not supported, just as GParted does for it's actions. Each test creates it's own sparse image file and a fresh file system, performs a test on one FileSystem interface call and deletes the image file. This makes each test independent and allows them to run as a non-root user, provided the file system command itself doesn't require root. Errors reported for a failed interface call will include the GParted OperationDetails, which in turn includes the file system specific command used and stdout and stderr from it's execution. For example, temporarily breaking the test code to create a 10 KiB image file instead of 256 MiB one produces this: $ ./test_ext2 Running main() from test_ext2.cc [==========] Running 1 test from 1 test case. [----------] Global test environment set-up. [----------] 1 test from ext2Test [ RUN ] ext2Test.Create test_ext2.cc:199: Failure Value of: s_ext2_obj->create(m_partition, m_operation_detail) Actual: false Expected: true Operation details: <b><i>mkfs.ext2 -F -L &apos;&apos; &apos;/home/centos/programming/c/gparted/tests/test_ext2.img&apos;</i></b> 00:00:00 (ERROR) <i></i> <i>mke2fs 1.42.9 (28-Dec-2013) /home/centos/programming/c/gparted/tests/test_ext2.img: Not enough space to build proposed filesystem while setting up superblock </i> [ FAILED ] ext2Test.Create (25 ms) [----------] 1 test from ext2Test (25 ms total) [----------] Global test environment tear-down [==========] 1 test from 1 test case ran. (30 ms total) [ PASSED ] 0 tests. [ FAILED ] 1 test, listed below: [ FAILED ] ext2Test.Create 1 FAILED TEST $ echo $? 1 Also as Utils:: and FileSystem::execute_command() are needed, this requires linking with GParted_Core for GParted_Core::mainthread and therefore with most of the non-UI classes in gpartedbin. Closes !49 - Add file system interface tests
2019-07-17 06:08:08 -06:00
#include "gtest/gtest.h"
#include <iostream>
#include <fstream>
#include <vector>
Run test program under xvfb-run to satisfy need for an X11 display (!49) Running test_ext2 in GitLab Continuous Integration environment fails like this: (test_ext2:6338): Gtk-WARNING **: 09:06:17.576: cannot open display: Running main() from test_ext2.cc Obviously the GitLab CI environment doesn't have an X11 display, but unfortunately this test case code requires one. Utils::execute_command() calls Gtk::Main::run() so requires a Gtk::Main object constructing and therefore an X11 display, even though this program never displays anything graphical. The call chain is: main() test_ext2.cc Gtk::Main::Main() gtkmm/gtk/src/main.ccg Gtk::Main::init() [1] gtk_init() gtk/gtk/gtkmain.c [2] which exits with a non-zero exit status when the DISPLAY environment variable is unset. Looked at deriving from Gtk::Main class and writing a replacement init() method which calls gtk_init_check() instead of gtk_init() but Gtk::Main::instance_ is a private member so not accessible in a derived class. Tried using Glib::MainLoop instead of Gtk::Main, but that doesn't initialise everything that Gtk::Main(), so the program crashes. Therefore use xvfb-run [3][4] to run this test program against a virtual X11 display when a real display isn't available. Coded execution of xvfb-run into this test program so that it can simply be executed on the command line like the other test programs, without having to remember to run "xvfb-run ./test_ext2 ...". [1] Gtk::Main::init() https://gitlab.gnome.org/GNOME/gtkmm/blob/3.10.1/gtk/src/main.ccg#L287 [2] gtk_init() https://gitlab.gnome.org/GNOME/gtk/blob/3.10.9/gtk/gtkmain.c#L1000 [3] how to run gtk app on linux without an x server https://superuser.com/questions/624918/how-to-run-gtk-app-on-linux-without-an-x-server [4] Using GTK without DISPLAY https://stackoverflow.com/questions/11694278/using-gtk-without-display Closes !49 - Add file system interface tests
2019-09-24 02:17:30 -06:00
#include <stdlib.h>
Add initial create ext2 only FileSystem interface class test (!49) This is the first step of adding testing of the derived FileSystem interface classes which call the file system specific executables. Rather than mocking command execution and returned output the tests run the real commands, effectively making this integration testing. Test case setup determines the file system supported actions using get_filesystem_support() and individual tests are skipped if a feature is not supported, just as GParted does for it's actions. Each test creates it's own sparse image file and a fresh file system, performs a test on one FileSystem interface call and deletes the image file. This makes each test independent and allows them to run as a non-root user, provided the file system command itself doesn't require root. Errors reported for a failed interface call will include the GParted OperationDetails, which in turn includes the file system specific command used and stdout and stderr from it's execution. For example, temporarily breaking the test code to create a 10 KiB image file instead of 256 MiB one produces this: $ ./test_ext2 Running main() from test_ext2.cc [==========] Running 1 test from 1 test case. [----------] Global test environment set-up. [----------] 1 test from ext2Test [ RUN ] ext2Test.Create test_ext2.cc:199: Failure Value of: s_ext2_obj->create(m_partition, m_operation_detail) Actual: false Expected: true Operation details: <b><i>mkfs.ext2 -F -L &apos;&apos; &apos;/home/centos/programming/c/gparted/tests/test_ext2.img&apos;</i></b> 00:00:00 (ERROR) <i></i> <i>mke2fs 1.42.9 (28-Dec-2013) /home/centos/programming/c/gparted/tests/test_ext2.img: Not enough space to build proposed filesystem while setting up superblock </i> [ FAILED ] ext2Test.Create (25 ms) [----------] 1 test from ext2Test (25 ms total) [----------] Global test environment tear-down [==========] 1 test from 1 test case ran. (30 ms total) [ PASSED ] 0 tests. [ FAILED ] 1 test, listed below: [ FAILED ] ext2Test.Create 1 FAILED TEST $ echo $? 1 Also as Utils:: and FileSystem::execute_command() are needed, this requires linking with GParted_Core for GParted_Core::mainthread and therefore with most of the non-UI classes in gpartedbin. Closes !49 - Add file system interface tests
2019-07-17 06:08:08 -06:00
#include <stddef.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <fcntl.h>
#include <string.h>
#include <errno.h>
#include <gtkmm.h>
#include <glibmm/thread.h>
#include <glibmm/ustring.h>
#include <parted/parted.h>
namespace GParted
{
// Hacky XML parser which strips italic and bold markup added in
// OperationDetail::set_description() and reverts just these 5 characters &<>'" encoded by
// Glib::Markup::escape_text() -> g_markup_escape_text() -> append_escaped_text().
Glib::ustring strip_markup(const Glib::ustring& str)
{
size_t len = str.length();
size_t i = 0;
Glib::ustring ret;
ret.reserve(len);
while (i < len)
{
if (str.compare(i, 3, "<i>") == 0)
i += 3;
else if (str.compare(i, 4, "</i>") == 0)
i += 4;
else if (str.compare(i, 3, "<b>") == 0)
i += 3;
else if (str.compare(i, 4, "</b>") == 0)
i += 4;
else if (str.compare(i, 5, "&amp;") == 0)
{
ret.push_back('&');
i += 5;
}
else if (str.compare(i, 4, "&lt;") == 0)
{
ret.push_back('<');
i += 4;
}
else if (str.compare(i, 4, "&gt;") == 0)
{
ret.push_back('>');
i += 4;
}
else if (str.compare(i, 6, "&apos;") == 0)
{
ret.push_back('\'');
i += 6;
}
else if (str.compare(i, 6, "&quot;") == 0)
{
ret.push_back('"');
i += 6;
}
else
{
ret.push_back(str[i]);
i++;
}
}
return ret;
}
// Print method for the messages in a Partition object.
std::ostream& operator<<(std::ostream& out, const Partition& partition)
{
const std::vector<Glib::ustring> messages = partition.get_messages();
out << "Partition messages:\n";
for (unsigned int i = 0; i < messages.size(); i++)
out << messages[i];
return out;
}
Add initial create ext2 only FileSystem interface class test (!49) This is the first step of adding testing of the derived FileSystem interface classes which call the file system specific executables. Rather than mocking command execution and returned output the tests run the real commands, effectively making this integration testing. Test case setup determines the file system supported actions using get_filesystem_support() and individual tests are skipped if a feature is not supported, just as GParted does for it's actions. Each test creates it's own sparse image file and a fresh file system, performs a test on one FileSystem interface call and deletes the image file. This makes each test independent and allows them to run as a non-root user, provided the file system command itself doesn't require root. Errors reported for a failed interface call will include the GParted OperationDetails, which in turn includes the file system specific command used and stdout and stderr from it's execution. For example, temporarily breaking the test code to create a 10 KiB image file instead of 256 MiB one produces this: $ ./test_ext2 Running main() from test_ext2.cc [==========] Running 1 test from 1 test case. [----------] Global test environment set-up. [----------] 1 test from ext2Test [ RUN ] ext2Test.Create test_ext2.cc:199: Failure Value of: s_ext2_obj->create(m_partition, m_operation_detail) Actual: false Expected: true Operation details: <b><i>mkfs.ext2 -F -L &apos;&apos; &apos;/home/centos/programming/c/gparted/tests/test_ext2.img&apos;</i></b> 00:00:00 (ERROR) <i></i> <i>mke2fs 1.42.9 (28-Dec-2013) /home/centos/programming/c/gparted/tests/test_ext2.img: Not enough space to build proposed filesystem while setting up superblock </i> [ FAILED ] ext2Test.Create (25 ms) [----------] 1 test from ext2Test (25 ms total) [----------] Global test environment tear-down [==========] 1 test from 1 test case ran. (30 ms total) [ PASSED ] 0 tests. [ FAILED ] 1 test, listed below: [ FAILED ] ext2Test.Create 1 FAILED TEST $ echo $? 1 Also as Utils:: and FileSystem::execute_command() are needed, this requires linking with GParted_Core for GParted_Core::mainthread and therefore with most of the non-UI classes in gpartedbin. Closes !49 - Add file system interface tests
2019-07-17 06:08:08 -06:00
// Print method for OperationDetailStatus.
std::ostream& operator<<(std::ostream& out, const OperationDetailStatus od_status)
{
switch (od_status)
{
case STATUS_NONE: out << "NONE"; break;
case STATUS_EXECUTE: out << "EXECUTE"; break;
case STATUS_SUCCESS: out << "SUCCESS"; break;
case STATUS_ERROR: out << "ERROR"; break;
case STATUS_INFO: out << "INFO"; break;
case STATUS_WARNING: out << "WARNING"; break;
default: break;
}
return out;
}
// Print method for an OperationDetail object.
std::ostream& operator<<(std::ostream& out, const OperationDetail& od)
{
out << strip_markup(od.get_description());
Add initial create ext2 only FileSystem interface class test (!49) This is the first step of adding testing of the derived FileSystem interface classes which call the file system specific executables. Rather than mocking command execution and returned output the tests run the real commands, effectively making this integration testing. Test case setup determines the file system supported actions using get_filesystem_support() and individual tests are skipped if a feature is not supported, just as GParted does for it's actions. Each test creates it's own sparse image file and a fresh file system, performs a test on one FileSystem interface call and deletes the image file. This makes each test independent and allows them to run as a non-root user, provided the file system command itself doesn't require root. Errors reported for a failed interface call will include the GParted OperationDetails, which in turn includes the file system specific command used and stdout and stderr from it's execution. For example, temporarily breaking the test code to create a 10 KiB image file instead of 256 MiB one produces this: $ ./test_ext2 Running main() from test_ext2.cc [==========] Running 1 test from 1 test case. [----------] Global test environment set-up. [----------] 1 test from ext2Test [ RUN ] ext2Test.Create test_ext2.cc:199: Failure Value of: s_ext2_obj->create(m_partition, m_operation_detail) Actual: false Expected: true Operation details: <b><i>mkfs.ext2 -F -L &apos;&apos; &apos;/home/centos/programming/c/gparted/tests/test_ext2.img&apos;</i></b> 00:00:00 (ERROR) <i></i> <i>mke2fs 1.42.9 (28-Dec-2013) /home/centos/programming/c/gparted/tests/test_ext2.img: Not enough space to build proposed filesystem while setting up superblock </i> [ FAILED ] ext2Test.Create (25 ms) [----------] 1 test from ext2Test (25 ms total) [----------] Global test environment tear-down [==========] 1 test from 1 test case ran. (30 ms total) [ PASSED ] 0 tests. [ FAILED ] 1 test, listed below: [ FAILED ] ext2Test.Create 1 FAILED TEST $ echo $? 1 Also as Utils:: and FileSystem::execute_command() are needed, this requires linking with GParted_Core for GParted_Core::mainthread and therefore with most of the non-UI classes in gpartedbin. Closes !49 - Add file system interface tests
2019-07-17 06:08:08 -06:00
Glib::ustring elapsed = od.get_elapsed_time();
if (! elapsed.empty())
out << " " << elapsed;
if (od.get_status() != STATUS_NONE)
out << " (" << od.get_status() << ")";
out << "\n";
for (unsigned int i = 0; i < od.get_childs().size(); i++)
{
out << *od.get_childs()[i];
}
return out;
}
Print file system types in parameterised test names (!49) Until now the parameterised test values are printed as part of the test names as just 0, 1, etc. like this: $ ./test_SupportedFileSystems Running main() from test_SupportedFileSystems.cc [==========] Running 20 tests from 1 test case. [----------] Global test environment set-up. [----------] 20 tests from My/SupportedFileSystemsTest [ RUN ] My/SupportedFileSystemsTest.Create/0 [ OK ] My/SupportedFileSystemsTest.Create/0 (48 ms) [ RUN ] My/SupportedFileSystemsTest.Create/1 [ OK ] My/SupportedFileSystemsTest.Create/1 (11 ms) Provide the file system types as the names for the parameterised test values [1]. Now the test names are printed like this: $ ./test_SupportedFileSystems Running main() from test_SupportedFileSystems.cc [==========] Running 20 tests from 1 test case. [----------] Global test environment set-up. [----------] 20 tests from My/SupportedFileSystemsTest [ RUN ] My/SupportedFileSystemsTest.Create/ext2 [ OK ] My/SupportedFileSystemsTest.Create/ext2 (51 ms) [ RUN ] My/SupportedFileSystemsTest.Create/linuxswap [ OK ] My/SupportedFileSystemsTest.Create/linuxswap (11 ms) Also use these Google Test name friendly ASCII alphanumeric only names everywhere the file system type needs to be reported in this test program. [1] Specifying Names for Value-Parameterized Test Parameters https://github.com/google/googletest/blob/v1.8.x/googletest/docs/advanced.md#specifying-names-for-value-parameterized-test-parameters Closes !49 - Add file system interface tests
2019-08-04 04:31:57 -06:00
// Printable file system type which meets the requirements for a Google Test name.
// Use GParted's file system names except when they contains any non-alphabetic chars.
// Reference:
// * Specifying Names for Value-Parameterized Test Parameters
// https://github.com/google/googletest/blob/v1.8.x/googletest/docs/advanced.md#specifying-names-for-value-parameterized-test-parameters
// "NOTE: test names must be non-empty, unique, and may only contain ASCII
// alphanumeric characters. In particular, they should not contain underscores."
const std::string test_fsname(FSType fstype)
{
switch (fstype)
{
case FS_LINUX_SWAP: return "linuxswap";
default: break;
}
return std::string(Utils::get_filesystem_string(fstype));
}
// Function callable by INSTANTIATE_TEST_CASE_P() to get the file system type for printing
// as part of the test name.
const std::string param_fsname(const ::testing::TestParamInfo<FSType>& info)
{
return test_fsname(info.param);
}
Add initial create ext2 only FileSystem interface class test (!49) This is the first step of adding testing of the derived FileSystem interface classes which call the file system specific executables. Rather than mocking command execution and returned output the tests run the real commands, effectively making this integration testing. Test case setup determines the file system supported actions using get_filesystem_support() and individual tests are skipped if a feature is not supported, just as GParted does for it's actions. Each test creates it's own sparse image file and a fresh file system, performs a test on one FileSystem interface call and deletes the image file. This makes each test independent and allows them to run as a non-root user, provided the file system command itself doesn't require root. Errors reported for a failed interface call will include the GParted OperationDetails, which in turn includes the file system specific command used and stdout and stderr from it's execution. For example, temporarily breaking the test code to create a 10 KiB image file instead of 256 MiB one produces this: $ ./test_ext2 Running main() from test_ext2.cc [==========] Running 1 test from 1 test case. [----------] Global test environment set-up. [----------] 1 test from ext2Test [ RUN ] ext2Test.Create test_ext2.cc:199: Failure Value of: s_ext2_obj->create(m_partition, m_operation_detail) Actual: false Expected: true Operation details: <b><i>mkfs.ext2 -F -L &apos;&apos; &apos;/home/centos/programming/c/gparted/tests/test_ext2.img&apos;</i></b> 00:00:00 (ERROR) <i></i> <i>mke2fs 1.42.9 (28-Dec-2013) /home/centos/programming/c/gparted/tests/test_ext2.img: Not enough space to build proposed filesystem while setting up superblock </i> [ FAILED ] ext2Test.Create (25 ms) [----------] 1 test from ext2Test (25 ms total) [----------] Global test environment tear-down [==========] 1 test from 1 test case ran. (30 ms total) [ PASSED ] 0 tests. [ FAILED ] 1 test, listed below: [ FAILED ] ext2Test.Create 1 FAILED TEST $ echo $? 1 Also as Utils:: and FileSystem::execute_command() are needed, this requires linking with GParted_Core for GParted_Core::mainthread and therefore with most of the non-UI classes in gpartedbin. Closes !49 - Add file system interface tests
2019-07-17 06:08:08 -06:00
// Google Test 1.8.1 (and earlier) doesn't implement run-time test skipping so implement
// our own for GParted run-time detected of unsupported file system features.
// Ref:
// Skipping tests at runtime with GTEST_SKIP() #1544
// https://github.com/google/googletest/pull/1544
// (Merged after Google Test 1.8.1)
#define SKIP_IF_FS_DOESNT_SUPPORT(opt) \
Add testing of linux-swap using Value-Parameterised Google Tests (!49) Use Google Test Value-Parameterised to call every test for both ext2 and linux-swap. https://github.com/google/googletest/blob/v1.8.x/googletest/docs/advanced.md#value-parameterized-tests Running the test now looks like this: $ ./test_SupportedFileSystems Running main() from test_SupportedFileSystems.cc [==========] Running 20 tests from 1 test case. [----------] Global test environment set-up. [----------] 20 tests from My/SupportedFileSystemsTest [ RUN ] My/SupportedFileSystemsTest.Create/0 [ OK ] My/SupportedFileSystemsTest.Create/0 (97 ms) [ RUN ] My/SupportedFileSystemsTest.Create/1 [ OK ] My/SupportedFileSystemsTest.Create/1 (15 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 (106 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 (14 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 (95 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 (23 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 (99 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 (102 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 (101 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 (21 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/0 [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/0 (153 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/1 test_SupportedFileSystems.cc:424: Skip test. check not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/0 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/0 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/1 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/0 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/0 (266 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/1 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/1 (32 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/0 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/0 (111 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/1 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/1 (28 ms) [----------] 20 tests from My/SupportedFileSystemsTest (1311 ms total) [----------] Global test environment tear-down [==========] 20 tests from 1 test case ran. (1342 ms total) [ PASSED ] 20 tests. Closes !49 - Add file system interface tests
2019-08-02 04:15:48 -06:00
if (s_supported_filesystems->get_fs_support(m_fstype).opt != FS::EXTERNAL) \
{ \
std::cout << __FILE__ << ":" << __LINE__ << ": Skip test. " \
<< #opt << " not supported or support not found" << std::endl; \
return; \
Add initial create ext2 only FileSystem interface class test (!49) This is the first step of adding testing of the derived FileSystem interface classes which call the file system specific executables. Rather than mocking command execution and returned output the tests run the real commands, effectively making this integration testing. Test case setup determines the file system supported actions using get_filesystem_support() and individual tests are skipped if a feature is not supported, just as GParted does for it's actions. Each test creates it's own sparse image file and a fresh file system, performs a test on one FileSystem interface call and deletes the image file. This makes each test independent and allows them to run as a non-root user, provided the file system command itself doesn't require root. Errors reported for a failed interface call will include the GParted OperationDetails, which in turn includes the file system specific command used and stdout and stderr from it's execution. For example, temporarily breaking the test code to create a 10 KiB image file instead of 256 MiB one produces this: $ ./test_ext2 Running main() from test_ext2.cc [==========] Running 1 test from 1 test case. [----------] Global test environment set-up. [----------] 1 test from ext2Test [ RUN ] ext2Test.Create test_ext2.cc:199: Failure Value of: s_ext2_obj->create(m_partition, m_operation_detail) Actual: false Expected: true Operation details: <b><i>mkfs.ext2 -F -L &apos;&apos; &apos;/home/centos/programming/c/gparted/tests/test_ext2.img&apos;</i></b> 00:00:00 (ERROR) <i></i> <i>mke2fs 1.42.9 (28-Dec-2013) /home/centos/programming/c/gparted/tests/test_ext2.img: Not enough space to build proposed filesystem while setting up superblock </i> [ FAILED ] ext2Test.Create (25 ms) [----------] 1 test from ext2Test (25 ms total) [----------] Global test environment tear-down [==========] 1 test from 1 test case ran. (30 ms total) [ PASSED ] 0 tests. [ FAILED ] 1 test, listed below: [ FAILED ] ext2Test.Create 1 FAILED TEST $ echo $? 1 Also as Utils:: and FileSystem::execute_command() are needed, this requires linking with GParted_Core for GParted_Core::mainthread and therefore with most of the non-UI classes in gpartedbin. Closes !49 - Add file system interface tests
2019-07-17 06:08:08 -06:00
}
const Byte_Value IMAGESIZE_Default = 256*MEBIBYTE;
const Byte_Value IMAGESIZE_Larger = 512*MEBIBYTE;
Add testing of linux-swap using Value-Parameterised Google Tests (!49) Use Google Test Value-Parameterised to call every test for both ext2 and linux-swap. https://github.com/google/googletest/blob/v1.8.x/googletest/docs/advanced.md#value-parameterized-tests Running the test now looks like this: $ ./test_SupportedFileSystems Running main() from test_SupportedFileSystems.cc [==========] Running 20 tests from 1 test case. [----------] Global test environment set-up. [----------] 20 tests from My/SupportedFileSystemsTest [ RUN ] My/SupportedFileSystemsTest.Create/0 [ OK ] My/SupportedFileSystemsTest.Create/0 (97 ms) [ RUN ] My/SupportedFileSystemsTest.Create/1 [ OK ] My/SupportedFileSystemsTest.Create/1 (15 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 (106 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 (14 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 (95 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 (23 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 (99 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 (102 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 (101 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 (21 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/0 [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/0 (153 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/1 test_SupportedFileSystems.cc:424: Skip test. check not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/0 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/0 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/1 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/0 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/0 (266 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/1 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/1 (32 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/0 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/0 (111 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/1 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/1 (28 ms) [----------] 20 tests from My/SupportedFileSystemsTest (1311 ms total) [----------] Global test environment tear-down [==========] 20 tests from 1 test case ran. (1342 ms total) [ PASSED ] 20 tests. Closes !49 - Add file system interface tests
2019-08-02 04:15:48 -06:00
class SupportedFileSystemsTest : public ::testing::TestWithParam<FSType>
Add initial create ext2 only FileSystem interface class test (!49) This is the first step of adding testing of the derived FileSystem interface classes which call the file system specific executables. Rather than mocking command execution and returned output the tests run the real commands, effectively making this integration testing. Test case setup determines the file system supported actions using get_filesystem_support() and individual tests are skipped if a feature is not supported, just as GParted does for it's actions. Each test creates it's own sparse image file and a fresh file system, performs a test on one FileSystem interface call and deletes the image file. This makes each test independent and allows them to run as a non-root user, provided the file system command itself doesn't require root. Errors reported for a failed interface call will include the GParted OperationDetails, which in turn includes the file system specific command used and stdout and stderr from it's execution. For example, temporarily breaking the test code to create a 10 KiB image file instead of 256 MiB one produces this: $ ./test_ext2 Running main() from test_ext2.cc [==========] Running 1 test from 1 test case. [----------] Global test environment set-up. [----------] 1 test from ext2Test [ RUN ] ext2Test.Create test_ext2.cc:199: Failure Value of: s_ext2_obj->create(m_partition, m_operation_detail) Actual: false Expected: true Operation details: <b><i>mkfs.ext2 -F -L &apos;&apos; &apos;/home/centos/programming/c/gparted/tests/test_ext2.img&apos;</i></b> 00:00:00 (ERROR) <i></i> <i>mke2fs 1.42.9 (28-Dec-2013) /home/centos/programming/c/gparted/tests/test_ext2.img: Not enough space to build proposed filesystem while setting up superblock </i> [ FAILED ] ext2Test.Create (25 ms) [----------] 1 test from ext2Test (25 ms total) [----------] Global test environment tear-down [==========] 1 test from 1 test case ran. (30 ms total) [ PASSED ] 0 tests. [ FAILED ] 1 test, listed below: [ FAILED ] ext2Test.Create 1 FAILED TEST $ echo $? 1 Also as Utils:: and FileSystem::execute_command() are needed, this requires linking with GParted_Core for GParted_Core::mainthread and therefore with most of the non-UI classes in gpartedbin. Closes !49 - Add file system interface tests
2019-07-17 06:08:08 -06:00
{
protected:
Add testing of linux-swap using Value-Parameterised Google Tests (!49) Use Google Test Value-Parameterised to call every test for both ext2 and linux-swap. https://github.com/google/googletest/blob/v1.8.x/googletest/docs/advanced.md#value-parameterized-tests Running the test now looks like this: $ ./test_SupportedFileSystems Running main() from test_SupportedFileSystems.cc [==========] Running 20 tests from 1 test case. [----------] Global test environment set-up. [----------] 20 tests from My/SupportedFileSystemsTest [ RUN ] My/SupportedFileSystemsTest.Create/0 [ OK ] My/SupportedFileSystemsTest.Create/0 (97 ms) [ RUN ] My/SupportedFileSystemsTest.Create/1 [ OK ] My/SupportedFileSystemsTest.Create/1 (15 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 (106 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 (14 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 (95 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 (23 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 (99 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 (102 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 (101 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 (21 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/0 [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/0 (153 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/1 test_SupportedFileSystems.cc:424: Skip test. check not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/0 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/0 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/1 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/0 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/0 (266 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/1 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/1 (32 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/0 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/0 (111 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/1 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/1 (28 ms) [----------] 20 tests from My/SupportedFileSystemsTest (1311 ms total) [----------] Global test environment tear-down [==========] 20 tests from 1 test case ran. (1342 ms total) [ PASSED ] 20 tests. Closes !49 - Add file system interface tests
2019-08-02 04:15:48 -06:00
SupportedFileSystemsTest();
Add initial create ext2 only FileSystem interface class test (!49) This is the first step of adding testing of the derived FileSystem interface classes which call the file system specific executables. Rather than mocking command execution and returned output the tests run the real commands, effectively making this integration testing. Test case setup determines the file system supported actions using get_filesystem_support() and individual tests are skipped if a feature is not supported, just as GParted does for it's actions. Each test creates it's own sparse image file and a fresh file system, performs a test on one FileSystem interface call and deletes the image file. This makes each test independent and allows them to run as a non-root user, provided the file system command itself doesn't require root. Errors reported for a failed interface call will include the GParted OperationDetails, which in turn includes the file system specific command used and stdout and stderr from it's execution. For example, temporarily breaking the test code to create a 10 KiB image file instead of 256 MiB one produces this: $ ./test_ext2 Running main() from test_ext2.cc [==========] Running 1 test from 1 test case. [----------] Global test environment set-up. [----------] 1 test from ext2Test [ RUN ] ext2Test.Create test_ext2.cc:199: Failure Value of: s_ext2_obj->create(m_partition, m_operation_detail) Actual: false Expected: true Operation details: <b><i>mkfs.ext2 -F -L &apos;&apos; &apos;/home/centos/programming/c/gparted/tests/test_ext2.img&apos;</i></b> 00:00:00 (ERROR) <i></i> <i>mke2fs 1.42.9 (28-Dec-2013) /home/centos/programming/c/gparted/tests/test_ext2.img: Not enough space to build proposed filesystem while setting up superblock </i> [ FAILED ] ext2Test.Create (25 ms) [----------] 1 test from ext2Test (25 ms total) [----------] Global test environment tear-down [==========] 1 test from 1 test case ran. (30 ms total) [ PASSED ] 0 tests. [ FAILED ] 1 test, listed below: [ FAILED ] ext2Test.Create 1 FAILED TEST $ echo $? 1 Also as Utils:: and FileSystem::execute_command() are needed, this requires linking with GParted_Core for GParted_Core::mainthread and therefore with most of the non-UI classes in gpartedbin. Closes !49 - Add file system interface tests
2019-07-17 06:08:08 -06:00
Add testing of linux-swap using Value-Parameterised Google Tests (!49) Use Google Test Value-Parameterised to call every test for both ext2 and linux-swap. https://github.com/google/googletest/blob/v1.8.x/googletest/docs/advanced.md#value-parameterized-tests Running the test now looks like this: $ ./test_SupportedFileSystems Running main() from test_SupportedFileSystems.cc [==========] Running 20 tests from 1 test case. [----------] Global test environment set-up. [----------] 20 tests from My/SupportedFileSystemsTest [ RUN ] My/SupportedFileSystemsTest.Create/0 [ OK ] My/SupportedFileSystemsTest.Create/0 (97 ms) [ RUN ] My/SupportedFileSystemsTest.Create/1 [ OK ] My/SupportedFileSystemsTest.Create/1 (15 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 (106 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 (14 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 (95 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 (23 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 (99 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 (102 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 (101 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 (21 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/0 [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/0 (153 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/1 test_SupportedFileSystems.cc:424: Skip test. check not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/0 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/0 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/1 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/0 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/0 (266 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/1 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/1 (32 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/0 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/0 (111 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/1 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/1 (28 ms) [----------] 20 tests from My/SupportedFileSystemsTest (1311 ms total) [----------] Global test environment tear-down [==========] 20 tests from 1 test case ran. (1342 ms total) [ PASSED ] 20 tests. Closes !49 - Add file system interface tests
2019-08-02 04:15:48 -06:00
virtual void SetUp();
virtual void extra_setup(Byte_Value size = IMAGESIZE_Default);
Add initial create ext2 only FileSystem interface class test (!49) This is the first step of adding testing of the derived FileSystem interface classes which call the file system specific executables. Rather than mocking command execution and returned output the tests run the real commands, effectively making this integration testing. Test case setup determines the file system supported actions using get_filesystem_support() and individual tests are skipped if a feature is not supported, just as GParted does for it's actions. Each test creates it's own sparse image file and a fresh file system, performs a test on one FileSystem interface call and deletes the image file. This makes each test independent and allows them to run as a non-root user, provided the file system command itself doesn't require root. Errors reported for a failed interface call will include the GParted OperationDetails, which in turn includes the file system specific command used and stdout and stderr from it's execution. For example, temporarily breaking the test code to create a 10 KiB image file instead of 256 MiB one produces this: $ ./test_ext2 Running main() from test_ext2.cc [==========] Running 1 test from 1 test case. [----------] Global test environment set-up. [----------] 1 test from ext2Test [ RUN ] ext2Test.Create test_ext2.cc:199: Failure Value of: s_ext2_obj->create(m_partition, m_operation_detail) Actual: false Expected: true Operation details: <b><i>mkfs.ext2 -F -L &apos;&apos; &apos;/home/centos/programming/c/gparted/tests/test_ext2.img&apos;</i></b> 00:00:00 (ERROR) <i></i> <i>mke2fs 1.42.9 (28-Dec-2013) /home/centos/programming/c/gparted/tests/test_ext2.img: Not enough space to build proposed filesystem while setting up superblock </i> [ FAILED ] ext2Test.Create (25 ms) [----------] 1 test from ext2Test (25 ms total) [----------] Global test environment tear-down [==========] 1 test from 1 test case ran. (30 ms total) [ PASSED ] 0 tests. [ FAILED ] 1 test, listed below: [ FAILED ] ext2Test.Create 1 FAILED TEST $ echo $? 1 Also as Utils:: and FileSystem::execute_command() are needed, this requires linking with GParted_Core for GParted_Core::mainthread and therefore with most of the non-UI classes in gpartedbin. Closes !49 - Add file system interface tests
2019-07-17 06:08:08 -06:00
virtual void TearDown();
Add testing of linux-swap using Value-Parameterised Google Tests (!49) Use Google Test Value-Parameterised to call every test for both ext2 and linux-swap. https://github.com/google/googletest/blob/v1.8.x/googletest/docs/advanced.md#value-parameterized-tests Running the test now looks like this: $ ./test_SupportedFileSystems Running main() from test_SupportedFileSystems.cc [==========] Running 20 tests from 1 test case. [----------] Global test environment set-up. [----------] 20 tests from My/SupportedFileSystemsTest [ RUN ] My/SupportedFileSystemsTest.Create/0 [ OK ] My/SupportedFileSystemsTest.Create/0 (97 ms) [ RUN ] My/SupportedFileSystemsTest.Create/1 [ OK ] My/SupportedFileSystemsTest.Create/1 (15 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 (106 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 (14 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 (95 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 (23 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 (99 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 (102 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 (101 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 (21 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/0 [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/0 (153 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/1 test_SupportedFileSystems.cc:424: Skip test. check not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/0 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/0 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/1 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/0 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/0 (266 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/1 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/1 (32 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/0 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/0 (111 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/1 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/1 (28 ms) [----------] 20 tests from My/SupportedFileSystemsTest (1311 ms total) [----------] Global test environment tear-down [==========] 20 tests from 1 test case ran. (1342 ms total) [ PASSED ] 20 tests. Closes !49 - Add file system interface tests
2019-08-02 04:15:48 -06:00
public:
Add initial create ext2 only FileSystem interface class test (!49) This is the first step of adding testing of the derived FileSystem interface classes which call the file system specific executables. Rather than mocking command execution and returned output the tests run the real commands, effectively making this integration testing. Test case setup determines the file system supported actions using get_filesystem_support() and individual tests are skipped if a feature is not supported, just as GParted does for it's actions. Each test creates it's own sparse image file and a fresh file system, performs a test on one FileSystem interface call and deletes the image file. This makes each test independent and allows them to run as a non-root user, provided the file system command itself doesn't require root. Errors reported for a failed interface call will include the GParted OperationDetails, which in turn includes the file system specific command used and stdout and stderr from it's execution. For example, temporarily breaking the test code to create a 10 KiB image file instead of 256 MiB one produces this: $ ./test_ext2 Running main() from test_ext2.cc [==========] Running 1 test from 1 test case. [----------] Global test environment set-up. [----------] 1 test from ext2Test [ RUN ] ext2Test.Create test_ext2.cc:199: Failure Value of: s_ext2_obj->create(m_partition, m_operation_detail) Actual: false Expected: true Operation details: <b><i>mkfs.ext2 -F -L &apos;&apos; &apos;/home/centos/programming/c/gparted/tests/test_ext2.img&apos;</i></b> 00:00:00 (ERROR) <i></i> <i>mke2fs 1.42.9 (28-Dec-2013) /home/centos/programming/c/gparted/tests/test_ext2.img: Not enough space to build proposed filesystem while setting up superblock </i> [ FAILED ] ext2Test.Create (25 ms) [----------] 1 test from ext2Test (25 ms total) [----------] Global test environment tear-down [==========] 1 test from 1 test case ran. (30 ms total) [ PASSED ] 0 tests. [ FAILED ] 1 test, listed below: [ FAILED ] ext2Test.Create 1 FAILED TEST $ echo $? 1 Also as Utils:: and FileSystem::execute_command() are needed, this requires linking with GParted_Core for GParted_Core::mainthread and therefore with most of the non-UI classes in gpartedbin. Closes !49 - Add file system interface tests
2019-07-17 06:08:08 -06:00
static void SetUpTestCase();
static void TearDownTestCase();
Add testing of linux-swap using Value-Parameterised Google Tests (!49) Use Google Test Value-Parameterised to call every test for both ext2 and linux-swap. https://github.com/google/googletest/blob/v1.8.x/googletest/docs/advanced.md#value-parameterized-tests Running the test now looks like this: $ ./test_SupportedFileSystems Running main() from test_SupportedFileSystems.cc [==========] Running 20 tests from 1 test case. [----------] Global test environment set-up. [----------] 20 tests from My/SupportedFileSystemsTest [ RUN ] My/SupportedFileSystemsTest.Create/0 [ OK ] My/SupportedFileSystemsTest.Create/0 (97 ms) [ RUN ] My/SupportedFileSystemsTest.Create/1 [ OK ] My/SupportedFileSystemsTest.Create/1 (15 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 (106 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 (14 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 (95 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 (23 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 (99 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 (102 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 (101 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 (21 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/0 [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/0 (153 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/1 test_SupportedFileSystems.cc:424: Skip test. check not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/0 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/0 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/1 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/0 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/0 (266 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/1 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/1 (32 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/0 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/0 (111 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/1 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/1 (28 ms) [----------] 20 tests from My/SupportedFileSystemsTest (1311 ms total) [----------] Global test environment tear-down [==========] 20 tests from 1 test case ran. (1342 ms total) [ PASSED ] 20 tests. Closes !49 - Add file system interface tests
2019-08-02 04:15:48 -06:00
protected:
Reload Partition object after FS creation in read tests (!49) Here are the errors reported in the deliberately broken CreateAndReadLabel test from the previous commit message: [ RUN ] ext2Test.CreateAndReadLabel test_ext2.cc:311: Failure Value of: m_partition.get_messages().empty() Actual: false Expected: true Partition messages: e2label: No such file or directory while trying to open /does_not_exist/test_ext2.img Couldn't find valid filesystem superblock. [ FAILED ] ext2Test.CreateAndReadLabel (77 ms) Even though the test was deliberately broken by setting the wrong path for the file system image and the e2label command failed, apparently testing for the expected label still passed. What happened was that the desired "TEST_LABEL" has to be in the Partition object and then the file system was created. Then reading the file system label failed, however "TEST_LABEL" was already set in the Partition object so it matched. Reading the label is unique among the read actions of usage, label and UUID as the others don't need to be set before the file system is created. GParted doesn't encounter this issue because when refreshing devices it creates new blank Partition objects and then performs the read actions to populate them. Fix by resetting the Partition object back to only containing basic information before all the reading file system information tests, even though it is only needed in the read label case. This also better reflects how GParted works. Now with the same deliberate brokenness the test also reports the label does not match it's expected value: $ ./test_ext2 --gtest_filter='ext2Test.CreateAndReadLabel' Running main() from test_ext2.cc Note: Google Test filter = ext2Test.CreateAndReadLabel [==========] Running 1 test from 1 test case. [----------] Global test environment set-up. [----------] 1 test from ext2Test [ RUN ] ext2Test.CreateAndReadLabel test_ext2.cc:322: Failure Expected equality of these values: fs_label Which is: "TEST_LABEL" m_partition.get_filesystem_label().c_str() Which is: "" test_ext2.cc:272: Failure Value of: m_partition.get_messages().empty() Actual: false Expected: true Partition messages: e2label: No such file or directory while trying to open /does_not_exist/test_ext2.img Couldn't find valid filesystem superblock. [ FAILED ] ext2Test.CreateAndReadLabel (70 ms) [----------] 1 test from ext2Test (70 ms total) [----------] Global test environment tear-down [==========] 1 test from 1 test case ran. (75 ms total) [ PASSED ] 0 tests. [ FAILED ] 1 test, listed below: [ FAILED ] ext2Test.CreateAndReadLabel 1 FAILED TEST Closes !49 - Add file system interface tests
2019-08-27 09:49:02 -06:00
virtual void reload_partition();
virtual void resize_image(Byte_Value new_size);
virtual void shrink_partition(Byte_Value size);
Reload Partition object after FS creation in read tests (!49) Here are the errors reported in the deliberately broken CreateAndReadLabel test from the previous commit message: [ RUN ] ext2Test.CreateAndReadLabel test_ext2.cc:311: Failure Value of: m_partition.get_messages().empty() Actual: false Expected: true Partition messages: e2label: No such file or directory while trying to open /does_not_exist/test_ext2.img Couldn't find valid filesystem superblock. [ FAILED ] ext2Test.CreateAndReadLabel (77 ms) Even though the test was deliberately broken by setting the wrong path for the file system image and the e2label command failed, apparently testing for the expected label still passed. What happened was that the desired "TEST_LABEL" has to be in the Partition object and then the file system was created. Then reading the file system label failed, however "TEST_LABEL" was already set in the Partition object so it matched. Reading the label is unique among the read actions of usage, label and UUID as the others don't need to be set before the file system is created. GParted doesn't encounter this issue because when refreshing devices it creates new blank Partition objects and then performs the read actions to populate them. Fix by resetting the Partition object back to only containing basic information before all the reading file system information tests, even though it is only needed in the read label case. This also better reflects how GParted works. Now with the same deliberate brokenness the test also reports the label does not match it's expected value: $ ./test_ext2 --gtest_filter='ext2Test.CreateAndReadLabel' Running main() from test_ext2.cc Note: Google Test filter = ext2Test.CreateAndReadLabel [==========] Running 1 test from 1 test case. [----------] Global test environment set-up. [----------] 1 test from ext2Test [ RUN ] ext2Test.CreateAndReadLabel test_ext2.cc:322: Failure Expected equality of these values: fs_label Which is: "TEST_LABEL" m_partition.get_filesystem_label().c_str() Which is: "" test_ext2.cc:272: Failure Value of: m_partition.get_messages().empty() Actual: false Expected: true Partition messages: e2label: No such file or directory while trying to open /does_not_exist/test_ext2.img Couldn't find valid filesystem superblock. [ FAILED ] ext2Test.CreateAndReadLabel (70 ms) [----------] 1 test from ext2Test (70 ms total) [----------] Global test environment tear-down [==========] 1 test from 1 test case ran. (75 ms total) [ PASSED ] 0 tests. [ FAILED ] 1 test, listed below: [ FAILED ] ext2Test.CreateAndReadLabel 1 FAILED TEST Closes !49 - Add file system interface tests
2019-08-27 09:49:02 -06:00
static SupportedFileSystems* s_supported_filesystems; // Owning pointer
static const char* s_image_name;
Add initial create ext2 only FileSystem interface class test (!49) This is the first step of adding testing of the derived FileSystem interface classes which call the file system specific executables. Rather than mocking command execution and returned output the tests run the real commands, effectively making this integration testing. Test case setup determines the file system supported actions using get_filesystem_support() and individual tests are skipped if a feature is not supported, just as GParted does for it's actions. Each test creates it's own sparse image file and a fresh file system, performs a test on one FileSystem interface call and deletes the image file. This makes each test independent and allows them to run as a non-root user, provided the file system command itself doesn't require root. Errors reported for a failed interface call will include the GParted OperationDetails, which in turn includes the file system specific command used and stdout and stderr from it's execution. For example, temporarily breaking the test code to create a 10 KiB image file instead of 256 MiB one produces this: $ ./test_ext2 Running main() from test_ext2.cc [==========] Running 1 test from 1 test case. [----------] Global test environment set-up. [----------] 1 test from ext2Test [ RUN ] ext2Test.Create test_ext2.cc:199: Failure Value of: s_ext2_obj->create(m_partition, m_operation_detail) Actual: false Expected: true Operation details: <b><i>mkfs.ext2 -F -L &apos;&apos; &apos;/home/centos/programming/c/gparted/tests/test_ext2.img&apos;</i></b> 00:00:00 (ERROR) <i></i> <i>mke2fs 1.42.9 (28-Dec-2013) /home/centos/programming/c/gparted/tests/test_ext2.img: Not enough space to build proposed filesystem while setting up superblock </i> [ FAILED ] ext2Test.Create (25 ms) [----------] 1 test from ext2Test (25 ms total) [----------] Global test environment tear-down [==========] 1 test from 1 test case ran. (30 ms total) [ PASSED ] 0 tests. [ FAILED ] 1 test, listed below: [ FAILED ] ext2Test.Create 1 FAILED TEST $ echo $? 1 Also as Utils:: and FileSystem::execute_command() are needed, this requires linking with GParted_Core for GParted_Core::mainthread and therefore with most of the non-UI classes in gpartedbin. Closes !49 - Add file system interface tests
2019-07-17 06:08:08 -06:00
Add testing of linux-swap using Value-Parameterised Google Tests (!49) Use Google Test Value-Parameterised to call every test for both ext2 and linux-swap. https://github.com/google/googletest/blob/v1.8.x/googletest/docs/advanced.md#value-parameterized-tests Running the test now looks like this: $ ./test_SupportedFileSystems Running main() from test_SupportedFileSystems.cc [==========] Running 20 tests from 1 test case. [----------] Global test environment set-up. [----------] 20 tests from My/SupportedFileSystemsTest [ RUN ] My/SupportedFileSystemsTest.Create/0 [ OK ] My/SupportedFileSystemsTest.Create/0 (97 ms) [ RUN ] My/SupportedFileSystemsTest.Create/1 [ OK ] My/SupportedFileSystemsTest.Create/1 (15 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 (106 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 (14 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 (95 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 (23 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 (99 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 (102 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 (101 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 (21 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/0 [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/0 (153 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/1 test_SupportedFileSystems.cc:424: Skip test. check not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/0 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/0 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/1 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/0 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/0 (266 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/1 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/1 (32 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/0 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/0 (111 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/1 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/1 (28 ms) [----------] 20 tests from My/SupportedFileSystemsTest (1311 ms total) [----------] Global test environment tear-down [==========] 20 tests from 1 test case ran. (1342 ms total) [ PASSED ] 20 tests. Closes !49 - Add file system interface tests
2019-08-02 04:15:48 -06:00
FSType m_fstype;
FileSystem* m_fs_object; // Alias pointer
Add initial create ext2 only FileSystem interface class test (!49) This is the first step of adding testing of the derived FileSystem interface classes which call the file system specific executables. Rather than mocking command execution and returned output the tests run the real commands, effectively making this integration testing. Test case setup determines the file system supported actions using get_filesystem_support() and individual tests are skipped if a feature is not supported, just as GParted does for it's actions. Each test creates it's own sparse image file and a fresh file system, performs a test on one FileSystem interface call and deletes the image file. This makes each test independent and allows them to run as a non-root user, provided the file system command itself doesn't require root. Errors reported for a failed interface call will include the GParted OperationDetails, which in turn includes the file system specific command used and stdout and stderr from it's execution. For example, temporarily breaking the test code to create a 10 KiB image file instead of 256 MiB one produces this: $ ./test_ext2 Running main() from test_ext2.cc [==========] Running 1 test from 1 test case. [----------] Global test environment set-up. [----------] 1 test from ext2Test [ RUN ] ext2Test.Create test_ext2.cc:199: Failure Value of: s_ext2_obj->create(m_partition, m_operation_detail) Actual: false Expected: true Operation details: <b><i>mkfs.ext2 -F -L &apos;&apos; &apos;/home/centos/programming/c/gparted/tests/test_ext2.img&apos;</i></b> 00:00:00 (ERROR) <i></i> <i>mke2fs 1.42.9 (28-Dec-2013) /home/centos/programming/c/gparted/tests/test_ext2.img: Not enough space to build proposed filesystem while setting up superblock </i> [ FAILED ] ext2Test.Create (25 ms) [----------] 1 test from ext2Test (25 ms total) [----------] Global test environment tear-down [==========] 1 test from 1 test case ran. (30 ms total) [ PASSED ] 0 tests. [ FAILED ] 1 test, listed below: [ FAILED ] ext2Test.Create 1 FAILED TEST $ echo $? 1 Also as Utils:: and FileSystem::execute_command() are needed, this requires linking with GParted_Core for GParted_Core::mainthread and therefore with most of the non-UI classes in gpartedbin. Closes !49 - Add file system interface tests
2019-07-17 06:08:08 -06:00
Partition m_partition;
OperationDetail m_operation_detail;
};
SupportedFileSystems* SupportedFileSystemsTest::s_supported_filesystems = NULL;
const char* SupportedFileSystemsTest::s_image_name = "test_SupportedFileSystems.img";
Add initial create ext2 only FileSystem interface class test (!49) This is the first step of adding testing of the derived FileSystem interface classes which call the file system specific executables. Rather than mocking command execution and returned output the tests run the real commands, effectively making this integration testing. Test case setup determines the file system supported actions using get_filesystem_support() and individual tests are skipped if a feature is not supported, just as GParted does for it's actions. Each test creates it's own sparse image file and a fresh file system, performs a test on one FileSystem interface call and deletes the image file. This makes each test independent and allows them to run as a non-root user, provided the file system command itself doesn't require root. Errors reported for a failed interface call will include the GParted OperationDetails, which in turn includes the file system specific command used and stdout and stderr from it's execution. For example, temporarily breaking the test code to create a 10 KiB image file instead of 256 MiB one produces this: $ ./test_ext2 Running main() from test_ext2.cc [==========] Running 1 test from 1 test case. [----------] Global test environment set-up. [----------] 1 test from ext2Test [ RUN ] ext2Test.Create test_ext2.cc:199: Failure Value of: s_ext2_obj->create(m_partition, m_operation_detail) Actual: false Expected: true Operation details: <b><i>mkfs.ext2 -F -L &apos;&apos; &apos;/home/centos/programming/c/gparted/tests/test_ext2.img&apos;</i></b> 00:00:00 (ERROR) <i></i> <i>mke2fs 1.42.9 (28-Dec-2013) /home/centos/programming/c/gparted/tests/test_ext2.img: Not enough space to build proposed filesystem while setting up superblock </i> [ FAILED ] ext2Test.Create (25 ms) [----------] 1 test from ext2Test (25 ms total) [----------] Global test environment tear-down [==========] 1 test from 1 test case ran. (30 ms total) [ PASSED ] 0 tests. [ FAILED ] 1 test, listed below: [ FAILED ] ext2Test.Create 1 FAILED TEST $ echo $? 1 Also as Utils:: and FileSystem::execute_command() are needed, this requires linking with GParted_Core for GParted_Core::mainthread and therefore with most of the non-UI classes in gpartedbin. Closes !49 - Add file system interface tests
2019-07-17 06:08:08 -06:00
Add testing of linux-swap using Value-Parameterised Google Tests (!49) Use Google Test Value-Parameterised to call every test for both ext2 and linux-swap. https://github.com/google/googletest/blob/v1.8.x/googletest/docs/advanced.md#value-parameterized-tests Running the test now looks like this: $ ./test_SupportedFileSystems Running main() from test_SupportedFileSystems.cc [==========] Running 20 tests from 1 test case. [----------] Global test environment set-up. [----------] 20 tests from My/SupportedFileSystemsTest [ RUN ] My/SupportedFileSystemsTest.Create/0 [ OK ] My/SupportedFileSystemsTest.Create/0 (97 ms) [ RUN ] My/SupportedFileSystemsTest.Create/1 [ OK ] My/SupportedFileSystemsTest.Create/1 (15 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 (106 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 (14 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 (95 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 (23 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 (99 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 (102 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 (101 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 (21 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/0 [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/0 (153 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/1 test_SupportedFileSystems.cc:424: Skip test. check not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/0 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/0 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/1 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/0 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/0 (266 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/1 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/1 (32 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/0 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/0 (111 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/1 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/1 (28 ms) [----------] 20 tests from My/SupportedFileSystemsTest (1311 ms total) [----------] Global test environment tear-down [==========] 20 tests from 1 test case ran. (1342 ms total) [ PASSED ] 20 tests. Closes !49 - Add file system interface tests
2019-08-02 04:15:48 -06:00
SupportedFileSystemsTest::SupportedFileSystemsTest()
// Initialise top-level operation detail object with description ...
: m_fstype(GetParam()), m_fs_object(NULL), m_operation_detail("Operation details:", STATUS_NONE)
{
}
void SupportedFileSystemsTest::SetUp()
{
ASSERT_TRUE(s_supported_filesystems != NULL) << __func__ << "(): TEST_BUG: File system interfaces not loaded";
// Lookup file system interface object.
m_fs_object = s_supported_filesystems->get_fs_object(m_fstype);
ASSERT_TRUE(m_fs_object != NULL) << __func__ << "(): TEST_BUG: Interface object not found for file system "
Print file system types in parameterised test names (!49) Until now the parameterised test values are printed as part of the test names as just 0, 1, etc. like this: $ ./test_SupportedFileSystems Running main() from test_SupportedFileSystems.cc [==========] Running 20 tests from 1 test case. [----------] Global test environment set-up. [----------] 20 tests from My/SupportedFileSystemsTest [ RUN ] My/SupportedFileSystemsTest.Create/0 [ OK ] My/SupportedFileSystemsTest.Create/0 (48 ms) [ RUN ] My/SupportedFileSystemsTest.Create/1 [ OK ] My/SupportedFileSystemsTest.Create/1 (11 ms) Provide the file system types as the names for the parameterised test values [1]. Now the test names are printed like this: $ ./test_SupportedFileSystems Running main() from test_SupportedFileSystems.cc [==========] Running 20 tests from 1 test case. [----------] Global test environment set-up. [----------] 20 tests from My/SupportedFileSystemsTest [ RUN ] My/SupportedFileSystemsTest.Create/ext2 [ OK ] My/SupportedFileSystemsTest.Create/ext2 (51 ms) [ RUN ] My/SupportedFileSystemsTest.Create/linuxswap [ OK ] My/SupportedFileSystemsTest.Create/linuxswap (11 ms) Also use these Google Test name friendly ASCII alphanumeric only names everywhere the file system type needs to be reported in this test program. [1] Specifying Names for Value-Parameterized Test Parameters https://github.com/google/googletest/blob/v1.8.x/googletest/docs/advanced.md#specifying-names-for-value-parameterized-test-parameters Closes !49 - Add file system interface tests
2019-08-04 04:31:57 -06:00
<< test_fsname(m_fstype);
Add testing of linux-swap using Value-Parameterised Google Tests (!49) Use Google Test Value-Parameterised to call every test for both ext2 and linux-swap. https://github.com/google/googletest/blob/v1.8.x/googletest/docs/advanced.md#value-parameterized-tests Running the test now looks like this: $ ./test_SupportedFileSystems Running main() from test_SupportedFileSystems.cc [==========] Running 20 tests from 1 test case. [----------] Global test environment set-up. [----------] 20 tests from My/SupportedFileSystemsTest [ RUN ] My/SupportedFileSystemsTest.Create/0 [ OK ] My/SupportedFileSystemsTest.Create/0 (97 ms) [ RUN ] My/SupportedFileSystemsTest.Create/1 [ OK ] My/SupportedFileSystemsTest.Create/1 (15 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 (106 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 (14 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 (95 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 (23 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 (99 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 (102 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 (101 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 (21 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/0 [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/0 (153 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/1 test_SupportedFileSystems.cc:424: Skip test. check not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/0 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/0 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/1 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/0 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/0 (266 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/1 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/1 (32 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/0 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/0 (111 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/1 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/1 (28 ms) [----------] 20 tests from My/SupportedFileSystemsTest (1311 ms total) [----------] Global test environment tear-down [==========] 20 tests from 1 test case ran. (1342 ms total) [ PASSED ] 20 tests. Closes !49 - Add file system interface tests
2019-08-02 04:15:48 -06:00
}
void SupportedFileSystemsTest::extra_setup(Byte_Value size)
Add initial create ext2 only FileSystem interface class test (!49) This is the first step of adding testing of the derived FileSystem interface classes which call the file system specific executables. Rather than mocking command execution and returned output the tests run the real commands, effectively making this integration testing. Test case setup determines the file system supported actions using get_filesystem_support() and individual tests are skipped if a feature is not supported, just as GParted does for it's actions. Each test creates it's own sparse image file and a fresh file system, performs a test on one FileSystem interface call and deletes the image file. This makes each test independent and allows them to run as a non-root user, provided the file system command itself doesn't require root. Errors reported for a failed interface call will include the GParted OperationDetails, which in turn includes the file system specific command used and stdout and stderr from it's execution. For example, temporarily breaking the test code to create a 10 KiB image file instead of 256 MiB one produces this: $ ./test_ext2 Running main() from test_ext2.cc [==========] Running 1 test from 1 test case. [----------] Global test environment set-up. [----------] 1 test from ext2Test [ RUN ] ext2Test.Create test_ext2.cc:199: Failure Value of: s_ext2_obj->create(m_partition, m_operation_detail) Actual: false Expected: true Operation details: <b><i>mkfs.ext2 -F -L &apos;&apos; &apos;/home/centos/programming/c/gparted/tests/test_ext2.img&apos;</i></b> 00:00:00 (ERROR) <i></i> <i>mke2fs 1.42.9 (28-Dec-2013) /home/centos/programming/c/gparted/tests/test_ext2.img: Not enough space to build proposed filesystem while setting up superblock </i> [ FAILED ] ext2Test.Create (25 ms) [----------] 1 test from ext2Test (25 ms total) [----------] Global test environment tear-down [==========] 1 test from 1 test case ran. (30 ms total) [ PASSED ] 0 tests. [ FAILED ] 1 test, listed below: [ FAILED ] ext2Test.Create 1 FAILED TEST $ echo $? 1 Also as Utils:: and FileSystem::execute_command() are needed, this requires linking with GParted_Core for GParted_Core::mainthread and therefore with most of the non-UI classes in gpartedbin. Closes !49 - Add file system interface tests
2019-07-17 06:08:08 -06:00
{
// Create new image file to work with.
Add initial create ext2 only FileSystem interface class test (!49) This is the first step of adding testing of the derived FileSystem interface classes which call the file system specific executables. Rather than mocking command execution and returned output the tests run the real commands, effectively making this integration testing. Test case setup determines the file system supported actions using get_filesystem_support() and individual tests are skipped if a feature is not supported, just as GParted does for it's actions. Each test creates it's own sparse image file and a fresh file system, performs a test on one FileSystem interface call and deletes the image file. This makes each test independent and allows them to run as a non-root user, provided the file system command itself doesn't require root. Errors reported for a failed interface call will include the GParted OperationDetails, which in turn includes the file system specific command used and stdout and stderr from it's execution. For example, temporarily breaking the test code to create a 10 KiB image file instead of 256 MiB one produces this: $ ./test_ext2 Running main() from test_ext2.cc [==========] Running 1 test from 1 test case. [----------] Global test environment set-up. [----------] 1 test from ext2Test [ RUN ] ext2Test.Create test_ext2.cc:199: Failure Value of: s_ext2_obj->create(m_partition, m_operation_detail) Actual: false Expected: true Operation details: <b><i>mkfs.ext2 -F -L &apos;&apos; &apos;/home/centos/programming/c/gparted/tests/test_ext2.img&apos;</i></b> 00:00:00 (ERROR) <i></i> <i>mke2fs 1.42.9 (28-Dec-2013) /home/centos/programming/c/gparted/tests/test_ext2.img: Not enough space to build proposed filesystem while setting up superblock </i> [ FAILED ] ext2Test.Create (25 ms) [----------] 1 test from ext2Test (25 ms total) [----------] Global test environment tear-down [==========] 1 test from 1 test case ran. (30 ms total) [ PASSED ] 0 tests. [ FAILED ] 1 test, listed below: [ FAILED ] ext2Test.Create 1 FAILED TEST $ echo $? 1 Also as Utils:: and FileSystem::execute_command() are needed, this requires linking with GParted_Core for GParted_Core::mainthread and therefore with most of the non-UI classes in gpartedbin. Closes !49 - Add file system interface tests
2019-07-17 06:08:08 -06:00
unlink(s_image_name);
int fd = open(s_image_name, O_WRONLY|O_CREAT|O_NONBLOCK, 0666);
ASSERT_GE(fd, 0) << "Failed to create image file '" << s_image_name << "'. errno="
<< errno << "," << strerror(errno);
ASSERT_EQ(ftruncate(fd, (off_t)size), 0) << "Failed to set image file '" << s_image_name << "' to size "
<< size << ". errno=" << errno << "," << strerror(errno);
Add initial create ext2 only FileSystem interface class test (!49) This is the first step of adding testing of the derived FileSystem interface classes which call the file system specific executables. Rather than mocking command execution and returned output the tests run the real commands, effectively making this integration testing. Test case setup determines the file system supported actions using get_filesystem_support() and individual tests are skipped if a feature is not supported, just as GParted does for it's actions. Each test creates it's own sparse image file and a fresh file system, performs a test on one FileSystem interface call and deletes the image file. This makes each test independent and allows them to run as a non-root user, provided the file system command itself doesn't require root. Errors reported for a failed interface call will include the GParted OperationDetails, which in turn includes the file system specific command used and stdout and stderr from it's execution. For example, temporarily breaking the test code to create a 10 KiB image file instead of 256 MiB one produces this: $ ./test_ext2 Running main() from test_ext2.cc [==========] Running 1 test from 1 test case. [----------] Global test environment set-up. [----------] 1 test from ext2Test [ RUN ] ext2Test.Create test_ext2.cc:199: Failure Value of: s_ext2_obj->create(m_partition, m_operation_detail) Actual: false Expected: true Operation details: <b><i>mkfs.ext2 -F -L &apos;&apos; &apos;/home/centos/programming/c/gparted/tests/test_ext2.img&apos;</i></b> 00:00:00 (ERROR) <i></i> <i>mke2fs 1.42.9 (28-Dec-2013) /home/centos/programming/c/gparted/tests/test_ext2.img: Not enough space to build proposed filesystem while setting up superblock </i> [ FAILED ] ext2Test.Create (25 ms) [----------] 1 test from ext2Test (25 ms total) [----------] Global test environment tear-down [==========] 1 test from 1 test case ran. (30 ms total) [ PASSED ] 0 tests. [ FAILED ] 1 test, listed below: [ FAILED ] ext2Test.Create 1 FAILED TEST $ echo $? 1 Also as Utils:: and FileSystem::execute_command() are needed, this requires linking with GParted_Core for GParted_Core::mainthread and therefore with most of the non-UI classes in gpartedbin. Closes !49 - Add file system interface tests
2019-07-17 06:08:08 -06:00
close(fd);
Reload Partition object after FS creation in read tests (!49) Here are the errors reported in the deliberately broken CreateAndReadLabel test from the previous commit message: [ RUN ] ext2Test.CreateAndReadLabel test_ext2.cc:311: Failure Value of: m_partition.get_messages().empty() Actual: false Expected: true Partition messages: e2label: No such file or directory while trying to open /does_not_exist/test_ext2.img Couldn't find valid filesystem superblock. [ FAILED ] ext2Test.CreateAndReadLabel (77 ms) Even though the test was deliberately broken by setting the wrong path for the file system image and the e2label command failed, apparently testing for the expected label still passed. What happened was that the desired "TEST_LABEL" has to be in the Partition object and then the file system was created. Then reading the file system label failed, however "TEST_LABEL" was already set in the Partition object so it matched. Reading the label is unique among the read actions of usage, label and UUID as the others don't need to be set before the file system is created. GParted doesn't encounter this issue because when refreshing devices it creates new blank Partition objects and then performs the read actions to populate them. Fix by resetting the Partition object back to only containing basic information before all the reading file system information tests, even though it is only needed in the read label case. This also better reflects how GParted works. Now with the same deliberate brokenness the test also reports the label does not match it's expected value: $ ./test_ext2 --gtest_filter='ext2Test.CreateAndReadLabel' Running main() from test_ext2.cc Note: Google Test filter = ext2Test.CreateAndReadLabel [==========] Running 1 test from 1 test case. [----------] Global test environment set-up. [----------] 1 test from ext2Test [ RUN ] ext2Test.CreateAndReadLabel test_ext2.cc:322: Failure Expected equality of these values: fs_label Which is: "TEST_LABEL" m_partition.get_filesystem_label().c_str() Which is: "" test_ext2.cc:272: Failure Value of: m_partition.get_messages().empty() Actual: false Expected: true Partition messages: e2label: No such file or directory while trying to open /does_not_exist/test_ext2.img Couldn't find valid filesystem superblock. [ FAILED ] ext2Test.CreateAndReadLabel (70 ms) [----------] 1 test from ext2Test (70 ms total) [----------] Global test environment tear-down [==========] 1 test from 1 test case ran. (75 ms total) [ PASSED ] 0 tests. [ FAILED ] 1 test, listed below: [ FAILED ] ext2Test.CreateAndReadLabel 1 FAILED TEST Closes !49 - Add file system interface tests
2019-08-27 09:49:02 -06:00
reload_partition();
Add initial create ext2 only FileSystem interface class test (!49) This is the first step of adding testing of the derived FileSystem interface classes which call the file system specific executables. Rather than mocking command execution and returned output the tests run the real commands, effectively making this integration testing. Test case setup determines the file system supported actions using get_filesystem_support() and individual tests are skipped if a feature is not supported, just as GParted does for it's actions. Each test creates it's own sparse image file and a fresh file system, performs a test on one FileSystem interface call and deletes the image file. This makes each test independent and allows them to run as a non-root user, provided the file system command itself doesn't require root. Errors reported for a failed interface call will include the GParted OperationDetails, which in turn includes the file system specific command used and stdout and stderr from it's execution. For example, temporarily breaking the test code to create a 10 KiB image file instead of 256 MiB one produces this: $ ./test_ext2 Running main() from test_ext2.cc [==========] Running 1 test from 1 test case. [----------] Global test environment set-up. [----------] 1 test from ext2Test [ RUN ] ext2Test.Create test_ext2.cc:199: Failure Value of: s_ext2_obj->create(m_partition, m_operation_detail) Actual: false Expected: true Operation details: <b><i>mkfs.ext2 -F -L &apos;&apos; &apos;/home/centos/programming/c/gparted/tests/test_ext2.img&apos;</i></b> 00:00:00 (ERROR) <i></i> <i>mke2fs 1.42.9 (28-Dec-2013) /home/centos/programming/c/gparted/tests/test_ext2.img: Not enough space to build proposed filesystem while setting up superblock </i> [ FAILED ] ext2Test.Create (25 ms) [----------] 1 test from ext2Test (25 ms total) [----------] Global test environment tear-down [==========] 1 test from 1 test case ran. (30 ms total) [ PASSED ] 0 tests. [ FAILED ] 1 test, listed below: [ FAILED ] ext2Test.Create 1 FAILED TEST $ echo $? 1 Also as Utils:: and FileSystem::execute_command() are needed, this requires linking with GParted_Core for GParted_Core::mainthread and therefore with most of the non-UI classes in gpartedbin. Closes !49 - Add file system interface tests
2019-07-17 06:08:08 -06:00
}
void SupportedFileSystemsTest::TearDown()
Add initial create ext2 only FileSystem interface class test (!49) This is the first step of adding testing of the derived FileSystem interface classes which call the file system specific executables. Rather than mocking command execution and returned output the tests run the real commands, effectively making this integration testing. Test case setup determines the file system supported actions using get_filesystem_support() and individual tests are skipped if a feature is not supported, just as GParted does for it's actions. Each test creates it's own sparse image file and a fresh file system, performs a test on one FileSystem interface call and deletes the image file. This makes each test independent and allows them to run as a non-root user, provided the file system command itself doesn't require root. Errors reported for a failed interface call will include the GParted OperationDetails, which in turn includes the file system specific command used and stdout and stderr from it's execution. For example, temporarily breaking the test code to create a 10 KiB image file instead of 256 MiB one produces this: $ ./test_ext2 Running main() from test_ext2.cc [==========] Running 1 test from 1 test case. [----------] Global test environment set-up. [----------] 1 test from ext2Test [ RUN ] ext2Test.Create test_ext2.cc:199: Failure Value of: s_ext2_obj->create(m_partition, m_operation_detail) Actual: false Expected: true Operation details: <b><i>mkfs.ext2 -F -L &apos;&apos; &apos;/home/centos/programming/c/gparted/tests/test_ext2.img&apos;</i></b> 00:00:00 (ERROR) <i></i> <i>mke2fs 1.42.9 (28-Dec-2013) /home/centos/programming/c/gparted/tests/test_ext2.img: Not enough space to build proposed filesystem while setting up superblock </i> [ FAILED ] ext2Test.Create (25 ms) [----------] 1 test from ext2Test (25 ms total) [----------] Global test environment tear-down [==========] 1 test from 1 test case ran. (30 ms total) [ PASSED ] 0 tests. [ FAILED ] 1 test, listed below: [ FAILED ] ext2Test.Create 1 FAILED TEST $ echo $? 1 Also as Utils:: and FileSystem::execute_command() are needed, this requires linking with GParted_Core for GParted_Core::mainthread and therefore with most of the non-UI classes in gpartedbin. Closes !49 - Add file system interface tests
2019-07-17 06:08:08 -06:00
{
unlink(s_image_name);
Add testing of linux-swap using Value-Parameterised Google Tests (!49) Use Google Test Value-Parameterised to call every test for both ext2 and linux-swap. https://github.com/google/googletest/blob/v1.8.x/googletest/docs/advanced.md#value-parameterized-tests Running the test now looks like this: $ ./test_SupportedFileSystems Running main() from test_SupportedFileSystems.cc [==========] Running 20 tests from 1 test case. [----------] Global test environment set-up. [----------] 20 tests from My/SupportedFileSystemsTest [ RUN ] My/SupportedFileSystemsTest.Create/0 [ OK ] My/SupportedFileSystemsTest.Create/0 (97 ms) [ RUN ] My/SupportedFileSystemsTest.Create/1 [ OK ] My/SupportedFileSystemsTest.Create/1 (15 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 (106 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 (14 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 (95 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 (23 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 (99 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 (102 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 (101 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 (21 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/0 [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/0 (153 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/1 test_SupportedFileSystems.cc:424: Skip test. check not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/0 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/0 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/1 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/0 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/0 (266 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/1 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/1 (32 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/0 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/0 (111 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/1 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/1 (28 ms) [----------] 20 tests from My/SupportedFileSystemsTest (1311 ms total) [----------] Global test environment tear-down [==========] 20 tests from 1 test case ran. (1342 ms total) [ PASSED ] 20 tests. Closes !49 - Add file system interface tests
2019-08-02 04:15:48 -06:00
m_fs_object = NULL;
Add initial create ext2 only FileSystem interface class test (!49) This is the first step of adding testing of the derived FileSystem interface classes which call the file system specific executables. Rather than mocking command execution and returned output the tests run the real commands, effectively making this integration testing. Test case setup determines the file system supported actions using get_filesystem_support() and individual tests are skipped if a feature is not supported, just as GParted does for it's actions. Each test creates it's own sparse image file and a fresh file system, performs a test on one FileSystem interface call and deletes the image file. This makes each test independent and allows them to run as a non-root user, provided the file system command itself doesn't require root. Errors reported for a failed interface call will include the GParted OperationDetails, which in turn includes the file system specific command used and stdout and stderr from it's execution. For example, temporarily breaking the test code to create a 10 KiB image file instead of 256 MiB one produces this: $ ./test_ext2 Running main() from test_ext2.cc [==========] Running 1 test from 1 test case. [----------] Global test environment set-up. [----------] 1 test from ext2Test [ RUN ] ext2Test.Create test_ext2.cc:199: Failure Value of: s_ext2_obj->create(m_partition, m_operation_detail) Actual: false Expected: true Operation details: <b><i>mkfs.ext2 -F -L &apos;&apos; &apos;/home/centos/programming/c/gparted/tests/test_ext2.img&apos;</i></b> 00:00:00 (ERROR) <i></i> <i>mke2fs 1.42.9 (28-Dec-2013) /home/centos/programming/c/gparted/tests/test_ext2.img: Not enough space to build proposed filesystem while setting up superblock </i> [ FAILED ] ext2Test.Create (25 ms) [----------] 1 test from ext2Test (25 ms total) [----------] Global test environment tear-down [==========] 1 test from 1 test case ran. (30 ms total) [ PASSED ] 0 tests. [ FAILED ] 1 test, listed below: [ FAILED ] ext2Test.Create 1 FAILED TEST $ echo $? 1 Also as Utils:: and FileSystem::execute_command() are needed, this requires linking with GParted_Core for GParted_Core::mainthread and therefore with most of the non-UI classes in gpartedbin. Closes !49 - Add file system interface tests
2019-07-17 06:08:08 -06:00
}
// Common test case initialisation creating the supported file system interface object.
void SupportedFileSystemsTest::SetUpTestCase()
Add initial create ext2 only FileSystem interface class test (!49) This is the first step of adding testing of the derived FileSystem interface classes which call the file system specific executables. Rather than mocking command execution and returned output the tests run the real commands, effectively making this integration testing. Test case setup determines the file system supported actions using get_filesystem_support() and individual tests are skipped if a feature is not supported, just as GParted does for it's actions. Each test creates it's own sparse image file and a fresh file system, performs a test on one FileSystem interface call and deletes the image file. This makes each test independent and allows them to run as a non-root user, provided the file system command itself doesn't require root. Errors reported for a failed interface call will include the GParted OperationDetails, which in turn includes the file system specific command used and stdout and stderr from it's execution. For example, temporarily breaking the test code to create a 10 KiB image file instead of 256 MiB one produces this: $ ./test_ext2 Running main() from test_ext2.cc [==========] Running 1 test from 1 test case. [----------] Global test environment set-up. [----------] 1 test from ext2Test [ RUN ] ext2Test.Create test_ext2.cc:199: Failure Value of: s_ext2_obj->create(m_partition, m_operation_detail) Actual: false Expected: true Operation details: <b><i>mkfs.ext2 -F -L &apos;&apos; &apos;/home/centos/programming/c/gparted/tests/test_ext2.img&apos;</i></b> 00:00:00 (ERROR) <i></i> <i>mke2fs 1.42.9 (28-Dec-2013) /home/centos/programming/c/gparted/tests/test_ext2.img: Not enough space to build proposed filesystem while setting up superblock </i> [ FAILED ] ext2Test.Create (25 ms) [----------] 1 test from ext2Test (25 ms total) [----------] Global test environment tear-down [==========] 1 test from 1 test case ran. (30 ms total) [ PASSED ] 0 tests. [ FAILED ] 1 test, listed below: [ FAILED ] ext2Test.Create 1 FAILED TEST $ echo $? 1 Also as Utils:: and FileSystem::execute_command() are needed, this requires linking with GParted_Core for GParted_Core::mainthread and therefore with most of the non-UI classes in gpartedbin. Closes !49 - Add file system interface tests
2019-07-17 06:08:08 -06:00
{
s_supported_filesystems = new SupportedFileSystems();
// Discover available file systems support capabilities, base on available file
// system specific tools.
s_supported_filesystems->find_supported_filesystems();
Add initial create ext2 only FileSystem interface class test (!49) This is the first step of adding testing of the derived FileSystem interface classes which call the file system specific executables. Rather than mocking command execution and returned output the tests run the real commands, effectively making this integration testing. Test case setup determines the file system supported actions using get_filesystem_support() and individual tests are skipped if a feature is not supported, just as GParted does for it's actions. Each test creates it's own sparse image file and a fresh file system, performs a test on one FileSystem interface call and deletes the image file. This makes each test independent and allows them to run as a non-root user, provided the file system command itself doesn't require root. Errors reported for a failed interface call will include the GParted OperationDetails, which in turn includes the file system specific command used and stdout and stderr from it's execution. For example, temporarily breaking the test code to create a 10 KiB image file instead of 256 MiB one produces this: $ ./test_ext2 Running main() from test_ext2.cc [==========] Running 1 test from 1 test case. [----------] Global test environment set-up. [----------] 1 test from ext2Test [ RUN ] ext2Test.Create test_ext2.cc:199: Failure Value of: s_ext2_obj->create(m_partition, m_operation_detail) Actual: false Expected: true Operation details: <b><i>mkfs.ext2 -F -L &apos;&apos; &apos;/home/centos/programming/c/gparted/tests/test_ext2.img&apos;</i></b> 00:00:00 (ERROR) <i></i> <i>mke2fs 1.42.9 (28-Dec-2013) /home/centos/programming/c/gparted/tests/test_ext2.img: Not enough space to build proposed filesystem while setting up superblock </i> [ FAILED ] ext2Test.Create (25 ms) [----------] 1 test from ext2Test (25 ms total) [----------] Global test environment tear-down [==========] 1 test from 1 test case ran. (30 ms total) [ PASSED ] 0 tests. [ FAILED ] 1 test, listed below: [ FAILED ] ext2Test.Create 1 FAILED TEST $ echo $? 1 Also as Utils:: and FileSystem::execute_command() are needed, this requires linking with GParted_Core for GParted_Core::mainthread and therefore with most of the non-UI classes in gpartedbin. Closes !49 - Add file system interface tests
2019-07-17 06:08:08 -06:00
}
// Common test case teardown destroying the supported file systems interface object.
void SupportedFileSystemsTest::TearDownTestCase()
Add initial create ext2 only FileSystem interface class test (!49) This is the first step of adding testing of the derived FileSystem interface classes which call the file system specific executables. Rather than mocking command execution and returned output the tests run the real commands, effectively making this integration testing. Test case setup determines the file system supported actions using get_filesystem_support() and individual tests are skipped if a feature is not supported, just as GParted does for it's actions. Each test creates it's own sparse image file and a fresh file system, performs a test on one FileSystem interface call and deletes the image file. This makes each test independent and allows them to run as a non-root user, provided the file system command itself doesn't require root. Errors reported for a failed interface call will include the GParted OperationDetails, which in turn includes the file system specific command used and stdout and stderr from it's execution. For example, temporarily breaking the test code to create a 10 KiB image file instead of 256 MiB one produces this: $ ./test_ext2 Running main() from test_ext2.cc [==========] Running 1 test from 1 test case. [----------] Global test environment set-up. [----------] 1 test from ext2Test [ RUN ] ext2Test.Create test_ext2.cc:199: Failure Value of: s_ext2_obj->create(m_partition, m_operation_detail) Actual: false Expected: true Operation details: <b><i>mkfs.ext2 -F -L &apos;&apos; &apos;/home/centos/programming/c/gparted/tests/test_ext2.img&apos;</i></b> 00:00:00 (ERROR) <i></i> <i>mke2fs 1.42.9 (28-Dec-2013) /home/centos/programming/c/gparted/tests/test_ext2.img: Not enough space to build proposed filesystem while setting up superblock </i> [ FAILED ] ext2Test.Create (25 ms) [----------] 1 test from ext2Test (25 ms total) [----------] Global test environment tear-down [==========] 1 test from 1 test case ran. (30 ms total) [ PASSED ] 0 tests. [ FAILED ] 1 test, listed below: [ FAILED ] ext2Test.Create 1 FAILED TEST $ echo $? 1 Also as Utils:: and FileSystem::execute_command() are needed, this requires linking with GParted_Core for GParted_Core::mainthread and therefore with most of the non-UI classes in gpartedbin. Closes !49 - Add file system interface tests
2019-07-17 06:08:08 -06:00
{
delete s_supported_filesystems;
s_supported_filesystems = NULL;
Add initial create ext2 only FileSystem interface class test (!49) This is the first step of adding testing of the derived FileSystem interface classes which call the file system specific executables. Rather than mocking command execution and returned output the tests run the real commands, effectively making this integration testing. Test case setup determines the file system supported actions using get_filesystem_support() and individual tests are skipped if a feature is not supported, just as GParted does for it's actions. Each test creates it's own sparse image file and a fresh file system, performs a test on one FileSystem interface call and deletes the image file. This makes each test independent and allows them to run as a non-root user, provided the file system command itself doesn't require root. Errors reported for a failed interface call will include the GParted OperationDetails, which in turn includes the file system specific command used and stdout and stderr from it's execution. For example, temporarily breaking the test code to create a 10 KiB image file instead of 256 MiB one produces this: $ ./test_ext2 Running main() from test_ext2.cc [==========] Running 1 test from 1 test case. [----------] Global test environment set-up. [----------] 1 test from ext2Test [ RUN ] ext2Test.Create test_ext2.cc:199: Failure Value of: s_ext2_obj->create(m_partition, m_operation_detail) Actual: false Expected: true Operation details: <b><i>mkfs.ext2 -F -L &apos;&apos; &apos;/home/centos/programming/c/gparted/tests/test_ext2.img&apos;</i></b> 00:00:00 (ERROR) <i></i> <i>mke2fs 1.42.9 (28-Dec-2013) /home/centos/programming/c/gparted/tests/test_ext2.img: Not enough space to build proposed filesystem while setting up superblock </i> [ FAILED ] ext2Test.Create (25 ms) [----------] 1 test from ext2Test (25 ms total) [----------] Global test environment tear-down [==========] 1 test from 1 test case ran. (30 ms total) [ PASSED ] 0 tests. [ FAILED ] 1 test, listed below: [ FAILED ] ext2Test.Create 1 FAILED TEST $ echo $? 1 Also as Utils:: and FileSystem::execute_command() are needed, this requires linking with GParted_Core for GParted_Core::mainthread and therefore with most of the non-UI classes in gpartedbin. Closes !49 - Add file system interface tests
2019-07-17 06:08:08 -06:00
}
Reload Partition object after FS creation in read tests (!49) Here are the errors reported in the deliberately broken CreateAndReadLabel test from the previous commit message: [ RUN ] ext2Test.CreateAndReadLabel test_ext2.cc:311: Failure Value of: m_partition.get_messages().empty() Actual: false Expected: true Partition messages: e2label: No such file or directory while trying to open /does_not_exist/test_ext2.img Couldn't find valid filesystem superblock. [ FAILED ] ext2Test.CreateAndReadLabel (77 ms) Even though the test was deliberately broken by setting the wrong path for the file system image and the e2label command failed, apparently testing for the expected label still passed. What happened was that the desired "TEST_LABEL" has to be in the Partition object and then the file system was created. Then reading the file system label failed, however "TEST_LABEL" was already set in the Partition object so it matched. Reading the label is unique among the read actions of usage, label and UUID as the others don't need to be set before the file system is created. GParted doesn't encounter this issue because when refreshing devices it creates new blank Partition objects and then performs the read actions to populate them. Fix by resetting the Partition object back to only containing basic information before all the reading file system information tests, even though it is only needed in the read label case. This also better reflects how GParted works. Now with the same deliberate brokenness the test also reports the label does not match it's expected value: $ ./test_ext2 --gtest_filter='ext2Test.CreateAndReadLabel' Running main() from test_ext2.cc Note: Google Test filter = ext2Test.CreateAndReadLabel [==========] Running 1 test from 1 test case. [----------] Global test environment set-up. [----------] 1 test from ext2Test [ RUN ] ext2Test.CreateAndReadLabel test_ext2.cc:322: Failure Expected equality of these values: fs_label Which is: "TEST_LABEL" m_partition.get_filesystem_label().c_str() Which is: "" test_ext2.cc:272: Failure Value of: m_partition.get_messages().empty() Actual: false Expected: true Partition messages: e2label: No such file or directory while trying to open /does_not_exist/test_ext2.img Couldn't find valid filesystem superblock. [ FAILED ] ext2Test.CreateAndReadLabel (70 ms) [----------] 1 test from ext2Test (70 ms total) [----------] Global test environment tear-down [==========] 1 test from 1 test case ran. (75 ms total) [ PASSED ] 0 tests. [ FAILED ] 1 test, listed below: [ FAILED ] ext2Test.CreateAndReadLabel 1 FAILED TEST Closes !49 - Add file system interface tests
2019-08-27 09:49:02 -06:00
// (Re)initialise m_partition as a Partition object spanning the whole of the image file
// with file system type only. No file system usage, label or UUID.
void SupportedFileSystemsTest::reload_partition()
Reload Partition object after FS creation in read tests (!49) Here are the errors reported in the deliberately broken CreateAndReadLabel test from the previous commit message: [ RUN ] ext2Test.CreateAndReadLabel test_ext2.cc:311: Failure Value of: m_partition.get_messages().empty() Actual: false Expected: true Partition messages: e2label: No such file or directory while trying to open /does_not_exist/test_ext2.img Couldn't find valid filesystem superblock. [ FAILED ] ext2Test.CreateAndReadLabel (77 ms) Even though the test was deliberately broken by setting the wrong path for the file system image and the e2label command failed, apparently testing for the expected label still passed. What happened was that the desired "TEST_LABEL" has to be in the Partition object and then the file system was created. Then reading the file system label failed, however "TEST_LABEL" was already set in the Partition object so it matched. Reading the label is unique among the read actions of usage, label and UUID as the others don't need to be set before the file system is created. GParted doesn't encounter this issue because when refreshing devices it creates new blank Partition objects and then performs the read actions to populate them. Fix by resetting the Partition object back to only containing basic information before all the reading file system information tests, even though it is only needed in the read label case. This also better reflects how GParted works. Now with the same deliberate brokenness the test also reports the label does not match it's expected value: $ ./test_ext2 --gtest_filter='ext2Test.CreateAndReadLabel' Running main() from test_ext2.cc Note: Google Test filter = ext2Test.CreateAndReadLabel [==========] Running 1 test from 1 test case. [----------] Global test environment set-up. [----------] 1 test from ext2Test [ RUN ] ext2Test.CreateAndReadLabel test_ext2.cc:322: Failure Expected equality of these values: fs_label Which is: "TEST_LABEL" m_partition.get_filesystem_label().c_str() Which is: "" test_ext2.cc:272: Failure Value of: m_partition.get_messages().empty() Actual: false Expected: true Partition messages: e2label: No such file or directory while trying to open /does_not_exist/test_ext2.img Couldn't find valid filesystem superblock. [ FAILED ] ext2Test.CreateAndReadLabel (70 ms) [----------] 1 test from ext2Test (70 ms total) [----------] Global test environment tear-down [==========] 1 test from 1 test case ran. (75 ms total) [ PASSED ] 0 tests. [ FAILED ] 1 test, listed below: [ FAILED ] ext2Test.CreateAndReadLabel 1 FAILED TEST Closes !49 - Add file system interface tests
2019-08-27 09:49:02 -06:00
{
m_partition.Reset();
// Use libparted to get the sector size etc. of the image file.
PedDevice* lp_device = ped_device_get(s_image_name);
ASSERT_TRUE(lp_device != NULL);
// Prepare partition object spanning whole of the image file.
m_partition.set_unpartitioned(s_image_name,
lp_device->path,
Add testing of linux-swap using Value-Parameterised Google Tests (!49) Use Google Test Value-Parameterised to call every test for both ext2 and linux-swap. https://github.com/google/googletest/blob/v1.8.x/googletest/docs/advanced.md#value-parameterized-tests Running the test now looks like this: $ ./test_SupportedFileSystems Running main() from test_SupportedFileSystems.cc [==========] Running 20 tests from 1 test case. [----------] Global test environment set-up. [----------] 20 tests from My/SupportedFileSystemsTest [ RUN ] My/SupportedFileSystemsTest.Create/0 [ OK ] My/SupportedFileSystemsTest.Create/0 (97 ms) [ RUN ] My/SupportedFileSystemsTest.Create/1 [ OK ] My/SupportedFileSystemsTest.Create/1 (15 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 (106 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 (14 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 (95 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 (23 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 (99 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 (102 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 (101 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 (21 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/0 [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/0 (153 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/1 test_SupportedFileSystems.cc:424: Skip test. check not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/0 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/0 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/1 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/0 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/0 (266 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/1 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/1 (32 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/0 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/0 (111 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/1 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/1 (28 ms) [----------] 20 tests from My/SupportedFileSystemsTest (1311 ms total) [----------] Global test environment tear-down [==========] 20 tests from 1 test case ran. (1342 ms total) [ PASSED ] 20 tests. Closes !49 - Add file system interface tests
2019-08-02 04:15:48 -06:00
m_fstype,
Reload Partition object after FS creation in read tests (!49) Here are the errors reported in the deliberately broken CreateAndReadLabel test from the previous commit message: [ RUN ] ext2Test.CreateAndReadLabel test_ext2.cc:311: Failure Value of: m_partition.get_messages().empty() Actual: false Expected: true Partition messages: e2label: No such file or directory while trying to open /does_not_exist/test_ext2.img Couldn't find valid filesystem superblock. [ FAILED ] ext2Test.CreateAndReadLabel (77 ms) Even though the test was deliberately broken by setting the wrong path for the file system image and the e2label command failed, apparently testing for the expected label still passed. What happened was that the desired "TEST_LABEL" has to be in the Partition object and then the file system was created. Then reading the file system label failed, however "TEST_LABEL" was already set in the Partition object so it matched. Reading the label is unique among the read actions of usage, label and UUID as the others don't need to be set before the file system is created. GParted doesn't encounter this issue because when refreshing devices it creates new blank Partition objects and then performs the read actions to populate them. Fix by resetting the Partition object back to only containing basic information before all the reading file system information tests, even though it is only needed in the read label case. This also better reflects how GParted works. Now with the same deliberate brokenness the test also reports the label does not match it's expected value: $ ./test_ext2 --gtest_filter='ext2Test.CreateAndReadLabel' Running main() from test_ext2.cc Note: Google Test filter = ext2Test.CreateAndReadLabel [==========] Running 1 test from 1 test case. [----------] Global test environment set-up. [----------] 1 test from ext2Test [ RUN ] ext2Test.CreateAndReadLabel test_ext2.cc:322: Failure Expected equality of these values: fs_label Which is: "TEST_LABEL" m_partition.get_filesystem_label().c_str() Which is: "" test_ext2.cc:272: Failure Value of: m_partition.get_messages().empty() Actual: false Expected: true Partition messages: e2label: No such file or directory while trying to open /does_not_exist/test_ext2.img Couldn't find valid filesystem superblock. [ FAILED ] ext2Test.CreateAndReadLabel (70 ms) [----------] 1 test from ext2Test (70 ms total) [----------] Global test environment tear-down [==========] 1 test from 1 test case ran. (75 ms total) [ PASSED ] 0 tests. [ FAILED ] 1 test, listed below: [ FAILED ] ext2Test.CreateAndReadLabel 1 FAILED TEST Closes !49 - Add file system interface tests
2019-08-27 09:49:02 -06:00
lp_device->length,
lp_device->sector_size,
false);
ped_device_destroy(lp_device);
lp_device = NULL;
}
void SupportedFileSystemsTest::resize_image(Byte_Value new_size)
{
int fd = open(s_image_name, O_WRONLY|O_NONBLOCK);
ASSERT_GE(fd, 0) << "Failed to open image file '" << s_image_name << "'. errno="
<< errno << "," << strerror(errno);
ASSERT_EQ(ftruncate(fd, (off_t)new_size), 0) << "Failed to resize image file '" << s_image_name << "' to size "
<< new_size << ". errno=" << errno << "," << strerror(errno);
close(fd);
}
void SupportedFileSystemsTest::shrink_partition(Byte_Value new_size)
{
ASSERT_LE(new_size, m_partition.get_byte_length()) << __func__ << "(): TEST_BUG: Cannot grow Partition object size";
Sector new_sectors = (new_size + m_partition.sector_size - 1) / m_partition.sector_size;
m_partition.sector_end = new_sectors;
}
Add testing of linux-swap using Value-Parameterised Google Tests (!49) Use Google Test Value-Parameterised to call every test for both ext2 and linux-swap. https://github.com/google/googletest/blob/v1.8.x/googletest/docs/advanced.md#value-parameterized-tests Running the test now looks like this: $ ./test_SupportedFileSystems Running main() from test_SupportedFileSystems.cc [==========] Running 20 tests from 1 test case. [----------] Global test environment set-up. [----------] 20 tests from My/SupportedFileSystemsTest [ RUN ] My/SupportedFileSystemsTest.Create/0 [ OK ] My/SupportedFileSystemsTest.Create/0 (97 ms) [ RUN ] My/SupportedFileSystemsTest.Create/1 [ OK ] My/SupportedFileSystemsTest.Create/1 (15 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 (106 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 (14 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 (95 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 (23 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 (99 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 (102 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 (101 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 (21 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/0 [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/0 (153 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/1 test_SupportedFileSystems.cc:424: Skip test. check not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/0 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/0 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/1 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/0 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/0 (266 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/1 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/1 (32 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/0 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/0 (111 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/1 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/1 (28 ms) [----------] 20 tests from My/SupportedFileSystemsTest (1311 ms total) [----------] Global test environment tear-down [==========] 20 tests from 1 test case ran. (1342 ms total) [ PASSED ] 20 tests. Closes !49 - Add file system interface tests
2019-08-02 04:15:48 -06:00
TEST_P(SupportedFileSystemsTest, Create)
Add initial create ext2 only FileSystem interface class test (!49) This is the first step of adding testing of the derived FileSystem interface classes which call the file system specific executables. Rather than mocking command execution and returned output the tests run the real commands, effectively making this integration testing. Test case setup determines the file system supported actions using get_filesystem_support() and individual tests are skipped if a feature is not supported, just as GParted does for it's actions. Each test creates it's own sparse image file and a fresh file system, performs a test on one FileSystem interface call and deletes the image file. This makes each test independent and allows them to run as a non-root user, provided the file system command itself doesn't require root. Errors reported for a failed interface call will include the GParted OperationDetails, which in turn includes the file system specific command used and stdout and stderr from it's execution. For example, temporarily breaking the test code to create a 10 KiB image file instead of 256 MiB one produces this: $ ./test_ext2 Running main() from test_ext2.cc [==========] Running 1 test from 1 test case. [----------] Global test environment set-up. [----------] 1 test from ext2Test [ RUN ] ext2Test.Create test_ext2.cc:199: Failure Value of: s_ext2_obj->create(m_partition, m_operation_detail) Actual: false Expected: true Operation details: <b><i>mkfs.ext2 -F -L &apos;&apos; &apos;/home/centos/programming/c/gparted/tests/test_ext2.img&apos;</i></b> 00:00:00 (ERROR) <i></i> <i>mke2fs 1.42.9 (28-Dec-2013) /home/centos/programming/c/gparted/tests/test_ext2.img: Not enough space to build proposed filesystem while setting up superblock </i> [ FAILED ] ext2Test.Create (25 ms) [----------] 1 test from ext2Test (25 ms total) [----------] Global test environment tear-down [==========] 1 test from 1 test case ran. (30 ms total) [ PASSED ] 0 tests. [ FAILED ] 1 test, listed below: [ FAILED ] ext2Test.Create 1 FAILED TEST $ echo $? 1 Also as Utils:: and FileSystem::execute_command() are needed, this requires linking with GParted_Core for GParted_Core::mainthread and therefore with most of the non-UI classes in gpartedbin. Closes !49 - Add file system interface tests
2019-07-17 06:08:08 -06:00
{
SKIP_IF_FS_DOESNT_SUPPORT(create);
extra_setup();
// Call create, check for success and print operation details on failure.
Add testing of linux-swap using Value-Parameterised Google Tests (!49) Use Google Test Value-Parameterised to call every test for both ext2 and linux-swap. https://github.com/google/googletest/blob/v1.8.x/googletest/docs/advanced.md#value-parameterized-tests Running the test now looks like this: $ ./test_SupportedFileSystems Running main() from test_SupportedFileSystems.cc [==========] Running 20 tests from 1 test case. [----------] Global test environment set-up. [----------] 20 tests from My/SupportedFileSystemsTest [ RUN ] My/SupportedFileSystemsTest.Create/0 [ OK ] My/SupportedFileSystemsTest.Create/0 (97 ms) [ RUN ] My/SupportedFileSystemsTest.Create/1 [ OK ] My/SupportedFileSystemsTest.Create/1 (15 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 (106 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 (14 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 (95 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 (23 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 (99 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 (102 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 (101 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 (21 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/0 [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/0 (153 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/1 test_SupportedFileSystems.cc:424: Skip test. check not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/0 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/0 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/1 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/0 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/0 (266 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/1 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/1 (32 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/0 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/0 (111 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/1 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/1 (28 ms) [----------] 20 tests from My/SupportedFileSystemsTest (1311 ms total) [----------] Global test environment tear-down [==========] 20 tests from 1 test case ran. (1342 ms total) [ PASSED ] 20 tests. Closes !49 - Add file system interface tests
2019-08-02 04:15:48 -06:00
ASSERT_TRUE(m_fs_object->create(m_partition, m_operation_detail)) << m_operation_detail;
Add initial create ext2 only FileSystem interface class test (!49) This is the first step of adding testing of the derived FileSystem interface classes which call the file system specific executables. Rather than mocking command execution and returned output the tests run the real commands, effectively making this integration testing. Test case setup determines the file system supported actions using get_filesystem_support() and individual tests are skipped if a feature is not supported, just as GParted does for it's actions. Each test creates it's own sparse image file and a fresh file system, performs a test on one FileSystem interface call and deletes the image file. This makes each test independent and allows them to run as a non-root user, provided the file system command itself doesn't require root. Errors reported for a failed interface call will include the GParted OperationDetails, which in turn includes the file system specific command used and stdout and stderr from it's execution. For example, temporarily breaking the test code to create a 10 KiB image file instead of 256 MiB one produces this: $ ./test_ext2 Running main() from test_ext2.cc [==========] Running 1 test from 1 test case. [----------] Global test environment set-up. [----------] 1 test from ext2Test [ RUN ] ext2Test.Create test_ext2.cc:199: Failure Value of: s_ext2_obj->create(m_partition, m_operation_detail) Actual: false Expected: true Operation details: <b><i>mkfs.ext2 -F -L &apos;&apos; &apos;/home/centos/programming/c/gparted/tests/test_ext2.img&apos;</i></b> 00:00:00 (ERROR) <i></i> <i>mke2fs 1.42.9 (28-Dec-2013) /home/centos/programming/c/gparted/tests/test_ext2.img: Not enough space to build proposed filesystem while setting up superblock </i> [ FAILED ] ext2Test.Create (25 ms) [----------] 1 test from ext2Test (25 ms total) [----------] Global test environment tear-down [==========] 1 test from 1 test case ran. (30 ms total) [ PASSED ] 0 tests. [ FAILED ] 1 test, listed below: [ FAILED ] ext2Test.Create 1 FAILED TEST $ echo $? 1 Also as Utils:: and FileSystem::execute_command() are needed, this requires linking with GParted_Core for GParted_Core::mainthread and therefore with most of the non-UI classes in gpartedbin. Closes !49 - Add file system interface tests
2019-07-17 06:08:08 -06:00
}
Add testing of linux-swap using Value-Parameterised Google Tests (!49) Use Google Test Value-Parameterised to call every test for both ext2 and linux-swap. https://github.com/google/googletest/blob/v1.8.x/googletest/docs/advanced.md#value-parameterized-tests Running the test now looks like this: $ ./test_SupportedFileSystems Running main() from test_SupportedFileSystems.cc [==========] Running 20 tests from 1 test case. [----------] Global test environment set-up. [----------] 20 tests from My/SupportedFileSystemsTest [ RUN ] My/SupportedFileSystemsTest.Create/0 [ OK ] My/SupportedFileSystemsTest.Create/0 (97 ms) [ RUN ] My/SupportedFileSystemsTest.Create/1 [ OK ] My/SupportedFileSystemsTest.Create/1 (15 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 (106 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 (14 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 (95 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 (23 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 (99 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 (102 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 (101 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 (21 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/0 [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/0 (153 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/1 test_SupportedFileSystems.cc:424: Skip test. check not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/0 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/0 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/1 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/0 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/0 (266 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/1 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/1 (32 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/0 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/0 (111 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/1 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/1 (28 ms) [----------] 20 tests from My/SupportedFileSystemsTest (1311 ms total) [----------] Global test environment tear-down [==========] 20 tests from 1 test case ran. (1342 ms total) [ PASSED ] 20 tests. Closes !49 - Add file system interface tests
2019-08-02 04:15:48 -06:00
TEST_P(SupportedFileSystemsTest, CreateAndReadUsage)
{
SKIP_IF_FS_DOESNT_SUPPORT(create);
SKIP_IF_FS_DOESNT_SUPPORT(read);
extra_setup();
Add testing of linux-swap using Value-Parameterised Google Tests (!49) Use Google Test Value-Parameterised to call every test for both ext2 and linux-swap. https://github.com/google/googletest/blob/v1.8.x/googletest/docs/advanced.md#value-parameterized-tests Running the test now looks like this: $ ./test_SupportedFileSystems Running main() from test_SupportedFileSystems.cc [==========] Running 20 tests from 1 test case. [----------] Global test environment set-up. [----------] 20 tests from My/SupportedFileSystemsTest [ RUN ] My/SupportedFileSystemsTest.Create/0 [ OK ] My/SupportedFileSystemsTest.Create/0 (97 ms) [ RUN ] My/SupportedFileSystemsTest.Create/1 [ OK ] My/SupportedFileSystemsTest.Create/1 (15 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 (106 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 (14 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 (95 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 (23 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 (99 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 (102 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 (101 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 (21 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/0 [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/0 (153 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/1 test_SupportedFileSystems.cc:424: Skip test. check not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/0 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/0 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/1 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/0 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/0 (266 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/1 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/1 (32 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/0 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/0 (111 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/1 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/1 (28 ms) [----------] 20 tests from My/SupportedFileSystemsTest (1311 ms total) [----------] Global test environment tear-down [==========] 20 tests from 1 test case ran. (1342 ms total) [ PASSED ] 20 tests. Closes !49 - Add file system interface tests
2019-08-02 04:15:48 -06:00
ASSERT_TRUE(m_fs_object->create(m_partition, m_operation_detail)) << m_operation_detail;
Reload Partition object after FS creation in read tests (!49) Here are the errors reported in the deliberately broken CreateAndReadLabel test from the previous commit message: [ RUN ] ext2Test.CreateAndReadLabel test_ext2.cc:311: Failure Value of: m_partition.get_messages().empty() Actual: false Expected: true Partition messages: e2label: No such file or directory while trying to open /does_not_exist/test_ext2.img Couldn't find valid filesystem superblock. [ FAILED ] ext2Test.CreateAndReadLabel (77 ms) Even though the test was deliberately broken by setting the wrong path for the file system image and the e2label command failed, apparently testing for the expected label still passed. What happened was that the desired "TEST_LABEL" has to be in the Partition object and then the file system was created. Then reading the file system label failed, however "TEST_LABEL" was already set in the Partition object so it matched. Reading the label is unique among the read actions of usage, label and UUID as the others don't need to be set before the file system is created. GParted doesn't encounter this issue because when refreshing devices it creates new blank Partition objects and then performs the read actions to populate them. Fix by resetting the Partition object back to only containing basic information before all the reading file system information tests, even though it is only needed in the read label case. This also better reflects how GParted works. Now with the same deliberate brokenness the test also reports the label does not match it's expected value: $ ./test_ext2 --gtest_filter='ext2Test.CreateAndReadLabel' Running main() from test_ext2.cc Note: Google Test filter = ext2Test.CreateAndReadLabel [==========] Running 1 test from 1 test case. [----------] Global test environment set-up. [----------] 1 test from ext2Test [ RUN ] ext2Test.CreateAndReadLabel test_ext2.cc:322: Failure Expected equality of these values: fs_label Which is: "TEST_LABEL" m_partition.get_filesystem_label().c_str() Which is: "" test_ext2.cc:272: Failure Value of: m_partition.get_messages().empty() Actual: false Expected: true Partition messages: e2label: No such file or directory while trying to open /does_not_exist/test_ext2.img Couldn't find valid filesystem superblock. [ FAILED ] ext2Test.CreateAndReadLabel (70 ms) [----------] 1 test from ext2Test (70 ms total) [----------] Global test environment tear-down [==========] 1 test from 1 test case ran. (75 ms total) [ PASSED ] 0 tests. [ FAILED ] 1 test, listed below: [ FAILED ] ext2Test.CreateAndReadLabel 1 FAILED TEST Closes !49 - Add file system interface tests
2019-08-27 09:49:02 -06:00
reload_partition();
Add testing of linux-swap using Value-Parameterised Google Tests (!49) Use Google Test Value-Parameterised to call every test for both ext2 and linux-swap. https://github.com/google/googletest/blob/v1.8.x/googletest/docs/advanced.md#value-parameterized-tests Running the test now looks like this: $ ./test_SupportedFileSystems Running main() from test_SupportedFileSystems.cc [==========] Running 20 tests from 1 test case. [----------] Global test environment set-up. [----------] 20 tests from My/SupportedFileSystemsTest [ RUN ] My/SupportedFileSystemsTest.Create/0 [ OK ] My/SupportedFileSystemsTest.Create/0 (97 ms) [ RUN ] My/SupportedFileSystemsTest.Create/1 [ OK ] My/SupportedFileSystemsTest.Create/1 (15 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 (106 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 (14 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 (95 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 (23 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 (99 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 (102 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 (101 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 (21 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/0 [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/0 (153 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/1 test_SupportedFileSystems.cc:424: Skip test. check not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/0 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/0 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/1 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/0 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/0 (266 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/1 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/1 (32 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/0 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/0 (111 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/1 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/1 (28 ms) [----------] 20 tests from My/SupportedFileSystemsTest (1311 ms total) [----------] Global test environment tear-down [==========] 20 tests from 1 test case ran. (1342 ms total) [ PASSED ] 20 tests. Closes !49 - Add file system interface tests
2019-08-02 04:15:48 -06:00
m_fs_object->set_used_sectors(m_partition);
// Test file system usage is reported correctly.
// Used is between 0 and length.
EXPECT_LE(0, m_partition.sectors_used);
EXPECT_LE(m_partition.sectors_used, m_partition.get_sector_length());
// Unused is between 0 and length.
EXPECT_LE(0, m_partition.sectors_unused);
EXPECT_LE(m_partition.sectors_unused, m_partition.get_sector_length());
// Unallocated is 0.
EXPECT_EQ(m_partition.sectors_unallocated, 0);
// Used + unused = length.
EXPECT_EQ(m_partition.sectors_used + m_partition.sectors_unused, m_partition.get_sector_length());
// Test messages from read operation are empty or print them.
EXPECT_TRUE(m_partition.get_messages().empty()) << m_partition;
}
Add testing of linux-swap using Value-Parameterised Google Tests (!49) Use Google Test Value-Parameterised to call every test for both ext2 and linux-swap. https://github.com/google/googletest/blob/v1.8.x/googletest/docs/advanced.md#value-parameterized-tests Running the test now looks like this: $ ./test_SupportedFileSystems Running main() from test_SupportedFileSystems.cc [==========] Running 20 tests from 1 test case. [----------] Global test environment set-up. [----------] 20 tests from My/SupportedFileSystemsTest [ RUN ] My/SupportedFileSystemsTest.Create/0 [ OK ] My/SupportedFileSystemsTest.Create/0 (97 ms) [ RUN ] My/SupportedFileSystemsTest.Create/1 [ OK ] My/SupportedFileSystemsTest.Create/1 (15 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 (106 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 (14 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 (95 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 (23 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 (99 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 (102 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 (101 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 (21 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/0 [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/0 (153 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/1 test_SupportedFileSystems.cc:424: Skip test. check not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/0 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/0 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/1 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/0 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/0 (266 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/1 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/1 (32 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/0 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/0 (111 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/1 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/1 (28 ms) [----------] 20 tests from My/SupportedFileSystemsTest (1311 ms total) [----------] Global test environment tear-down [==========] 20 tests from 1 test case ran. (1342 ms total) [ PASSED ] 20 tests. Closes !49 - Add file system interface tests
2019-08-02 04:15:48 -06:00
TEST_P(SupportedFileSystemsTest, CreateAndReadLabel)
{
SKIP_IF_FS_DOESNT_SUPPORT(create);
SKIP_IF_FS_DOESNT_SUPPORT(read_label);
const char* fs_label = "TEST_LABEL";
extra_setup();
m_partition.set_filesystem_label(fs_label);
Add testing of linux-swap using Value-Parameterised Google Tests (!49) Use Google Test Value-Parameterised to call every test for both ext2 and linux-swap. https://github.com/google/googletest/blob/v1.8.x/googletest/docs/advanced.md#value-parameterized-tests Running the test now looks like this: $ ./test_SupportedFileSystems Running main() from test_SupportedFileSystems.cc [==========] Running 20 tests from 1 test case. [----------] Global test environment set-up. [----------] 20 tests from My/SupportedFileSystemsTest [ RUN ] My/SupportedFileSystemsTest.Create/0 [ OK ] My/SupportedFileSystemsTest.Create/0 (97 ms) [ RUN ] My/SupportedFileSystemsTest.Create/1 [ OK ] My/SupportedFileSystemsTest.Create/1 (15 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 (106 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 (14 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 (95 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 (23 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 (99 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 (102 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 (101 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 (21 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/0 [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/0 (153 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/1 test_SupportedFileSystems.cc:424: Skip test. check not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/0 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/0 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/1 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/0 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/0 (266 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/1 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/1 (32 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/0 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/0 (111 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/1 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/1 (28 ms) [----------] 20 tests from My/SupportedFileSystemsTest (1311 ms total) [----------] Global test environment tear-down [==========] 20 tests from 1 test case ran. (1342 ms total) [ PASSED ] 20 tests. Closes !49 - Add file system interface tests
2019-08-02 04:15:48 -06:00
ASSERT_TRUE(m_fs_object->create(m_partition, m_operation_detail)) << m_operation_detail;
// Test reading the label is successful.
Reload Partition object after FS creation in read tests (!49) Here are the errors reported in the deliberately broken CreateAndReadLabel test from the previous commit message: [ RUN ] ext2Test.CreateAndReadLabel test_ext2.cc:311: Failure Value of: m_partition.get_messages().empty() Actual: false Expected: true Partition messages: e2label: No such file or directory while trying to open /does_not_exist/test_ext2.img Couldn't find valid filesystem superblock. [ FAILED ] ext2Test.CreateAndReadLabel (77 ms) Even though the test was deliberately broken by setting the wrong path for the file system image and the e2label command failed, apparently testing for the expected label still passed. What happened was that the desired "TEST_LABEL" has to be in the Partition object and then the file system was created. Then reading the file system label failed, however "TEST_LABEL" was already set in the Partition object so it matched. Reading the label is unique among the read actions of usage, label and UUID as the others don't need to be set before the file system is created. GParted doesn't encounter this issue because when refreshing devices it creates new blank Partition objects and then performs the read actions to populate them. Fix by resetting the Partition object back to only containing basic information before all the reading file system information tests, even though it is only needed in the read label case. This also better reflects how GParted works. Now with the same deliberate brokenness the test also reports the label does not match it's expected value: $ ./test_ext2 --gtest_filter='ext2Test.CreateAndReadLabel' Running main() from test_ext2.cc Note: Google Test filter = ext2Test.CreateAndReadLabel [==========] Running 1 test from 1 test case. [----------] Global test environment set-up. [----------] 1 test from ext2Test [ RUN ] ext2Test.CreateAndReadLabel test_ext2.cc:322: Failure Expected equality of these values: fs_label Which is: "TEST_LABEL" m_partition.get_filesystem_label().c_str() Which is: "" test_ext2.cc:272: Failure Value of: m_partition.get_messages().empty() Actual: false Expected: true Partition messages: e2label: No such file or directory while trying to open /does_not_exist/test_ext2.img Couldn't find valid filesystem superblock. [ FAILED ] ext2Test.CreateAndReadLabel (70 ms) [----------] 1 test from ext2Test (70 ms total) [----------] Global test environment tear-down [==========] 1 test from 1 test case ran. (75 ms total) [ PASSED ] 0 tests. [ FAILED ] 1 test, listed below: [ FAILED ] ext2Test.CreateAndReadLabel 1 FAILED TEST Closes !49 - Add file system interface tests
2019-08-27 09:49:02 -06:00
reload_partition();
Add testing of linux-swap using Value-Parameterised Google Tests (!49) Use Google Test Value-Parameterised to call every test for both ext2 and linux-swap. https://github.com/google/googletest/blob/v1.8.x/googletest/docs/advanced.md#value-parameterized-tests Running the test now looks like this: $ ./test_SupportedFileSystems Running main() from test_SupportedFileSystems.cc [==========] Running 20 tests from 1 test case. [----------] Global test environment set-up. [----------] 20 tests from My/SupportedFileSystemsTest [ RUN ] My/SupportedFileSystemsTest.Create/0 [ OK ] My/SupportedFileSystemsTest.Create/0 (97 ms) [ RUN ] My/SupportedFileSystemsTest.Create/1 [ OK ] My/SupportedFileSystemsTest.Create/1 (15 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 (106 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 (14 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 (95 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 (23 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 (99 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 (102 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 (101 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 (21 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/0 [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/0 (153 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/1 test_SupportedFileSystems.cc:424: Skip test. check not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/0 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/0 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/1 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/0 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/0 (266 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/1 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/1 (32 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/0 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/0 (111 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/1 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/1 (28 ms) [----------] 20 tests from My/SupportedFileSystemsTest (1311 ms total) [----------] Global test environment tear-down [==========] 20 tests from 1 test case ran. (1342 ms total) [ PASSED ] 20 tests. Closes !49 - Add file system interface tests
2019-08-02 04:15:48 -06:00
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;
}
Add testing of linux-swap using Value-Parameterised Google Tests (!49) Use Google Test Value-Parameterised to call every test for both ext2 and linux-swap. https://github.com/google/googletest/blob/v1.8.x/googletest/docs/advanced.md#value-parameterized-tests Running the test now looks like this: $ ./test_SupportedFileSystems Running main() from test_SupportedFileSystems.cc [==========] Running 20 tests from 1 test case. [----------] Global test environment set-up. [----------] 20 tests from My/SupportedFileSystemsTest [ RUN ] My/SupportedFileSystemsTest.Create/0 [ OK ] My/SupportedFileSystemsTest.Create/0 (97 ms) [ RUN ] My/SupportedFileSystemsTest.Create/1 [ OK ] My/SupportedFileSystemsTest.Create/1 (15 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 (106 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 (14 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 (95 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 (23 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 (99 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 (102 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 (101 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 (21 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/0 [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/0 (153 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/1 test_SupportedFileSystems.cc:424: Skip test. check not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/0 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/0 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/1 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/0 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/0 (266 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/1 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/1 (32 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/0 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/0 (111 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/1 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/1 (28 ms) [----------] 20 tests from My/SupportedFileSystemsTest (1311 ms total) [----------] Global test environment tear-down [==========] 20 tests from 1 test case ran. (1342 ms total) [ PASSED ] 20 tests. Closes !49 - Add file system interface tests
2019-08-02 04:15:48 -06:00
TEST_P(SupportedFileSystemsTest, CreateAndReadUUID)
{
SKIP_IF_FS_DOESNT_SUPPORT(create);
SKIP_IF_FS_DOESNT_SUPPORT(read_uuid);
extra_setup();
Add testing of linux-swap using Value-Parameterised Google Tests (!49) Use Google Test Value-Parameterised to call every test for both ext2 and linux-swap. https://github.com/google/googletest/blob/v1.8.x/googletest/docs/advanced.md#value-parameterized-tests Running the test now looks like this: $ ./test_SupportedFileSystems Running main() from test_SupportedFileSystems.cc [==========] Running 20 tests from 1 test case. [----------] Global test environment set-up. [----------] 20 tests from My/SupportedFileSystemsTest [ RUN ] My/SupportedFileSystemsTest.Create/0 [ OK ] My/SupportedFileSystemsTest.Create/0 (97 ms) [ RUN ] My/SupportedFileSystemsTest.Create/1 [ OK ] My/SupportedFileSystemsTest.Create/1 (15 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 (106 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 (14 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 (95 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 (23 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 (99 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 (102 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 (101 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 (21 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/0 [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/0 (153 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/1 test_SupportedFileSystems.cc:424: Skip test. check not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/0 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/0 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/1 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/0 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/0 (266 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/1 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/1 (32 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/0 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/0 (111 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/1 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/1 (28 ms) [----------] 20 tests from My/SupportedFileSystemsTest (1311 ms total) [----------] Global test environment tear-down [==========] 20 tests from 1 test case ran. (1342 ms total) [ PASSED ] 20 tests. Closes !49 - Add file system interface tests
2019-08-02 04:15:48 -06:00
ASSERT_TRUE(m_fs_object->create(m_partition, m_operation_detail)) << m_operation_detail;
// Test reading the UUID is successful.
Reload Partition object after FS creation in read tests (!49) Here are the errors reported in the deliberately broken CreateAndReadLabel test from the previous commit message: [ RUN ] ext2Test.CreateAndReadLabel test_ext2.cc:311: Failure Value of: m_partition.get_messages().empty() Actual: false Expected: true Partition messages: e2label: No such file or directory while trying to open /does_not_exist/test_ext2.img Couldn't find valid filesystem superblock. [ FAILED ] ext2Test.CreateAndReadLabel (77 ms) Even though the test was deliberately broken by setting the wrong path for the file system image and the e2label command failed, apparently testing for the expected label still passed. What happened was that the desired "TEST_LABEL" has to be in the Partition object and then the file system was created. Then reading the file system label failed, however "TEST_LABEL" was already set in the Partition object so it matched. Reading the label is unique among the read actions of usage, label and UUID as the others don't need to be set before the file system is created. GParted doesn't encounter this issue because when refreshing devices it creates new blank Partition objects and then performs the read actions to populate them. Fix by resetting the Partition object back to only containing basic information before all the reading file system information tests, even though it is only needed in the read label case. This also better reflects how GParted works. Now with the same deliberate brokenness the test also reports the label does not match it's expected value: $ ./test_ext2 --gtest_filter='ext2Test.CreateAndReadLabel' Running main() from test_ext2.cc Note: Google Test filter = ext2Test.CreateAndReadLabel [==========] Running 1 test from 1 test case. [----------] Global test environment set-up. [----------] 1 test from ext2Test [ RUN ] ext2Test.CreateAndReadLabel test_ext2.cc:322: Failure Expected equality of these values: fs_label Which is: "TEST_LABEL" m_partition.get_filesystem_label().c_str() Which is: "" test_ext2.cc:272: Failure Value of: m_partition.get_messages().empty() Actual: false Expected: true Partition messages: e2label: No such file or directory while trying to open /does_not_exist/test_ext2.img Couldn't find valid filesystem superblock. [ FAILED ] ext2Test.CreateAndReadLabel (70 ms) [----------] 1 test from ext2Test (70 ms total) [----------] Global test environment tear-down [==========] 1 test from 1 test case ran. (75 ms total) [ PASSED ] 0 tests. [ FAILED ] 1 test, listed below: [ FAILED ] ext2Test.CreateAndReadLabel 1 FAILED TEST Closes !49 - Add file system interface tests
2019-08-27 09:49:02 -06:00
reload_partition();
Add testing of linux-swap using Value-Parameterised Google Tests (!49) Use Google Test Value-Parameterised to call every test for both ext2 and linux-swap. https://github.com/google/googletest/blob/v1.8.x/googletest/docs/advanced.md#value-parameterized-tests Running the test now looks like this: $ ./test_SupportedFileSystems Running main() from test_SupportedFileSystems.cc [==========] Running 20 tests from 1 test case. [----------] Global test environment set-up. [----------] 20 tests from My/SupportedFileSystemsTest [ RUN ] My/SupportedFileSystemsTest.Create/0 [ OK ] My/SupportedFileSystemsTest.Create/0 (97 ms) [ RUN ] My/SupportedFileSystemsTest.Create/1 [ OK ] My/SupportedFileSystemsTest.Create/1 (15 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 (106 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 (14 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 (95 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 (23 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 (99 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 (102 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 (101 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 (21 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/0 [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/0 (153 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/1 test_SupportedFileSystems.cc:424: Skip test. check not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/0 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/0 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/1 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/0 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/0 (266 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/1 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/1 (32 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/0 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/0 (111 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/1 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/1 (28 ms) [----------] 20 tests from My/SupportedFileSystemsTest (1311 ms total) [----------] Global test environment tear-down [==========] 20 tests from 1 test case ran. (1342 ms total) [ PASSED ] 20 tests. Closes !49 - Add file system interface tests
2019-08-02 04:15:48 -06:00
m_fs_object->read_uuid(m_partition);
EXPECT_EQ(m_partition.uuid.size(), 36U);
// Test messages from read operation are empty or print them.
EXPECT_TRUE(m_partition.get_messages().empty()) << m_partition;
}
Add testing of linux-swap using Value-Parameterised Google Tests (!49) Use Google Test Value-Parameterised to call every test for both ext2 and linux-swap. https://github.com/google/googletest/blob/v1.8.x/googletest/docs/advanced.md#value-parameterized-tests Running the test now looks like this: $ ./test_SupportedFileSystems Running main() from test_SupportedFileSystems.cc [==========] Running 20 tests from 1 test case. [----------] Global test environment set-up. [----------] 20 tests from My/SupportedFileSystemsTest [ RUN ] My/SupportedFileSystemsTest.Create/0 [ OK ] My/SupportedFileSystemsTest.Create/0 (97 ms) [ RUN ] My/SupportedFileSystemsTest.Create/1 [ OK ] My/SupportedFileSystemsTest.Create/1 (15 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 (106 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 (14 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 (95 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 (23 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 (99 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 (102 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 (101 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 (21 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/0 [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/0 (153 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/1 test_SupportedFileSystems.cc:424: Skip test. check not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/0 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/0 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/1 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/0 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/0 (266 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/1 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/1 (32 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/0 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/0 (111 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/1 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/1 (28 ms) [----------] 20 tests from My/SupportedFileSystemsTest (1311 ms total) [----------] Global test environment tear-down [==========] 20 tests from 1 test case ran. (1342 ms total) [ PASSED ] 20 tests. Closes !49 - Add file system interface tests
2019-08-02 04:15:48 -06:00
TEST_P(SupportedFileSystemsTest, CreateAndWriteLabel)
{
SKIP_IF_FS_DOESNT_SUPPORT(create);
SKIP_IF_FS_DOESNT_SUPPORT(write_label);
extra_setup();
m_partition.set_filesystem_label("FIRST");
Add testing of linux-swap using Value-Parameterised Google Tests (!49) Use Google Test Value-Parameterised to call every test for both ext2 and linux-swap. https://github.com/google/googletest/blob/v1.8.x/googletest/docs/advanced.md#value-parameterized-tests Running the test now looks like this: $ ./test_SupportedFileSystems Running main() from test_SupportedFileSystems.cc [==========] Running 20 tests from 1 test case. [----------] Global test environment set-up. [----------] 20 tests from My/SupportedFileSystemsTest [ RUN ] My/SupportedFileSystemsTest.Create/0 [ OK ] My/SupportedFileSystemsTest.Create/0 (97 ms) [ RUN ] My/SupportedFileSystemsTest.Create/1 [ OK ] My/SupportedFileSystemsTest.Create/1 (15 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 (106 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 (14 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 (95 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 (23 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 (99 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 (102 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 (101 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 (21 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/0 [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/0 (153 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/1 test_SupportedFileSystems.cc:424: Skip test. check not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/0 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/0 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/1 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/0 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/0 (266 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/1 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/1 (32 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/0 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/0 (111 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/1 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/1 (28 ms) [----------] 20 tests from My/SupportedFileSystemsTest (1311 ms total) [----------] Global test environment tear-down [==========] 20 tests from 1 test case ran. (1342 ms total) [ PASSED ] 20 tests. Closes !49 - Add file system interface tests
2019-08-02 04:15:48 -06:00
ASSERT_TRUE(m_fs_object->create(m_partition, m_operation_detail)) << m_operation_detail;
// Test writing a label is successful.
m_partition.set_filesystem_label("SECOND");
Add testing of linux-swap using Value-Parameterised Google Tests (!49) Use Google Test Value-Parameterised to call every test for both ext2 and linux-swap. https://github.com/google/googletest/blob/v1.8.x/googletest/docs/advanced.md#value-parameterized-tests Running the test now looks like this: $ ./test_SupportedFileSystems Running main() from test_SupportedFileSystems.cc [==========] Running 20 tests from 1 test case. [----------] Global test environment set-up. [----------] 20 tests from My/SupportedFileSystemsTest [ RUN ] My/SupportedFileSystemsTest.Create/0 [ OK ] My/SupportedFileSystemsTest.Create/0 (97 ms) [ RUN ] My/SupportedFileSystemsTest.Create/1 [ OK ] My/SupportedFileSystemsTest.Create/1 (15 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 (106 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 (14 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 (95 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 (23 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 (99 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 (102 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 (101 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 (21 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/0 [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/0 (153 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/1 test_SupportedFileSystems.cc:424: Skip test. check not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/0 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/0 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/1 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/0 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/0 (266 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/1 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/1 (32 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/0 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/0 (111 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/1 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/1 (28 ms) [----------] 20 tests from My/SupportedFileSystemsTest (1311 ms total) [----------] Global test environment tear-down [==========] 20 tests from 1 test case ran. (1342 ms total) [ PASSED ] 20 tests. Closes !49 - Add file system interface tests
2019-08-02 04:15:48 -06:00
ASSERT_TRUE(m_fs_object->write_label(m_partition, m_operation_detail)) << m_operation_detail;
}
Add testing of linux-swap using Value-Parameterised Google Tests (!49) Use Google Test Value-Parameterised to call every test for both ext2 and linux-swap. https://github.com/google/googletest/blob/v1.8.x/googletest/docs/advanced.md#value-parameterized-tests Running the test now looks like this: $ ./test_SupportedFileSystems Running main() from test_SupportedFileSystems.cc [==========] Running 20 tests from 1 test case. [----------] Global test environment set-up. [----------] 20 tests from My/SupportedFileSystemsTest [ RUN ] My/SupportedFileSystemsTest.Create/0 [ OK ] My/SupportedFileSystemsTest.Create/0 (97 ms) [ RUN ] My/SupportedFileSystemsTest.Create/1 [ OK ] My/SupportedFileSystemsTest.Create/1 (15 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 (106 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 (14 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 (95 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 (23 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 (99 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 (102 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 (101 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 (21 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/0 [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/0 (153 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/1 test_SupportedFileSystems.cc:424: Skip test. check not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/0 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/0 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/1 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/0 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/0 (266 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/1 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/1 (32 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/0 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/0 (111 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/1 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/1 (28 ms) [----------] 20 tests from My/SupportedFileSystemsTest (1311 ms total) [----------] Global test environment tear-down [==========] 20 tests from 1 test case ran. (1342 ms total) [ PASSED ] 20 tests. Closes !49 - Add file system interface tests
2019-08-02 04:15:48 -06:00
TEST_P(SupportedFileSystemsTest, CreateAndWriteUUID)
{
SKIP_IF_FS_DOESNT_SUPPORT(create);
SKIP_IF_FS_DOESNT_SUPPORT(write_uuid);
extra_setup();
Add testing of linux-swap using Value-Parameterised Google Tests (!49) Use Google Test Value-Parameterised to call every test for both ext2 and linux-swap. https://github.com/google/googletest/blob/v1.8.x/googletest/docs/advanced.md#value-parameterized-tests Running the test now looks like this: $ ./test_SupportedFileSystems Running main() from test_SupportedFileSystems.cc [==========] Running 20 tests from 1 test case. [----------] Global test environment set-up. [----------] 20 tests from My/SupportedFileSystemsTest [ RUN ] My/SupportedFileSystemsTest.Create/0 [ OK ] My/SupportedFileSystemsTest.Create/0 (97 ms) [ RUN ] My/SupportedFileSystemsTest.Create/1 [ OK ] My/SupportedFileSystemsTest.Create/1 (15 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 (106 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 (14 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 (95 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 (23 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 (99 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 (102 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 (101 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 (21 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/0 [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/0 (153 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/1 test_SupportedFileSystems.cc:424: Skip test. check not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/0 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/0 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/1 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/0 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/0 (266 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/1 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/1 (32 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/0 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/0 (111 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/1 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/1 (28 ms) [----------] 20 tests from My/SupportedFileSystemsTest (1311 ms total) [----------] Global test environment tear-down [==========] 20 tests from 1 test case ran. (1342 ms total) [ PASSED ] 20 tests. Closes !49 - Add file system interface tests
2019-08-02 04:15:48 -06:00
ASSERT_TRUE(m_fs_object->create(m_partition, m_operation_detail)) << m_operation_detail;
// Test writing a new random UUID is successful.
Add testing of linux-swap using Value-Parameterised Google Tests (!49) Use Google Test Value-Parameterised to call every test for both ext2 and linux-swap. https://github.com/google/googletest/blob/v1.8.x/googletest/docs/advanced.md#value-parameterized-tests Running the test now looks like this: $ ./test_SupportedFileSystems Running main() from test_SupportedFileSystems.cc [==========] Running 20 tests from 1 test case. [----------] Global test environment set-up. [----------] 20 tests from My/SupportedFileSystemsTest [ RUN ] My/SupportedFileSystemsTest.Create/0 [ OK ] My/SupportedFileSystemsTest.Create/0 (97 ms) [ RUN ] My/SupportedFileSystemsTest.Create/1 [ OK ] My/SupportedFileSystemsTest.Create/1 (15 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 (106 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 (14 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 (95 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 (23 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 (99 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 (102 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 (101 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 (21 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/0 [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/0 (153 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/1 test_SupportedFileSystems.cc:424: Skip test. check not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/0 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/0 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/1 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/0 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/0 (266 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/1 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/1 (32 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/0 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/0 (111 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/1 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/1 (28 ms) [----------] 20 tests from My/SupportedFileSystemsTest (1311 ms total) [----------] Global test environment tear-down [==========] 20 tests from 1 test case ran. (1342 ms total) [ PASSED ] 20 tests. Closes !49 - Add file system interface tests
2019-08-02 04:15:48 -06:00
ASSERT_TRUE(m_fs_object->write_uuid(m_partition, m_operation_detail)) << m_operation_detail;
}
Add testing of linux-swap using Value-Parameterised Google Tests (!49) Use Google Test Value-Parameterised to call every test for both ext2 and linux-swap. https://github.com/google/googletest/blob/v1.8.x/googletest/docs/advanced.md#value-parameterized-tests Running the test now looks like this: $ ./test_SupportedFileSystems Running main() from test_SupportedFileSystems.cc [==========] Running 20 tests from 1 test case. [----------] Global test environment set-up. [----------] 20 tests from My/SupportedFileSystemsTest [ RUN ] My/SupportedFileSystemsTest.Create/0 [ OK ] My/SupportedFileSystemsTest.Create/0 (97 ms) [ RUN ] My/SupportedFileSystemsTest.Create/1 [ OK ] My/SupportedFileSystemsTest.Create/1 (15 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 (106 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 (14 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 (95 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 (23 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 (99 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 (102 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 (101 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 (21 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/0 [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/0 (153 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/1 test_SupportedFileSystems.cc:424: Skip test. check not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/0 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/0 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/1 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/0 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/0 (266 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/1 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/1 (32 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/0 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/0 (111 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/1 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/1 (28 ms) [----------] 20 tests from My/SupportedFileSystemsTest (1311 ms total) [----------] Global test environment tear-down [==========] 20 tests from 1 test case ran. (1342 ms total) [ PASSED ] 20 tests. Closes !49 - Add file system interface tests
2019-08-02 04:15:48 -06:00
TEST_P(SupportedFileSystemsTest, CreateAndCheck)
{
SKIP_IF_FS_DOESNT_SUPPORT(create);
SKIP_IF_FS_DOESNT_SUPPORT(check);
extra_setup();
Add testing of linux-swap using Value-Parameterised Google Tests (!49) Use Google Test Value-Parameterised to call every test for both ext2 and linux-swap. https://github.com/google/googletest/blob/v1.8.x/googletest/docs/advanced.md#value-parameterized-tests Running the test now looks like this: $ ./test_SupportedFileSystems Running main() from test_SupportedFileSystems.cc [==========] Running 20 tests from 1 test case. [----------] Global test environment set-up. [----------] 20 tests from My/SupportedFileSystemsTest [ RUN ] My/SupportedFileSystemsTest.Create/0 [ OK ] My/SupportedFileSystemsTest.Create/0 (97 ms) [ RUN ] My/SupportedFileSystemsTest.Create/1 [ OK ] My/SupportedFileSystemsTest.Create/1 (15 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 (106 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 (14 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 (95 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 (23 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 (99 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 (102 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 (101 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 (21 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/0 [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/0 (153 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/1 test_SupportedFileSystems.cc:424: Skip test. check not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/0 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/0 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/1 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/0 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/0 (266 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/1 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/1 (32 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/0 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/0 (111 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/1 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/1 (28 ms) [----------] 20 tests from My/SupportedFileSystemsTest (1311 ms total) [----------] Global test environment tear-down [==========] 20 tests from 1 test case ran. (1342 ms total) [ PASSED ] 20 tests. Closes !49 - Add file system interface tests
2019-08-02 04:15:48 -06:00
ASSERT_TRUE(m_fs_object->create(m_partition, m_operation_detail)) << m_operation_detail;
// Test checking the file system is successful.
Add testing of linux-swap using Value-Parameterised Google Tests (!49) Use Google Test Value-Parameterised to call every test for both ext2 and linux-swap. https://github.com/google/googletest/blob/v1.8.x/googletest/docs/advanced.md#value-parameterized-tests Running the test now looks like this: $ ./test_SupportedFileSystems Running main() from test_SupportedFileSystems.cc [==========] Running 20 tests from 1 test case. [----------] Global test environment set-up. [----------] 20 tests from My/SupportedFileSystemsTest [ RUN ] My/SupportedFileSystemsTest.Create/0 [ OK ] My/SupportedFileSystemsTest.Create/0 (97 ms) [ RUN ] My/SupportedFileSystemsTest.Create/1 [ OK ] My/SupportedFileSystemsTest.Create/1 (15 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 (106 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 (14 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 (95 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 (23 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 (99 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 (102 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 (101 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 (21 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/0 [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/0 (153 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/1 test_SupportedFileSystems.cc:424: Skip test. check not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/0 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/0 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/1 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/0 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/0 (266 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/1 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/1 (32 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/0 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/0 (111 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/1 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/1 (28 ms) [----------] 20 tests from My/SupportedFileSystemsTest (1311 ms total) [----------] Global test environment tear-down [==========] 20 tests from 1 test case ran. (1342 ms total) [ PASSED ] 20 tests. Closes !49 - Add file system interface tests
2019-08-02 04:15:48 -06:00
ASSERT_TRUE(m_fs_object->check_repair(m_partition, m_operation_detail)) << m_operation_detail;
}
Add testing of linux-swap using Value-Parameterised Google Tests (!49) Use Google Test Value-Parameterised to call every test for both ext2 and linux-swap. https://github.com/google/googletest/blob/v1.8.x/googletest/docs/advanced.md#value-parameterized-tests Running the test now looks like this: $ ./test_SupportedFileSystems Running main() from test_SupportedFileSystems.cc [==========] Running 20 tests from 1 test case. [----------] Global test environment set-up. [----------] 20 tests from My/SupportedFileSystemsTest [ RUN ] My/SupportedFileSystemsTest.Create/0 [ OK ] My/SupportedFileSystemsTest.Create/0 (97 ms) [ RUN ] My/SupportedFileSystemsTest.Create/1 [ OK ] My/SupportedFileSystemsTest.Create/1 (15 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 (106 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 (14 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 (95 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 (23 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 (99 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 (102 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 (101 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 (21 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/0 [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/0 (153 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/1 test_SupportedFileSystems.cc:424: Skip test. check not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/0 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/0 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/1 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/0 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/0 (266 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/1 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/1 (32 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/0 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/0 (111 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/1 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/1 (28 ms) [----------] 20 tests from My/SupportedFileSystemsTest (1311 ms total) [----------] Global test environment tear-down [==========] 20 tests from 1 test case ran. (1342 ms total) [ PASSED ] 20 tests. Closes !49 - Add file system interface tests
2019-08-02 04:15:48 -06:00
TEST_P(SupportedFileSystemsTest, CreateAndRemove)
{
SKIP_IF_FS_DOESNT_SUPPORT(create);
SKIP_IF_FS_DOESNT_SUPPORT(remove);
extra_setup();
Add testing of linux-swap using Value-Parameterised Google Tests (!49) Use Google Test Value-Parameterised to call every test for both ext2 and linux-swap. https://github.com/google/googletest/blob/v1.8.x/googletest/docs/advanced.md#value-parameterized-tests Running the test now looks like this: $ ./test_SupportedFileSystems Running main() from test_SupportedFileSystems.cc [==========] Running 20 tests from 1 test case. [----------] Global test environment set-up. [----------] 20 tests from My/SupportedFileSystemsTest [ RUN ] My/SupportedFileSystemsTest.Create/0 [ OK ] My/SupportedFileSystemsTest.Create/0 (97 ms) [ RUN ] My/SupportedFileSystemsTest.Create/1 [ OK ] My/SupportedFileSystemsTest.Create/1 (15 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 (106 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 (14 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 (95 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 (23 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 (99 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 (102 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 (101 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 (21 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/0 [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/0 (153 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/1 test_SupportedFileSystems.cc:424: Skip test. check not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/0 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/0 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/1 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/0 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/0 (266 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/1 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/1 (32 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/0 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/0 (111 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/1 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/1 (28 ms) [----------] 20 tests from My/SupportedFileSystemsTest (1311 ms total) [----------] Global test environment tear-down [==========] 20 tests from 1 test case ran. (1342 ms total) [ PASSED ] 20 tests. Closes !49 - Add file system interface tests
2019-08-02 04:15:48 -06:00
ASSERT_TRUE(m_fs_object->create(m_partition, m_operation_detail)) << m_operation_detail;
// Test removing the file system is successful. Note that most file systems don't
// implement remove so will skip this test.
Add testing of linux-swap using Value-Parameterised Google Tests (!49) Use Google Test Value-Parameterised to call every test for both ext2 and linux-swap. https://github.com/google/googletest/blob/v1.8.x/googletest/docs/advanced.md#value-parameterized-tests Running the test now looks like this: $ ./test_SupportedFileSystems Running main() from test_SupportedFileSystems.cc [==========] Running 20 tests from 1 test case. [----------] Global test environment set-up. [----------] 20 tests from My/SupportedFileSystemsTest [ RUN ] My/SupportedFileSystemsTest.Create/0 [ OK ] My/SupportedFileSystemsTest.Create/0 (97 ms) [ RUN ] My/SupportedFileSystemsTest.Create/1 [ OK ] My/SupportedFileSystemsTest.Create/1 (15 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 (106 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 (14 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 (95 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 (23 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 (99 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 (102 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 (101 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 (21 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/0 [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/0 (153 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/1 test_SupportedFileSystems.cc:424: Skip test. check not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/0 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/0 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/1 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/0 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/0 (266 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/1 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/1 (32 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/0 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/0 (111 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/1 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/1 (28 ms) [----------] 20 tests from My/SupportedFileSystemsTest (1311 ms total) [----------] Global test environment tear-down [==========] 20 tests from 1 test case ran. (1342 ms total) [ PASSED ] 20 tests. Closes !49 - Add file system interface tests
2019-08-02 04:15:48 -06:00
ASSERT_TRUE(m_fs_object->remove(m_partition, m_operation_detail)) << m_operation_detail;
}
Add testing of linux-swap using Value-Parameterised Google Tests (!49) Use Google Test Value-Parameterised to call every test for both ext2 and linux-swap. https://github.com/google/googletest/blob/v1.8.x/googletest/docs/advanced.md#value-parameterized-tests Running the test now looks like this: $ ./test_SupportedFileSystems Running main() from test_SupportedFileSystems.cc [==========] Running 20 tests from 1 test case. [----------] Global test environment set-up. [----------] 20 tests from My/SupportedFileSystemsTest [ RUN ] My/SupportedFileSystemsTest.Create/0 [ OK ] My/SupportedFileSystemsTest.Create/0 (97 ms) [ RUN ] My/SupportedFileSystemsTest.Create/1 [ OK ] My/SupportedFileSystemsTest.Create/1 (15 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 (106 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 (14 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 (95 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 (23 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 (99 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 (102 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 (101 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 (21 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/0 [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/0 (153 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/1 test_SupportedFileSystems.cc:424: Skip test. check not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/0 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/0 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/1 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/0 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/0 (266 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/1 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/1 (32 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/0 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/0 (111 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/1 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/1 (28 ms) [----------] 20 tests from My/SupportedFileSystemsTest (1311 ms total) [----------] Global test environment tear-down [==========] 20 tests from 1 test case ran. (1342 ms total) [ PASSED ] 20 tests. Closes !49 - Add file system interface tests
2019-08-02 04:15:48 -06:00
TEST_P(SupportedFileSystemsTest, CreateAndGrow)
{
SKIP_IF_FS_DOESNT_SUPPORT(create);
SKIP_IF_FS_DOESNT_SUPPORT(grow);
extra_setup(IMAGESIZE_Default);
Add testing of linux-swap using Value-Parameterised Google Tests (!49) Use Google Test Value-Parameterised to call every test for both ext2 and linux-swap. https://github.com/google/googletest/blob/v1.8.x/googletest/docs/advanced.md#value-parameterized-tests Running the test now looks like this: $ ./test_SupportedFileSystems Running main() from test_SupportedFileSystems.cc [==========] Running 20 tests from 1 test case. [----------] Global test environment set-up. [----------] 20 tests from My/SupportedFileSystemsTest [ RUN ] My/SupportedFileSystemsTest.Create/0 [ OK ] My/SupportedFileSystemsTest.Create/0 (97 ms) [ RUN ] My/SupportedFileSystemsTest.Create/1 [ OK ] My/SupportedFileSystemsTest.Create/1 (15 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 (106 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 (14 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 (95 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 (23 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 (99 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 (102 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 (101 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 (21 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/0 [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/0 (153 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/1 test_SupportedFileSystems.cc:424: Skip test. check not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/0 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/0 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/1 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/0 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/0 (266 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/1 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/1 (32 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/0 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/0 (111 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/1 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/1 (28 ms) [----------] 20 tests from My/SupportedFileSystemsTest (1311 ms total) [----------] Global test environment tear-down [==========] 20 tests from 1 test case ran. (1342 ms total) [ PASSED ] 20 tests. Closes !49 - Add file system interface tests
2019-08-02 04:15:48 -06:00
ASSERT_TRUE(m_fs_object->create(m_partition, m_operation_detail)) << m_operation_detail;
// Test growing the file system is successful.
resize_image(IMAGESIZE_Larger);
reload_partition();
Add testing of linux-swap using Value-Parameterised Google Tests (!49) Use Google Test Value-Parameterised to call every test for both ext2 and linux-swap. https://github.com/google/googletest/blob/v1.8.x/googletest/docs/advanced.md#value-parameterized-tests Running the test now looks like this: $ ./test_SupportedFileSystems Running main() from test_SupportedFileSystems.cc [==========] Running 20 tests from 1 test case. [----------] Global test environment set-up. [----------] 20 tests from My/SupportedFileSystemsTest [ RUN ] My/SupportedFileSystemsTest.Create/0 [ OK ] My/SupportedFileSystemsTest.Create/0 (97 ms) [ RUN ] My/SupportedFileSystemsTest.Create/1 [ OK ] My/SupportedFileSystemsTest.Create/1 (15 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 (106 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 (14 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 (95 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 (23 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 (99 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 (102 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 (101 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 (21 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/0 [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/0 (153 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/1 test_SupportedFileSystems.cc:424: Skip test. check not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/0 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/0 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/1 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/0 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/0 (266 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/1 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/1 (32 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/0 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/0 (111 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/1 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/1 (28 ms) [----------] 20 tests from My/SupportedFileSystemsTest (1311 ms total) [----------] Global test environment tear-down [==========] 20 tests from 1 test case ran. (1342 ms total) [ PASSED ] 20 tests. Closes !49 - Add file system interface tests
2019-08-02 04:15:48 -06:00
ASSERT_TRUE(m_fs_object->resize(m_partition, m_operation_detail, true)) << m_operation_detail;
}
Add testing of linux-swap using Value-Parameterised Google Tests (!49) Use Google Test Value-Parameterised to call every test for both ext2 and linux-swap. https://github.com/google/googletest/blob/v1.8.x/googletest/docs/advanced.md#value-parameterized-tests Running the test now looks like this: $ ./test_SupportedFileSystems Running main() from test_SupportedFileSystems.cc [==========] Running 20 tests from 1 test case. [----------] Global test environment set-up. [----------] 20 tests from My/SupportedFileSystemsTest [ RUN ] My/SupportedFileSystemsTest.Create/0 [ OK ] My/SupportedFileSystemsTest.Create/0 (97 ms) [ RUN ] My/SupportedFileSystemsTest.Create/1 [ OK ] My/SupportedFileSystemsTest.Create/1 (15 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 (106 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 (14 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 (95 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 (23 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 (99 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 (102 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 (101 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 (21 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/0 [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/0 (153 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/1 test_SupportedFileSystems.cc:424: Skip test. check not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/0 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/0 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/1 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/0 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/0 (266 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/1 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/1 (32 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/0 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/0 (111 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/1 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/1 (28 ms) [----------] 20 tests from My/SupportedFileSystemsTest (1311 ms total) [----------] Global test environment tear-down [==========] 20 tests from 1 test case ran. (1342 ms total) [ PASSED ] 20 tests. Closes !49 - Add file system interface tests
2019-08-02 04:15:48 -06:00
TEST_P(SupportedFileSystemsTest, CreateAndShrink)
{
SKIP_IF_FS_DOESNT_SUPPORT(create);
SKIP_IF_FS_DOESNT_SUPPORT(shrink);
extra_setup(IMAGESIZE_Larger);
Add testing of linux-swap using Value-Parameterised Google Tests (!49) Use Google Test Value-Parameterised to call every test for both ext2 and linux-swap. https://github.com/google/googletest/blob/v1.8.x/googletest/docs/advanced.md#value-parameterized-tests Running the test now looks like this: $ ./test_SupportedFileSystems Running main() from test_SupportedFileSystems.cc [==========] Running 20 tests from 1 test case. [----------] Global test environment set-up. [----------] 20 tests from My/SupportedFileSystemsTest [ RUN ] My/SupportedFileSystemsTest.Create/0 [ OK ] My/SupportedFileSystemsTest.Create/0 (97 ms) [ RUN ] My/SupportedFileSystemsTest.Create/1 [ OK ] My/SupportedFileSystemsTest.Create/1 (15 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 (106 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 (14 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 (95 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 (23 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 (99 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 (102 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 (101 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 (21 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/0 [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/0 (153 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/1 test_SupportedFileSystems.cc:424: Skip test. check not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/0 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/0 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/1 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/0 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/0 (266 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/1 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/1 (32 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/0 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/0 (111 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/1 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/1 (28 ms) [----------] 20 tests from My/SupportedFileSystemsTest (1311 ms total) [----------] Global test environment tear-down [==========] 20 tests from 1 test case ran. (1342 ms total) [ PASSED ] 20 tests. Closes !49 - Add file system interface tests
2019-08-02 04:15:48 -06:00
ASSERT_TRUE(m_fs_object->create(m_partition, m_operation_detail)) << m_operation_detail;
// Test shrinking the file system is successful.
shrink_partition(IMAGESIZE_Default);
Add testing of linux-swap using Value-Parameterised Google Tests (!49) Use Google Test Value-Parameterised to call every test for both ext2 and linux-swap. https://github.com/google/googletest/blob/v1.8.x/googletest/docs/advanced.md#value-parameterized-tests Running the test now looks like this: $ ./test_SupportedFileSystems Running main() from test_SupportedFileSystems.cc [==========] Running 20 tests from 1 test case. [----------] Global test environment set-up. [----------] 20 tests from My/SupportedFileSystemsTest [ RUN ] My/SupportedFileSystemsTest.Create/0 [ OK ] My/SupportedFileSystemsTest.Create/0 (97 ms) [ RUN ] My/SupportedFileSystemsTest.Create/1 [ OK ] My/SupportedFileSystemsTest.Create/1 (15 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 (106 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 (14 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 (95 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 (23 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 (99 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 (102 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 (101 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 (21 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/0 [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/0 (153 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/1 test_SupportedFileSystems.cc:424: Skip test. check not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/0 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/0 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/1 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/0 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/0 (266 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/1 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/1 (32 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/0 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/0 (111 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/1 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/1 (28 ms) [----------] 20 tests from My/SupportedFileSystemsTest (1311 ms total) [----------] Global test environment tear-down [==========] 20 tests from 1 test case ran. (1342 ms total) [ PASSED ] 20 tests. Closes !49 - Add file system interface tests
2019-08-02 04:15:48 -06:00
ASSERT_TRUE(m_fs_object->resize(m_partition, m_operation_detail, false)) << m_operation_detail;
}
Add testing of linux-swap using Value-Parameterised Google Tests (!49) Use Google Test Value-Parameterised to call every test for both ext2 and linux-swap. https://github.com/google/googletest/blob/v1.8.x/googletest/docs/advanced.md#value-parameterized-tests Running the test now looks like this: $ ./test_SupportedFileSystems Running main() from test_SupportedFileSystems.cc [==========] Running 20 tests from 1 test case. [----------] Global test environment set-up. [----------] 20 tests from My/SupportedFileSystemsTest [ RUN ] My/SupportedFileSystemsTest.Create/0 [ OK ] My/SupportedFileSystemsTest.Create/0 (97 ms) [ RUN ] My/SupportedFileSystemsTest.Create/1 [ OK ] My/SupportedFileSystemsTest.Create/1 (15 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 (106 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 (14 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 (95 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 (23 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 (99 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 (102 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 (101 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 (21 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/0 [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/0 (153 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/1 test_SupportedFileSystems.cc:424: Skip test. check not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/0 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/0 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/1 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/0 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/0 (266 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/1 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/1 (32 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/0 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/0 (111 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/1 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/1 (28 ms) [----------] 20 tests from My/SupportedFileSystemsTest (1311 ms total) [----------] Global test environment tear-down [==========] 20 tests from 1 test case ran. (1342 ms total) [ PASSED ] 20 tests. Closes !49 - Add file system interface tests
2019-08-02 04:15:48 -06:00
// Instantiate the test case so every test is run for the specified file system types.
// Reference:
// * Google Test, Advanced googletest Topics, How to Write Value-Parameterized Tests
// https://github.com/google/googletest/blob/v1.8.x/googletest/docs/advanced.md#how-to-write-value-parameterized-tests
Print file system types in parameterised test names (!49) Until now the parameterised test values are printed as part of the test names as just 0, 1, etc. like this: $ ./test_SupportedFileSystems Running main() from test_SupportedFileSystems.cc [==========] Running 20 tests from 1 test case. [----------] Global test environment set-up. [----------] 20 tests from My/SupportedFileSystemsTest [ RUN ] My/SupportedFileSystemsTest.Create/0 [ OK ] My/SupportedFileSystemsTest.Create/0 (48 ms) [ RUN ] My/SupportedFileSystemsTest.Create/1 [ OK ] My/SupportedFileSystemsTest.Create/1 (11 ms) Provide the file system types as the names for the parameterised test values [1]. Now the test names are printed like this: $ ./test_SupportedFileSystems Running main() from test_SupportedFileSystems.cc [==========] Running 20 tests from 1 test case. [----------] Global test environment set-up. [----------] 20 tests from My/SupportedFileSystemsTest [ RUN ] My/SupportedFileSystemsTest.Create/ext2 [ OK ] My/SupportedFileSystemsTest.Create/ext2 (51 ms) [ RUN ] My/SupportedFileSystemsTest.Create/linuxswap [ OK ] My/SupportedFileSystemsTest.Create/linuxswap (11 ms) Also use these Google Test name friendly ASCII alphanumeric only names everywhere the file system type needs to be reported in this test program. [1] Specifying Names for Value-Parameterized Test Parameters https://github.com/google/googletest/blob/v1.8.x/googletest/docs/advanced.md#specifying-names-for-value-parameterized-test-parameters Closes !49 - Add file system interface tests
2019-08-04 04:31:57 -06:00
INSTANTIATE_TEST_CASE_P(My, SupportedFileSystemsTest, ::testing::Values(FS_EXT2, FS_LINUX_SWAP), param_fsname);
Add testing of linux-swap using Value-Parameterised Google Tests (!49) Use Google Test Value-Parameterised to call every test for both ext2 and linux-swap. https://github.com/google/googletest/blob/v1.8.x/googletest/docs/advanced.md#value-parameterized-tests Running the test now looks like this: $ ./test_SupportedFileSystems Running main() from test_SupportedFileSystems.cc [==========] Running 20 tests from 1 test case. [----------] Global test environment set-up. [----------] 20 tests from My/SupportedFileSystemsTest [ RUN ] My/SupportedFileSystemsTest.Create/0 [ OK ] My/SupportedFileSystemsTest.Create/0 (97 ms) [ RUN ] My/SupportedFileSystemsTest.Create/1 [ OK ] My/SupportedFileSystemsTest.Create/1 (15 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/0 (106 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUsage/1 (14 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/0 (95 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadLabel/1 (23 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/0 (99 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndReadUUID/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/0 (102 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteLabel/1 (22 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/0 (101 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 [ OK ] My/SupportedFileSystemsTest.CreateAndWriteUUID/1 (21 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/0 [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/0 (153 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndCheck/1 test_SupportedFileSystems.cc:424: Skip test. check not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndCheck/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/0 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/0 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndRemove/1 test_SupportedFileSystems.cc:437: Skip test. remove not supported or support not found [ OK ] My/SupportedFileSystemsTest.CreateAndRemove/1 (0 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/0 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/0 (266 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndGrow/1 [ OK ] My/SupportedFileSystemsTest.CreateAndGrow/1 (32 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/0 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/0 (111 ms) [ RUN ] My/SupportedFileSystemsTest.CreateAndShrink/1 [ OK ] My/SupportedFileSystemsTest.CreateAndShrink/1 (28 ms) [----------] 20 tests from My/SupportedFileSystemsTest (1311 ms total) [----------] Global test environment tear-down [==========] 20 tests from 1 test case ran. (1342 ms total) [ PASSED ] 20 tests. Closes !49 - Add file system interface tests
2019-08-02 04:15:48 -06:00
Add initial create ext2 only FileSystem interface class test (!49) This is the first step of adding testing of the derived FileSystem interface classes which call the file system specific executables. Rather than mocking command execution and returned output the tests run the real commands, effectively making this integration testing. Test case setup determines the file system supported actions using get_filesystem_support() and individual tests are skipped if a feature is not supported, just as GParted does for it's actions. Each test creates it's own sparse image file and a fresh file system, performs a test on one FileSystem interface call and deletes the image file. This makes each test independent and allows them to run as a non-root user, provided the file system command itself doesn't require root. Errors reported for a failed interface call will include the GParted OperationDetails, which in turn includes the file system specific command used and stdout and stderr from it's execution. For example, temporarily breaking the test code to create a 10 KiB image file instead of 256 MiB one produces this: $ ./test_ext2 Running main() from test_ext2.cc [==========] Running 1 test from 1 test case. [----------] Global test environment set-up. [----------] 1 test from ext2Test [ RUN ] ext2Test.Create test_ext2.cc:199: Failure Value of: s_ext2_obj->create(m_partition, m_operation_detail) Actual: false Expected: true Operation details: <b><i>mkfs.ext2 -F -L &apos;&apos; &apos;/home/centos/programming/c/gparted/tests/test_ext2.img&apos;</i></b> 00:00:00 (ERROR) <i></i> <i>mke2fs 1.42.9 (28-Dec-2013) /home/centos/programming/c/gparted/tests/test_ext2.img: Not enough space to build proposed filesystem while setting up superblock </i> [ FAILED ] ext2Test.Create (25 ms) [----------] 1 test from ext2Test (25 ms total) [----------] Global test environment tear-down [==========] 1 test from 1 test case ran. (30 ms total) [ PASSED ] 0 tests. [ FAILED ] 1 test, listed below: [ FAILED ] ext2Test.Create 1 FAILED TEST $ echo $? 1 Also as Utils:: and FileSystem::execute_command() are needed, this requires linking with GParted_Core for GParted_Core::mainthread and therefore with most of the non-UI classes in gpartedbin. Closes !49 - Add file system interface tests
2019-07-17 06:08:08 -06:00
} // namespace GParted
Run test program under xvfb-run to satisfy need for an X11 display (!49) Running test_ext2 in GitLab Continuous Integration environment fails like this: (test_ext2:6338): Gtk-WARNING **: 09:06:17.576: cannot open display: Running main() from test_ext2.cc Obviously the GitLab CI environment doesn't have an X11 display, but unfortunately this test case code requires one. Utils::execute_command() calls Gtk::Main::run() so requires a Gtk::Main object constructing and therefore an X11 display, even though this program never displays anything graphical. The call chain is: main() test_ext2.cc Gtk::Main::Main() gtkmm/gtk/src/main.ccg Gtk::Main::init() [1] gtk_init() gtk/gtk/gtkmain.c [2] which exits with a non-zero exit status when the DISPLAY environment variable is unset. Looked at deriving from Gtk::Main class and writing a replacement init() method which calls gtk_init_check() instead of gtk_init() but Gtk::Main::instance_ is a private member so not accessible in a derived class. Tried using Glib::MainLoop instead of Gtk::Main, but that doesn't initialise everything that Gtk::Main(), so the program crashes. Therefore use xvfb-run [3][4] to run this test program against a virtual X11 display when a real display isn't available. Coded execution of xvfb-run into this test program so that it can simply be executed on the command line like the other test programs, without having to remember to run "xvfb-run ./test_ext2 ...". [1] Gtk::Main::init() https://gitlab.gnome.org/GNOME/gtkmm/blob/3.10.1/gtk/src/main.ccg#L287 [2] gtk_init() https://gitlab.gnome.org/GNOME/gtk/blob/3.10.9/gtk/gtkmain.c#L1000 [3] how to run gtk app on linux without an x server https://superuser.com/questions/624918/how-to-run-gtk-app-on-linux-without-an-x-server [4] Using GTK without DISPLAY https://stackoverflow.com/questions/11694278/using-gtk-without-display Closes !49 - Add file system interface tests
2019-09-24 02:17:30 -06:00
// Re-execute current executable using xvfb-run so that it provides a virtual X11 display.
void exec_using_xvfb_run(int argc, char** argv)
{
// argc+2 = Space for "xvfb-run" command, existing argc strings plus NULL pointer.
size_t size = sizeof(char*) * (argc+2);
char** new_argv = (char**)malloc(size);
if (new_argv == NULL)
{
fprintf(stderr, "Failed to allocate %lu bytes of memory. errno=%d,%s\n",
(unsigned long)size, errno, strerror(errno));
exit(EXIT_FAILURE);
}
new_argv[0] = strdup("xvfb-run");
if (new_argv[0] == NULL)
{
fprintf(stderr, "Failed to allocate %lu bytes of memory. errno=%d,%s\n",
(unsigned long)strlen(new_argv[0])+1, errno, strerror(errno));
exit(EXIT_FAILURE);
}
// Copy argv pointers including final NULL pointer.
for (unsigned int i = 0; i <= (unsigned)argc; i++)
new_argv[i+1] = argv[i];
execvp(new_argv[0], new_argv);
fprintf(stderr, "Failed to execute '%s %s ...'. errno=%d,%s\n", new_argv[0], new_argv[1],
errno, strerror(errno));
exit(EXIT_FAILURE);
}
Add initial create ext2 only FileSystem interface class test (!49) This is the first step of adding testing of the derived FileSystem interface classes which call the file system specific executables. Rather than mocking command execution and returned output the tests run the real commands, effectively making this integration testing. Test case setup determines the file system supported actions using get_filesystem_support() and individual tests are skipped if a feature is not supported, just as GParted does for it's actions. Each test creates it's own sparse image file and a fresh file system, performs a test on one FileSystem interface call and deletes the image file. This makes each test independent and allows them to run as a non-root user, provided the file system command itself doesn't require root. Errors reported for a failed interface call will include the GParted OperationDetails, which in turn includes the file system specific command used and stdout and stderr from it's execution. For example, temporarily breaking the test code to create a 10 KiB image file instead of 256 MiB one produces this: $ ./test_ext2 Running main() from test_ext2.cc [==========] Running 1 test from 1 test case. [----------] Global test environment set-up. [----------] 1 test from ext2Test [ RUN ] ext2Test.Create test_ext2.cc:199: Failure Value of: s_ext2_obj->create(m_partition, m_operation_detail) Actual: false Expected: true Operation details: <b><i>mkfs.ext2 -F -L &apos;&apos; &apos;/home/centos/programming/c/gparted/tests/test_ext2.img&apos;</i></b> 00:00:00 (ERROR) <i></i> <i>mke2fs 1.42.9 (28-Dec-2013) /home/centos/programming/c/gparted/tests/test_ext2.img: Not enough space to build proposed filesystem while setting up superblock </i> [ FAILED ] ext2Test.Create (25 ms) [----------] 1 test from ext2Test (25 ms total) [----------] Global test environment tear-down [==========] 1 test from 1 test case ran. (30 ms total) [ PASSED ] 0 tests. [ FAILED ] 1 test, listed below: [ FAILED ] ext2Test.Create 1 FAILED TEST $ echo $? 1 Also as Utils:: and FileSystem::execute_command() are needed, this requires linking with GParted_Core for GParted_Core::mainthread and therefore with most of the non-UI classes in gpartedbin. Closes !49 - Add file system interface tests
2019-07-17 06:08:08 -06:00
// Custom Google Test main().
// Reference:
// * Google Test, Primer, Writing the main() function
// https://github.com/google/googletest/blob/master/googletest/docs/primer.md#writing-the-main-function
int main(int argc, char** argv)
{
printf("Running main() from %s\n", __FILE__);
Run test program under xvfb-run to satisfy need for an X11 display (!49) Running test_ext2 in GitLab Continuous Integration environment fails like this: (test_ext2:6338): Gtk-WARNING **: 09:06:17.576: cannot open display: Running main() from test_ext2.cc Obviously the GitLab CI environment doesn't have an X11 display, but unfortunately this test case code requires one. Utils::execute_command() calls Gtk::Main::run() so requires a Gtk::Main object constructing and therefore an X11 display, even though this program never displays anything graphical. The call chain is: main() test_ext2.cc Gtk::Main::Main() gtkmm/gtk/src/main.ccg Gtk::Main::init() [1] gtk_init() gtk/gtk/gtkmain.c [2] which exits with a non-zero exit status when the DISPLAY environment variable is unset. Looked at deriving from Gtk::Main class and writing a replacement init() method which calls gtk_init_check() instead of gtk_init() but Gtk::Main::instance_ is a private member so not accessible in a derived class. Tried using Glib::MainLoop instead of Gtk::Main, but that doesn't initialise everything that Gtk::Main(), so the program crashes. Therefore use xvfb-run [3][4] to run this test program against a virtual X11 display when a real display isn't available. Coded execution of xvfb-run into this test program so that it can simply be executed on the command line like the other test programs, without having to remember to run "xvfb-run ./test_ext2 ...". [1] Gtk::Main::init() https://gitlab.gnome.org/GNOME/gtkmm/blob/3.10.1/gtk/src/main.ccg#L287 [2] gtk_init() https://gitlab.gnome.org/GNOME/gtk/blob/3.10.9/gtk/gtkmain.c#L1000 [3] how to run gtk app on linux without an x server https://superuser.com/questions/624918/how-to-run-gtk-app-on-linux-without-an-x-server [4] Using GTK without DISPLAY https://stackoverflow.com/questions/11694278/using-gtk-without-display Closes !49 - Add file system interface tests
2019-09-24 02:17:30 -06:00
const char* display = getenv("DISPLAY");
if (display == NULL)
{
printf("DISPLAY environment variable unset. Executing 'xvfb-run %s ...'\n", argv[0]);
exec_using_xvfb_run(argc, argv);
}
printf("DISPLAY=\"%s\"\n", display);
Add initial create ext2 only FileSystem interface class test (!49) This is the first step of adding testing of the derived FileSystem interface classes which call the file system specific executables. Rather than mocking command execution and returned output the tests run the real commands, effectively making this integration testing. Test case setup determines the file system supported actions using get_filesystem_support() and individual tests are skipped if a feature is not supported, just as GParted does for it's actions. Each test creates it's own sparse image file and a fresh file system, performs a test on one FileSystem interface call and deletes the image file. This makes each test independent and allows them to run as a non-root user, provided the file system command itself doesn't require root. Errors reported for a failed interface call will include the GParted OperationDetails, which in turn includes the file system specific command used and stdout and stderr from it's execution. For example, temporarily breaking the test code to create a 10 KiB image file instead of 256 MiB one produces this: $ ./test_ext2 Running main() from test_ext2.cc [==========] Running 1 test from 1 test case. [----------] Global test environment set-up. [----------] 1 test from ext2Test [ RUN ] ext2Test.Create test_ext2.cc:199: Failure Value of: s_ext2_obj->create(m_partition, m_operation_detail) Actual: false Expected: true Operation details: <b><i>mkfs.ext2 -F -L &apos;&apos; &apos;/home/centos/programming/c/gparted/tests/test_ext2.img&apos;</i></b> 00:00:00 (ERROR) <i></i> <i>mke2fs 1.42.9 (28-Dec-2013) /home/centos/programming/c/gparted/tests/test_ext2.img: Not enough space to build proposed filesystem while setting up superblock </i> [ FAILED ] ext2Test.Create (25 ms) [----------] 1 test from ext2Test (25 ms total) [----------] Global test environment tear-down [==========] 1 test from 1 test case ran. (30 ms total) [ PASSED ] 0 tests. [ FAILED ] 1 test, listed below: [ FAILED ] ext2Test.Create 1 FAILED TEST $ echo $? 1 Also as Utils:: and FileSystem::execute_command() are needed, this requires linking with GParted_Core for GParted_Core::mainthread and therefore with most of the non-UI classes in gpartedbin. Closes !49 - Add file system interface tests
2019-07-17 06:08:08 -06:00
testing::InitGoogleTest(&argc, argv);
// Initialise threading in GParted to allow FileSystem interface classes to
// successfully use Utils:: and Filesystem::execute_command().
GParted::GParted_Core::mainthread = Glib::Thread::self();
Gtk::Main gtk_main = Gtk::Main();
return RUN_ALL_TESTS();
}