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  }