mirror of
https://github.com/stashapp/stash.git
synced 2025-12-17 20:34:37 +03:00
fix DirExists (#1388)
This commit is contained in:
@@ -39,10 +39,12 @@ func FileExists(path string) (bool, error) {
|
|||||||
|
|
||||||
// DirExists returns true if the given path exists and is a directory
|
// DirExists returns true if the given path exists and is a directory
|
||||||
func DirExists(path string) (bool, error) {
|
func DirExists(path string) (bool, error) {
|
||||||
exists, _ := FileExists(path)
|
fileInfo, err := os.Stat(path)
|
||||||
fileInfo, _ := os.Stat(path)
|
if err != nil {
|
||||||
if !exists || !fileInfo.IsDir() {
|
return false, fmt.Errorf("path doesn't exist <%s>", path)
|
||||||
return false, fmt.Errorf("path either doesn't exist, or is not a directory <%s>", path)
|
}
|
||||||
|
if !fileInfo.IsDir() {
|
||||||
|
return false, fmt.Errorf("path is not a directory <%s>", path)
|
||||||
}
|
}
|
||||||
return true, nil
|
return true, nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
package utils
|
package utils
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"io/ioutil"
|
||||||
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
@@ -41,3 +43,40 @@ func TestIsPathInDir(t *testing.T) {
|
|||||||
assert.Equal(tc.expected, result, "[%d] expected: %t for dir: %s; pathToCheck: %s", i, tc.expected, tc.dir, tc.pathToCheck)
|
assert.Equal(tc.expected, result, "[%d] expected: %t for dir: %s; pathToCheck: %s", i, tc.expected, tc.dir, tc.pathToCheck)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestDirExists(t *testing.T) {
|
||||||
|
type test struct {
|
||||||
|
dir string
|
||||||
|
expected bool
|
||||||
|
}
|
||||||
|
|
||||||
|
const st = "stash_tmp"
|
||||||
|
|
||||||
|
tmp := os.TempDir()
|
||||||
|
tmpDir, err := ioutil.TempDir(tmp, st) // create a tmp dir in the system's tmp folder
|
||||||
|
if err == nil {
|
||||||
|
defer os.RemoveAll(tmpDir)
|
||||||
|
|
||||||
|
tmpFile, err := ioutil.TempFile(tmpDir, st)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
tmpFile.Close()
|
||||||
|
|
||||||
|
tests := []test{
|
||||||
|
{dir: tmpDir, expected: true}, // exists
|
||||||
|
{dir: tmpFile.Name(), expected: false}, // not a directory
|
||||||
|
{dir: filepath.Join(tmpDir, st), expected: false}, // doesn't exist
|
||||||
|
{dir: "\000x", expected: false}, // stat error \000 (ASCII: NUL) is an invalid character in unix,ntfs file names.
|
||||||
|
}
|
||||||
|
|
||||||
|
assert := assert.New(t)
|
||||||
|
|
||||||
|
for i, tc := range tests {
|
||||||
|
result, _ := DirExists(tc.dir)
|
||||||
|
assert.Equal(tc.expected, result, "[%d] expected: %t for dir: %s;", i, tc.expected, tc.dir)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user