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

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