diff --git a/Other/Citra_per_game_config/v2/CitraConfigHelpers.ahk b/Other/Citra_per_game_config/v2/CitraConfigHelpers.ahk index 48a40fc..3decac3 100644 --- a/Other/Citra_per_game_config/v2/CitraConfigHelpers.ahk +++ b/Other/Citra_per_game_config/v2/CitraConfigHelpers.ahk @@ -38,7 +38,7 @@ RegExEscape(str) { SetKey(content, key, value) { pat := "m)^(" . RegExEscape(key) . ")\s*=.*$" if RegExMatch(content, pat) - return RegExReplace(content, pat, "$1=" value, , 1) + return RegExReplace(content, pat, "$1=" StrReplace(value, "$", "$$"), , 1) else return content "`n" key "=" value } diff --git a/Other/Citra_per_game_config/v2/CitraConfigHelpers_Test.ahk b/Other/Citra_per_game_config/v2/CitraConfigHelpers_Test.ahk index d1c56b0..cb88443 100644 --- a/Other/Citra_per_game_config/v2/CitraConfigHelpers_Test.ahk +++ b/Other/Citra_per_game_config/v2/CitraConfigHelpers_Test.ahk @@ -73,6 +73,22 @@ TestSetKey() { content2 := "path\to\file=exists`n" result := SetKey(content2, "path\to\file", "updated") AssertEqual(InStr(result, "path\to\file=updated") > 0, true, "SetKey updates key with backslashes") + + ; Test 6: Empty value + result := SetKey(content, "key1", "") + AssertEqual(InStr(result, "key1=") > 0 && InStr(result, "key1=value1") == 0, true, "SetKey handles empty value") + + ; Test 7: Value with literal $ sign + result := SetKey(content, "key1", "val$ue") + AssertEqual(InStr(result, "key1=val$ue") > 0, true, "SetKey handles value with literal $ sign") + + ; Test 8: Value with literal $1 + result := SetKey(content, "key2", "val$1ue") + AssertEqual(InStr(result, "key2=val$1ue") > 0, true, "SetKey handles value with literal $1") + + ; Test 9: Add new key with $ sign + result := SetKey(content, "key4", "new$val") + AssertEqual(InStr(result, "key4=new$val") > 0, true, "SetKey adds new key with $ sign") } TestReplaceInFile() {