summaryrefslogtreecommitdiff
path: root/test/sbuild/chroot/btrfs-snapshot.cc
diff options
context:
space:
mode:
Diffstat (limited to 'test/sbuild/chroot/btrfs-snapshot.cc')
-rw-r--r--test/sbuild/chroot/btrfs-snapshot.cc456
1 files changed, 211 insertions, 245 deletions
diff --git a/test/sbuild/chroot/btrfs-snapshot.cc b/test/sbuild/chroot/btrfs-snapshot.cc
index 1b2543de..212d4c1a 100644
--- a/test/sbuild/chroot/btrfs-snapshot.cc
+++ b/test/sbuild/chroot/btrfs-snapshot.cc
@@ -28,109 +28,33 @@
#include <algorithm>
#include <set>
-#include <cppunit/extensions/HelperMacros.h>
-
-using namespace CppUnit;
-
using sbuild::_;
-class test_chroot_btrfs_snapshot : public test_chroot_base
+class BtrfsSnapshot : public ChrootBase
{
- CPPUNIT_TEST_SUITE(test_chroot_btrfs_snapshot);
- CPPUNIT_TEST(test_source_subvolume);
- CPPUNIT_TEST(test_snapshot_directory);
- CPPUNIT_TEST(test_snapshot_name);
- CPPUNIT_TEST_EXCEPTION(test_source_subvolume_error, sbuild::chroot::chroot::error);
- CPPUNIT_TEST_EXCEPTION(test_snapshot_directory_error, sbuild::chroot::chroot::error);
- CPPUNIT_TEST_EXCEPTION(test_snapshot_name_error, sbuild::chroot::chroot::error);
- CPPUNIT_TEST(test_chroot_type);
- CPPUNIT_TEST(test_setup_env);
- CPPUNIT_TEST(test_setup_env_session);
- CPPUNIT_TEST(test_setup_env_source);
- CPPUNIT_TEST(test_setup_env_session_source);
- CPPUNIT_TEST(test_setup_keyfile);
- CPPUNIT_TEST(test_setup_keyfile_session);
- CPPUNIT_TEST(test_setup_keyfile_source);
- CPPUNIT_TEST(test_setup_keyfile_session_source);
- CPPUNIT_TEST(test_session_flags);
- CPPUNIT_TEST(test_print_details);
- CPPUNIT_TEST(test_print_config);
- CPPUNIT_TEST(test_run_setup_scripts);
- CPPUNIT_TEST_SUITE_END();
-
public:
- test_chroot_btrfs_snapshot():
- test_chroot_base("btrfs-snapshot")
+ BtrfsSnapshot():
+ ChrootBase("btrfs-snapshot")
{}
- void setUp()
+ void SetUp()
{
- test_chroot_base::setUp();
- CPPUNIT_ASSERT(chroot);
- CPPUNIT_ASSERT(session);
- CPPUNIT_ASSERT(source);
- CPPUNIT_ASSERT(session_source);
+ ChrootBase::SetUp();
+ ASSERT_NE(chroot, nullptr);
+ ASSERT_NE(session, nullptr);
+ ASSERT_NE(source, nullptr);
+ ASSERT_NE(session_source, nullptr);
}
virtual void setup_chroot_props (sbuild::chroot::chroot::ptr& chroot)
{
- test_chroot_base::setup_chroot_props(chroot);
+ ChrootBase::setup_chroot_props(chroot);
sbuild::chroot::facet::btrfs_snapshot::ptr bfac = chroot->get_facet_strict<sbuild::chroot::facet::btrfs_snapshot>();
bfac->set_source_subvolume("/srv/chroot/sid");
bfac->set_snapshot_directory("/srv/chroot/snapshot");
}
- void
- test_source_subvolume()
- {
- sbuild::chroot::facet::btrfs_snapshot::ptr bfac = chroot->get_facet_strict<sbuild::chroot::facet::btrfs_snapshot>();
- bfac->set_source_subvolume("/srv/chroot/chroot");
- CPPUNIT_ASSERT(bfac->get_source_subvolume() == "/srv/chroot/chroot");
- }
-
- void
- test_snapshot_directory()
- {
- sbuild::chroot::facet::btrfs_snapshot::ptr bfac = chroot->get_facet_strict<sbuild::chroot::facet::btrfs_snapshot>();
- bfac->set_snapshot_directory("/srv/chroot/snapshot2");
- CPPUNIT_ASSERT(bfac->get_snapshot_directory() == "/srv/chroot/snapshot2");
- }
-
- void
- test_snapshot_name()
- {
- sbuild::chroot::facet::btrfs_snapshot::ptr bfac = chroot->get_facet_strict<sbuild::chroot::facet::btrfs_snapshot>();
- bfac->set_snapshot_directory("/srv/chroot/snapshot2/test-session-id");
- CPPUNIT_ASSERT(bfac->get_snapshot_directory() == "/srv/chroot/snapshot2/test-session-id");
- }
-
- void
- test_source_subvolume_error()
- {
- sbuild::chroot::facet::btrfs_snapshot::ptr bfac = chroot->get_facet_strict<sbuild::chroot::facet::btrfs_snapshot>();
- bfac->set_source_subvolume("chroot/invalid");
- }
-
- void
- test_snapshot_directory_error()
- {
- sbuild::chroot::facet::btrfs_snapshot::ptr bfac = chroot->get_facet_strict<sbuild::chroot::facet::btrfs_snapshot>();
- bfac->set_snapshot_directory("chroot/invalid");
- }
-
- void
- test_snapshot_name_error()
- {
- sbuild::chroot::facet::btrfs_snapshot::ptr bfac = chroot->get_facet_strict<sbuild::chroot::facet::btrfs_snapshot>();
- bfac->set_snapshot_name("invalid");
- }
-
- void test_chroot_type()
- {
- CPPUNIT_ASSERT(chroot->get_chroot_type() == "btrfs-snapshot");
- }
-
void setup_env_gen(sbuild::environment &expected)
{
setup_env_chroot(expected);
@@ -138,177 +62,219 @@ public:
expected.add("CHROOT_PATH", "/mnt/mount-location");
}
- void test_setup_env()
- {
- sbuild::environment expected;
- setup_env_gen(expected);
- expected.add("CHROOT_TYPE", "btrfs-snapshot");
- expected.add("CHROOT_BTRFS_SOURCE_SUBVOLUME", "/srv/chroot/sid");
- expected.add("CHROOT_BTRFS_SNAPSHOT_DIRECTORY", "/srv/chroot/snapshot");
- expected.add("CHROOT_SESSION_CLONE", "true");
- expected.add("CHROOT_SESSION_CREATE", "true");
- expected.add("CHROOT_SESSION_PURGE", "false");
-
- test_chroot_base::test_setup_env(chroot, expected);
- }
-
- void test_setup_env_session()
+ void setup_keyfile_btrfs(sbuild::keyfile &expected, std::string group)
{
- sbuild::environment expected;
- setup_env_gen(expected);
- expected.add("CHROOT_TYPE", "btrfs-snapshot");
- expected.add("SESSION_ID", "test-session-name");
- expected.add("CHROOT_ALIAS", "test-session-name");
- expected.add("CHROOT_DESCRIPTION", chroot->get_description() + ' ' + _("(session chroot)"));
- expected.add("CHROOT_BTRFS_SOURCE_SUBVOLUME", "/srv/chroot/sid");
- expected.add("CHROOT_BTRFS_SNAPSHOT_DIRECTORY", "/srv/chroot/snapshot");
- expected.add("CHROOT_BTRFS_SNAPSHOT_NAME", "/srv/chroot/snapshot/test-session-name");
- expected.add("CHROOT_SESSION_CLONE", "false");
- expected.add("CHROOT_SESSION_CREATE", "false");
- expected.add("CHROOT_SESSION_PURGE", "true");
-
- test_chroot_base::test_setup_env(session, expected);
}
+};
- void test_setup_env_source()
- {
- sbuild::environment expected;
- setup_env_gen(expected);
- expected.add("CHROOT_TYPE", "directory");
- expected.add("CHROOT_NAME", "test-name");
- expected.add("CHROOT_DESCRIPTION", chroot->get_description() + ' ' + _("(source chroot)"));
- expected.add("CHROOT_DIRECTORY", "/srv/chroot/sid");
- expected.add("CHROOT_SESSION_CLONE", "false");
- expected.add("CHROOT_SESSION_CREATE", "true");
- expected.add("CHROOT_SESSION_PURGE", "false");
-
- test_chroot_base::test_setup_env(source, expected);
- }
+TEST_F(BtrfsSnapshot, SourceSubvolume)
+{
+ sbuild::chroot::facet::btrfs_snapshot::ptr bfac = chroot->get_facet_strict<sbuild::chroot::facet::btrfs_snapshot>();
+ bfac->set_source_subvolume("/srv/chroot/chroot");
+ ASSERT_EQ(bfac->get_source_subvolume(), "/srv/chroot/chroot");
+}
- void test_setup_env_session_source()
- {
- sbuild::environment expected;
- setup_env_gen(expected);
- expected.add("CHROOT_TYPE", "directory");
- expected.add("CHROOT_NAME", "test-name");
- expected.add("CHROOT_DESCRIPTION", chroot->get_description() + ' ' + _("(source chroot)"));
- expected.add("CHROOT_DIRECTORY", "/srv/chroot/sid");
- expected.add("CHROOT_SESSION_CLONE", "false");
- expected.add("CHROOT_SESSION_CREATE", "true");
- expected.add("CHROOT_SESSION_PURGE", "false");
-
- test_chroot_base::test_setup_env(source, expected);
- }
+TEST_F(BtrfsSnapshot, SnapshotDirectory)
+{
+ sbuild::chroot::facet::btrfs_snapshot::ptr bfac = chroot->get_facet_strict<sbuild::chroot::facet::btrfs_snapshot>();
+ bfac->set_snapshot_directory("/srv/chroot/snapshot2");
+ ASSERT_EQ(bfac->get_snapshot_directory(), "/srv/chroot/snapshot2");
+}
- void setup_keyfile_btrfs(sbuild::keyfile &expected, std::string group)
- {
- }
+TEST_F(BtrfsSnapshot, SnapshotName)
+{
+ sbuild::chroot::facet::btrfs_snapshot::ptr bfac = chroot->get_facet_strict<sbuild::chroot::facet::btrfs_snapshot>();
+ bfac->set_snapshot_directory("/srv/chroot/snapshot2/test-session-id");
+ ASSERT_EQ(bfac->get_snapshot_directory(), "/srv/chroot/snapshot2/test-session-id");
+}
- void test_setup_keyfile()
- {
- sbuild::keyfile expected;
- std::string group = chroot->get_name();
- setup_keyfile_chroot(expected, group);
- setup_keyfile_source(expected, group);
- setup_keyfile_btrfs(expected, group);
- expected.set_value(group, "type", "btrfs-snapshot");
- expected.set_value(group, "btrfs-source-subvolume", "/srv/chroot/sid");
- expected.set_value(group, "btrfs-snapshot-directory", "/srv/chroot/snapshot");
-
- test_chroot_base::test_setup_keyfile
- (chroot,expected, chroot->get_name());
- }
+TEST_F(BtrfsSnapshot, SourceSubvolumeFail)
+{
+ sbuild::chroot::facet::btrfs_snapshot::ptr bfac = chroot->get_facet_strict<sbuild::chroot::facet::btrfs_snapshot>();
+ ASSERT_THROW(bfac->set_source_subvolume("chroot/invalid"), sbuild::chroot::chroot::error);
+}
- void test_setup_keyfile_session()
- {
- sbuild::keyfile expected;
- const std::string group(session->get_name());
- setup_keyfile_session(expected, group);
- setup_keyfile_btrfs(expected, group);
- expected.set_value(group, "type", "btrfs-snapshot");
- expected.set_value(group, "name", "test-session-name");
- expected.set_value(group, "selected-name", "test-session-name");
- expected.set_value(group, "description", chroot->get_description() + ' ' + _("(session chroot)"));
- expected.set_value(group, "aliases", "");
- expected.set_value(group, "btrfs-snapshot-name", "/srv/chroot/snapshot/test-session-name");
- expected.set_value(group, "mount-location", "/mnt/mount-location");
-
- test_chroot_base::test_setup_keyfile
- (session, expected, group);
- }
+TEST_F(BtrfsSnapshot, SnapshotDirectoryFail)
+{
+ sbuild::chroot::facet::btrfs_snapshot::ptr bfac = chroot->get_facet_strict<sbuild::chroot::facet::btrfs_snapshot>();
+ ASSERT_THROW(bfac->set_snapshot_directory("chroot/invalid"), sbuild::chroot::chroot::error);
+}
- void test_setup_keyfile_source()
- {
- sbuild::keyfile expected;
- const std::string group(source->get_name());
- setup_keyfile_chroot(expected, group);
- setup_keyfile_btrfs(expected, group);
- expected.set_value(group, "type", "directory");
- expected.set_value(group, "description", chroot->get_description() + ' ' + _("(source chroot)"));
- expected.set_value(group, "aliases", "test-alias-1-source,test-alias-2-source");
- expected.set_value(group, "directory", "/srv/chroot/sid");
- setup_keyfile_source_clone(expected, group);
-
- test_chroot_base::test_setup_keyfile
- (source, expected, group);
- }
+TEST_F(BtrfsSnapshot, SnapshotNameFail)
+{
+ sbuild::chroot::facet::btrfs_snapshot::ptr bfac = chroot->get_facet_strict<sbuild::chroot::facet::btrfs_snapshot>();
+ ASSERT_THROW(bfac->set_snapshot_name("invalid"), sbuild::chroot::chroot::error);
+}
- void test_setup_keyfile_session_source()
- {
- sbuild::keyfile expected;
- const std::string group(source->get_name());
- setup_keyfile_chroot(expected, group);
- setup_keyfile_btrfs(expected, group);
- expected.set_value(group, "type", "directory");
- expected.set_value(group, "description", chroot->get_description() + ' ' + _("(source chroot)"));
- expected.set_value(group, "aliases", "test-alias-1-source,test-alias-2-source");
- expected.set_value(group, "directory", "/srv/chroot/sid");
- expected.set_value(group, "mount-location", "/mnt/mount-location");
- setup_keyfile_session_source_clone(expected, group);
-
- test_chroot_base::test_setup_keyfile
- (session_source, expected, group);
- }
+TEST_F(BtrfsSnapshot, Type)
+{
+ ASSERT_EQ(chroot->get_chroot_type(), "btrfs-snapshot");
+}
- void test_session_flags()
- {
- CPPUNIT_ASSERT(chroot->get_session_flags() ==
- (sbuild::chroot::facet::facet::SESSION_CREATE |
- sbuild::chroot::facet::facet::SESSION_CLONE));
-
- CPPUNIT_ASSERT(session->get_session_flags() ==
- (sbuild::chroot::facet::facet::SESSION_PURGE));
-
- /// @todo: Should return NOFLAGS? This depends upon if source
- /// chroots need transforming into sessions as well (which should
- /// probably happen and be tested for independently).
- CPPUNIT_ASSERT(source->get_session_flags() ==
- (sbuild::chroot::facet::facet::SESSION_CREATE));
- }
- void test_print_details()
- {
- std::ostringstream os;
- os << chroot;
- // TODO: Compare output.
- CPPUNIT_ASSERT(!os.str().empty());
- }
+TEST_F(BtrfsSnapshot, SetupEnv)
+{
+ sbuild::environment expected;
+ setup_env_gen(expected);
+ expected.add("CHROOT_TYPE", "btrfs-snapshot");
+ expected.add("CHROOT_BTRFS_SOURCE_SUBVOLUME", "/srv/chroot/sid");
+ expected.add("CHROOT_BTRFS_SNAPSHOT_DIRECTORY", "/srv/chroot/snapshot");
+ expected.add("CHROOT_SESSION_CLONE", "true");
+ expected.add("CHROOT_SESSION_CREATE", "true");
+ expected.add("CHROOT_SESSION_PURGE", "false");
+
+ ChrootBase::test_setup_env(chroot, expected);
+}
+
+TEST_F(BtrfsSnapshot, SetupEnvSession)
+{
+ sbuild::environment expected;
+ setup_env_gen(expected);
+ expected.add("CHROOT_TYPE", "btrfs-snapshot");
+ expected.add("SESSION_ID", "test-session-name");
+ expected.add("CHROOT_ALIAS", "test-session-name");
+ expected.add("CHROOT_DESCRIPTION", chroot->get_description() + ' ' + _("(session chroot)"));
+ expected.add("CHROOT_BTRFS_SOURCE_SUBVOLUME", "/srv/chroot/sid");
+ expected.add("CHROOT_BTRFS_SNAPSHOT_DIRECTORY", "/srv/chroot/snapshot");
+ expected.add("CHROOT_BTRFS_SNAPSHOT_NAME", "/srv/chroot/snapshot/test-session-name");
+ expected.add("CHROOT_SESSION_CLONE", "false");
+ expected.add("CHROOT_SESSION_CREATE", "false");
+ expected.add("CHROOT_SESSION_PURGE", "true");
+
+ ChrootBase::test_setup_env(session, expected);
+}
+
+TEST_F(BtrfsSnapshot, SetupEnvSource)
+{
+ sbuild::environment expected;
+ setup_env_gen(expected);
+ expected.add("CHROOT_TYPE", "directory");
+ expected.add("CHROOT_NAME", "test-name");
+ expected.add("CHROOT_DESCRIPTION", chroot->get_description() + ' ' + _("(source chroot)"));
+ expected.add("CHROOT_DIRECTORY", "/srv/chroot/sid");
+ expected.add("CHROOT_SESSION_CLONE", "false");
+ expected.add("CHROOT_SESSION_CREATE", "true");
+ expected.add("CHROOT_SESSION_PURGE", "false");
+
+ ChrootBase::test_setup_env(source, expected);
+}
+
+TEST_F(BtrfsSnapshot, SetupEnvSessionSource)
+{
+ sbuild::environment expected;
+ setup_env_gen(expected);
+ expected.add("CHROOT_TYPE", "directory");
+ expected.add("CHROOT_NAME", "test-name");
+ expected.add("CHROOT_DESCRIPTION", chroot->get_description() + ' ' + _("(source chroot)"));
+ expected.add("CHROOT_DIRECTORY", "/srv/chroot/sid");
+ expected.add("CHROOT_SESSION_CLONE", "false");
+ expected.add("CHROOT_SESSION_CREATE", "true");
+ expected.add("CHROOT_SESSION_PURGE", "false");
+
+ ChrootBase::test_setup_env(source, expected);
+}
+
+TEST_F(BtrfsSnapshot, SetupKeyfile)
+{
+ sbuild::keyfile expected;
+ std::string group = chroot->get_name();
+ setup_keyfile_chroot(expected, group);
+ setup_keyfile_source(expected, group);
+ setup_keyfile_btrfs(expected, group);
+ expected.set_value(group, "type", "btrfs-snapshot");
+ expected.set_value(group, "btrfs-source-subvolume", "/srv/chroot/sid");
+ expected.set_value(group, "btrfs-snapshot-directory", "/srv/chroot/snapshot");
+
+ ChrootBase::test_setup_keyfile
+ (chroot,expected, chroot->get_name());
+}
+
+TEST_F(BtrfsSnapshot, SetupKeyfileSession)
+{
+ sbuild::keyfile expected;
+ const std::string group(session->get_name());
+ setup_keyfile_session(expected, group);
+ setup_keyfile_btrfs(expected, group);
+ expected.set_value(group, "type", "btrfs-snapshot");
+ expected.set_value(group, "name", "test-session-name");
+ expected.set_value(group, "selected-name", "test-session-name");
+ expected.set_value(group, "description", chroot->get_description() + ' ' + _("(session chroot)"));
+ expected.set_value(group, "aliases", "");
+ expected.set_value(group, "btrfs-snapshot-name", "/srv/chroot/snapshot/test-session-name");
+ expected.set_value(group, "mount-location", "/mnt/mount-location");
+
+ ChrootBase::test_setup_keyfile
+ (session, expected, group);
+}
+
+TEST_F(BtrfsSnapshot, SetupKeyfileSource)
+{
+ sbuild::keyfile expected;
+ const std::string group(source->get_name());
+ setup_keyfile_chroot(expected, group);
+ setup_keyfile_btrfs(expected, group);
+ expected.set_value(group, "type", "directory");
+ expected.set_value(group, "description", chroot->get_description() + ' ' + _("(source chroot)"));
+ expected.set_value(group, "aliases", "test-alias-1-source,test-alias-2-source");
+ expected.set_value(group, "directory", "/srv/chroot/sid");
+ setup_keyfile_source_clone(expected, group);
+
+ ChrootBase::test_setup_keyfile
+ (source, expected, group);
+}
+
+TEST_F(BtrfsSnapshot, SetupKeyfileSessionSource)
+{
+ sbuild::keyfile expected;
+ const std::string group(source->get_name());
+ setup_keyfile_chroot(expected, group);
+ setup_keyfile_btrfs(expected, group);
+ expected.set_value(group, "type", "directory");
+ expected.set_value(group, "description", chroot->get_description() + ' ' + _("(source chroot)"));
+ expected.set_value(group, "aliases", "test-alias-1-source,test-alias-2-source");
+ expected.set_value(group, "directory", "/srv/chroot/sid");
+ expected.set_value(group, "mount-location", "/mnt/mount-location");
+ setup_keyfile_session_source_clone(expected, group);
+
+ ChrootBase::test_setup_keyfile
+ (session_source, expected, group);
+}
+
+TEST_F(BtrfsSnapshot, SessionFlags)
+{
+ ASSERT_EQ(chroot->get_session_flags(),
+ (sbuild::chroot::facet::facet::SESSION_CREATE |
+ sbuild::chroot::facet::facet::SESSION_CLONE));
- void test_print_config()
- {
- std::ostringstream os;
- sbuild::keyfile config;
- config << chroot;
- os << sbuild::keyfile_writer(config);
- // TODO: Compare output.
- CPPUNIT_ASSERT(!os.str().empty());
- }
+ ASSERT_EQ(session->get_session_flags(),
+ (sbuild::chroot::facet::facet::SESSION_PURGE));
- void test_run_setup_scripts()
- {
- CPPUNIT_ASSERT(chroot->get_run_setup_scripts());
- }
+ /// @todo: Should return NOFLAGS? This depends upon if source
+ /// chroots need transforming into sessions as well (which should
+ /// probably happen and be tested for independently).
+ ASSERT_EQ(source->get_session_flags(),
+ (sbuild::chroot::facet::facet::SESSION_CREATE));
+}
-};
+TEST_F(BtrfsSnapshot, PrintDetails)
+{
+ std::ostringstream os;
+ os << chroot;
+ // TODO: Compare output.
+ ASSERT_FALSE(os.str().empty());
+}
-CPPUNIT_TEST_SUITE_REGISTRATION(test_chroot_btrfs_snapshot);
+TEST_F(BtrfsSnapshot, PrintConfig)
+{
+ std::ostringstream os;
+ sbuild::keyfile config;
+ config << chroot;
+ os << sbuild::keyfile_writer(config);
+ // TODO: Compare output.
+ ASSERT_FALSE(os.str().empty());
+}
+
+TEST_F(BtrfsSnapshot, RunSetupScripts)
+{
+ ASSERT_TRUE(chroot->get_run_setup_scripts());
+}