github.com/tetratelabs/wazero@v1.2.1/internal/gojs/errno_test.go (about)

     1  package gojs
     2  
     3  import (
     4  	"io"
     5  	"syscall"
     6  	"testing"
     7  )
     8  
     9  func TestToErrno(t *testing.T) {
    10  	tests := []struct {
    11  		name     string
    12  		input    error
    13  		expected *Errno
    14  	}{
    15  		{
    16  			name: "nil is not an error",
    17  		},
    18  		{
    19  			name:  "io.EOF is not an error",
    20  			input: io.EOF,
    21  		},
    22  		{
    23  			name:     "syscall.EACCES",
    24  			input:    syscall.EACCES,
    25  			expected: ErrnoAcces,
    26  		},
    27  		{
    28  			name:     "syscall.EAGAIN",
    29  			input:    syscall.EAGAIN,
    30  			expected: ErrnoAgain,
    31  		},
    32  		{
    33  			name:     "syscall.EBADF",
    34  			input:    syscall.EBADF,
    35  			expected: ErrnoBadf,
    36  		},
    37  		{
    38  			name:     "syscall.EEXIST",
    39  			input:    syscall.EEXIST,
    40  			expected: ErrnoExist,
    41  		},
    42  		{
    43  			name:     "syscall.EFAULT",
    44  			input:    syscall.EFAULT,
    45  			expected: ErrnoFault,
    46  		},
    47  		{
    48  			name:     "syscall.EINTR",
    49  			input:    syscall.EINTR,
    50  			expected: ErrnoIntr,
    51  		},
    52  		{
    53  			name:     "syscall.EINVAL",
    54  			input:    syscall.EINVAL,
    55  			expected: ErrnoInval,
    56  		},
    57  		{
    58  			name:     "syscall.EIO",
    59  			input:    syscall.EIO,
    60  			expected: ErrnoIo,
    61  		},
    62  		{
    63  			name:     "syscall.EISDIR",
    64  			input:    syscall.EISDIR,
    65  			expected: ErrnoIsdir,
    66  		},
    67  		{
    68  			name:     "syscall.ELOOP",
    69  			input:    syscall.ELOOP,
    70  			expected: ErrnoLoop,
    71  		},
    72  		{
    73  			name:     "syscall.ENAMETOOLONG",
    74  			input:    syscall.ENAMETOOLONG,
    75  			expected: ErrnoNametoolong,
    76  		},
    77  		{
    78  			name:     "syscall.ENOENT",
    79  			input:    syscall.ENOENT,
    80  			expected: ErrnoNoent,
    81  		},
    82  		{
    83  			name:     "syscall.ENOSYS",
    84  			input:    syscall.ENOSYS,
    85  			expected: ErrnoNosys,
    86  		},
    87  		{
    88  			name:     "syscall.ENOTDIR",
    89  			input:    syscall.ENOTDIR,
    90  			expected: ErrnoNotdir,
    91  		},
    92  		{
    93  			name:     "syscall.ENOTEMPTY",
    94  			input:    syscall.ENOTEMPTY,
    95  			expected: ErrnoNotempty,
    96  		},
    97  		{
    98  			name:     "syscall.ENOTSUP",
    99  			input:    syscall.ENOTSUP,
   100  			expected: ErrnoNotsup,
   101  		},
   102  		{
   103  			name:     "syscall.EPERM",
   104  			input:    syscall.EPERM,
   105  			expected: ErrnoPerm,
   106  		},
   107  		{
   108  			name:     "syscall.EROFS",
   109  			input:    syscall.EROFS,
   110  			expected: ErrnoRofs,
   111  		},
   112  		{
   113  			name:     "syscall.Errno unexpected == ErrnoIo",
   114  			input:    syscall.Errno(0xfe),
   115  			expected: ErrnoIo,
   116  		},
   117  	}
   118  
   119  	for _, tt := range tests {
   120  		tc := tt
   121  		t.Run(tc.name, func(t *testing.T) {
   122  			if errno := ToErrno(tc.input); errno != tc.expected {
   123  				t.Fatalf("expected %#v but was %#v", tc.expected, errno)
   124  			}
   125  		})
   126  	}
   127  }