1load("@bazel_skylib//rules:copy_file.bzl", "copy_file") 2load("@python//3.10:defs.bzl", py_binary_3_10 = "py_binary", py_test_3_10 = "py_test") 3load("@python//3.11:defs.bzl", py_binary_3_11 = "py_binary", py_test_3_11 = "py_test") 4load("@python//3.8:defs.bzl", py_binary_3_8 = "py_binary", py_test_3_8 = "py_test") 5load("@python//3.9:defs.bzl", py_binary_3_9 = "py_binary", py_test_3_9 = "py_test") 6load("@rules_python//python:defs.bzl", "py_binary", "py_test") 7 8copy_file( 9 name = "copy_version", 10 src = "version.py", 11 out = "version_default.py", 12 is_executable = True, 13) 14 15# NOTE: We are testing that the `main` is an optional param as per official 16# docs https://bazel.build/reference/be/python#py_binary.main 17py_binary( 18 name = "version_default", 19 srcs = ["version_default.py"], 20) 21 22py_binary_3_8( 23 name = "version_3_8", 24 srcs = ["version.py"], 25 main = "version.py", 26) 27 28py_binary_3_9( 29 name = "version_3_9", 30 srcs = ["version.py"], 31 main = "version.py", 32) 33 34py_binary_3_10( 35 name = "version_3_10", 36 srcs = ["version.py"], 37 main = "version.py", 38) 39 40py_binary_3_11( 41 name = "version_3_11", 42 srcs = ["version.py"], 43 main = "version.py", 44) 45 46py_test( 47 name = "my_lib_default_test", 48 srcs = ["my_lib_test.py"], 49 main = "my_lib_test.py", 50 deps = ["//libs/my_lib"], 51) 52 53py_test_3_8( 54 name = "my_lib_3_8_test", 55 srcs = ["my_lib_test.py"], 56 main = "my_lib_test.py", 57 deps = ["//libs/my_lib"], 58) 59 60py_test_3_9( 61 name = "my_lib_3_9_test", 62 srcs = ["my_lib_test.py"], 63 main = "my_lib_test.py", 64 deps = ["//libs/my_lib"], 65) 66 67py_test_3_10( 68 name = "my_lib_3_10_test", 69 srcs = ["my_lib_test.py"], 70 main = "my_lib_test.py", 71 deps = ["//libs/my_lib"], 72) 73 74py_test_3_11( 75 name = "my_lib_3_11_test", 76 srcs = ["my_lib_test.py"], 77 main = "my_lib_test.py", 78 deps = ["//libs/my_lib"], 79) 80 81copy_file( 82 name = "copy_version_test", 83 src = "version_test.py", 84 out = "version_default_test.py", 85 is_executable = True, 86) 87 88py_test( 89 name = "version_default_test", 90 srcs = ["version_default_test.py"], 91 env = {"VERSION_CHECK": "3.9"}, # The default defined in the WORKSPACE. 92) 93 94py_test_3_8( 95 name = "version_3_8_test", 96 srcs = ["version_test.py"], 97 env = {"VERSION_CHECK": "3.8"}, 98 main = "version_test.py", 99) 100 101py_test_3_9( 102 name = "version_3_9_test", 103 srcs = ["version_test.py"], 104 env = {"VERSION_CHECK": "3.9"}, 105 main = "version_test.py", 106) 107 108py_test_3_10( 109 name = "version_3_10_test", 110 srcs = ["version_test.py"], 111 env = {"VERSION_CHECK": "3.10"}, 112 main = "version_test.py", 113) 114 115py_test_3_11( 116 name = "version_3_11_test", 117 srcs = ["version_test.py"], 118 env = {"VERSION_CHECK": "3.11"}, 119 main = "version_test.py", 120) 121 122py_test( 123 name = "version_default_takes_3_10_subprocess_test", 124 srcs = ["cross_version_test.py"], 125 data = [":version_3_10"], 126 env = { 127 "SUBPROCESS_VERSION_CHECK": "3.10", 128 "SUBPROCESS_VERSION_PY_BINARY": "$(rootpath :version_3_10)", 129 "VERSION_CHECK": "3.9", 130 }, 131 main = "cross_version_test.py", 132) 133 134py_test_3_10( 135 name = "version_3_10_takes_3_9_subprocess_test", 136 srcs = ["cross_version_test.py"], 137 data = [":version_3_9"], 138 env = { 139 "SUBPROCESS_VERSION_CHECK": "3.9", 140 "SUBPROCESS_VERSION_PY_BINARY": "$(rootpath :version_3_9)", 141 "VERSION_CHECK": "3.10", 142 }, 143 main = "cross_version_test.py", 144) 145 146sh_test( 147 name = "version_test_binary_default", 148 srcs = ["version_test.sh"], 149 data = [":version_default"], 150 env = { 151 "VERSION_CHECK": "3.9", # The default defined in the WORKSPACE. 152 "VERSION_PY_BINARY": "$(rootpath :version_default)", 153 }, 154) 155 156sh_test( 157 name = "version_test_binary_3_8", 158 srcs = ["version_test.sh"], 159 data = [":version_3_8"], 160 env = { 161 "VERSION_CHECK": "3.8", 162 "VERSION_PY_BINARY": "$(rootpath :version_3_8)", 163 }, 164) 165 166sh_test( 167 name = "version_test_binary_3_9", 168 srcs = ["version_test.sh"], 169 data = [":version_3_9"], 170 env = { 171 "VERSION_CHECK": "3.9", 172 "VERSION_PY_BINARY": "$(rootpath :version_3_9)", 173 }, 174) 175 176sh_test( 177 name = "version_test_binary_3_10", 178 srcs = ["version_test.sh"], 179 data = [":version_3_10"], 180 env = { 181 "VERSION_CHECK": "3.10", 182 "VERSION_PY_BINARY": "$(rootpath :version_3_10)", 183 }, 184) 185