From 873d236ce9b4b88d46c4bb1c6868df70363e8a57 Mon Sep 17 00:00:00 2001 From: Tuncer Ayaz Date: Thu, 17 Jul 2014 18:53:58 +0200 Subject: Adapt arch string to versioning scheme changes (>= 17.x) --- test/rebar_otp_release_tests.erl | 43 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 test/rebar_otp_release_tests.erl (limited to 'test') diff --git a/test/rebar_otp_release_tests.erl b/test/rebar_otp_release_tests.erl new file mode 100644 index 0000000..05e9993 --- /dev/null +++ b/test/rebar_otp_release_tests.erl @@ -0,0 +1,43 @@ +%% -*- erlang-indent-level: 4;indent-tabs-mode: nil -*- +%% ex: ts=4 sw=4 et +%% ------------------------------------------------------------------- +%% +%% rebar: Erlang Build Tools +%% +%% Copyright (c) 2014 Tuncer Ayaz +%% +%% Permission is hereby granted, free of charge, to any person obtaining a copy +%% of this software and associated documentation files (the "Software"), to deal +%% in the Software without restriction, including without limitation the rights +%% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +%% copies of the Software, and to permit persons to whom the Software is +%% furnished to do so, subject to the following conditions: +%% +%% The above copyright notice and this permission notice shall be included in +%% all copies or substantial portions of the Software. +%% +%% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +%% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +%% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +%% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +%% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +%% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +%% THE SOFTWARE. +%% ------------------------------------------------------------------- +-module(rebar_otp_release_tests). + +-include_lib("eunit/include/eunit.hrl"). + +otp_release_test() -> + ?_assert(check_otp_release()). + +check_otp_release() -> + case rebar_utils:otp_release() of + %% <= R16 + [$R,N|_] when is_integer(N) -> + true; + %% >= 17.x + [N|_]=Rel when is_integer(N) -> + %% Check that it has at least Major.Minor + length(string:tokens(Rel, ".")) > 1 + end. -- cgit v1.1 From 9b060f2de9d92d0245edf440b08b0a8eb6b52251 Mon Sep 17 00:00:00 2001 From: Tuncer Ayaz Date: Thu, 17 Jul 2014 20:03:56 +0200 Subject: rebar_utils:otp_release/0: handle vsn like x.y.z** As mentioned in the OTP documentation, licensed customers may use patched OTP installations where the otp_patch_apply tool adds a '**' suffix as a flag saying the system consists of application versions from multiple OTP versions. When we get such a version string, we drop the suffix, as we cannot obtain relevant information from it as far as tooling is concerned. --- test/rebar_otp_release_tests.erl | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'test') diff --git a/test/rebar_otp_release_tests.erl b/test/rebar_otp_release_tests.erl index 05e9993..61efdad 100644 --- a/test/rebar_otp_release_tests.erl +++ b/test/rebar_otp_release_tests.erl @@ -28,16 +28,20 @@ -include_lib("eunit/include/eunit.hrl"). -otp_release_test() -> - ?_assert(check_otp_release()). - -check_otp_release() -> +check_otp_release_test() -> case rebar_utils:otp_release() of %% <= R16 [$R,N|_] when is_integer(N) -> - true; + ?assert(true); %% >= 17.x [N|_]=Rel when is_integer(N) -> %% Check that it has at least Major.Minor - length(string:tokens(Rel, ".")) > 1 + ?assert(length(string:tokens(Rel, ".")) > 1), + + %% If otp_patch_apply was used and the release version has + %% a "**" suffix, we drop that part in otp_release/0. + ?assertEqual(0, string:str(Rel, "*")), + + %% Check that "\n" is dropped in otp_release/0. + ?assertEqual(0, string:str(Rel, "\n")) end. -- cgit v1.1