@@ -928,3 +928,110 @@ func TestSetupConfigurationsFilesInternal(t *testing.T) {
928928 // restore
929929 restore ()
930930}
931+
932+ func TestDetermineAvailableFilename (t * testing.T ) {
933+
934+ var osStatRestore = osStat
935+ createdFiles := map [string ]bool {}
936+
937+ var reset = func () {
938+ osStat = func (file string ) (os.FileInfo , error ) {
939+ if createdFiles [file ] {
940+ return nil , os .ErrExist
941+ } else {
942+ return nil , os .ErrNotExist
943+ }
944+ }
945+ }
946+
947+ var restore = func () {
948+ osStat = osStatRestore
949+ }
950+
951+ reset ()
952+ defer restore ()
953+
954+ t .Run ("No existing files just returns the path.bar when basepath has no .bar" , func (t * testing.T ) {
955+ createdFiles = map [string ]bool {}
956+ filename := determineAvailableFilename (testLogger , "my_server/my_bar" )
957+ assert .Equal (t , "my_server/my_bar.bar" , filename )
958+ })
959+
960+ t .Run ("No existing files just returns the path.bar when basepath already has .bar" , func (t * testing.T ) {
961+ createdFiles = map [string ]bool {}
962+ filename := determineAvailableFilename (testLogger , "my_server/my_bar.bar" )
963+ assert .Equal (t , "my_server/my_bar.bar" , filename )
964+ })
965+
966+ t .Run ("Multiple files with different base paths all save as normal" , func (t * testing.T ) {
967+ createdFiles = map [string ]bool {}
968+
969+ filename1 := determineAvailableFilename (testLogger , "my_server/my_bar1" )
970+ createdFiles [filename1 ] = true
971+
972+ filename2 := determineAvailableFilename (testLogger , "my_server/my_bar2" )
973+ createdFiles [filename2 ] = true
974+
975+ filename3 := determineAvailableFilename (testLogger , "my_server2/my_bar" )
976+ createdFiles [filename3 ] = true
977+
978+ assert .Equal (t , "my_server/my_bar1.bar" , filename1 )
979+ assert .Equal (t , "my_server/my_bar2.bar" , filename2 )
980+ assert .Equal (t , "my_server2/my_bar.bar" , filename3 )
981+ })
982+
983+ t .Run ("Multiple files all the same basepath append an incrementing index with no .bar" , func (t * testing.T ) {
984+ createdFiles = map [string ]bool {}
985+ basePath := "my_server/my_bar"
986+
987+ filename1 := determineAvailableFilename (testLogger , basePath )
988+ createdFiles [filename1 ] = true
989+
990+ filename2 := determineAvailableFilename (testLogger , basePath )
991+ createdFiles [filename2 ] = true
992+
993+ filename3 := determineAvailableFilename (testLogger , basePath )
994+ createdFiles [filename3 ] = true
995+
996+ assert .Equal (t , "my_server/my_bar.bar" , filename1 )
997+ assert .Equal (t , "my_server/my_bar-1.bar" , filename2 )
998+ assert .Equal (t , "my_server/my_bar-2.bar" , filename3 )
999+ })
1000+
1001+ t .Run ("Multiple files all the same basepath append an incrementing index and already have a .bar" , func (t * testing.T ) {
1002+ createdFiles = map [string ]bool {}
1003+ basePath := "my_server/my_bar.bar"
1004+
1005+ filename1 := determineAvailableFilename (testLogger , basePath )
1006+ createdFiles [filename1 ] = true
1007+
1008+ filename2 := determineAvailableFilename (testLogger , basePath )
1009+ createdFiles [filename2 ] = true
1010+
1011+ filename3 := determineAvailableFilename (testLogger , basePath )
1012+ createdFiles [filename3 ] = true
1013+
1014+ assert .Equal (t , "my_server/my_bar.bar" , filename1 )
1015+ assert .Equal (t , "my_server/my_bar-1.bar" , filename2 )
1016+ assert .Equal (t , "my_server/my_bar-2.bar" , filename3 )
1017+ })
1018+
1019+ t .Run ("Multiple files all the same basepath append an incrementing index with mixed present and missing .bar" , func (t * testing.T ) {
1020+ createdFiles = map [string ]bool {}
1021+ basePath := "my_server/my_bar.bar"
1022+ basePathBar := "my_server/my_bar"
1023+
1024+ filename1 := determineAvailableFilename (testLogger , basePath )
1025+ createdFiles [filename1 ] = true
1026+
1027+ filename2 := determineAvailableFilename (testLogger , basePathBar )
1028+ createdFiles [filename2 ] = true
1029+
1030+ filename3 := determineAvailableFilename (testLogger , basePath )
1031+ createdFiles [filename3 ] = true
1032+
1033+ assert .Equal (t , "my_server/my_bar.bar" , filename1 )
1034+ assert .Equal (t , "my_server/my_bar-1.bar" , filename2 )
1035+ assert .Equal (t , "my_server/my_bar-2.bar" , filename3 )
1036+ })
1037+ }
0 commit comments