os.Stat: returned error on nonexistent path did not satisfy IsNotExist
Add direct test for the problem to make the fix commit clearer. Noticed while implementing MkdirTemp on mac; the upstream tests for MkdirTemp fail without this.
Этот коммит содержится в:
		
							родитель
							
								
									1f6b4a5e7b
								
							
						
					
					
						коммит
						d30f8b6ed6
					
				
					 2 изменённых файлов: 13 добавлений и 2 удалений
				
			
		| 
						 | 
				
			
			@ -4,6 +4,7 @@ package os_test
 | 
			
		|||
 | 
			
		||||
import (
 | 
			
		||||
	. "os"
 | 
			
		||||
	"path/filepath"
 | 
			
		||||
	"strconv"
 | 
			
		||||
	"testing"
 | 
			
		||||
	"time"
 | 
			
		||||
| 
						 | 
				
			
			@ -31,6 +32,16 @@ func TestMkdir(t *testing.T) {
 | 
			
		|||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestStatBadDir(t *testing.T) {
 | 
			
		||||
	dir := TempDir()
 | 
			
		||||
	badDir := filepath.Join(dir, "not-exist/really-not-exist")
 | 
			
		||||
	_, err := Stat(badDir)
 | 
			
		||||
	// TODO: PathError moved to io/fs in go 1.16; fix next line once we drop go 1.15 support.
 | 
			
		||||
	if pe, ok := err.(*PathError); !ok || !IsNotExist(err) || pe.Path != badDir {
 | 
			
		||||
		t.Errorf("Mkdir error = %#v; want PathError for path %q satisifying IsNotExist", err, badDir)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func writeFile(t *testing.T, fname string, flag int, text string) string {
 | 
			
		||||
	f, err := OpenFile(fname, flag, 0666)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -19,7 +19,7 @@ func (f *File) Sync() error {
 | 
			
		|||
func statNolog(name string) (FileInfo, error) {
 | 
			
		||||
	var fs fileStat
 | 
			
		||||
	err := ignoringEINTR(func() error {
 | 
			
		||||
		return syscall.Stat(name, &fs.sys)
 | 
			
		||||
		return handleSyscallError(syscall.Stat(name, &fs.sys))
 | 
			
		||||
	})
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, &PathError{Op: "stat", Path: name, Err: err}
 | 
			
		||||
| 
						 | 
				
			
			@ -32,7 +32,7 @@ func statNolog(name string) (FileInfo, error) {
 | 
			
		|||
func lstatNolog(name string) (FileInfo, error) {
 | 
			
		||||
	var fs fileStat
 | 
			
		||||
	err := ignoringEINTR(func() error {
 | 
			
		||||
		return syscall.Lstat(name, &fs.sys)
 | 
			
		||||
		return handleSyscallError(syscall.Lstat(name, &fs.sys))
 | 
			
		||||
	})
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, &PathError{Op: "lstat", Path: name, Err: err}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Загрузка…
	
	Создание таблицы
		
		Сослаться в новой задаче