github.com/u-root/u-root@v7.0.1-0.20200915234505-ad7babab0a8e+incompatible/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  	"github.com/u-root/u-root/pkg/vfile"
    18  )
    19  
    20  func TestLinuxLabel(t *testing.T) {
    21  	dir, err := ioutil.TempDir("", "foo")
    22  	if err != nil {
    23  		t.Fatal(err)
    24  	}
    25  	defer os.RemoveAll(dir)
    26  
    27  	osKernel, err := os.Create(filepath.Join(dir, "kernel"))
    28  	if err != nil {
    29  		t.Fatal(err)
    30  	}
    31  
    32  	osInitrd, err := os.Create(filepath.Join(dir, "initrd"))
    33  	if err != nil {
    34  		t.Fatal(err)
    35  	}
    36  
    37  	k, _ := url.Parse("http://127.0.0.1/kernel")
    38  	i1, _ := url.Parse("http://127.0.0.1/initrd1")
    39  	i2, _ := url.Parse("http://127.0.0.1/initrd2")
    40  	httpKernel, _ := curl.LazyFetch(k)
    41  	httpInitrd1, _ := curl.LazyFetch(i1)
    42  	httpInitrd2, _ := curl.LazyFetch(i2)
    43  
    44  	for _, tt := range []struct {
    45  		desc string
    46  		img  *LinuxImage
    47  		want string
    48  	}{
    49  		{
    50  			desc: "os.File",
    51  			img: &LinuxImage{
    52  				Kernel: osKernel,
    53  				Initrd: osInitrd,
    54  			},
    55  			want: fmt.Sprintf("Linux(kernel=%s/kernel initrd=%s/initrd)", dir, dir),
    56  		},
    57  		{
    58  			desc: "lazy file",
    59  			img: &LinuxImage{
    60  				Kernel: uio.NewLazyFile(filepath.Join(dir, "kernel")),
    61  				Initrd: uio.NewLazyFile(filepath.Join(dir, "initrd")),
    62  			},
    63  			want: fmt.Sprintf("Linux(kernel=%s/kernel initrd=%s/initrd)", dir, dir),
    64  		},
    65  		{
    66  			desc: "concat lazy file",
    67  			img: &LinuxImage{
    68  				Kernel: uio.NewLazyFile(filepath.Join(dir, "kernel")),
    69  				Initrd: CatInitrds(
    70  					uio.NewLazyFile(filepath.Join(dir, "initrd")),
    71  					uio.NewLazyFile(filepath.Join(dir, "initrd")),
    72  				),
    73  			},
    74  			want: fmt.Sprintf("Linux(kernel=%s/kernel initrd=%s/initrd,%s/initrd)", dir, dir, dir),
    75  		},
    76  		{
    77  			desc: "curl lazy file",
    78  			img: &LinuxImage{
    79  				Kernel: httpKernel,
    80  				Initrd: CatInitrds(
    81  					httpInitrd1,
    82  					httpInitrd2,
    83  				),
    84  			},
    85  			want: "Linux(kernel=http://127.0.0.1/kernel initrd=http://127.0.0.1/initrd1,http://127.0.0.1/initrd2)",
    86  		},
    87  		{
    88  			desc: "verified file",
    89  			img: &LinuxImage{
    90  				Kernel: &vfile.File{Reader: nil, FileName: "/boot/foobar"},
    91  				Initrd: CatInitrds(
    92  					&vfile.File{Reader: nil, FileName: "/boot/initrd1"},
    93  					&vfile.File{Reader: nil, FileName: "/boot/initrd2"},
    94  				),
    95  			},
    96  			want: "Linux(kernel=/boot/foobar initrd=/boot/initrd1,/boot/initrd2)",
    97  		},
    98  	} {
    99  		t.Run(tt.desc, func(t *testing.T) {
   100  			got := tt.img.Label()
   101  			if got != tt.want {
   102  				t.Errorf("Label() = %s, want %s", got, tt.want)
   103  			}
   104  		})
   105  	}
   106  }