summaryrefslogtreecommitdiff
path: root/lib/common_test
diff options
context:
space:
mode:
authorLukas Larsson <lukas@erlang.org>2021-01-14 09:49:03 +0100
committerLukas Larsson <lukas@erlang.org>2021-01-18 10:46:29 +0100
commit4fa4a5369ef5b042010295a5d9b48f8d993e2438 (patch)
tree4ba5c178faea6a6af3abeef9fe1e2df5e6d2c70f /lib/common_test
parent0e5abe4a858e371e8543724469148703ff16d8b5 (diff)
downloaderlang-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.erl33
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