78 lines
1.4 KiB
Go
78 lines
1.4 KiB
Go
package rootlessnetns
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"strconv"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func Test_refCount(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
content string
|
|
inc int
|
|
want int
|
|
}{
|
|
{
|
|
name: "init counter",
|
|
inc: 1,
|
|
want: 1,
|
|
},
|
|
{
|
|
name: "simple add",
|
|
inc: 5,
|
|
want: 5,
|
|
},
|
|
{
|
|
name: "add multiple with content",
|
|
content: "0",
|
|
inc: 5,
|
|
want: 5,
|
|
},
|
|
{
|
|
name: "add multiple with high number content",
|
|
content: "5500",
|
|
inc: 2,
|
|
want: 5502,
|
|
},
|
|
{
|
|
name: "simple dec",
|
|
content: "5",
|
|
inc: -5,
|
|
want: 0,
|
|
},
|
|
{
|
|
name: "dec negative should not go below 0",
|
|
content: "0",
|
|
inc: -5,
|
|
want: 0,
|
|
},
|
|
{
|
|
name: "dec multiple with high number content",
|
|
content: "9800",
|
|
inc: -100,
|
|
want: 9700,
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
dir := t.TempDir()
|
|
file := filepath.Join(dir, refCountFile)
|
|
if tt.content != "" {
|
|
err := os.WriteFile(file, []byte(tt.content), 0o700)
|
|
assert.NoError(t, err, "write file error")
|
|
}
|
|
|
|
got, err := refCount(dir, tt.inc)
|
|
assert.NoError(t, err, "refCount() error")
|
|
assert.Equal(t, tt.want, got, "counter is equal")
|
|
content, err := os.ReadFile(file)
|
|
assert.NoError(t, err, "read file error")
|
|
assert.Equal(t, strconv.Itoa(tt.want), string(content), "file content after refCount()")
|
|
})
|
|
}
|
|
}
|