Files
valkey/tests/support/set_executable_path.tcl
Zhijun LiaoandGitHub 3ea5cb3989 CI: Stop using symlinks for tests with CMake (#3145)
Follow-up to my previous CMake PR
https://github.com/valkey-io/valkey/pull/2816.

**Changes:**

1. **`.github/workflows/ci.yml`** - Removed symlinks, use
`./build-release/runtest` instead of `./runtest`
2. **`tests/support/set_executable_path.tcl`** - Added
`::VALKEY_TLS_MODULE` variable
3. **Fixed hardcoded paths in 5 test files:**
   - `tests/unit/tls.tcl` - server and TLS module paths
   - `tests/unit/fuzzer.tcl` - benchmark path
   - `tests/unit/cluster/cli.tcl` - CLI path
   - `tests/support/server.tcl` - TLS module path
   - `tests/instances.tcl` - TLS module path

**Result:** All tests passed. The only failure was an unrelated flaky
test (`client-eviction.tcl`) that's been failing since TLS was added to
the cmake job - tracked in issue #3146.

---------

Signed-off-by: Zhijun <[email protected]>
2026-02-02 14:58:57 +01:00

40 lines
1.8 KiB
Tcl

# Set the directory to find Valkey binaries for tests. Historically we've been
# using make to build binaries under the src/ directory. Since we start supporting
# CMake as well, we allow changing base dir by passing ENV variable `VALKEY_BIN_DIR`,
# which could be either absolute or relative path (e.g. cmake-build-debug/bin).
if {[info exists ::env(VALKEY_BIN_DIR)]} {
set ::VALKEY_BIN_DIR [file normalize $::env(VALKEY_BIN_DIR)]
} else {
set ::VALKEY_BIN_DIR "[pwd]/src"
}
# Optional program suffix (e.g. `make PROG_SUFFIX=-alt` will create binary valkey-server-alt).
# Passed from `make test` as environment variable VALKEY_PROG_SUFFIX.
set ::VALKEY_PROG_SUFFIX [expr {
[info exists ::env(VALKEY_PROG_SUFFIX)] ? $::env(VALKEY_PROG_SUFFIX) : ""
}]
# Helper to build absolute paths
proc valkey_bin_absolute_path {name} {
set full_name "${name}${::VALKEY_PROG_SUFFIX}"
return [file join $::VALKEY_BIN_DIR $full_name]
}
set ::VALKEY_SERVER_BIN [valkey_bin_absolute_path "valkey-server"]
set ::VALKEY_CLI_BIN [valkey_bin_absolute_path "valkey-cli"]
set ::VALKEY_BENCHMARK_BIN [valkey_bin_absolute_path "valkey-benchmark"]
set ::VALKEY_CHECK_AOF_BIN [valkey_bin_absolute_path "valkey-check-aof"]
set ::VALKEY_CHECK_RDB_BIN [valkey_bin_absolute_path "valkey-check-rdb"]
set ::VALKEY_SENTINEL_BIN [valkey_bin_absolute_path "valkey-sentinel"]
# TLS module path: in CMake builds it's in lib/, in Make builds it's in src/
if {[info exists ::env(VALKEY_BIN_DIR)]} {
# CMake build: lib/ is sibling to bin/
set ::VALKEY_TLS_MODULE [file join [file dirname $::VALKEY_BIN_DIR] "lib" "valkey-tls${::VALKEY_PROG_SUFFIX}.so"]
} else {
set ::VALKEY_TLS_MODULE "[pwd]/src/valkey-tls${::VALKEY_PROG_SUFFIX}.so"
}
if {![file executable $::VALKEY_SERVER_BIN]} {
error "Binary not found or not executable: $::VALKEY_SERVER_BIN"
}