taler-typescript-core

Wallet core logic and WebUIs for various components
Log | Files | Refs | Submodules | README | LICENSE

commit 5e099b8801eba9d22c0416447c568bef534ac1b9
parent e27e5c05841338635c551b4f135f65d2ba78f525
Author: Florian Dold <dold@taler.net>
Date:   Tue, 21 Jul 2026 19:48:16 +0200

util: test that only .conf files are loaded from the defaults directory

Diffstat:
Mpackages/taler-util/src/talerconfig.test.ts | 35+++++++++++++++++++++++++++++++++++
1 file changed, 35 insertions(+), 0 deletions(-)

diff --git a/packages/taler-util/src/talerconfig.test.ts b/packages/taler-util/src/talerconfig.test.ts @@ -275,3 +275,38 @@ test("the default config directory is loaded in sorted order", (t) => { } } }); + +test("the default config directory loads only .conf files", (t) => { + // GNUnet skips any entry in the defaults directory whose extension is not + // ".conf". Loading everything means a README crashes the load, and an + // editor backup sorts after the file it backs up and overrides it. + const dir = makeConfigDir([ + ["a.conf", "first"], + ["b.conf", "last"], + ]); + nodejs_fs.writeFileSync( + nodejs_path.join(dir, "conf.d", "b.conf~"), + "[test]\nVALUE = stale backup\n", + ); + nodejs_fs.writeFileSync( + nodejs_path.join(dir, "conf.d", "README"), + "This directory holds configuration snippets.\n", + ); + nodejs_fs.writeFileSync( + nodejs_path.join(dir, "main.conf"), + "[unrelated]\nX = y\n", + ); + const varname = "TALER_EXCHANGE_BASE_CONFIG"; + const saved = process.env[varname]; + process.env[varname] = nodejs_path.join(dir, "conf.d"); + try { + const config = Configuration.load(nodejs_path.join(dir, "main.conf")); + assert.strictEqual(config.getString("test", "value").required(), "last"); + } finally { + if (saved === undefined) { + delete process.env[varname]; + } else { + process.env[varname] = saved; + } + } +});