| load("@bazel_skylib//lib:unittest.bzl", "asserts", "unittest") |
| load("//build/bazel/rules/common:api.bzl", "api") |
| |
| def _api_levels_test_impl(ctx): |
| env = unittest.begin(ctx) |
| |
| # schema: version string to parse: (expected api int, is preview api) |
| _LEVELS_UNDER_TEST = { |
| # numbers |
| "9": (9, False), # earliest released number |
| "21": (21, False), |
| "30": (30, False), |
| "33": (33, False), |
| # unchecked non final api level (not finalized, not preview, not current) |
| "1234": (1234, False), |
| "8999": (8999, False), |
| "9999": (9999, False), |
| "10001": (10001, False), |
| # letters |
| "G": (9, False), # earliest released letter |
| "J-MR1": (17, False), |
| "R": (30, False), |
| "S": (31, False), |
| "S-V2": (32, False), |
| # codenames |
| "Tiramisu": (33, False), |
| "UpsideDownCake": (9000, True), # preview |
| "current": (10000, True), # future (considered as preview) |
| # preview numbers |
| "9000": (9000, True), # preview |
| "10000": (10000, True), # future (considered as preview) |
| } |
| |
| for level, expected in _LEVELS_UNDER_TEST.items(): |
| asserts.equals(env, expected[0], api.parse_api_level_from_version(level), "unexpected api level parsed for %s" % level) |
| asserts.equals(env, expected[1], api.is_preview(level), "unexpected is_preview value for %s" % level) |
| |
| return unittest.end(env) |
| |
| api_levels_test = unittest.make(_api_levels_test_impl) |
| |
| def _final_or_future_test_impl(ctx): |
| env = unittest.begin(ctx) |
| |
| # schema: version string to parse: expected api int |
| _LEVELS_UNDER_TEST = { |
| # finalized |
| "30": 30, |
| "33": 33, |
| "S": 31, |
| "S-V2": 32, |
| "Tiramisu": 33, |
| # not finalized |
| "UpsideDownCake": 10000, |
| "current": 10000, |
| "9000": 10000, |
| "10000": 10000, |
| } |
| |
| for level, expected in _LEVELS_UNDER_TEST.items(): |
| asserts.equals( |
| env, |
| expected, |
| api.final_or_future(api.parse_api_level_from_version(level)), |
| "unexpected final or future api for %s" % level, |
| ) |
| |
| return unittest.end(env) |
| |
| final_or_future_test = unittest.make(_final_or_future_test_impl) |
| |
| def api_levels_test_suite(name): |
| unittest.suite( |
| name, |
| api_levels_test, |
| final_or_future_test, |
| ) |