github.com/insomniacslk/u-root@v0.0.0-20200717035308-96b791510d76/pkg/boot/linux_test.go (about) 1 // Copyright 2017-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 package boot 6 7 import ( 8 "fmt" 9 "io/ioutil" 10 "net/url" 11 "os" 12 "path/filepath" 13 "testing" 14 15 "github.com/u-root/u-root/pkg/curl" 16 "github.com/u-root/u-root/pkg/uio" 17 ) 18 19 func TestLinuxLabel(t *testing.T) { 20 dir, err := ioutil.TempDir("", "foo") 21 if err != nil { 22 t.Fatal(err) 23 } 24 defer os.RemoveAll(dir) 25 26 osKernel, err := os.Create(filepath.Join(dir, "kernel")) 27 if err != nil { 28 t.Fatal(err) 29 } 30 31 osInitrd, err := os.Create(filepath.Join(dir, "initrd")) 32 if err != nil { 33 t.Fatal(err) 34 } 35 36 k, _ := url.Parse("http://127.0.0.1/kernel") 37 i1, _ := url.Parse("http://127.0.0.1/initrd1") 38 i2, _ := url.Parse("http://127.0.0.1/initrd2") 39 httpKernel, _ := curl.LazyFetch(k) 40 httpInitrd1, _ := curl.LazyFetch(i1) 41 httpInitrd2, _ := curl.LazyFetch(i2) 42 43 for _, tt := range []struct { 44 desc string 45 img *LinuxImage 46 want string 47 }{ 48 { 49 desc: "os.File", 50 img: &LinuxImage{ 51 Kernel: osKernel, 52 Initrd: osInitrd, 53 }, 54 want: fmt.Sprintf("Linux(kernel=%s/kernel initrd=%s/initrd)", dir, dir), 55 }, 56 { 57 desc: "lazy file", 58 img: &LinuxImage{ 59 Kernel: uio.NewLazyFile(filepath.Join(dir, "kernel")), 60 Initrd: uio.NewLazyFile(filepath.Join(dir, "initrd")), 61 }, 62 want: fmt.Sprintf("Linux(kernel=%s/kernel initrd=%s/initrd)", dir, dir), 63 }, 64 { 65 desc: "concat lazy file", 66 img: &LinuxImage{ 67 Kernel: uio.NewLazyFile(filepath.Join(dir, "kernel")), 68 Initrd: CatInitrds( 69 uio.NewLazyFile(filepath.Join(dir, "initrd")), 70 uio.NewLazyFile(filepath.Join(dir, "initrd")), 71 ), 72 }, 73 want: fmt.Sprintf("Linux(kernel=%s/kernel initrd=%s/initrd,%s/initrd)", dir, dir, dir), 74 }, 75 { 76 desc: "curl lazy file", 77 img: &LinuxImage{ 78 Kernel: httpKernel, 79 Initrd: CatInitrds( 80 httpInitrd1, 81 httpInitrd2, 82 ), 83 }, 84 want: "Linux(kernel=http://127.0.0.1/kernel initrd=http://127.0.0.1/initrd1,http://127.0.0.1/initrd2)", 85 }, 86 } { 87 t.Run(tt.desc, func(t *testing.T) { 88 got := tt.img.Label() 89 if got != tt.want { 90 t.Errorf("Label() = %s, want %s", got, tt.want) 91 } 92 }) 93 } 94 }