github.com/kubri/kubri@v0.5.1-0.20240317001612-bda2aaef967e/integrations/sparkle/os_test.go (about)

     1  package sparkle_test
     2  
     3  import (
     4  	"errors"
     5  	"testing"
     6  
     7  	"github.com/kubri/kubri/integrations/sparkle"
     8  )
     9  
    10  func TestOS_MarshalText(t *testing.T) {
    11  	tests := []struct {
    12  		in   sparkle.OS
    13  		want string
    14  		err  error
    15  	}{
    16  		{sparkle.MacOS, "macos", nil},
    17  		{sparkle.Windows, "windows", nil},
    18  		{sparkle.Windows64, "windows-x64", nil},
    19  		{sparkle.Windows32, "windows-x86", nil},
    20  		{sparkle.Unknown, "", nil},
    21  		{99, "", sparkle.ErrUnknownOS},
    22  	}
    23  
    24  	for _, test := range tests {
    25  		got, err := test.in.MarshalText()
    26  		if !errors.Is(err, test.err) {
    27  			t.Errorf("%T(%d): want error '%v' got '%v'", test.in, test.in, test.err, err)
    28  		} else if string(got) != test.want {
    29  			t.Errorf("%T(%d): want '%s' got '%s'", test.in, test.in, test.want, got)
    30  		}
    31  	}
    32  }
    33  
    34  func TestOS_UnmarshalText(t *testing.T) {
    35  	tests := []struct {
    36  		in   string
    37  		want sparkle.OS
    38  		err  error
    39  	}{
    40  		{"macos", sparkle.MacOS, nil},
    41  		{"windows", sparkle.Windows, nil},
    42  		{"windows-x64", sparkle.Windows64, nil},
    43  		{"windows-x86", sparkle.Windows32, nil},
    44  		{"", sparkle.Unknown, nil},
    45  		{"foo", sparkle.Unknown, sparkle.ErrUnknownOS},
    46  	}
    47  
    48  	for _, test := range tests {
    49  		var got sparkle.OS
    50  		err := got.UnmarshalText([]byte(test.in))
    51  		if !errors.Is(err, test.err) {
    52  			t.Errorf("%s: want error '%v' got '%v'", test.in, test.err, err)
    53  		} else if got != test.want {
    54  			t.Errorf("%s: want '%s' got '%s'", test.in, test.want, got)
    55  		}
    56  	}
    57  }
    58  
    59  func TestIsOS(t *testing.T) {
    60  	tests := []struct {
    61  		a, b sparkle.OS
    62  		want bool
    63  	}{
    64  		{sparkle.MacOS, sparkle.MacOS, true},
    65  		{sparkle.MacOS, sparkle.Windows, false},
    66  		{sparkle.Windows32, sparkle.Windows, true},
    67  		{sparkle.Windows64, sparkle.Windows, true},
    68  		{sparkle.Unknown, sparkle.MacOS, false},
    69  		{sparkle.MacOS, sparkle.Unknown, true},
    70  	}
    71  
    72  	for _, test := range tests {
    73  		if got := sparkle.IsOS(test.a, test.b); got != test.want {
    74  			t.Errorf("%s == %s: want '%t' got '%t'", test.a, test.b, test.want, got)
    75  		}
    76  	}
    77  }
    78  
    79  func TestDetectOS(t *testing.T) {
    80  	tests := []struct {
    81  		in   string
    82  		want sparkle.OS
    83  	}{
    84  		{"test", sparkle.Unknown},
    85  		{"test.dmg", sparkle.MacOS},
    86  		{"test.pkg", sparkle.MacOS},
    87  		{"test.exe", sparkle.Windows},
    88  		{"test.msi", sparkle.Windows},
    89  		{"test_32bit.exe", sparkle.Windows32},
    90  		{"test_x86.msi", sparkle.Windows32},
    91  		{"test_i386.msi", sparkle.Windows32},
    92  		{"test_ia32.msi", sparkle.Windows32},
    93  		{"test_64-bit.exe", sparkle.Windows64},
    94  		{"test_x86_64.msi", sparkle.Windows64},
    95  		{"test_x64.msi", sparkle.Windows64},
    96  		{"test_amd64.msi", sparkle.Windows64},
    97  	}
    98  
    99  	for _, test := range tests {
   100  		if got := sparkle.DetectOS(test.in); got != test.want {
   101  			t.Errorf("%s: want '%s' got '%s'", test.in, test.want, got)
   102  		}
   103  	}
   104  }