osbase/bringup/test: replace test builds with macro

This just makes the BUILD.bazel a bit more readable

Change-Id: If9ca4b8776c2b428da467dcd8627e839bac37468
Reviewed-on: https://review.monogon.dev/c/monogon/+/3904
Reviewed-by: Lorenz Brun <lorenz@monogon.tech>
Tested-by: Jenkins CI
diff --git a/osbase/bringup/test/BUILD.bazel b/osbase/bringup/test/BUILD.bazel
index 103b2b4..66803bb 100644
--- a/osbase/bringup/test/BUILD.bazel
+++ b/osbase/bringup/test/BUILD.bazel
@@ -1,6 +1,11 @@
-load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library", "go_test")
-load("//osbase/build/mkcpio:def.bzl", "node_initramfs")
-load("//osbase/build/mkpayload:def.bzl", "efi_unified_kernel_image")
+load("@io_bazel_rules_go//go:def.bzl", "go_test")
+load(":bringup.bzl", "bringup_test")
+
+bringup_test(variant = "succeeded")
+
+bringup_test(variant = "error")
+
+bringup_test(variant = "panic")
 
 go_test(
     name = "test_test",
@@ -27,127 +32,3 @@
         "@io_bazel_rules_go//go/runfiles",
     ],
 )
-
-# TODO(tim): Replace instances with macro
-go_library(
-    name = "succeeded_lib",
-    srcs = ["main_succeeded.go"],
-    importpath = "source.monogon.dev/osbase/bringup/test",
-    visibility = ["//visibility:private"],
-    deps = [
-        "//osbase/bootparam",
-        "//osbase/bringup",
-        "//osbase/efivarfs",
-        "//osbase/logtree",
-        "//osbase/supervisor",
-        "@org_golang_x_sys//unix",
-        "@org_uber_go_multierr//:multierr",
-    ],
-)
-
-go_binary(
-    name = "succeeded",
-    embed = [":succeeded_lib"],
-    visibility = ["//visibility:private"],
-)
-
-node_initramfs(
-    name = "initramfs_succeeded",
-    files = {
-        "/init": ":succeeded",
-    },
-    fsspecs = [
-        "//osbase/build:earlydev.fsspec",
-    ],
-    visibility = ["//visibility:private"],
-)
-
-efi_unified_kernel_image(
-    name = "kernel_succeeded",
-    cmdline = "quiet console=ttyS0 init=/init",
-    initrd = [":initramfs_succeeded"],
-    kernel = "//third_party/linux",
-    visibility = ["//visibility:private"],
-)
-
-go_library(
-    name = "panic_lib",
-    srcs = ["main_panic.go"],
-    importpath = "source.monogon.dev/osbase/bringup/test",
-    visibility = ["//visibility:private"],
-    deps = [
-        "//osbase/bootparam",
-        "//osbase/bringup",
-        "//osbase/efivarfs",
-        "//osbase/logtree",
-        "//osbase/supervisor",
-        "@org_golang_x_sys//unix",
-        "@org_uber_go_multierr//:multierr",
-    ],
-)
-
-go_binary(
-    name = "panic",
-    embed = [":panic_lib"],
-    visibility = ["//visibility:private"],
-)
-
-node_initramfs(
-    name = "initramfs_panic",
-    files = {
-        "/init": ":panic",
-    },
-    fsspecs = [
-        "//osbase/build:earlydev.fsspec",
-    ],
-    visibility = ["//visibility:private"],
-)
-
-efi_unified_kernel_image(
-    name = "kernel_panic",
-    cmdline = "quiet console=ttyS0 init=/init",
-    initrd = [":initramfs_panic"],
-    kernel = "//third_party/linux",
-    visibility = ["//visibility:private"],
-)
-
-go_library(
-    name = "error_lib",
-    srcs = ["main_error.go"],
-    importpath = "source.monogon.dev/osbase/bringup/test",
-    visibility = ["//visibility:private"],
-    deps = [
-        "//osbase/bootparam",
-        "//osbase/bringup",
-        "//osbase/efivarfs",
-        "//osbase/logtree",
-        "//osbase/supervisor",
-        "@org_golang_x_sys//unix",
-        "@org_uber_go_multierr//:multierr",
-    ],
-)
-
-go_binary(
-    name = "error",
-    embed = [":error_lib"],
-    visibility = ["//visibility:private"],
-)
-
-node_initramfs(
-    name = "initramfs_error",
-    files = {
-        "/init": ":error",
-    },
-    fsspecs = [
-        "//osbase/build:earlydev.fsspec",
-    ],
-    visibility = ["//visibility:private"],
-)
-
-efi_unified_kernel_image(
-    name = "kernel_error",
-    cmdline = "quiet console=ttyS0 init=/init",
-    initrd = [":initramfs_error"],
-    kernel = "//third_party/linux",
-    visibility = ["//visibility:private"],
-)
diff --git a/osbase/bringup/test/bringup.bzl b/osbase/bringup/test/bringup.bzl
new file mode 100644
index 0000000..eeea1b2
--- /dev/null
+++ b/osbase/bringup/test/bringup.bzl
@@ -0,0 +1,46 @@
+load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library")
+load("//osbase/build/mkcpio:def.bzl", "node_initramfs")
+load("//osbase/build/mkpayload:def.bzl", "efi_unified_kernel_image")
+
+# buildifier: disable=unnamed-macro
+def bringup_test(variant):
+    go_library(
+        name = "%s_lib" % variant,
+        srcs = ["main_%s.go" % variant],
+        importpath = "source.monogon.dev/osbase/bringup/test",
+        visibility = ["//visibility:private"],
+        deps = [
+            "//osbase/bootparam",
+            "//osbase/bringup",
+            "//osbase/efivarfs",
+            "//osbase/logtree",
+            "//osbase/supervisor",
+            "@org_golang_x_sys//unix",
+            "@org_uber_go_multierr//:multierr",
+        ],
+    )
+
+    go_binary(
+        name = "%s_bin" % variant,
+        embed = [":%s_lib" % variant],
+        visibility = ["//visibility:private"],
+    )
+
+    node_initramfs(
+        name = "initramfs_%s" % variant,
+        files = {
+            "/init": ":%s_bin" % variant,
+        },
+        fsspecs = [
+            "//osbase/build:earlydev.fsspec",
+        ],
+        visibility = ["//visibility:private"],
+    )
+
+    efi_unified_kernel_image(
+        name = "kernel_%s" % variant,
+        cmdline = "quiet console=ttyS0 init=/init",
+        initrd = [":initramfs_%s" % variant],
+        kernel = "//third_party/linux",
+        visibility = ["//visibility:private"],
+    )