1load("@my_rules_go//extras:gomock.bzl", "gomock") 2load("@my_rules_go//go:def.bzl", "go_binary", "go_library", "go_test") 3 4go_library( 5 name = "lib", 6 srcs = ["lib.go"], 7 importpath = "example.com/lib", 8) 9 10go_binary( 11 name = "main", 12 srcs = ["main.go"], 13 deps = [":lib"], 14) 15 16go_test( 17 name = "test", 18 srcs = ["test.go"], 19 embed = [":lib"], 20) 21 22go_library( 23 name = "mockable", 24 srcs = [ 25 "mockable.go", 26 ], 27 importpath = "example.com/mockable", 28) 29 30gomock( 31 name = "mocks", 32 out = "mockable_mock.go", 33 library = ":mockable", 34 package = "mockable", 35 source = "mockable.go", 36 visibility = ["//visibility:public"], 37) 38 39go_test( 40 name = "mockable_test", 41 srcs = [ 42 "mockable_mock.go", 43 "mockable_test.go", 44 ], 45 embed = [":mockable"], 46 deps = ["@my_rules_go//extras/gomock"], 47) 48 49sh_test( 50 name = "go_version_test", 51 srcs = ["go_version_test.sh"], 52 data = ["@my_rules_go//go"], 53 env = {"GO_TOOL_RLOCATION": "$(rlocationpath @my_rules_go//go)"}, 54 deps = ["@bazel_tools//tools/bash/runfiles"], 55) 56