github.com/u-root/u-root@v7.0.1-0.20200915234505-ad7babab0a8e+incompatible/pkg/uefivars/boot/boot_test.go (about) 1 // Copyright 2020 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 // 5 // SPDX-License-Identifier: BSD-3-Clause 6 // 7 8 package boot 9 10 import ( 11 "os" 12 "testing" 13 14 "github.com/u-root/u-root/pkg/uefivars" 15 "github.com/u-root/u-root/pkg/uefivars/vartest" 16 ) 17 18 // main is needed to extract the testdata from a zip to temp dir, and to clean 19 // up the temp dir after 20 func TestMain(m *testing.M) { 21 efiVarDir, cleanup, err := vartest.SetupVarZip("../testdata/sys_fw_efi_vars.zip") 22 if err != nil { 23 panic(err) 24 } 25 defer cleanup() 26 uefivars.EfiVarDir = efiVarDir 27 os.Exit(m.Run()) 28 } 29 30 //func ReadBootVar(num uint16) (b BootVar) 31 func TestReadBootVar(t *testing.T) { 32 var n uint16 33 var strs []string 34 for n = 0; n < 11; n++ { 35 b, err := ReadBootVar(n) 36 if err != nil { 37 t.Error(err) 38 } 39 strs = append(strs, b.String()) 40 } 41 if t.Failed() { 42 for _, s := range strs { 43 t.Log(s) 44 } 45 } 46 } 47 48 //func AllBootEntryVars() (list []BootEntryVar) 49 func TestAllBootEntryVars(t *testing.T) { 50 bevs := AllBootEntryVars() 51 if len(bevs) != 11 { 52 for i, e := range bevs { 53 t.Logf("#%d: %s", i, e) 54 } 55 t.Errorf("expected 11 boot vars, got %d", len(bevs)) 56 } 57 } 58 59 //func AllBootVars() (list EfiVars) 60 func TestAllBootVars(t *testing.T) { 61 n := 14 62 bvs := AllBootVars() 63 if len(bvs) != n { 64 t.Errorf("expected %d boot vars, got %d", n, len(bvs)) 65 } 66 be := bvs.Filter(BootEntryFilter) 67 if len(be) != n-3 { 68 t.Errorf("expected %d entries, got %d", n-3, len(be)) 69 } 70 //find boot vars that are not boot entries 71 nbe := bvs.Filter(uefivars.NotFilter(BootEntryFilter)) 72 want := []string{"BootCurrent", "BootOptionSupport", "BootOrder"} 73 if len(nbe) != len(want) { 74 t.Fatalf("want %d got %d", len(want), len(nbe)) 75 } 76 for i, bv := range nbe { 77 s := bv.Name 78 if i >= len(want) || s != want[i] { 79 t.Errorf("%d: %s", i, s) 80 } 81 } 82 } 83 84 //func ReadCurrentBootVar() (b *BootEntryVar) 85 func TestReadCurrentBootVar(t *testing.T) { 86 v, err := ReadCurrentBootVar() 87 if err != nil { 88 t.Error(err) 89 } 90 91 if v == nil { 92 t.Fatal("nil") 93 } 94 if v.Number != 10 { 95 t.Errorf("expected 10, got %d", v.Number) 96 } 97 if t.Failed() { 98 t.Log(v) 99 } 100 } 101 102 //func BootCurrent(vars uefivars.EfiVars) *BootCurrentVar 103 func TestBootCurrent(t *testing.T) { 104 bc := BootCurrent(AllBootVars()) 105 if bc == nil { 106 t.Fatal("nil") 107 } 108 var want uint16 = 10 109 if bc.Current != want { 110 t.Errorf("want %d got %d", want, bc.Current) 111 } 112 }