github.com/mvdan/u-root-coreutils@v0.0.0-20230122170626-c2eef2898555/pkg/boot/zbi/zbi_test.go (about) 1 // Copyright 2022 the u-root Authors. All rights reserved 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 package zbi 5 6 import ( 7 "fmt" 8 "reflect" 9 "testing" 10 ) 11 12 var testData = map[string]*Image{ 13 "chain-load-test.zbi": { 14 Header: NewContainerHeader(203560), 15 BootItems: []BootItem{ 16 { 17 Header: NewDefaultHeader(ZBITypeKernelX64, 203528), 18 PayloadAddress: 0x40, 19 }, 20 }, 21 Bootable: true, 22 }, 23 "x86-boot-shim-tests.zbi": { 24 25 Header: NewContainerHeader(264008), 26 BootItems: []BootItem{ 27 { 28 Header: NewDefaultHeader(ZBITypeKernelX64, 106520), 29 PayloadAddress: 0x40, 30 }, 31 { 32 Header: NewDefaultHeader(ZBITypeKernelX64, 101248), 33 PayloadAddress: 0x1a078, 34 }, 35 { 36 Header: NewDefaultHeader(ZBITypeKernelX64, 56144), 37 PayloadAddress: 0x32c18, 38 }, 39 }, 40 Bootable: true, 41 }, 42 "zbi-chain-load-hello-world-test.zbi": { 43 Header: NewContainerHeader(228064), 44 BootItems: []BootItem{ 45 { 46 Header: NewDefaultHeader(ZBITypeKernelX64, 203528), 47 PayloadAddress: 0x40, 48 }, 49 { 50 Header: Header{ 51 Type: ZBITypeStorageKernel, 52 Length: 24467, 53 Extra: 0xdb90, 54 Flags: 0x30001, 55 Reserved0: 0, 56 Reserved1: 0, 57 Magic: ItemMagic, 58 CRC32: 0x9d0920d0, 59 }, 60 PayloadAddress: 0x31b68, 61 }, 62 }, 63 Bootable: true, 64 }, 65 } 66 67 func TestLoad(t *testing.T) { 68 for filename, expected := range testData { 69 actual, err := Load(fmt.Sprintf("testdata/%s", filename)) 70 if err != nil { 71 t.Fatalf("Failed to load %s: %s", filename, err) 72 } 73 if !reflect.DeepEqual(actual, expected) { 74 t.Errorf(`Parse("testdata/%s") = %#v; want %#v`, filename, actual, expected) 75 } 76 } 77 } 78 79 func NewDefaultHeader(itemType ZBIType, length uint32) Header { 80 return Header{ 81 Type: itemType, 82 Length: length, 83 Extra: 0, 84 Flags: VersionFlag, 85 Reserved0: 0, 86 Reserved1: 0, 87 Magic: ItemMagic, 88 CRC32: NoCRC32Flag, 89 } 90 }