[ostree] ostree-sysroot: add debug option to help testing



commit eba7df0da93fb53c6438646ce11036595a37d76f
Author: Jonathan Lebon <jlebon redhat com>
Date:   Fri Feb 19 11:58:08 2016 -0500

    ostree-sysroot: add debug option to help testing
    
    If ostree is run in a test setup where it operates as root in a tmp
    directory, it might cause issues to flag the deployments as immutable.
    The test harness might simply be doing an `rm -rf` (effectively the case
    for gnome-desktop-testing-runner), which will then fail.
    
    We add a new debug option to the ostree_sysroot object using GLib's
    GDebugKey functionality to allow our tests to communicate to ostree that
    we don't want immutable deployments.

 src/libostree/ostree-sysroot-deploy.c  |    9 ++++++---
 src/libostree/ostree-sysroot-private.h |    8 ++++++++
 src/libostree/ostree-sysroot.c         |    7 +++++++
 tests/libtest.sh                       |    4 ++++
 4 files changed, 25 insertions(+), 3 deletions(-)
---
diff --git a/src/libostree/ostree-sysroot-deploy.c b/src/libostree/ostree-sysroot-deploy.c
index 3dcf39f..aa03495 100644
--- a/src/libostree/ostree-sysroot-deploy.c
+++ b/src/libostree/ostree-sysroot-deploy.c
@@ -2035,9 +2035,12 @@ ostree_sysroot_deploy_tree (OstreeSysroot     *self,
                                       cancellable, error))
     goto out;
 
-  if (!ostree_sysroot_deployment_set_mutable (self, new_deployment, FALSE,
-                                              cancellable, error))
-    goto out;
+  if (!(self->debug_flags & OSTREE_SYSROOT_DEBUG_MUTABLE_DEPLOYMENTS))
+    {
+      if (!ostree_sysroot_deployment_set_mutable (self, new_deployment, FALSE,
+                                                  cancellable, error))
+        goto out;
+    }
 
   { ostree_cleanup_sepolicy_fscreatecon gpointer dummy = NULL;
 
diff --git a/src/libostree/ostree-sysroot-private.h b/src/libostree/ostree-sysroot-private.h
index 0c38e26..e0dc24f 100644
--- a/src/libostree/ostree-sysroot-private.h
+++ b/src/libostree/ostree-sysroot-private.h
@@ -27,6 +27,13 @@
 
 G_BEGIN_DECLS
 
+typedef enum {
+
+  /* Don't flag deployments as immutable. */
+  OSTREE_SYSROOT_DEBUG_MUTABLE_DEPLOYMENTS = 1 << 0
+
+} OstreeSysrootDebugFlags;
+
 struct OstreeSysroot {
   GObject parent;
 
@@ -46,6 +53,7 @@ struct OstreeSysroot {
   /* Only access through ostree_sysroot_get_repo() */
   OstreeRepo *repo;
 
+  OstreeSysrootDebugFlags debug_flags;
 };
 
 #define OSTREE_SYSROOT_LOCKFILE "ostree/lock"
diff --git a/src/libostree/ostree-sysroot.c b/src/libostree/ostree-sysroot.c
index 7a4686d..5ad2713 100644
--- a/src/libostree/ostree-sysroot.c
+++ b/src/libostree/ostree-sysroot.c
@@ -153,6 +153,13 @@ ostree_sysroot_class_init (OstreeSysrootClass *klass)
 static void
 ostree_sysroot_init (OstreeSysroot *self)
 {
+  const GDebugKey keys[] = {
+    { "mutable-deployments", OSTREE_SYSROOT_DEBUG_MUTABLE_DEPLOYMENTS },
+  };
+
+  self->debug_flags = g_parse_debug_string (g_getenv("OSTREE_SYSROOT_DEBUG"),
+                                            keys, G_N_ELEMENTS (keys));
+
   self->sysroot_fd = -1;
   self->lock = (GLnxLockFile)GLNX_LOCK_FILE_INIT;
 }
diff --git a/tests/libtest.sh b/tests/libtest.sh
index bd806f6..8cc4345 100644
--- a/tests/libtest.sh
+++ b/tests/libtest.sh
@@ -22,6 +22,10 @@ test_tmpdir=$(pwd)
 
 export G_DEBUG=fatal-warnings
 
+# Don't flag deployments as immutable so that test harnesses can
+# easily clean up.
+export OSTREE_SYSROOT_DEBUG=mutable-deployments
+
 export TEST_GPG_KEYID_1="472CDAFA"
 export TEST_GPG_KEYID_2="CA950D41"
 export TEST_GPG_KEYID_3="DF444D67"


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]