github.com/MetalBlockchain/metalgo@v1.11.9/utils/filesystem/rename_test.go (about)

     1  // Copyright (C) 2019-2024, Ava Labs, Inc. All rights reserved.
     2  // See the file LICENSE for licensing terms.
     3  
     4  package filesystem
     5  
     6  import (
     7  	"os"
     8  	"testing"
     9  
    10  	"github.com/stretchr/testify/require"
    11  )
    12  
    13  func TestRenameIfExists(t *testing.T) {
    14  	require := require.New(t)
    15  
    16  	t.Parallel()
    17  
    18  	f, err := os.CreateTemp(os.TempDir(), "test-rename")
    19  	require.NoError(err)
    20  
    21  	a := f.Name()
    22  	b := a + ".2"
    23  
    24  	require.NoError(f.Close())
    25  
    26  	// rename "a" to "b"
    27  	renamed, err := RenameIfExists(a, b)
    28  	require.NoError(err)
    29  	require.True(renamed)
    30  
    31  	// rename "b" to "a"
    32  	renamed, err = RenameIfExists(b, a)
    33  	require.NoError(err)
    34  	require.True(renamed)
    35  
    36  	// remove "a", but rename "a"->"b" should NOT error
    37  	require.NoError(os.RemoveAll(a))
    38  	renamed, err = RenameIfExists(a, b)
    39  	require.NoError(err)
    40  	require.False(renamed)
    41  }