Skip to content

Commit

Permalink
Fix handling of or in prereleases, add tests
Browse files Browse the repository at this point in the history
  • Loading branch information
filmor committed Dec 27, 2023
1 parent 4cc1c2c commit 7194cba
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 3 deletions.
2 changes: 1 addition & 1 deletion apps/rebar/src/rebar_packages.erl
Original file line number Diff line number Diff line change
Expand Up @@ -392,7 +392,7 @@ resolve_version_(Dep, DepVsn, Repo, HexRegistry, State) ->
end.

process_vsn(Vsn) ->
[Vsn1|_] = string:split(Vsn, <<"or">>),
[Vsn1|_] = string:split(Vsn, <<" or ">>),
Vsn2 = string:trim(Vsn1),
ec_semver:parse(Vsn2).

Expand Down
1 change: 1 addition & 0 deletions apps/rebar/test/rebar_deps_SUITE.erl
Original file line number Diff line number Diff line change
Expand Up @@ -500,6 +500,7 @@ valid_version(_Config) ->
?assert(rebar_packages:valid_vsn(<<"~> 0.1.0">>)),
?assert(rebar_packages:valid_vsn(<<"~> 0.1.0">>)),
?assert(rebar_packages:valid_vsn(<<"~> 0.1 or 0.5">>)),
?assert(rebar_packages:valid_vsn(<<"~> 0.1-or-something">>)),
?assertNot(rebar_packages:valid_vsn(<<"> 0.1.0 and < 0.2.0">>)),
ok.

Expand Down
24 changes: 22 additions & 2 deletions apps/rebar/test/rebar_pkg_repos_SUITE.erl
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,9 @@ all() ->

groups() ->
[{resolve_version, [use_first_repo_match, use_exact_with_hash, fail_repo_update,
ignore_match_in_excluded_repo, optional_prereleases]}].
ignore_match_in_excluded_repo, optional_prereleases,
or_in_prerelease
]}].

init_per_group(resolve_version, Config) ->
Repo1 = <<"test-repo-1">>,
Expand Down Expand Up @@ -106,7 +108,7 @@ init_per_testcase(ignore_match_in_excluded_repo, Config) ->
fun(_State) -> true end),

[{state, State} | Config];
init_per_testcase(optional_prereleases, Config) ->
init_per_testcase(Case, Config) when Case =:= optional_prereleases; Case =:= or_in_prerelease ->
Deps = ?config(deps, Config),
Repos = ?config(repos, Config),

Expand Down Expand Up @@ -459,6 +461,24 @@ optional_prereleases(Config) ->
rebar_packages:resolve_version(<<"B">>, <<"~> 1.5.0">>, <<"inner checksum">>, <<"outer checksum">>,
?PACKAGE_TABLE, State1)).

or_in_prerelease(Config) ->
State = ?config(state, Config),

?assertMatch({ok,{package,{<<"B">>, {{1,5,0}, {[],[]}}, Hexpm},
<<"inner checksum">>,<<"outer checksum">>, false, []},
#{name := Hexpm,
http_adapter := {rebar_httpc_adapter, #{profile := rebar}}}},
rebar_packages:resolve_version(<<"B">>, <<"~> 1.5.0">>, undefined, undefined,
?PACKAGE_TABLE, State)),

State1 = rebar_state:set(State, deps_allow_prerelease, true),
?assertMatch({ok,{package,{<<"B">>, {{1,5,6}, {[<<"rc">>,0],[]}}, Hexpm},
<<"inner checksum">>,<<"outer checksum">>, true, []},
#{name := Hexpm,
http_adapter := {rebar_httpc_adapter, #{profile := rebar}}}},
rebar_packages:resolve_version(<<"B">>, <<"~> 1.5.5-a-or-b.0">>, <<"inner checksum">>, <<"outer checksum">>,
?PACKAGE_TABLE, State1)).

%%

setup_deps_and_repos(Deps, Repos) ->
Expand Down

0 comments on commit 7194cba

Please sign in to comment.