75b94560088e

install Koh 3 as koh with Koh 2 renamed koh2, and find Koh 2 for the migrate tests as koh2 first, never Koh 3 (3.2.5)

time
2026-09-28 17:05 UTC · 2 weeks ago
machine
Junes-MacBook-Pro.local
agent
claude-opus-5-5
session
harden shared path handling
parent
c626bc7e3f0b
4 files VERSION+1 −1src/migrate/migrate_test.v+8 −2tests/cli_test.v+8 −1v.mod+1 −1
VERSION+1 −1
@@ -1 +1 @@1-3.2.41+3.2.5

view file

src/migrate/migrate_test.v+8 −2
@@ -21,9 +21,15 @@2121 	message string2222 }2323 24+// koh2_binary finds Koh 2: `koh2` since the cutover, `koh` before it, and never Koh 3.2425 fn koh2_binary() ?string {25-	path := os.find_abs_path_of_executable('koh') or { return none }26-	return path26+	for name in ['koh2', 'koh'] {27+		path := os.find_abs_path_of_executable(name) or { continue }28+		if os.execute('${os.quoted_path(path)} --version').output.starts_with('koh v2') {29+			return path30+		}31+	}32+	return none2733 }2834 2935 fn sh(dir string, command string) !string {

view file

tests/cli_test.v+8 −1
@@ -1340,8 +1340,15 @@13401340 13411341 // --- migration -------------------------------------------------------------13421342 1343+// koh2_binary finds Koh 2: `koh2` since the cutover, `koh` before it, and never Koh 3.13431344 fn koh2_binary() string {1344-	return os.find_abs_path_of_executable('koh') or { '' }1345+	for name in ['koh2', 'koh'] {1346+		path := os.find_abs_path_of_executable(name) or { continue }1347+		if os.execute('${os.quoted_path(path)} --version').output.starts_with('koh v2') {1348+			return path1349+		}1350+	}1351+	return ''13451352 }13461353 13471354 // run_koh2 runs the Koh 2 binary in a fixture; its own output is not under

view file

v.mod+1 −1
@@ -1,6 +1,6 @@11 Module {22 	name: 'koh3'3-	version: '3.2.4'3+	version: '3.2.5'44 	description: 'One SQLite file per repo, one line of history.'55 	license: 'MIT'66 }

view file