package daemon

import (
	"os"
	"path/filepath"
	"testing"

	"gotest.tools/v3/assert"
)

func TestCreateIfNotExists(t *testing.T) {
	t.Run("directory", func(t *testing.T) {
		toCreate := filepath.Join(t.TempDir(), "tocreate")

		err := createIfNotExists(toCreate, true)
		assert.NilError(t, err)

		fileinfo, err := os.Stat(toCreate)
		assert.NilError(t, err, "Did not create destination")
		assert.Assert(t, fileinfo.IsDir(), "Should have been a dir, seems it's not")

		err = createIfNotExists(toCreate, true)
		assert.NilError(t, err, "Should not fail if already exists")
	})
	t.Run("file", func(t *testing.T) {
		toCreate := filepath.Join(t.TempDir(), "file/to/create")

		err := createIfNotExists(toCreate, false)
		assert.NilError(t, err)

		fileinfo, err := os.Stat(toCreate)
		assert.NilError(t, err, "Did not create destination")

		assert.Assert(t, !fileinfo.IsDir(), "Should have been a file, but created a directory")

		err = createIfNotExists(toCreate, true)
		assert.NilError(t, err, "Should not fail if already exists")
	})
}