|  | #  Copyright 2020 The Monogon Project Authors. | 
|  | # | 
|  | #  SPDX-License-Identifier: Apache-2.0 | 
|  | # | 
|  | #  Licensed under the Apache License, Version 2.0 (the "License"); | 
|  | #  you may not use this file except in compliance with the License. | 
|  | #  You may obtain a copy of the License at | 
|  | # | 
|  | #      http://www.apache.org/licenses/LICENSE-2.0 | 
|  | # | 
|  | #  Unless required by applicable law or agreed to in writing, software | 
|  | #  distributed under the License is distributed on an "AS IS" BASIS, | 
|  | #  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
|  | #  See the License for the specific language governing permissions and | 
|  | #  limitations under the License. | 
|  |  | 
|  | """ | 
|  | Ktest provides a macro to run tests under a normal Metropolis node kernel | 
|  | """ | 
|  |  | 
|  | load("//metropolis/node/build:def.bzl", "node_initramfs") | 
|  |  | 
|  | def _dict_union(x, y): | 
|  | z = {} | 
|  | z.update(x) | 
|  | z.update(y) | 
|  | return z | 
|  |  | 
|  | def ktest(tester, cmdline = "", files = {}, files_cc = {}): | 
|  | node_initramfs( | 
|  | name = "test_initramfs", | 
|  | fsspecs = [ | 
|  | "//metropolis/node/build:earlydev.fsspec", | 
|  | ], | 
|  | files = _dict_union({ | 
|  | "//metropolis/test/ktest/init": "/init", | 
|  | tester: "/tester", | 
|  | }, files), | 
|  | files_cc = files_cc, | 
|  | testonly = True, | 
|  | ) | 
|  |  | 
|  | native.sh_test( | 
|  | name = "ktest", | 
|  | args = [ | 
|  | "$(location //metropolis/test/ktest)", | 
|  | "$(location :test_initramfs)", | 
|  | "$(location //metropolis/test/ktest:linux-testing)", | 
|  | cmdline, | 
|  | ], | 
|  | size = "small", | 
|  | srcs = ["//metropolis/test/ktest:test-script"], | 
|  | data = [ | 
|  | "//metropolis/test/ktest", | 
|  | ":test_initramfs", | 
|  | "//metropolis/test/ktest:linux-testing", | 
|  | "@com_github_bonzini_qboot//:qboot-bin", | 
|  | ], | 
|  | ) |