mirror of https://github.com/databricks/cli.git
49 lines
876 B
Go
49 lines
876 B
Go
|
package testutil
|
||
|
|
||
|
import (
|
||
|
"io"
|
||
|
"io/fs"
|
||
|
"os"
|
||
|
"path/filepath"
|
||
|
"testing"
|
||
|
|
||
|
"github.com/stretchr/testify/require"
|
||
|
)
|
||
|
|
||
|
// CopyDirectory copies the contents of a directory to another directory.
|
||
|
// The destination directory is created if it does not exist.
|
||
|
func CopyDirectory(t *testing.T, src, dst string) {
|
||
|
err := filepath.WalkDir(src, func(path string, d fs.DirEntry, err error) error {
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
rel, err := filepath.Rel(src, path)
|
||
|
require.NoError(t, err)
|
||
|
|
||
|
if d.IsDir() {
|
||
|
return os.MkdirAll(filepath.Join(dst, rel), 0755)
|
||
|
}
|
||
|
|
||
|
// Copy the file to the temporary directory
|
||
|
in, err := os.Open(path)
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
defer in.Close()
|
||
|
|
||
|
out, err := os.Create(filepath.Join(dst, rel))
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
defer out.Close()
|
||
|
|
||
|
_, err = io.Copy(out, in)
|
||
|
return err
|
||
|
})
|
||
|
|
||
|
require.NoError(t, err)
|
||
|
}
|