diff options
author | Lukas Larsson <lukas@erlang.org> | 2021-01-14 09:49:03 +0100 |
---|---|---|
committer | Lukas Larsson <lukas@erlang.org> | 2021-01-18 10:46:29 +0100 |
commit | 4fa4a5369ef5b042010295a5d9b48f8d993e2438 (patch) | |
tree | 4ba5c178faea6a6af3abeef9fe1e2df5e6d2c70f /lib/common_test | |
parent | 0e5abe4a858e371e8543724469148703ff16d8b5 (diff) | |
download | erlang-4fa4a5369ef5b042010295a5d9b48f8d993e2438.tar.gz |
ct: Search PATH for old erlang versions for compat testing
Diffstat (limited to 'lib/common_test')
-rw-r--r-- | lib/common_test/src/test_server_node.erl | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/lib/common_test/src/test_server_node.erl b/lib/common_test/src/test_server_node.erl index 8deea353d7..edfb1fbd92 100644 --- a/lib/common_test/src/test_server_node.erl +++ b/lib/common_test/src/test_server_node.erl @@ -645,7 +645,38 @@ find_release(latest) -> find_release(previous) -> "kaka"; find_release(Rel) -> - find_release(os:type(), Rel). + case find_release(os:type(), Rel) of + none -> + find_release_path(Rel); + Else -> + Else + end. + +find_release_path(Rel) -> + Paths = string:lexemes(os:getenv("PATH"), ":"), + find_release_path(Paths, Rel). +find_release_path([Path|T], Rel) -> + case os:find_executable("erl", Path) of + false -> + find_release_path(T, Rel); + ErlExec -> + Pattern = filename:join([Path,"..","releases","*","OTP_VERSION"]), + case filelib:wildcard(Pattern) of + [VersionFile] -> + {ok, VsnBin} = file:read_file(VersionFile), + [MajorVsn|_] = string:lexemes(VsnBin, "."), + case unicode:characters_to_list(MajorVsn) of + Rel -> + ErlExec; + _Else -> + find_release_path(T, Rel) + end; + _Else -> + find_release_path(T, Rel) + end + end; +find_release_path([], _) -> + none. find_release({unix,sunos}, Rel) -> case os:cmd("uname -p") of |