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 }