github.com/shiroyuki/docker@v1.9.0/pkg/parsers/kernel/kernel_test.go (about)

     1  package kernel
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  )
     7  
     8  func assertParseRelease(t *testing.T, release string, b *VersionInfo, result int) {
     9  	var (
    10  		a *VersionInfo
    11  	)
    12  	a, _ = ParseRelease(release)
    13  
    14  	if r := CompareKernelVersion(*a, *b); r != result {
    15  		t.Fatalf("Unexpected kernel version comparison result for (%v,%v). Found %d, expected %d", release, b, r, result)
    16  	}
    17  	if a.Flavor != b.Flavor {
    18  		t.Fatalf("Unexpected parsed kernel flavor.  Found %s, expected %s", a.Flavor, b.Flavor)
    19  	}
    20  }
    21  
    22  func TestParseRelease(t *testing.T) {
    23  	assertParseRelease(t, "3.8.0", &VersionInfo{Kernel: 3, Major: 8, Minor: 0}, 0)
    24  	assertParseRelease(t, "3.4.54.longterm-1", &VersionInfo{Kernel: 3, Major: 4, Minor: 54, Flavor: ".longterm-1"}, 0)
    25  	assertParseRelease(t, "3.4.54.longterm-1", &VersionInfo{Kernel: 3, Major: 4, Minor: 54, Flavor: ".longterm-1"}, 0)
    26  	assertParseRelease(t, "3.8.0-19-generic", &VersionInfo{Kernel: 3, Major: 8, Minor: 0, Flavor: "-19-generic"}, 0)
    27  	assertParseRelease(t, "3.12.8tag", &VersionInfo{Kernel: 3, Major: 12, Minor: 8, Flavor: "tag"}, 0)
    28  	assertParseRelease(t, "3.12-1-amd64", &VersionInfo{Kernel: 3, Major: 12, Minor: 0, Flavor: "-1-amd64"}, 0)
    29  	assertParseRelease(t, "3.8.0", &VersionInfo{Kernel: 4, Major: 8, Minor: 0}, -1)
    30  	// Errors
    31  	invalids := []string{
    32  		"3",
    33  		"a",
    34  		"a.a",
    35  		"a.a.a-a",
    36  	}
    37  	for _, invalid := range invalids {
    38  		expectedMessage := fmt.Sprintf("Can't parse kernel version %v", invalid)
    39  		if _, err := ParseRelease(invalid); err == nil || err.Error() != expectedMessage {
    40  
    41  		}
    42  	}
    43  }
    44  
    45  func assertKernelVersion(t *testing.T, a, b VersionInfo, result int) {
    46  	if r := CompareKernelVersion(a, b); r != result {
    47  		t.Fatalf("Unexpected kernel version comparison result. Found %d, expected %d", r, result)
    48  	}
    49  }
    50  
    51  func TestCompareKernelVersion(t *testing.T) {
    52  	assertKernelVersion(t,
    53  		VersionInfo{Kernel: 3, Major: 8, Minor: 0},
    54  		VersionInfo{Kernel: 3, Major: 8, Minor: 0},
    55  		0)
    56  	assertKernelVersion(t,
    57  		VersionInfo{Kernel: 2, Major: 6, Minor: 0},
    58  		VersionInfo{Kernel: 3, Major: 8, Minor: 0},
    59  		-1)
    60  	assertKernelVersion(t,
    61  		VersionInfo{Kernel: 3, Major: 8, Minor: 0},
    62  		VersionInfo{Kernel: 2, Major: 6, Minor: 0},
    63  		1)
    64  	assertKernelVersion(t,
    65  		VersionInfo{Kernel: 3, Major: 8, Minor: 0},
    66  		VersionInfo{Kernel: 3, Major: 8, Minor: 0},
    67  		0)
    68  	assertKernelVersion(t,
    69  		VersionInfo{Kernel: 3, Major: 8, Minor: 5},
    70  		VersionInfo{Kernel: 3, Major: 8, Minor: 0},
    71  		1)
    72  	assertKernelVersion(t,
    73  		VersionInfo{Kernel: 3, Major: 0, Minor: 20},
    74  		VersionInfo{Kernel: 3, Major: 8, Minor: 0},
    75  		-1)
    76  	assertKernelVersion(t,
    77  		VersionInfo{Kernel: 3, Major: 7, Minor: 20},
    78  		VersionInfo{Kernel: 3, Major: 8, Minor: 0},
    79  		-1)
    80  	assertKernelVersion(t,
    81  		VersionInfo{Kernel: 3, Major: 8, Minor: 20},
    82  		VersionInfo{Kernel: 3, Major: 7, Minor: 0},
    83  		1)
    84  	assertKernelVersion(t,
    85  		VersionInfo{Kernel: 3, Major: 8, Minor: 20},
    86  		VersionInfo{Kernel: 3, Major: 8, Minor: 0},
    87  		1)
    88  	assertKernelVersion(t,
    89  		VersionInfo{Kernel: 3, Major: 8, Minor: 0},
    90  		VersionInfo{Kernel: 3, Major: 8, Minor: 20},
    91  		-1)
    92  }