summaryrefslogtreecommitdiffstats
path: root/src/tests/uri_test.c
diff options
context:
space:
mode:
authorMichael Brown2024-03-19 14:22:57 +0100
committerMichael Brown2024-03-19 14:33:21 +0100
commit88c2a01e1aeb56335f893ac865d36f0fa843864c (patch)
treeb71a3e804134875bbc984a42e677221adfa70408 /src/tests/uri_test.c
parent[efi] Pad transmit buffer length to work around vendor driver bugs (diff)
downloadipxe-88c2a01e1aeb56335f893ac865d36f0fa843864c.tar.gz
ipxe-88c2a01e1aeb56335f893ac865d36f0fa843864c.tar.xz
ipxe-88c2a01e1aeb56335f893ac865d36f0fa843864c.zip
[settings] Expose current working URI and directory URI via settings
iPXE maintains a concept of a current working URI, which is used when resolving relative URIs and allows scripts to download files using URIs relative to the script itself. There are situations in which it is valuable for a script to be able to access the URI explicitly as a string, not just implicitly as a base URI for subsequent downloads. For example, when booting a Fedora installer, the "inst.repo" command-line parameter may be used to pass the URI of the repository to the installer. Expose the current working URI as ${cwuri}. Since relative URIs may be constructed as strings only from a directory URI (not from a full URI), also expose the current working directory URI as ${cwduri}. This feature may be used as e.g. #!ipxe echo Booting from ${cwuri} prompt -k 0x197e -t 2000 Press F12 to install Fedora... || exit kernel images/pxeboot/vmlinux inst.repo=${cwduri} initrd images/pxeboot/initrd.img boot Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/tests/uri_test.c')
-rw-r--r--src/tests/uri_test.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/tests/uri_test.c b/src/tests/uri_test.c
index 9d2f6dba..7ce87a20 100644
--- a/src/tests/uri_test.c
+++ b/src/tests/uri_test.c
@@ -754,6 +754,20 @@ static struct uri_resolve_test uri_fragment = {
"http://192.168.0.254/test#bar",
};
+/** Empty relative URI resolution test */
+static struct uri_resolve_test uri_self = {
+ "http://192.168.0.1/path/to/me",
+ "",
+ "http://192.168.0.1/path/to/me",
+};
+
+/** Current directory URI resolution test */
+static struct uri_resolve_test uri_cwd = {
+ "http://192.168.0.1/path/to/me",
+ ".",
+ "http://192.168.0.1/path/to/",
+};
+
/** PXE URI with absolute URI */
static struct uri_pxe_test uri_pxe_absolute = {
{
@@ -996,6 +1010,8 @@ static void uri_test_exec ( void ) {
uri_resolve_ok ( &uri_absolute_uri_path );
uri_resolve_ok ( &uri_query );
uri_resolve_ok ( &uri_fragment );
+ uri_resolve_ok ( &uri_self );
+ uri_resolve_ok ( &uri_cwd );
/* PXE URI construction tests */
uri_pxe_ok ( &uri_pxe_absolute );