libdnf/0013-C-API-test-shell-style-variable-expressions.patch

81 lines
2.7 KiB
Diff

From c6ee39c06e0d18c1d299f5324bf86a4a08910ee9 Mon Sep 17 00:00:00 2001
From: Evan Goode <mail@evangoo.de>
Date: Fri, 7 Feb 2025 18:42:43 +0000
Subject: [PATCH 5/5] C API: test shell-style variable expressions
---
data/tests/vars/var1 | 1 +
data/tests/vars/var2 | 1 +
data/tests/yum.repos.d/shell-expansion.repo | 5 +++++
tests/libdnf/dnf-self-test.c | 10 ++++++++++
4 files changed, 17 insertions(+)
create mode 100644 data/tests/vars/var1
create mode 100644 data/tests/vars/var2
create mode 100644 data/tests/yum.repos.d/shell-expansion.repo
diff --git a/data/tests/vars/var1 b/data/tests/vars/var1
new file mode 100644
index 00000000..a9f37252
--- /dev/null
+++ b/data/tests/vars/var1
@@ -0,0 +1 @@
+value123
diff --git a/data/tests/vars/var2 b/data/tests/vars/var2
new file mode 100644
index 00000000..8d38505c
--- /dev/null
+++ b/data/tests/vars/var2
@@ -0,0 +1 @@
+456
diff --git a/data/tests/yum.repos.d/shell-expansion.repo b/data/tests/yum.repos.d/shell-expansion.repo
new file mode 100644
index 00000000..3bd4c1ec
--- /dev/null
+++ b/data/tests/yum.repos.d/shell-expansion.repo
@@ -0,0 +1,5 @@
+[shell-expansion]
+name=${unset:-${var1:+${var2:+$var2}}}
+baseurl=https://${unset:-${var1:+${var2:+$var2}}}
+enabled=1
+gpgcheck=0
diff --git a/tests/libdnf/dnf-self-test.c b/tests/libdnf/dnf-self-test.c
index 2fe792e9..452cf20a 100644
--- a/tests/libdnf/dnf-self-test.c
+++ b/tests/libdnf/dnf-self-test.c
@@ -843,6 +843,7 @@ dnf_repo_loader_func(void)
DnfState *state;
gboolean ret;
g_autofree gchar *repos_dir = NULL;
+ g_autofree gchar *vars_dir = NULL;
g_autoptr(DnfContext) ctx = NULL;
g_autoptr(DnfRepoLoader) repo_loader = NULL;
guint metadata_expire;
@@ -850,8 +851,10 @@ dnf_repo_loader_func(void)
/* set up local context */
ctx = dnf_context_new();
repos_dir = dnf_test_get_filename("yum.repos.d");
+ vars_dir = dnf_test_get_filename("vars");
dnf_context_set_repo_dir(ctx, repos_dir);
dnf_context_set_solv_dir(ctx, "/tmp");
+ dnf_context_set_vars_dir(ctx, (const gchar *[]){vars_dir, NULL});
ret = dnf_context_setup(ctx, NULL, &error);
g_assert_no_error(error);
g_assert(ret);
@@ -907,6 +910,13 @@ dnf_repo_loader_func(void)
g_assert_error(error, DNF_ERROR, DNF_ERROR_REPO_NOT_AVAILABLE);
g_assert(!ret);
g_clear_error(&error);
+
+ /* check that shell-style variable expressions are correctly expanded in repo values */
+ dnf_state_reset(state);
+ repo = dnf_repo_loader_get_repo_by_id(repo_loader, "shell-expansion", &error);
+ g_assert_no_error(error);
+ g_assert(repo != NULL);
+ g_assert_cmpstr(dnf_repo_get_description(repo), ==, "456");
}
static void
--
2.48.1