81 lines
2.7 KiB
Diff
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
|
|
|