Skip to content

Commit fe9c70e

Browse files
committed
add unit test
1 parent a3520e7 commit fe9c70e

File tree

3 files changed

+47
-4
lines changed

3 files changed

+47
-4
lines changed

protoc/private/BUILD.bazel

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
load("@bazel_skylib//:bzl_library.bzl", "bzl_library")
2+
load(":prebuilt_protoc_toolchain_test.bzl", "release_version_to_artifact_name_test_suite")
23

34
bzl_library(
45
name = "versions",
56
srcs = ["versions.bzl"],
67
visibility = ["//protoc:__subpackages__"],
78
)
9+
10+
release_version_to_artifact_name_test_suite()

protoc/private/prebuilt_protoc_toolchain.bzl

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,28 @@ GOOGLE_PROTOBUF_DEP_EDGES = {
2222
"wrappers": [],
2323
}
2424

25+
def release_version_to_artifact_name(release_version, platform):
26+
# versions have a "v" prefix like "v28.0"
27+
stripped_version = release_version.removeprefix("v")
28+
29+
# release candidate versions like "v29.0-rc3" have artifact names
30+
# like "protoc-29.0-rc-3-osx-x86_64.zip"
31+
artifact_version = stripped_version.replace("rc", "rc-")
32+
33+
return "{}-{}-{}.zip".format(
34+
"protoc",
35+
artifact_version,
36+
platform,
37+
)
38+
2539
def _prebuilt_protoc_repo_impl(rctx):
2640
release_version = rctx.attr.version
2741
if release_version == "LATEST":
2842
release_version = PROTOC_VERSIONS.keys()[0]
2943

30-
filename = "{}-{}-{}.zip".format(
31-
"protoc",
32-
release_version.removeprefix("v").replace("rc", "rc-"),
33-
rctx.attr.platform,
44+
filename = release_version_to_artifact_name(
45+
release_version,
46+
rctx.attr.platform
3447
)
3548
url = "https://github.com/protocolbuffers/protobuf/releases/download/{}/{}".format(
3649
release_version,
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
load("@bazel_skylib//lib:unittest.bzl", "asserts", "unittest")
2+
load(":prebuilt_protoc_toolchain.bzl", "release_version_to_artifact_name")
3+
load(":versions.bzl", "PROTOC_VERSIONS")
4+
5+
def _release_version_to_artifact_name_test_impl(ctx):
6+
env = unittest.begin(ctx)
7+
count = 0
8+
9+
for release_version in PROTOC_VERSIONS:
10+
artifact_name = release_version_to_artifact_name(release_version, "linux-x86_64")
11+
artifact_dict = PROTOC_VERSIONS[release_version]
12+
# there should be a linux-x86_64 artifact in every release
13+
asserts.true(env, artifact_name in artifact_dict, "'{}' not found for release version '{}'".format(artifact_name, release_version))
14+
count += 1
15+
16+
asserts.true(env, count > 0, "no versions tested")
17+
return unittest.end(env)
18+
19+
release_version_to_artifact_name_test = unittest.make(_release_version_to_artifact_name_test_impl)
20+
21+
def release_version_to_artifact_name_test_suite():
22+
# unittest.suite() takes care of instantiating the testing rules and creating
23+
# a test_suite.
24+
unittest.suite(
25+
"release_version_to_artifact_name_tests",
26+
release_version_to_artifact_name_test,
27+
)

0 commit comments

Comments
 (0)