@ -18,6 +18,7 @@ package repo
import (
import (
"os"
"os"
"path/filepath"
"testing"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/assert"
@ -168,6 +169,7 @@ func TestWriteFile(t *testing.T) {
file , err := os . CreateTemp ( t . TempDir ( ) , "helm-repo" )
file , err := os . CreateTemp ( t . TempDir ( ) , "helm-repo" )
require . NoErrorf ( t , err , "failed to create test-file" )
require . NoErrorf ( t , err , "failed to create test-file" )
require . NoError ( t , file . Close ( ) )
defer os . Remove ( file . Name ( ) )
defer os . Remove ( file . Name ( ) )
require . NoErrorf ( t , sampleRepository . WriteFile ( file . Name ( ) , 0 o600 ) , "failed to write file" )
require . NoErrorf ( t , sampleRepository . WriteFile ( file . Name ( ) , 0 o600 ) , "failed to write file" )
@ -207,3 +209,32 @@ func TestRemoveRepositoryInvalidEntries(t *testing.T) {
assert . Truef ( t , sampleRepository . Remove ( removeRepository ) , "expected repository %s not found" , removeRepository )
assert . Truef ( t , sampleRepository . Remove ( removeRepository ) , "expected repository %s not found" , removeRepository )
assert . Falsef ( t , sampleRepository . Has ( removeRepository ) , "repository %s not deleted" , removeRepository )
assert . Falsef ( t , sampleRepository . Has ( removeRepository ) , "repository %s not deleted" , removeRepository )
}
}
func TestWriteFile_Atomic ( t * testing . T ) {
dir := t . TempDir ( )
filePath := filepath . Join ( dir , "repositories.yaml" )
initialRepo := NewFile ( )
initialRepo . Add ( & Entry {
Name : "initial" ,
URL : "https://example.com/initial" ,
} )
require . NoError ( t , initialRepo . WriteFile ( filePath , 0 o644 ) )
initialData , err := os . ReadFile ( filePath )
require . NoError ( t , err )
require . NotEmpty ( t , initialData )
updatedRepo := NewFile ( )
updatedRepo . Add ( & Entry {
Name : "updated" ,
URL : "https://example.com/updated" ,
} )
require . NoError ( t , updatedRepo . WriteFile ( filePath , 0 o644 ) )
loaded , err := LoadFile ( filePath )
require . NoError ( t , err )
assert . False ( t , loaded . Has ( "initial" ) )
assert . True ( t , loaded . Has ( "updated" ) )
}