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