Merge pull request #140 from relayr/extra_hyphens

Allow for extra hyphens in pre-release build version
This commit is contained in:
Tristan Sloughter 2018-12-17 07:20:10 -07:00 committed by GitHub
commit c3ae625bd1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 49 additions and 1 deletions

View file

@ -340,6 +340,8 @@ eql_test() ->
"1.0.0.0-alpha.1+build.1")), "1.0.0.0-alpha.1+build.1")),
?assertMatch(true, eql("1.0-alpha.1+build.1", ?assertMatch(true, eql("1.0-alpha.1+build.1",
"v1.0.0.0-alpha.1+build.1")), "v1.0.0.0-alpha.1+build.1")),
?assertMatch(true, eql("1.0-pre-alpha.1",
"1.0.0-pre-alpha.1")),
?assertMatch(true, eql("aa", "aa")), ?assertMatch(true, eql("aa", "aa")),
?assertMatch(true, eql("AA.BB", "AA.BB")), ?assertMatch(true, eql("AA.BB", "AA.BB")),
?assertMatch(true, eql("BBB-super", "BBB-super")), ?assertMatch(true, eql("BBB-super", "BBB-super")),
@ -367,6 +369,8 @@ gt_test() ->
"1.0.0-alpha.1")), "1.0.0-alpha.1")),
?assertMatch(true, gt("1.0.0-beta.11", ?assertMatch(true, gt("1.0.0-beta.11",
"1.0.0-beta.2")), "1.0.0-beta.2")),
?assertMatch(true, gt("1.0.0-pre-alpha.14",
"1.0.0-pre-alpha.3")),
?assertMatch(true, gt("1.0.0-beta.11", ?assertMatch(true, gt("1.0.0-beta.11",
"1.0.0.0-beta.2")), "1.0.0.0-beta.2")),
?assertMatch(true, gt("1.0.0-rc.1", "1.0.0-beta.11")), ?assertMatch(true, gt("1.0.0-rc.1", "1.0.0-beta.11")),
@ -392,6 +396,8 @@ gt_test() ->
"1.0.0-beta.11")), "1.0.0-beta.11")),
?assertMatch(true, not gt("1.0.0-beta.11", ?assertMatch(true, not gt("1.0.0-beta.11",
"1.0.0-rc.1")), "1.0.0-rc.1")),
?assertMatch(true, not gt("1.0.0-pre-alpha.3",
"1.0.0-pre-alpha.14")),
?assertMatch(true, not gt("1.0.0-rc.1", ?assertMatch(true, not gt("1.0.0-rc.1",
"1.0.0-rc.1+build.1")), "1.0.0-rc.1+build.1")),
?assertMatch(true, not gt("1.0.0-rc.1+build.1", ?assertMatch(true, not gt("1.0.0-rc.1+build.1",
@ -430,6 +436,8 @@ lt_test() ->
"1.0.0-beta.2")), "1.0.0-beta.2")),
?assertMatch(true, lt("1.0.0-beta.2", ?assertMatch(true, lt("1.0.0-beta.2",
"1.0.0-beta.11")), "1.0.0-beta.11")),
?assertMatch(true, lt("1.0.0-pre-alpha.3",
"1.0.0-pre-alpha.14")),
?assertMatch(true, lt("1.0.0-beta.11", ?assertMatch(true, lt("1.0.0-beta.11",
"1.0.0-rc.1")), "1.0.0-rc.1")),
?assertMatch(true, lt("1.0.0.1-beta.11", ?assertMatch(true, lt("1.0.0.1-beta.11",
@ -469,6 +477,8 @@ lt_test() ->
"1.0.0-alpha.1")), "1.0.0-alpha.1")),
?assertMatch(true, not lt("1.0.0-beta.11", ?assertMatch(true, not lt("1.0.0-beta.11",
"1.0.0-beta.2")), "1.0.0-beta.2")),
?assertMatch(true, not lt("1.0.0-pre-alpha.14",
"1.0.0-pre-alpha.3")),
?assertMatch(true, not lt("1.0.0-rc.1", "1.0.0-beta.11")), ?assertMatch(true, not lt("1.0.0-rc.1", "1.0.0-beta.11")),
?assertMatch(true, not lt("1.0.0-rc.1+build.1", "1.0.0-rc.1")), ?assertMatch(true, not lt("1.0.0-rc.1+build.1", "1.0.0-rc.1")),
?assertMatch(true, not lt("1.0.0", "1.0.0-rc.1+build.1")), ?assertMatch(true, not lt("1.0.0", "1.0.0-rc.1+build.1")),
@ -505,6 +515,8 @@ gte_test() ->
"1.0.0.0-alpha.1+build.1")), "1.0.0.0-alpha.1+build.1")),
?assertMatch(true, gte("1.0.0-alpha.1", ?assertMatch(true, gte("1.0.0-alpha.1",
"1.0.0-alpha")), "1.0.0-alpha")),
?assertMatch(true, gte("1.0.0-pre-alpha.2",
"1.0.0-pre-alpha")),
?assertMatch(true, gte("1.0.0-beta.2", ?assertMatch(true, gte("1.0.0-beta.2",
"1.0.0-alpha.1")), "1.0.0-alpha.1")),
?assertMatch(true, gte("1.0.0-beta.11", ?assertMatch(true, gte("1.0.0-beta.11",
@ -522,6 +534,8 @@ gte_test() ->
"1.3.7+build.2.b8f12d7")), "1.3.7+build.2.b8f12d7")),
?assertMatch(true, not gte("1.0.0-alpha", ?assertMatch(true, not gte("1.0.0-alpha",
"1.0.0-alpha.1")), "1.0.0-alpha.1")),
?assertMatch(true, not gte("1.0.0-pre-alpha",
"1.0.0-pre-alpha.1")),
?assertMatch(true, not gte("CC", "DD")), ?assertMatch(true, not gte("CC", "DD")),
?assertMatch(true, not gte("1.0.0-alpha.1", ?assertMatch(true, not gte("1.0.0-alpha.1",
"1.0.0-beta.2")), "1.0.0-beta.2")),
@ -550,6 +564,8 @@ lte_test() ->
"1.0.0-beta.2")), "1.0.0-beta.2")),
?assertMatch(true, lte("1.0.0-beta.2", ?assertMatch(true, lte("1.0.0-beta.2",
"1.0.0-beta.11")), "1.0.0-beta.11")),
?assertMatch(true, lte("1.0.0-pre-alpha.2",
"1.0.0-pre-alpha.11")),
?assertMatch(true, lte("1.0.0-beta.11", ?assertMatch(true, lte("1.0.0-beta.11",
"1.0.0-rc.1")), "1.0.0-rc.1")),
?assertMatch(true, lte("1.0.0-rc.1", ?assertMatch(true, lte("1.0.0-rc.1",
@ -582,6 +598,8 @@ lte_test() ->
?assertMatch(true, lte("cc","cc")), ?assertMatch(true, lte("cc","cc")),
?assertMatch(true, not lte("1.0.0-alpha.1", ?assertMatch(true, not lte("1.0.0-alpha.1",
"1.0.0-alpha")), "1.0.0-alpha")),
?assertMatch(true, not lte("1.0.0-pre-alpha.2",
"1.0.0-pre-alpha")),
?assertMatch(true, not lte("cc", "aa")), ?assertMatch(true, not lte("cc", "aa")),
?assertMatch(true, not lte("1.0.0-beta.2", ?assertMatch(true, not lte("1.0.0-beta.2",
"1.0.0-alpha.1")), "1.0.0-alpha.1")),
@ -607,6 +625,9 @@ between_test() ->
?assertMatch(true, between("1.0.0-beta.2", ?assertMatch(true, between("1.0.0-beta.2",
"1.0.0-beta.11", "1.0.0-beta.11",
"1.0.0-beta.7")), "1.0.0-beta.7")),
?assertMatch(true, between("1.0.0-pre-alpha.2",
"1.0.0-pre-alpha.11",
"1.0.0-pre-alpha.7")),
?assertMatch(true, between("1.0.0-beta.11", ?assertMatch(true, between("1.0.0-beta.11",
"1.0.0-rc.3", "1.0.0-rc.3",
"1.0.0-rc.1")), "1.0.0-rc.1")),
@ -660,6 +681,9 @@ between_test() ->
?assertMatch(true, not between("1.0.0-alpha.1", ?assertMatch(true, not between("1.0.0-alpha.1",
"1.0.0-alpha.22", "1.0.0-alpha.22",
"1.0.0")), "1.0.0")),
?assertMatch(true, not between("1.0.0-pre-alpha.1",
"1.0.0-pre-alpha.22",
"1.0.0")),
?assertMatch(true, not between("1.0.0", ?assertMatch(true, not between("1.0.0",
"1.0.0-alpha.1", "1.0.0-alpha.1",
"2.0")), "2.0")),
@ -693,6 +717,27 @@ pes_test() ->
?assertMatch(true, not pes("A.A", "A.B")), ?assertMatch(true, not pes("A.A", "A.B")),
?assertMatch(true, not pes("2.5", "2.6.5")). ?assertMatch(true, not pes("2.5", "2.6.5")).
parse_test() ->
?assertEqual({1, {[],[]}}, parse(<<"1">>)),
?assertEqual({{1,2,34},{[],[]}}, parse(<<"1.2.34">>)),
?assertEqual({<<"a">>, {[],[]}}, parse(<<"a">>)),
?assertEqual({{<<"a">>,<<"b">>}, {[],[]}}, parse(<<"a.b">>)),
?assertEqual({1, {[],[]}}, parse(<<"1">>)),
?assertEqual({{1,2}, {[],[]}}, parse(<<"1.2">>)),
?assertEqual({{1,2,2}, {[],[]}}, parse(<<"1.2.2">>)),
?assertEqual({{1,99,2}, {[],[]}}, parse(<<"1.99.2">>)),
?assertEqual({{1,99,2}, {[<<"alpha">>],[]}}, parse(<<"1.99.2-alpha">>)),
?assertEqual({{1,99,2}, {[<<"alpha">>,1], []}}, parse(<<"1.99.2-alpha.1">>)),
?assertEqual({{1,99,2}, {[<<"pre-alpha">>,1], []}}, parse(<<"1.99.2-pre-alpha.1">>)),
?assertEqual({{1,99,2}, {[], [<<"build">>, 1, <<"a36">>]}},
parse(<<"1.99.2+build.1.a36">>)),
?assertEqual({{1,99,2,44}, {[], [<<"build">>, 1, <<"a36">>]}},
parse(<<"1.99.2.44+build.1.a36">>)),
?assertEqual({{1,99,2}, {[<<"alpha">>, 1], [<<"build">>, 1, <<"a36">>]}},
parse("1.99.2-alpha.1+build.1.a36")),
?assertEqual({{1,99,2}, {[<<"pre-alpha">>, 1], [<<"build">>, 1, <<"a36">>]}},
parse("1.99.2-pre-alpha.1+build.1.a36")).
version_format_test() -> version_format_test() ->
?assertEqual(["1", [], []], format({1, {[],[]}})), ?assertEqual(["1", [], []], format({1, {[],[]}})),
?assertEqual(["1", ".", "2", ".", "34", [], []], format({{1,2,34},{[],[]}})), ?assertEqual(["1", ".", "2", ".", "34", [], []], format({{1,2,34},{[],[]}})),
@ -704,12 +749,15 @@ version_format_test() ->
?assertEqual(<<"1.99.2">>, erlang:iolist_to_binary(format({{1,99,2}, {[],[]}}))), ?assertEqual(<<"1.99.2">>, erlang:iolist_to_binary(format({{1,99,2}, {[],[]}}))),
?assertEqual(<<"1.99.2-alpha">>, erlang:iolist_to_binary(format({{1,99,2}, {[<<"alpha">>],[]}}))), ?assertEqual(<<"1.99.2-alpha">>, erlang:iolist_to_binary(format({{1,99,2}, {[<<"alpha">>],[]}}))),
?assertEqual(<<"1.99.2-alpha.1">>, erlang:iolist_to_binary(format({{1,99,2}, {[<<"alpha">>,1], []}}))), ?assertEqual(<<"1.99.2-alpha.1">>, erlang:iolist_to_binary(format({{1,99,2}, {[<<"alpha">>,1], []}}))),
?assertEqual(<<"1.99.2-pre-alpha.1">>, erlang:iolist_to_binary(format({{1,99,2}, {[<<"pre-alpha">>,1], []}}))),
?assertEqual(<<"1.99.2+build.1.a36">>, ?assertEqual(<<"1.99.2+build.1.a36">>,
erlang:iolist_to_binary(format({{1,99,2}, {[], [<<"build">>, 1, <<"a36">>]}}))), erlang:iolist_to_binary(format({{1,99,2}, {[], [<<"build">>, 1, <<"a36">>]}}))),
?assertEqual(<<"1.99.2.44+build.1.a36">>, ?assertEqual(<<"1.99.2.44+build.1.a36">>,
erlang:iolist_to_binary(format({{1,99,2,44}, {[], [<<"build">>, 1, <<"a36">>]}}))), erlang:iolist_to_binary(format({{1,99,2,44}, {[], [<<"build">>, 1, <<"a36">>]}}))),
?assertEqual(<<"1.99.2-alpha.1+build.1.a36">>, ?assertEqual(<<"1.99.2-alpha.1+build.1.a36">>,
erlang:iolist_to_binary(format({{1,99,2}, {[<<"alpha">>, 1], [<<"build">>, 1, <<"a36">>]}}))), erlang:iolist_to_binary(format({{1,99,2}, {[<<"alpha">>, 1], [<<"build">>, 1, <<"a36">>]}}))),
?assertEqual(<<"1.99.2-pre-alpha.1+build.1.a36">>,
erlang:iolist_to_binary(format({{1,99,2}, {[<<"pre-alpha">>, 1], [<<"build">>, 1, <<"a36">>]}}))),
?assertEqual(<<"1">>, erlang:iolist_to_binary(format({1, {[],[]}}))). ?assertEqual(<<"1">>, erlang:iolist_to_binary(format({1, {[],[]}}))).
-endif. -endif.

View file

@ -44,7 +44,7 @@ parse(Input) when is_binary(Input) ->
-spec 'alpha_part'(input(), index()) -> parse_result(). -spec 'alpha_part'(input(), index()) -> parse_result().
'alpha_part'(Input, Index) -> 'alpha_part'(Input, Index) ->
p(Input, Index, 'alpha_part', fun(I,D) -> (p_one_or_more(p_charclass(<<"[A-Za-z0-9]">>)))(I,D) end, fun(Node, _Idx) ->erlang:iolist_to_binary(Node) end). p(Input, Index, 'alpha_part', fun(I,D) -> (p_one_or_more(p_charclass(<<"[A-Za-z0-9-]">>)))(I,D) end, fun(Node, _Idx) ->erlang:iolist_to_binary(Node) end).
transform(_,Node,_Index) -> Node. transform(_,Node,_Index) -> Node.