
gotools/ * Makefile.am (go_cmd_cgo_files): Add ast_go118.go (check-go-tool): Copy golang.org/x/tools directories. * Makefile.in: Regenerate. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/384695
66 lines
1.5 KiB
Go
66 lines
1.5 KiB
Go
// Copyright 2018 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
//go:build !windows && !plan9
|
|
|
|
package filepath_test
|
|
|
|
import (
|
|
"fmt"
|
|
"io/fs"
|
|
"os"
|
|
"path/filepath"
|
|
)
|
|
|
|
func prepareTestDirTree(tree string) (string, error) {
|
|
tmpDir, err := os.MkdirTemp("", "")
|
|
if err != nil {
|
|
return "", fmt.Errorf("error creating temp directory: %v\n", err)
|
|
}
|
|
|
|
err = os.MkdirAll(filepath.Join(tmpDir, tree), 0755)
|
|
if err != nil {
|
|
os.RemoveAll(tmpDir)
|
|
return "", err
|
|
}
|
|
|
|
return tmpDir, nil
|
|
}
|
|
|
|
func ExampleWalk() {
|
|
tmpDir, err := prepareTestDirTree("dir/to/walk/skip")
|
|
if err != nil {
|
|
fmt.Printf("unable to create test dir tree: %v\n", err)
|
|
return
|
|
}
|
|
defer os.RemoveAll(tmpDir)
|
|
os.Chdir(tmpDir)
|
|
|
|
subDirToSkip := "skip"
|
|
|
|
fmt.Println("On Unix:")
|
|
err = filepath.Walk(".", func(path string, info fs.FileInfo, err error) error {
|
|
if err != nil {
|
|
fmt.Printf("prevent panic by handling failure accessing a path %q: %v\n", path, err)
|
|
return err
|
|
}
|
|
if info.IsDir() && info.Name() == subDirToSkip {
|
|
fmt.Printf("skipping a dir without errors: %+v \n", info.Name())
|
|
return filepath.SkipDir
|
|
}
|
|
fmt.Printf("visited file or dir: %q\n", path)
|
|
return nil
|
|
})
|
|
if err != nil {
|
|
fmt.Printf("error walking the path %q: %v\n", tmpDir, err)
|
|
return
|
|
}
|
|
// Output:
|
|
// On Unix:
|
|
// visited file or dir: "."
|
|
// visited file or dir: "dir"
|
|
// visited file or dir: "dir/to"
|
|
// visited file or dir: "dir/to/walk"
|
|
// skipping a dir without errors: skip
|
|
}
|