summaryrefslogtreecommitdiff
path: root/tests/modules/semver/test.lua
blob: 3a7049c9a40d60665218c0f58d03a2c44abede05 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
-- imports
import("core.base.semver")

-- select version
function _check_semver_select(t, results, required_ver, versions, tags, branches)

    -- select it
    local version, source = semver.select(required_ver, versions or {}, tags or {}, branches or {})
    t:are_equal((version.version or version), results[1])
    t:are_equal(source, results[2])
end

-- test select version
function test_semver_select(t)

    _check_semver_select(t, {"1.5.1", "versions"}
                        , ">=1.5.0 <1.6.0"
                        , {"1.4.0", "1.5.0", "1.5.1"})

    _check_semver_select(t, {"1.5.1", "versions"}
                        , "^1.5.0"
                        ,{"1.4.0", "1.5.0", "1.5.1"})

    _check_semver_select(t, {"master", "branches"}
                        , "master"
                        , {"1.4.0", "1.5.0", "1.5.1"}
                        , {"v1.2.0", "v1.6.0"}
                        , {"master", "dev"})

    _check_semver_select(t, {"1.5.1", "versions"}
                        , "latest"
                        , {"1.4.0", "1.5.0", "1.5.1"})
end

-- select version
function _check_semver_satisfies(t, expected, version, range)

    -- select it
    local result = semver.satisfies(version, range)
    t:are_equal(result, expected)
end

-- test satisfies version
function test_semver_satisfies(t)

    _check_semver_satisfies(t, true, "1.5.1", ">=1.5.0 <1.6.0")
    _check_semver_satisfies(t, true, "1.5.1", "^1.5.0")
    _check_semver_satisfies(t, true, "1.5.1", "~1.5.0")
    _check_semver_satisfies(t, true, "1.6.0", "^1.5.0")

    _check_semver_satisfies(t, false, "1.6.1", "~1.5.0")
    _check_semver_satisfies(t, false, "2.5.1", "^1.5.0")
    _check_semver_satisfies(t, false, "1.4.1", ">=1.5.0 <1.6.0")

end

-- parse version
function _check_semver_parse(t, version_str, major, minor, patch, prerelease, build)

    -- create it
    local version = semver.parse(version_str)

    t:are_equal(version.major, major)
    t:are_equal(version.minor, minor)
    t:are_equal(version.patch, patch)
    t:are_equal(version.prerelease, prerelease or {})
    t:are_equal(version.build, build or {})

end

-- test parse version
function test_semver_parse(t)

    _check_semver_parse(t, "1.2.3", 1, 2, 3)
    _check_semver_parse(t, "1.2.3-beta", 1, 2, 3, {"beta"})
    _check_semver_parse(t, "1.2.3-beta+77", 1, 2, 3, {"beta"}, {77})
    _check_semver_parse(t, "v1.2.3-alpha.1+77", 1, 2, 3, {"alpha", 1}, {77})
    _check_semver_parse(t, "v3.2.1-alpha.1+77.foo", 3, 2, 1, {"alpha", 1}, {77, "foo"})

end