| #  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 = {}, fsspecs = [], files_cc = {}): | 
 |     node_initramfs( | 
 |         name = "test_initramfs", | 
 |         fsspecs = [ | 
 |             "//metropolis/node/build:earlydev.fsspec", | 
 |         ] + fsspecs, | 
 |         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", | 
 |         ], | 
 |     ) |