From 4ac086bff0fdca78fb42458e7b13b79ccc9d4ede Mon Sep 17 00:00:00 2001 From: uberzzr <107087969+uberzzr@users.noreply.github.com> Date: Mon, 6 Feb 2023 23:24:01 -0800 Subject: add bazel test rule (#3447) --- tests/integration/popular_repos/BUILD.bazel | 114 +++++++++++++++++++++++ tests/integration/popular_repos/popular_repos.py | 20 ++++ 2 files changed, 134 insertions(+) diff --git a/tests/integration/popular_repos/BUILD.bazel b/tests/integration/popular_repos/BUILD.bazel index b4ac0ca0..e0dc8a7d 100644 --- a/tests/integration/popular_repos/BUILD.bazel +++ b/tests/integration/popular_repos/BUILD.bazel @@ -15,6 +15,9 @@ ############################## # Generated file, do not edit! ############################## + +load("@bazel_skylib//rules:build_test.bzl", "build_test") + test_suite( name = "org_golang_x_crypto", tests = [ @@ -230,3 +233,114 @@ test_suite( "@org_golang_x_mod//sumdb/storage:storage_test", ], ) + +build_test( + name = "need_test", + targets = [ + "@org_golang_x_crypto//ssh/agent:agent", + "@org_golang_x_crypto//ssh/test:test", + "@org_golang_x_crypto//ssh:ssh", + "@org_golang_x_net//bpf:bpf", + "@org_golang_x_net//html/charset:charset", + "@org_golang_x_net//http2:http2", + "@org_golang_x_net//icmp:icmp", + "@org_golang_x_net//nettest:nettest", + "@org_golang_x_net//lif:lif", + "@org_golang_x_net//route:route", + "@org_golang_x_sys//unix:unix", + "@org_golang_x_sys//windows:windows", + "@org_golang_x_text//encoding/charmap:charmap", + "@org_golang_x_text//encoding/japanese:japanese", + "@org_golang_x_text//encoding/korean:korean", + "@org_golang_x_text//encoding/simplifiedchinese:simplifiedchinese", + "@org_golang_x_text//encoding/traditionalchinese:traditionalchinese", + "@org_golang_x_text//encoding/unicode/utf32:utf32", + "@org_golang_x_text//encoding/unicode:unicode", + "@org_golang_x_text//message/pipeline:pipeline", + "@org_golang_x_tools//blog:blog", + "@org_golang_x_tools//cmd/bundle:bundle", + "@org_golang_x_tools//cmd/callgraph:callgraph", + "@org_golang_x_tools//cmd/cover:cover", + "@org_golang_x_tools//cmd/file2fuzz:file2fuzz", + "@org_golang_x_tools//cmd/fiximports:fiximports", + "@org_golang_x_tools//cmd/godoc:godoc", + "@org_golang_x_tools//cmd/gorename:gorename", + "@org_golang_x_tools//cmd/guru:guru", + "@org_golang_x_tools//cmd/signature-fuzzer/fuzz-driver:fuzz-driver", + "@org_golang_x_tools//cmd/signature-fuzzer/fuzz-runner:fuzz-runner", + "@org_golang_x_tools//cmd/stringer:stringer", + "@org_golang_x_tools//container/intsets:intsets", + "@org_golang_x_tools//copyright:copyright", + "@org_golang_x_tools//go/analysis/analysistest:analysistest", + "@org_golang_x_tools//go/analysis/multichecker:multichecker", + "@org_golang_x_tools//go/analysis/passes/asmdecl:asmdecl", + "@org_golang_x_tools//go/analysis/passes/assign:assign", + "@org_golang_x_tools//go/analysis/passes/atomic:atomic", + "@org_golang_x_tools//go/analysis/passes/atomicalign:atomicalign", + "@org_golang_x_tools//go/analysis/passes/bools:bools", + "@org_golang_x_tools//go/analysis/passes/buildssa:buildssa", + "@org_golang_x_tools//go/analysis/passes/buildtag:buildtag", + "@org_golang_x_tools//go/analysis/passes/cgocall:cgocall", + "@org_golang_x_tools//go/analysis/passes/composite:composite", + "@org_golang_x_tools//go/analysis/passes/copylock:copylock", + "@org_golang_x_tools//go/analysis/passes/ctrlflow:ctrlflow", + "@org_golang_x_tools//go/analysis/passes/deepequalerrors:deepequalerrors", + "@org_golang_x_tools//go/analysis/passes/errorsas:errorsas", + "@org_golang_x_tools//go/analysis/passes/fieldalignment:fieldalignment", + "@org_golang_x_tools//go/analysis/passes/findcall:findcall", + "@org_golang_x_tools//go/analysis/passes/framepointer:framepointer", + "@org_golang_x_tools//go/analysis/passes/httpresponse:httpresponse", + "@org_golang_x_tools//go/analysis/passes/ifaceassert:ifaceassert", + "@org_golang_x_tools//go/analysis/passes/loopclosure:loopclosure", + "@org_golang_x_tools//go/analysis/passes/lostcancel:lostcancel", + "@org_golang_x_tools//go/analysis/passes/nilfunc:nilfunc", + "@org_golang_x_tools//go/analysis/passes/nilness:nilness", + "@org_golang_x_tools//go/analysis/passes/pkgfact:pkgfact", + "@org_golang_x_tools//go/analysis/passes/printf:printf", + "@org_golang_x_tools//go/analysis/passes/reflectvaluecompare:reflectvaluecompare", + "@org_golang_x_tools//go/analysis/passes/shadow:shadow", + "@org_golang_x_tools//go/analysis/passes/shift:shift", + "@org_golang_x_tools//go/analysis/passes/sigchanyzer:sigchanyzer", + "@org_golang_x_tools//go/analysis/passes/sortslice:sortslice", + "@org_golang_x_tools//go/analysis/passes/stdmethods:stdmethods", + "@org_golang_x_tools//go/analysis/passes/stringintconv:stringintconv", + "@org_golang_x_tools//go/analysis/passes/structtag:structtag", + "@org_golang_x_tools//go/analysis/passes/testinggoroutine:testinggoroutine", + "@org_golang_x_tools//go/analysis/passes/tests:tests", + "@org_golang_x_tools//go/analysis/passes/unmarshal:unmarshal", + "@org_golang_x_tools//go/analysis/passes/unreachable:unreachable", + "@org_golang_x_tools//go/analysis/passes/unsafeptr:unsafeptr", + "@org_golang_x_tools//go/analysis/passes/unusedresult:unusedresult", + "@org_golang_x_tools//go/analysis/passes/unusedwrite:unusedwrite", + "@org_golang_x_tools//go/analysis/passes/timeformat:timeformat", + "@org_golang_x_tools//go/analysis/passes/usesgenerics:usesgenerics", + "@org_golang_x_tools//go/analysis/unitchecker:unitchecker", + "@org_golang_x_tools//go/ast/inspector:inspector", + "@org_golang_x_tools//go/buildutil:buildutil", + "@org_golang_x_tools//go/callgraph/cha:cha", + "@org_golang_x_tools//go/callgraph/rta:rta", + "@org_golang_x_tools//go/callgraph/vta:vta", + "@org_golang_x_tools//go/expect:expect", + "@org_golang_x_tools//go/gccgoexportdata:gccgoexportdata", + "@org_golang_x_tools//go/gcexportdata:gcexportdata", + "@org_golang_x_tools//go/loader:loader", + "@org_golang_x_tools//go/packages/packagestest/testdata:testdata", + "@org_golang_x_tools//go/packages/packagestest:packagestest", + "@org_golang_x_tools//go/packages:packages", + "@org_golang_x_tools//go/pointer:pointer", + "@org_golang_x_tools//go/ssa/interp:interp", + "@org_golang_x_tools//go/ssa/ssautil:ssautil", + "@org_golang_x_tools//go/ssa:ssa", + "@org_golang_x_tools//go/types/typeutil:typeutil", + "@org_golang_x_tools//go/types/objectpath:objectpath", + "@org_golang_x_tools//godoc/static:static", + "@org_golang_x_tools//godoc/vfs/zipfs:zipfs", + "@org_golang_x_tools//godoc:godoc", + "@org_golang_x_tools//present:present", + "@org_golang_x_tools//refactor/eg:eg", + "@org_golang_x_tools//refactor/importgraph:importgraph", + "@org_golang_x_tools//refactor/rename:rename", + "@org_golang_x_mod//sumdb/tlog:tlog", + "@org_golang_x_mod//zip:zip", + ], +) diff --git a/tests/integration/popular_repos/popular_repos.py b/tests/integration/popular_repos/popular_repos.py index c846302b..d61ec9b5 100755 --- a/tests/integration/popular_repos/popular_repos.py +++ b/tests/integration/popular_repos/popular_repos.py @@ -258,6 +258,10 @@ It helps catch changes that might break a large number of users. """.lstrip() +LOAD_BAZEL_TEST_RULE = """ +load("@bazel_skylib//rules:build_test.bzl", "build_test") +""" + def popular_repos_bzl(): with open(path.join(path.dirname(__file__), "popular_repos.bzl"), "w") as f: f.write(BZL_HEADER) @@ -272,6 +276,8 @@ def popular_repos_bzl(): def build_bazel(): with open(path.join(path.dirname(__file__), "BUILD.bazel"), "w") as f: f.write(BUILD_HEADER) + f.write("\n" + LOAD_BAZEL_TEST_RULE) + need_test = [] for repo in POPULAR_REPOS: name = repo["name"] tests = check_output(["bazel", "query", "kind(go_test, \"@{}//...\")".format(name)], text=True).split("\n") @@ -282,6 +288,7 @@ def build_bazel(): invalid_excludes = [t for t in excludes if not t in tests] if invalid_excludes: exit("Invalid excludes found: {}".format(invalid_excludes)) + need_test.extend(excludes) f.write('\ntest_suite(\n') f.write(' name = "{}",\n'.format(name)) f.write(' tests = [\n') @@ -295,6 +302,19 @@ def build_bazel(): f.write(')\n') repo["actual"] = actual + # add bazel test rule + f.write('\nbuild_test(\n') + f.write(' name = "{}",\n'.format("need_test")) + f.write(' targets = [\n') + for package in need_test: + if "/internal/" not in package and "/testdata/" not in package: + if package.endswith("_test"): + f.write(' "{}",\n'.format(package[:-5])) + else: + f.write(' "{}",\n'.format(package)) + f.write(' ],\n') + f.write(')\n') + def readme_rst(): with open(path.join(path.dirname(__file__), "README.rst"), "w") as f: f.write(DOCUMENTATION_HEADER) -- cgit v1.2.3