diff options
| author | Jakob Unterwurzacher | 2019-01-01 22:27:40 +0100 | 
|---|---|---|
| committer | Jakob Unterwurzacher | 2019-01-01 22:27:40 +0100 | 
| commit | 035834dd5115cf5384e61dccfd2acc488990468f (patch) | |
| tree | 1445e5faf41f0dc675e89acee35318972dfdb088 | |
| parent | e276e255dc7d88099f35c890b704ce64117f731e (diff) | |
tests: ListFds: show r/w status
Also, drop entries that disappear while we stat them.
| -rw-r--r-- | tests/test_helpers/mount_unmount.go | 27 | 
1 files changed, 22 insertions, 5 deletions
| diff --git a/tests/test_helpers/mount_unmount.go b/tests/test_helpers/mount_unmount.go index 5035c2b..e2eaf1f 100644 --- a/tests/test_helpers/mount_unmount.go +++ b/tests/test_helpers/mount_unmount.go @@ -176,14 +176,31 @@ func ListFds(pid int) []string {  		log.Panic(err)  	}  	defer f.Close() +	// Note: Readdirnames filters "." and ".."  	names, err := f.Readdirnames(0)  	if err != nil {  		log.Panic(err)  	} -	for i, n := range names { -		// Note: Readdirnames filters "." and ".." -		target, _ := os.Readlink(dir + "/" + n) -		names[i] = n + "=" + target +	var out []string +	for _, n := range names { +		fdPath := dir + "/" + n +		fi, err := os.Lstat(fdPath) +		if err != nil { +			// fd was closed in the meantime +			continue +		} +		if fi.Mode()&0400 > 0 { +			n += "r" +		} +		if fi.Mode()&0200 > 0 { +			n += "w" +		} +		target, err := os.Readlink(fdPath) +		if err != nil { +			// fd was closed in the meantime +			continue +		} +		out = append(out, n+"="+target)  	} -	return names +	return out  } | 
