load("@bazel_skylib//lib:unittest.bzl", "asserts", "unittest") load("//internal/bzlmod:semver.bzl", "semver") _SORTED_TEST_VERSIONS = [ "0.1-a", "0.1", "1.0.0-0.3.7", "1.0.0-alpha", "1.0.0-alpha+001", "1.0.0-alpha.1", "1.0.0-alpha.beta", "1.0.0-beta+exp.sha.5114f85", "1.0.0-beta", "1.0.0-beta.2", "1.0.0-beta.11", "1.0.0-rc.1", "1.0.0-x.7.z.92", "1.0.0-x-y-z.--", "1.0.0+21AF26D3----117B344092BD", "1.0.0+20130313144700", "1.0.0", "2.0.0", "2.1.0", "2.1.1-0", "2.1.1", "2.1.1.0", "2.1.1.1-a", "2.1.1.1", "2.1.1.a", "2.1.2", "3", "a", ] _SCRAMBLED_TEST_VERSIONS = { "a": True, "3": True, "2.1.2": False, "2.1.1.a": True, "2.1.1.1": True, "2.1.1.1-a": True, "2.1.1.0": True, "2.1.1": False, "2.1.1-0": False, "2.1.0": False, "2.0.0": False, "1.0.0+21AF26D3----117B344092BD": False, "1.0.0+20130313144700": False, "1.0.0": False, "1.0.0-x.7.z.92": False, "1.0.0-x-y-z.--": False, "1.0.0-rc.1": False, "1.0.0-beta.11": False, "1.0.0-beta.2": False, "1.0.0-beta+exp.sha.5114f85": False, "1.0.0-beta": False, "1.0.0-alpha.beta": False, "1.0.0-alpha.1": False, "1.0.0-alpha": False, "1.0.0-alpha+001": False, "1.0.0-0.3.7": False, "0.1-a": True, "0.1": True, } def _semver_test_impl(ctx): env = unittest.begin(ctx) asserts.equals( env, _SORTED_TEST_VERSIONS, sorted( _SCRAMBLED_TEST_VERSIONS.keys(), key = lambda x: semver.to_comparable(x, relaxed = _SCRAMBLED_TEST_VERSIONS[x]), ), ) return unittest.end(env) semver_test = unittest.make(_semver_test_impl) def semver_test_suite(name): unittest.suite( name, semver_test, )