1
mirror of https://github.com/rclone/rclone synced 2024-11-15 14:57:03 +01:00

test info: improve cleanup of temp files - fixes #7209

Co-authored-by: Kyle Reynolds <kyle.reynolds@bridgerphotonics.com>
This commit is contained in:
Kyle Reynolds 2024-04-02 08:03:33 -06:00 committed by GitHub
parent 998df26ceb
commit f6e716543a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -27,12 +27,14 @@ import (
"github.com/rclone/rclone/fs/config/flags"
"github.com/rclone/rclone/fs/hash"
"github.com/rclone/rclone/fs/object"
"github.com/rclone/rclone/fs/operations"
"github.com/rclone/rclone/lib/random"
"github.com/spf13/cobra"
)
var (
writeJSON string
keepTestFiles bool
checkNormalization bool
checkControl bool
checkLength bool
@ -56,6 +58,7 @@ func init() {
flags.BoolVarP(cmdFlags, &checkStreaming, "check-streaming", "", false, "Check uploads with indeterminate file size", "")
flags.BoolVarP(cmdFlags, &checkBase32768, "check-base32768", "", false, "Check can store all possible base32768 characters", "")
flags.BoolVarP(cmdFlags, &all, "all", "", false, "Run all tests", "")
flags.BoolVarP(cmdFlags, &keepTestFiles, "keep-test-files", "", false, "Keep test files after execution", "")
}
var commandDefinition = &cobra.Command{
@ -84,7 +87,15 @@ a bit of go code for each one.
checkBase32768 = true
}
for i := range args {
f := cmd.NewFsDir(args[i : i+1])
tempDirName := "rclone-test-info-" + random.String(8)
tempDirPath := path.Join(args[i], tempDirName)
f := cmd.NewFsDir([]string{tempDirPath})
fs.Infof(f, "Created temporary directory for test files: %s", tempDirPath)
err := f.Mkdir(context.Background(), "")
if err != nil {
log.Fatalf("couldn't create temporary directory: %v", err)
}
cmd.Run(false, false, command, func() error {
return readInfo(context.Background(), f)
})
@ -471,10 +482,18 @@ func (r *results) checkStreaming() {
}
func readInfo(ctx context.Context, f fs.Fs) error {
err := f.Mkdir(ctx, "")
if err != nil {
return fmt.Errorf("couldn't mkdir: %w", err)
// Ensure cleanup unless --keep-test-files is specified
if !keepTestFiles {
defer func() {
err := operations.Purge(ctx, f, "")
if err != nil {
fs.Errorf(f, "Failed to purge temporary directory: %v", err)
} else {
fs.Infof(f, "Removed temporary directory for test files: %s", f.Root())
}
}()
}
r := newResults(ctx, f)
if checkControl {
r.checkControls()