My agentic slop goes here. Not intended for anyone else!

more

Changed files
+140 -138
stack
xdge
test
+140 -138
stack/xdge/test/xdg.t
···
Test with default directories:
-
$ export HOME=/tmp/xgd_test_home
+
$ export HOME=./test_home
$ unset XDG_CONFIG_HOME XDG_DATA_HOME XDG_CACHE_HOME XDG_STATE_HOME XDG_RUNTIME_DIR
$ unset XDG_CONFIG_DIRS XDG_DATA_DIRS
$ ../example/xdg_example.exe
···
=== XDG Directories ===
XDG directories for 'xdg_example':
User directories:
-
config: <fs:/tmp/xgd_test_home/.config/xdg_example> [default]
-
data: <fs:/tmp/xgd_test_home/.local/share/xdg_example> [default]
-
cache: <fs:/tmp/xgd_test_home/.cache/xdg_example> [default]
-
state: <fs:/tmp/xgd_test_home/.local/state/xdg_example> [default]
+
config: <fs:./test_home/./test_home/.config/xdg_example> [default]
+
data: <fs:./test_home/./test_home/.local/share/xdg_example> [default]
+
cache: <fs:./test_home/./test_home/.cache/xdg_example> [default]
+
state: <fs:./test_home/./test_home/.local/state/xdg_example> [default]
runtime: <none> [default]
System directories:
config_dirs: [<fs:/etc/xdg/xdg_example>]
···
$ unset XDG_CONFIG_HOME XDG_DATA_HOME XDG_CACHE_HOME XDG_STATE_HOME XDG_RUNTIME_DIR
$ unset XDG_CONFIG_DIRS XDG_DATA_DIRS
$ ../example/xdg_example.exe \
-
> --config-dir /tmp/test-config \
-
> --data-dir /tmp/test-data \
-
> --cache-dir /tmp/test-cache \
-
> --state-dir /tmp/test-state \
-
> --runtime-dir /tmp/test-runtime
+
> --config-dir ./test-config \
+
> --data-dir ./test-data \
+
> --cache-dir ./test-cache \
+
> --state-dir ./test-state \
+
> --runtime-dir ./test-runtime
=== Cmdliner Config ===
XDG config:
-
config_dir: /tmp/test-config [cmdline]
-
data_dir: /tmp/test-data [cmdline]
-
cache_dir: /tmp/test-cache [cmdline]
-
state_dir: /tmp/test-state [cmdline]
-
runtime_dir: /tmp/test-runtime [cmdline]
+
config_dir: ./test-config [cmdline]
+
data_dir: ./test-data [cmdline]
+
cache_dir: ./test-cache [cmdline]
+
state_dir: ./test-state [cmdline]
+
runtime_dir: ./test-runtime [cmdline]
=== XDG Directories ===
XDG directories for 'xdg_example':
User directories:
-
config: <fs:/tmp/test-config> [cmdline]
-
data: <fs:/tmp/test-data> [cmdline]
-
cache: <fs:/tmp/test-cache> [cmdline]
-
state: <fs:/tmp/test-state> [cmdline]
-
runtime: <fs:/tmp/test-runtime> [cmdline]
+
config: <fs:./test_home/./test-config> [cmdline]
+
data: <fs:./test_home/./test-data> [cmdline]
+
cache: <fs:./test_home/./test-cache> [cmdline]
+
state: <fs:./test_home/./test-state> [cmdline]
+
runtime: <fs:./test_home/./test-runtime> [cmdline]
System directories:
config_dirs: [<fs:/etc/xdg/xdg_example>]
data_dirs: [<fs:/usr/local/share/xdg_example>; <fs:/usr/share/xdg_example>]
···
they cannot be overridden by user directories command-line options.
Test with environment variables (app-specific)
-
$ XDG_EXAMPLE_CONFIG_DIR=/tmp/env-config \
-
> XDG_EXAMPLE_DATA_DIR=/tmp/env-data \
-
> XDG_EXAMPLE_CACHE_DIR=/tmp/env-cache \
-
> XDG_EXAMPLE_STATE_DIR=/tmp/env-state \
-
> XDG_EXAMPLE_RUNTIME_DIR=/tmp/env-runtime \
+
$ XDG_EXAMPLE_CONFIG_DIR=./env-config \
+
> XDG_EXAMPLE_DATA_DIR=./env-data \
+
> XDG_EXAMPLE_CACHE_DIR=./env-cache \
+
> XDG_EXAMPLE_STATE_DIR=./env-state \
+
> XDG_EXAMPLE_RUNTIME_DIR=./env-runtime \
> ../example/xdg_example.exe
=== Cmdliner Config ===
XDG config:
-
config_dir: /tmp/env-config [env(XDG_EXAMPLE_CONFIG_DIR)]
-
data_dir: /tmp/env-data [env(XDG_EXAMPLE_DATA_DIR)]
-
cache_dir: /tmp/env-cache [env(XDG_EXAMPLE_CACHE_DIR)]
-
state_dir: /tmp/env-state [env(XDG_EXAMPLE_STATE_DIR)]
-
runtime_dir: /tmp/env-runtime [env(XDG_EXAMPLE_RUNTIME_DIR)]
+
config_dir: ./env-config [env(XDG_EXAMPLE_CONFIG_DIR)]
+
data_dir: ./env-data [env(XDG_EXAMPLE_DATA_DIR)]
+
cache_dir: ./env-cache [env(XDG_EXAMPLE_CACHE_DIR)]
+
state_dir: ./env-state [env(XDG_EXAMPLE_STATE_DIR)]
+
runtime_dir: ./env-runtime [env(XDG_EXAMPLE_RUNTIME_DIR)]
=== XDG Directories ===
XDG directories for 'xdg_example':
User directories:
-
config: <fs:/tmp/env-config> [env(XDG_EXAMPLE_CONFIG_DIR)]
-
data: <fs:/tmp/env-data> [env(XDG_EXAMPLE_DATA_DIR)]
-
cache: <fs:/tmp/env-cache> [env(XDG_EXAMPLE_CACHE_DIR)]
-
state: <fs:/tmp/env-state> [env(XDG_EXAMPLE_STATE_DIR)]
-
runtime: <fs:/tmp/env-runtime> [env(XDG_EXAMPLE_RUNTIME_DIR)]
+
config: <fs:./test_home/./env-config> [env(XDG_EXAMPLE_CONFIG_DIR)]
+
data: <fs:./test_home/./env-data> [env(XDG_EXAMPLE_DATA_DIR)]
+
cache: <fs:./test_home/./env-cache> [env(XDG_EXAMPLE_CACHE_DIR)]
+
state: <fs:./test_home/./env-state> [env(XDG_EXAMPLE_STATE_DIR)]
+
runtime: <fs:./test_home/./env-runtime> [env(XDG_EXAMPLE_RUNTIME_DIR)]
System directories:
config_dirs: [<fs:/etc/xdg/xdg_example>]
data_dirs: [<fs:/usr/local/share/xdg_example>; <fs:/usr/share/xdg_example>]
···
Test with standard XDG environment variables:
-
$ XDG_CONFIG_HOME=/tmp/xdg-config \
-
> XDG_DATA_HOME=/tmp/xdg-data \
-
> XDG_CACHE_HOME=/tmp/xdg-cache \
-
> XDG_STATE_HOME=/tmp/xdg-state \
-
> XDG_RUNTIME_DIR=/tmp/xdg-runtime \
+
$ XDG_CONFIG_HOME=/tmp/xdge/xdg-config \
+
> XDG_DATA_HOME=/tmp/xdge/xdg-data \
+
> XDG_CACHE_HOME=/tmp/xdge/xdg-cache \
+
> XDG_STATE_HOME=/tmp/xdge/xdg-state \
+
> XDG_RUNTIME_DIR=/tmp/xdge/xdg-runtime \
> ../example/xdg_example.exe
=== Cmdliner Config ===
XDG config:
-
config_dir: /tmp/xdg-config [env(XDG_CONFIG_HOME)]
-
data_dir: /tmp/xdg-data [env(XDG_DATA_HOME)]
-
cache_dir: /tmp/xdg-cache [env(XDG_CACHE_HOME)]
-
state_dir: /tmp/xdg-state [env(XDG_STATE_HOME)]
-
runtime_dir: /tmp/xdg-runtime [env(XDG_RUNTIME_DIR)]
+
config_dir: /tmp/xdge/xdg-config [env(XDG_CONFIG_HOME)]
+
data_dir: /tmp/xdge/xdg-data [env(XDG_DATA_HOME)]
+
cache_dir: /tmp/xdge/xdg-cache [env(XDG_CACHE_HOME)]
+
state_dir: /tmp/xdge/xdg-state [env(XDG_STATE_HOME)]
+
runtime_dir: /tmp/xdge/xdg-runtime [env(XDG_RUNTIME_DIR)]
=== XDG Directories ===
XDG directories for 'xdg_example':
User directories:
-
config: <fs:/tmp/xdg-config> [env(XDG_CONFIG_HOME)]
-
data: <fs:/tmp/xdg-data> [env(XDG_DATA_HOME)]
-
cache: <fs:/tmp/xdg-cache> [env(XDG_CACHE_HOME)]
-
state: <fs:/tmp/xdg-state> [env(XDG_STATE_HOME)]
-
runtime: <fs:/tmp/xdg-runtime> [env(XDG_RUNTIME_DIR)]
+
config: <fs:/tmp/xdge/xdg-config> [env(XDG_CONFIG_HOME)]
+
data: <fs:/tmp/xdge/xdg-data> [env(XDG_DATA_HOME)]
+
cache: <fs:/tmp/xdge/xdg-cache> [env(XDG_CACHE_HOME)]
+
state: <fs:/tmp/xdge/xdg-state> [env(XDG_STATE_HOME)]
+
runtime: <fs:/tmp/xdge/xdg-runtime> [env(XDG_RUNTIME_DIR)]
System directories:
config_dirs: [<fs:/etc/xdg/xdg_example>]
data_dirs: [<fs:/usr/local/share/xdg_example>; <fs:/usr/share/xdg_example>]
···
Test command line overrides environment variables:
$ unset XDG_CONFIG_DIRS XDG_DATA_DIRS
-
$ XDG_EXAMPLE_CONFIG_DIR=/tmp/env-config \
-
> ../example/xdg_example.exe --config-dir /tmp/cli-config
+
$ XDG_EXAMPLE_CONFIG_DIR=./env-config \
+
> ../example/xdg_example.exe --config-dir ./cli-config
=== Cmdliner Config ===
XDG config:
-
config_dir: /tmp/cli-config [cmdline]
+
config_dir: ./cli-config [cmdline]
=== XDG Directories ===
XDG directories for 'xdg_example':
User directories:
-
config: <fs:/tmp/cli-config> [cmdline]
-
data: <fs:/tmp/xgd_test_home/.local/share/xdg_example> [default]
-
cache: <fs:/tmp/xgd_test_home/.cache/xdg_example> [default]
-
state: <fs:/tmp/xgd_test_home/.local/state/xdg_example> [default]
+
config: <fs:./test_home/./cli-config> [cmdline]
+
data: <fs:./test_home/./test_home/.local/share/xdg_example> [default]
+
cache: <fs:./test_home/./test_home/.cache/xdg_example> [default]
+
state: <fs:./test_home/./test_home/.local/state/xdg_example> [default]
runtime: <none> [default]
System directories:
config_dirs: [<fs:/etc/xdg/xdg_example>]
···
Test mixed environment variable precedence (app-specific overrides XDG standard):
-
$ export HOME=/tmp/xgd_test_home
+
$ export HOME=./test_home
$ unset XDG_CONFIG_DIRS XDG_DATA_DIRS
-
$ XDG_CONFIG_HOME=/tmp/xdg-config \
-
> XDG_EXAMPLE_CONFIG_DIR=/tmp/app-config \
-
> XDG_DATA_HOME=/tmp/xdg-data \
-
> XDG_EXAMPLE_DATA_DIR=/tmp/app-data \
+
$ XDG_CONFIG_HOME=/tmp/xdge/xdg-config \
+
> XDG_EXAMPLE_CONFIG_DIR=./app-config \
+
> XDG_DATA_HOME=/tmp/xdge/xdg-data \
+
> XDG_EXAMPLE_DATA_DIR=./app-data \
> ../example/xdg_example.exe
=== Cmdliner Config ===
XDG config:
-
config_dir: /tmp/app-config [env(XDG_EXAMPLE_CONFIG_DIR)]
-
data_dir: /tmp/app-data [env(XDG_EXAMPLE_DATA_DIR)]
+
config_dir: ./app-config [env(XDG_EXAMPLE_CONFIG_DIR)]
+
data_dir: ./app-data [env(XDG_EXAMPLE_DATA_DIR)]
=== XDG Directories ===
XDG directories for 'xdg_example':
User directories:
-
config: <fs:/tmp/app-config> [env(XDG_EXAMPLE_CONFIG_DIR)]
-
data: <fs:/tmp/app-data> [env(XDG_EXAMPLE_DATA_DIR)]
-
cache: <fs:/tmp/xgd_test_home/.cache/xdg_example> [default]
-
state: <fs:/tmp/xgd_test_home/.local/state/xdg_example> [default]
+
config: <fs:./test_home/./app-config> [env(XDG_EXAMPLE_CONFIG_DIR)]
+
data: <fs:./test_home/./app-data> [env(XDG_EXAMPLE_DATA_DIR)]
+
cache: <fs:./test_home/./test_home/.cache/xdg_example> [default]
+
state: <fs:./test_home/./test_home/.local/state/xdg_example> [default]
runtime: <none> [default]
System directories:
config_dirs: [<fs:/etc/xdg/xdg_example>]
···
Test partial environment variable override:
-
$ export HOME=/tmp/xgd_test_home
+
$ export HOME=./test_home
$ unset XDG_CONFIG_DIRS XDG_DATA_DIRS
-
$ XDG_EXAMPLE_CONFIG_DIR=/tmp/app-config \
-
> XDG_DATA_HOME=/tmp/xdg-data \
-
> XDG_CACHE_HOME=/tmp/xdg-cache \
+
$ XDG_EXAMPLE_CONFIG_DIR=./app-config \
+
> XDG_DATA_HOME=/tmp/xdge/xdg-data \
+
> XDG_CACHE_HOME=/tmp/xdge/xdg-cache \
> ../example/xdg_example.exe
=== Cmdliner Config ===
XDG config:
-
config_dir: /tmp/app-config [env(XDG_EXAMPLE_CONFIG_DIR)]
-
data_dir: /tmp/xdg-data [env(XDG_DATA_HOME)]
-
cache_dir: /tmp/xdg-cache [env(XDG_CACHE_HOME)]
+
config_dir: ./app-config [env(XDG_EXAMPLE_CONFIG_DIR)]
+
data_dir: /tmp/xdge/xdg-data [env(XDG_DATA_HOME)]
+
cache_dir: /tmp/xdge/xdg-cache [env(XDG_CACHE_HOME)]
=== XDG Directories ===
XDG directories for 'xdg_example':
User directories:
-
config: <fs:/tmp/app-config> [env(XDG_EXAMPLE_CONFIG_DIR)]
-
data: <fs:/tmp/xdg-data> [env(XDG_DATA_HOME)]
-
cache: <fs:/tmp/xdg-cache> [env(XDG_CACHE_HOME)]
-
state: <fs:/tmp/xgd_test_home/.local/state/xdg_example> [default]
+
config: <fs:./test_home/./app-config> [env(XDG_EXAMPLE_CONFIG_DIR)]
+
data: <fs:/tmp/xdge/xdg-data> [env(XDG_DATA_HOME)]
+
cache: <fs:/tmp/xdge/xdg-cache> [env(XDG_CACHE_HOME)]
+
state: <fs:./test_home/./test_home/.local/state/xdg_example> [default]
runtime: <none> [default]
System directories:
config_dirs: [<fs:/etc/xdg/xdg_example>]
···
Test command line overrides mixed environment variables:
-
$ export HOME=/tmp/xgd_test_home
+
$ export HOME=./test_home
$ unset XDG_CONFIG_DIRS XDG_DATA_DIRS
-
$ XDG_CONFIG_HOME=/tmp/xdg-config \
-
> XDG_EXAMPLE_CONFIG_DIR=/tmp/app-config \
-
> ../example/xdg_example.exe --config-dir /tmp/cli-config
+
$ XDG_CONFIG_HOME=/tmp/xdge/xdg-config \
+
> XDG_EXAMPLE_CONFIG_DIR=./app-config \
+
> ../example/xdg_example.exe --config-dir ./cli-config
=== Cmdliner Config ===
XDG config:
-
config_dir: /tmp/cli-config [cmdline]
+
config_dir: ./cli-config [cmdline]
=== XDG Directories ===
XDG directories for 'xdg_example':
User directories:
-
config: <fs:/tmp/cli-config> [cmdline]
-
data: <fs:/tmp/xgd_test_home/.local/share/xdg_example> [default]
-
cache: <fs:/tmp/xgd_test_home/.cache/xdg_example> [default]
-
state: <fs:/tmp/xgd_test_home/.local/state/xdg_example> [default]
+
config: <fs:./test_home/./cli-config> [cmdline]
+
data: <fs:./test_home/./test_home/.local/share/xdg_example> [default]
+
cache: <fs:./test_home/./test_home/.cache/xdg_example> [default]
+
state: <fs:./test_home/./test_home/.local/state/xdg_example> [default]
runtime: <none> [default]
System directories:
config_dirs: [<fs:/etc/xdg/xdg_example>]
···
Test empty environment variable handling:
-
$ export HOME=/tmp/xgd_test_home
+
$ export HOME=./test_home
$ unset XDG_CONFIG_DIRS XDG_DATA_DIRS
$ XDG_EXAMPLE_CONFIG_DIR="" \
-
> XDG_CONFIG_HOME=/tmp/xdg-config \
+
> XDG_CONFIG_HOME=/tmp/xdge/xdg-config \
> ../example/xdg_example.exe
=== Cmdliner Config ===
XDG config:
-
config_dir: /tmp/xdg-config [env(XDG_CONFIG_HOME)]
+
config_dir: /tmp/xdge/xdg-config [env(XDG_CONFIG_HOME)]
=== XDG Directories ===
XDG directories for 'xdg_example':
User directories:
-
config: <fs:/tmp/xdg-config> [env(XDG_CONFIG_HOME)]
-
data: <fs:/tmp/xgd_test_home/.local/share/xdg_example> [default]
-
cache: <fs:/tmp/xgd_test_home/.cache/xdg_example> [default]
-
state: <fs:/tmp/xgd_test_home/.local/state/xdg_example> [default]
+
config: <fs:/tmp/xdge/xdg-config> [env(XDG_CONFIG_HOME)]
+
data: <fs:./test_home/./test_home/.local/share/xdg_example> [default]
+
cache: <fs:./test_home/./test_home/.cache/xdg_example> [default]
+
state: <fs:./test_home/./test_home/.local/state/xdg_example> [default]
runtime: <none> [default]
System directories:
config_dirs: [<fs:/etc/xdg/xdg_example>]
···
Test system directory environment variables:
-
$ export HOME=/tmp/xgd_test_home
+
$ export HOME=./test_home
$ unset XDG_CONFIG_HOME XDG_DATA_HOME XDG_CACHE_HOME XDG_STATE_HOME XDG_RUNTIME_DIR
-
$ XDG_CONFIG_DIRS=/tmp/sys1:/tmp/sys2 \
-
> XDG_DATA_DIRS=/tmp/data1:/tmp/data2 \
+
$ XDG_CONFIG_DIRS=/tmp/xdge/sys1:/tmp/xdge/sys2 \
+
> XDG_DATA_DIRS=/tmp/xdge/data1:/tmp/xdge/data2 \
> ../example/xdg_example.exe
=== Cmdliner Config ===
XDG config:
···
=== XDG Directories ===
XDG directories for 'xdg_example':
User directories:
-
config: <fs:/tmp/xgd_test_home/.config/xdg_example> [default]
-
data: <fs:/tmp/xgd_test_home/.local/share/xdg_example> [default]
-
cache: <fs:/tmp/xgd_test_home/.cache/xdg_example> [default]
-
state: <fs:/tmp/xgd_test_home/.local/state/xdg_example> [default]
+
config: <fs:./test_home/./test_home/.config/xdg_example> [default]
+
data: <fs:./test_home/./test_home/.local/share/xdg_example> [default]
+
cache: <fs:./test_home/./test_home/.cache/xdg_example> [default]
+
state: <fs:./test_home/./test_home/.local/state/xdg_example> [default]
runtime: <none> [default]
System directories:
-
config_dirs: [<fs:/tmp/sys1/xdg_example>; <fs:/tmp/sys2/xdg_example>]
-
data_dirs: [<fs:/tmp/data1/xdg_example>; <fs:/tmp/data2/xdg_example>]
+
config_dirs: [<fs:/tmp/xdge/sys1/xdg_example>;
+
<fs:/tmp/xdge/sys2/xdg_example>]
+
data_dirs: [<fs:/tmp/xdge/data1/xdg_example>;
+
<fs:/tmp/xdge/data2/xdg_example>]
This test is correct: XDG_CONFIG_DIRS and XDG_DATA_DIRS environment variables
override the default system directories. The colon-separated paths are parsed
···
Test _path functions do not create directories but can access files within them:
-
$ export HOME=/tmp/xdg_path_test
-
$ mkdir -p /tmp/xdg_path_test
+
$ export HOME=/tmp/xdge/xdg_path_test
+
$ mkdir -p /tmp/xdge/xdg_path_test
$ unset XDG_CONFIG_HOME XDG_DATA_HOME XDG_CACHE_HOME XDG_STATE_HOME XDG_RUNTIME_DIR
$ unset XDG_CONFIG_DIRS XDG_DATA_DIRS
Create config subdirectory manually and write a test file:
-
$ mkdir -p "/tmp/xdg_path_test/.config/path_test/profiles"
-
$ echo "test profile content" > "/tmp/xdg_path_test/.config/path_test/profiles/default.json"
+
$ mkdir -p "/tmp/xdge/xdg_path_test/.config/path_test/profiles"
+
$ echo "test profile content" > "/tmp/xdge/xdg_path_test/.config/path_test/profiles/default.json"
Create data subdirectory manually and write a test file:
-
$ mkdir -p "/tmp/xdg_path_test/.local/share/path_test/databases"
-
$ echo "test database content" > "/tmp/xdg_path_test/.local/share/path_test/databases/main.db"
+
$ mkdir -p "/tmp/xdge/xdg_path_test/.local/share/path_test/databases"
+
$ echo "test database content" > "/tmp/xdge/xdg_path_test/.local/share/path_test/databases/main.db"
Create cache subdirectory manually and write a test file:
-
$ mkdir -p "/tmp/xdg_path_test/.cache/path_test/thumbnails"
-
$ echo "test cache content" > "/tmp/xdg_path_test/.cache/path_test/thumbnails/thumb1.png"
+
$ mkdir -p "/tmp/xdge/xdg_path_test/.cache/path_test/thumbnails"
+
$ echo "test cache content" > "/tmp/xdge/xdg_path_test/.cache/path_test/thumbnails/thumb1.png"
Create state subdirectory manually and write a test file:
-
$ mkdir -p "/tmp/xdg_path_test/.local/state/path_test/logs"
-
$ echo "test log content" > "/tmp/xdg_path_test/.local/state/path_test/logs/app.log"
+
$ mkdir -p "/tmp/xdge/xdg_path_test/.local/state/path_test/logs"
+
$ echo "test log content" > "/tmp/xdge/xdg_path_test/.local/state/path_test/logs/app.log"
Now test that we can read the files through the XDG _path functions:
$ ./test_paths.exe
···
Test path resolution with --show-paths:
Test with a preset HOME to verify correct path resolution:
-
$ export HOME=/home/testuser
+
$ export HOME=./home_testuser
$ unset XDG_CONFIG_HOME XDG_DATA_HOME XDG_CACHE_HOME XDG_STATE_HOME XDG_RUNTIME_DIR
$ unset XDG_CONFIG_DIRS XDG_DATA_DIRS
$ ../example/xdg_example.exe --show-paths
-
config_dir: /home/testuser/.config/xdg_example
-
data_dir: /home/testuser/.local/share/xdg_example
-
cache_dir: /home/testuser/.cache/xdg_example
-
state_dir: /home/testuser/.local/state/xdg_example
+
config_dir: ./home_testuser/./home_testuser/.config/xdg_example
+
data_dir: ./home_testuser/./home_testuser/.local/share/xdg_example
+
cache_dir: ./home_testuser/./home_testuser/.cache/xdg_example
+
state_dir: ./home_testuser/./home_testuser/.local/state/xdg_example
runtime_dir: <none>
config_dirs: /etc/xdg/xdg_example
data_dirs: /usr/local/share/xdg_example:/usr/share/xdg_example
Test with environment variables set:
-
$ export HOME=/home/testuser
-
$ export XDG_CONFIG_HOME=/custom/config
-
$ export XDG_DATA_HOME=/custom/data
-
$ export XDG_CACHE_HOME=/custom/cache
-
$ export XDG_STATE_HOME=/custom/state
-
$ export XDG_CONFIG_DIRS=/system/config1:/system/config2
-
$ export XDG_DATA_DIRS=/system/data1:/system/data2
+
$ export HOME=./home_testuser
+
$ export XDG_CONFIG_HOME=/tmp/xdge/config
+
$ export XDG_DATA_HOME=/tmp/xdge/data
+
$ export XDG_CACHE_HOME=/tmp/xdge/cache
+
$ export XDG_STATE_HOME=/tmp/xdge/state
+
$ export XDG_CONFIG_DIRS=/tmp/xdge/config1:/tmp/xdge/config2
+
$ export XDG_DATA_DIRS=/tmp/xdge/data1:/tmp/xdge/data2
$ ../example/xdg_example.exe --show-paths
-
config_dir: /custom/config/xdg_example
-
data_dir: /custom/data/xdg_example
-
cache_dir: /custom/cache/xdg_example
-
state_dir: /custom/state/xdg_example
+
config_dir: /tmp/xdge/config
+
data_dir: /tmp/xdge/data
+
cache_dir: /tmp/xdge/cache
+
state_dir: /tmp/xdge/state
runtime_dir: <none>
-
config_dirs: /system/config1/xdg_example:/system/config2/xdg_example
-
data_dirs: /system/data1/xdg_example:/system/data2/xdg_example
+
config_dirs: /tmp/xdge/config1/xdg_example:/tmp/xdge/config2/xdg_example
+
data_dirs: /tmp/xdge/data1/xdg_example:/tmp/xdge/data2/xdg_example
Test with command-line overrides:
-
$ export HOME=/home/testuser
+
$ export HOME=./home_testuser
$ unset XDG_CONFIG_HOME XDG_DATA_HOME XDG_CACHE_HOME XDG_STATE_HOME XDG_RUNTIME_DIR
$ unset XDG_CONFIG_DIRS XDG_DATA_DIRS
-
$ ../example/xdg_example.exe --show-paths --config-dir /override/config --data-dir /override/data
-
config_dir: /override/config
-
data_dir: /override/data
-
cache_dir: /home/testuser/.cache/xdg_example
-
state_dir: /home/testuser/.local/state/xdg_example
+
$ ../example/xdg_example.exe --show-paths --config-dir ./override/config --data-dir ./override/data
+
config_dir: ./home_testuser/./override/config
+
data_dir: ./home_testuser/./override/data
+
cache_dir: ./home_testuser/./home_testuser/.cache/xdg_example
+
state_dir: ./home_testuser/./home_testuser/.local/state/xdg_example
runtime_dir: <none>
config_dirs: /etc/xdg/xdg_example
data_dirs: /usr/local/share/xdg_example:/usr/share/xdg_example