github.com/anth0d/nomad@v0.0.0-20221214183521-ae3a0a2cad06/drivers/docker/utils_unix_test.go (about)

     1  //go:build darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris
     2  
     3  package docker
     4  
     5  import (
     6  	"path/filepath"
     7  	"testing"
     8  
     9  	"github.com/hashicorp/nomad/ci"
    10  	"github.com/stretchr/testify/require"
    11  )
    12  
    13  func TestValidateCgroupPermission(t *testing.T) {
    14  	ci.Parallel(t)
    15  
    16  	positiveCases := []string{
    17  		"r",
    18  		"rw",
    19  		"rwm",
    20  		"mr",
    21  		"mrw",
    22  		"",
    23  	}
    24  
    25  	for _, c := range positiveCases {
    26  		t.Run("positive case: "+c, func(t *testing.T) {
    27  			require.True(t, validateCgroupPermission(c))
    28  		})
    29  	}
    30  
    31  	negativeCases := []string{
    32  		"q",
    33  		"asdf",
    34  		"rq",
    35  	}
    36  
    37  	for _, c := range negativeCases {
    38  		t.Run("negative case: "+c, func(t *testing.T) {
    39  			require.False(t, validateCgroupPermission(c))
    40  		})
    41  	}
    42  }
    43  
    44  func TestExpandPath(t *testing.T) {
    45  	ci.Parallel(t)
    46  
    47  	cases := []struct {
    48  		base     string
    49  		target   string
    50  		expected string
    51  	}{
    52  		{"/tmp/alloc/task", ".", "/tmp/alloc/task"},
    53  		{"/tmp/alloc/task", "..", "/tmp/alloc"},
    54  
    55  		{"/tmp/alloc/task", "d1/d2", "/tmp/alloc/task/d1/d2"},
    56  		{"/tmp/alloc/task", "../d1/d2", "/tmp/alloc/d1/d2"},
    57  		{"/tmp/alloc/task", "../../d1/d2", "/tmp/d1/d2"},
    58  
    59  		{"/tmp/alloc/task", "/home/user", "/home/user"},
    60  		{"/tmp/alloc/task", "/home/user/..", "/home"},
    61  	}
    62  
    63  	for _, c := range cases {
    64  		t.Run(c.expected, func(t *testing.T) {
    65  			require.Equal(t, c.expected, filepath.ToSlash(expandPath(c.base, c.target)))
    66  		})
    67  	}
    68  }