Skip to content

Commit bba12ec

Browse files
committed
fix: windows rename error
Signed-off-by: mrjoelkamp <[email protected]>
1 parent 626088b commit bba12ec

File tree

2 files changed

+9
-41
lines changed

2 files changed

+9
-41
lines changed

internal/testutils/simulator/repository_simulator_setup.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,11 @@ func InitLocalEnv() error {
4848
os.Exit(1)
4949
}
5050

51-
if err = os.Mkdir(filepath.Join(tmpDir,metadataPath), 0750); err != nil {
51+
if err = os.Mkdir(filepath.Join(tmpDir, metadataPath), 0750); err != nil {
5252
slog.Error("Repository simulator: failed to create dir", "err", err)
5353
}
5454

55-
if err = os.Mkdir(filepath.Join(tmpDir,targetsPath), 0750); err != nil {
55+
if err = os.Mkdir(filepath.Join(tmpDir, targetsPath), 0750); err != nil {
5656
slog.Error("Repository simulator: failed to create dir", "err", err)
5757
}
5858

@@ -76,6 +76,7 @@ func InitMetadataDir() (*RepositorySimulator, string, string, error) {
7676
slog.Error("Failed to create root", "err", err)
7777
os.Exit(1)
7878
}
79+
defer f.Close()
7980

8081
if _, err = f.Write(sim.SignedRoots[0]); err != nil {
8182
slog.Error("Repository simulator setup: failed to write signed roots", "err", err)

metadata/updater/updater.go

Lines changed: 6 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -579,38 +579,6 @@ func (update *Updater) preOrderDepthFirstWalk(targetFilePath string) (*metadata.
579579
return nil, fmt.Errorf("target %s not found", targetFilePath)
580580
}
581581

582-
func moveFile(source, destination string) (err error) {
583-
// can only safely rename on any OS if source and destination are in the same directory
584-
if filepath.Dir(source) == filepath.Dir(destination) {
585-
return os.Rename(source, destination)
586-
}
587-
588-
inputFile, err := os.Open(source)
589-
if err != nil {
590-
return fmt.Errorf("couldn't open source file: %s", err)
591-
}
592-
defer inputFile.Close()
593-
outputFile, err := os.Create(destination)
594-
if err != nil {
595-
return fmt.Errorf("couldn't open dest file: %s", err)
596-
}
597-
defer outputFile.Close()
598-
c, err := io.Copy(outputFile, inputFile)
599-
if err != nil {
600-
return fmt.Errorf("writing to output file failed: %s", err)
601-
}
602-
if c <= 0 {
603-
return fmt.Errorf("nothing copied to output file")
604-
}
605-
inputFile.Close()
606-
// The copy was successful, so now delete the original file
607-
err = os.Remove(source)
608-
if err != nil {
609-
return fmt.Errorf("failed removing original file: %s", err)
610-
}
611-
return nil
612-
}
613-
614582
// persistMetadata writes metadata to disk atomically to avoid data loss
615583
func (update *Updater) persistMetadata(roleName string, data []byte) error {
616584
log := metadata.GetLogger()
@@ -620,12 +588,8 @@ func (update *Updater) persistMetadata(roleName string, data []byte) error {
620588
}
621589
// caching enabled, proceed with persisting the metadata locally
622590
fileName := filepath.Join(update.cfg.LocalMetadataDir, fmt.Sprintf("%s.json", url.QueryEscape(roleName)))
623-
cwd, err := os.Getwd()
624-
if err != nil {
625-
return err
626-
}
627591
// create a temporary file
628-
file, err := os.CreateTemp(cwd, "tuf_tmp")
592+
file, err := os.CreateTemp(update.cfg.LocalMetadataDir, "tuf_tmp")
629593
if err != nil {
630594
return err
631595
}
@@ -642,9 +606,12 @@ func (update *Updater) persistMetadata(roleName string, data []byte) error {
642606
}
643607

644608
// can't move/rename an open file on windows, so close it first
645-
file.Close()
609+
err = file.Close()
610+
if err != nil {
611+
return err
612+
}
646613
// if all okay, rename the temporary file to the desired one
647-
err = moveFile(file.Name(), fileName)
614+
err = os.Rename(file.Name(), fileName)
648615
if err != nil {
649616
return err
650617
}

0 commit comments

Comments
 (0)