diff options
| author | Jakob Unterwurzacher | 2019-01-04 17:32:27 +0100 | 
|---|---|---|
| committer | Jakob Unterwurzacher | 2019-01-04 17:36:06 +0100 | 
| commit | a2f83acc303e7ba382c6cbd0e8d218832166fc4d (patch) | |
| tree | d2bac66ec085d38175cb2eed900147195a97ec79 /tests | |
| parent | cdb57ca7e0b99ee8e5a844d5177d03d5857fab27 (diff) | |
tests: fix VerifyExistence() helper, it missed unstat()able files
VerifyExistence missed unstat()able files in the directory listing
because ioutil.ReadDir() filtered them out.
https://github.com/rfjakob/gocryptfs/issues/285
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/test_helpers/helpers.go | 27 | 
1 files changed, 16 insertions, 11 deletions
| diff --git a/tests/test_helpers/helpers.go b/tests/test_helpers/helpers.go index 90eebdf..e735cf4 100644 --- a/tests/test_helpers/helpers.go +++ b/tests/test_helpers/helpers.go @@ -272,29 +272,34 @@ func TestRename(t *testing.T, plainDir string) {  // stat, open, readdir. Returns true if the path exists, false otherwise.  // Panics if the result is inconsistent.  func VerifyExistence(path string) bool { -	// Check that file can be stated +	// Check if file can be stat()ed  	stat := true -	_, err := os.Stat(path) +	fi, err := os.Stat(path)  	if err != nil { -		//t.Log(err)  		stat = false  	} -	// Check that file can be opened +	// Check if file can be opened  	open := true  	fd, err := os.Open(path)  	if err != nil { -		//t.Log(err)  		open = false  	}  	fd.Close() -	// Check that file shows up in directory listing +	// Check if file shows up in directory listing  	readdir := false  	dir := filepath.Dir(path)  	name := filepath.Base(path) -	fi, err := ioutil.ReadDir(dir) -	if err == nil { -		for _, i := range fi { -			if i.Name() == name { +	d, err := os.Open(dir) +	if err != nil && open == true { +		log.Panicf("we can open the file but not the parent dir!? err=%v", err) +	} else if err == nil { +		defer d.Close() +		listing, err := d.Readdirnames(0) +		if stat && fi.IsDir() && err != nil { +			log.Panicf("It's a directory, but readdirnames failed: %v", err) +		} +		for _, entry := range listing { +			if entry == name {  				readdir = true  			}  		} @@ -303,7 +308,7 @@ func VerifyExistence(path string) bool {  	if stat == open && open == readdir {  		return stat  	} -	log.Panicf("inconsistent result: stat=%v open=%v readdir=%v", stat, open, readdir) +	log.Panicf("inconsistent result on %q: stat=%v open=%v readdir=%v, path=%q", name, stat, open, readdir, path)  	return false  } | 
