• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1load("@bazel_skylib//lib:unittest.bzl", "asserts", "unittest")
2load("//build/bazel/rules/common:api.bzl", "api")
3
4def _api_levels_test_impl(ctx):
5    env = unittest.begin(ctx)
6
7    # schema: version string to parse: (expected api int, is preview api)
8    _LEVELS_UNDER_TEST = {
9        # numbers
10        "9": (9, False),  # earliest released number
11        "21": (21, False),
12        "30": (30, False),
13        "33": (33, False),
14        # unchecked non final api level (not finalized, not preview, not current)
15        "1234": (1234, False),
16        "8999": (8999, False),
17        "9999": (9999, False),
18        "10001": (10001, False),
19        # letters
20        "G": (9, False),  # earliest released letter
21        "J-MR1": (17, False),
22        "R": (30, False),
23        "S": (31, False),
24        "S-V2": (32, False),
25        # codenames
26        "Tiramisu": (33, False),
27        "UpsideDownCake": (9000, True),  # preview
28        "current": (10000, True),  # future (considered as preview)
29        # preview numbers
30        "9000": (9000, True),  # preview
31        "10000": (10000, True),  # future (considered as preview)
32    }
33
34    for level, expected in _LEVELS_UNDER_TEST.items():
35        asserts.equals(env, expected[0], api.parse_api_level_from_version(level), "unexpected api level parsed for %s" % level)
36        asserts.equals(env, expected[1], api.is_preview(level), "unexpected is_preview value for %s" % level)
37
38    return unittest.end(env)
39
40api_levels_test = unittest.make(_api_levels_test_impl)
41
42def _final_or_future_test_impl(ctx):
43    env = unittest.begin(ctx)
44
45    # schema: version string to parse: expected api int
46    _LEVELS_UNDER_TEST = {
47        # finalized
48        "30": 30,
49        "33": 33,
50        "S": 31,
51        "S-V2": 32,
52        "Tiramisu": 33,
53        # not finalized
54        "UpsideDownCake": 10000,
55        "current": 10000,
56        "9000": 10000,
57        "10000": 10000,
58    }
59
60    for level, expected in _LEVELS_UNDER_TEST.items():
61        asserts.equals(
62            env,
63            expected,
64            api.final_or_future(api.parse_api_level_from_version(level)),
65            "unexpected final or future api for %s" % level,
66        )
67
68    return unittest.end(env)
69
70final_or_future_test = unittest.make(_final_or_future_test_impl)
71
72def api_levels_test_suite(name):
73    unittest.suite(
74        name,
75        api_levels_test,
76        final_or_future_test,
77    )
78