repo: Add OSTREE_REPO_TEST_ERROR=pre-commit env var
Setting this causes commit to error out. There are other ways we could do this in a more sophisticated fashion, such as via SystemTap etc. But this has low-tech applicablity, works as non-root. The reason I'm adding this is so that we can add test cases for cleanup of the `tmp/staging-` directory. Closes: #170 Approved by: jlebon
This commit is contained in:
parent
3111248373
commit
15b3cab65e
|
|
@ -1442,6 +1442,13 @@ ostree_repo_commit_transaction (OstreeRepo *self,
|
||||||
|
|
||||||
g_return_val_if_fail (self->in_transaction == TRUE, FALSE);
|
g_return_val_if_fail (self->in_transaction == TRUE, FALSE);
|
||||||
|
|
||||||
|
if ((self->test_error_flags & OSTREE_REPO_TEST_ERROR_PRE_COMMIT) > 0)
|
||||||
|
{
|
||||||
|
g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_FAILED,
|
||||||
|
"OSTREE_REPO_TEST_ERROR_PRE_COMMIT specified");
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
if (syncfs (self->tmp_dir_fd) < 0)
|
if (syncfs (self->tmp_dir_fd) < 0)
|
||||||
{
|
{
|
||||||
glnx_set_error_from_errno (error);
|
glnx_set_error_from_errno (error);
|
||||||
|
|
|
||||||
|
|
@ -36,6 +36,10 @@ G_BEGIN_DECLS
|
||||||
#define _OSTREE_SUMMARY_CACHE_DIR "summaries"
|
#define _OSTREE_SUMMARY_CACHE_DIR "summaries"
|
||||||
#define _OSTREE_CACHE_DIR "cache"
|
#define _OSTREE_CACHE_DIR "cache"
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
OSTREE_REPO_TEST_ERROR_PRE_COMMIT = (1 << 0)
|
||||||
|
} OstreeRepoTestErrorFlags;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* OstreeRepo:
|
* OstreeRepo:
|
||||||
*
|
*
|
||||||
|
|
@ -86,6 +90,8 @@ struct OstreeRepo {
|
||||||
uid_t target_owner_uid;
|
uid_t target_owner_uid;
|
||||||
gid_t target_owner_gid;
|
gid_t target_owner_gid;
|
||||||
|
|
||||||
|
guint test_error_flags; /* OstreeRepoTestErrorFlags */
|
||||||
|
|
||||||
GKeyFile *config;
|
GKeyFile *config;
|
||||||
GHashTable *remotes;
|
GHashTable *remotes;
|
||||||
GMutex remotes_lock;
|
GMutex remotes_lock;
|
||||||
|
|
|
||||||
|
|
@ -798,6 +798,9 @@ ostree_repo_init (OstreeRepo *self)
|
||||||
{
|
{
|
||||||
static gsize gpgme_initialized;
|
static gsize gpgme_initialized;
|
||||||
GLnxLockFile empty_lockfile = GLNX_LOCK_FILE_INIT;
|
GLnxLockFile empty_lockfile = GLNX_LOCK_FILE_INIT;
|
||||||
|
const GDebugKey test_error_keys[] = {
|
||||||
|
{ "pre-commit", OSTREE_REPO_TEST_ERROR_PRE_COMMIT },
|
||||||
|
};
|
||||||
|
|
||||||
if (g_once_init_enter (&gpgme_initialized))
|
if (g_once_init_enter (&gpgme_initialized))
|
||||||
{
|
{
|
||||||
|
|
@ -806,6 +809,9 @@ ostree_repo_init (OstreeRepo *self)
|
||||||
g_once_init_leave (&gpgme_initialized, 1);
|
g_once_init_leave (&gpgme_initialized, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
self->test_error_flags = g_parse_debug_string (g_getenv ("OSTREE_REPO_TEST_ERROR"),
|
||||||
|
test_error_keys, G_N_ELEMENTS (test_error_keys));
|
||||||
|
|
||||||
g_mutex_init (&self->cache_lock);
|
g_mutex_init (&self->cache_lock);
|
||||||
g_mutex_init (&self->txn_stats_lock);
|
g_mutex_init (&self->txn_stats_lock);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@
|
||||||
|
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
echo "1..53"
|
echo "1..54"
|
||||||
|
|
||||||
$OSTREE checkout test2 checkout-test2
|
$OSTREE checkout test2 checkout-test2
|
||||||
echo "ok checkout"
|
echo "ok checkout"
|
||||||
|
|
@ -397,6 +397,15 @@ assert_file_has_content test2-checkout/baz/cow moo
|
||||||
assert_has_dir repo2/uncompressed-objects-cache
|
assert_has_dir repo2/uncompressed-objects-cache
|
||||||
echo "ok disable cache checkout"
|
echo "ok disable cache checkout"
|
||||||
|
|
||||||
|
cd ${test_tmpdir}
|
||||||
|
rm checkout-test2 -rf
|
||||||
|
$OSTREE checkout test2 checkout-test2
|
||||||
|
if env OSTREE_REPO_TEST_ERROR=pre-commit $OSTREE commit -b test2 -s '' $test_tmpdir/checkout-test2 2>err.txt; then
|
||||||
|
assert_not_reached "Should have hit OSTREE_REPO_TEST_ERROR_PRE_COMMIT"
|
||||||
|
fi
|
||||||
|
assert_file_has_content err.txt OSTREE_REPO_TEST_ERROR_PRE_COMMIT
|
||||||
|
echo "ok test error pre commit"
|
||||||
|
|
||||||
# Whiteouts
|
# Whiteouts
|
||||||
cd ${test_tmpdir}
|
cd ${test_tmpdir}
|
||||||
mkdir -p overlay/baz/
|
mkdir -p overlay/baz/
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue