@@ -18,6 +18,7 @@ package config
1818
1919import (
2020 "bytes"
21+ "os"
2122 "strings"
2223 "testing"
2324
@@ -326,6 +327,72 @@ func TestConfigFromToml(t *testing.T) {
326327 }
327328}
328329
330+ func TestLoadConfigToml (t * testing.T ) {
331+ cfgToml , err := defaultToml ()
332+ require .NoError (t , err )
333+
334+ cfgToml .Set ("nvidia-container-cli.ldconfig" , "OVERRIDDEN" )
335+ cfgToml .Set ("nvidia-container-cli.debug" , "/var/log/nvidia-container-toolkit.log" )
336+ cfgToml .Set ("nvidia-container-runtime.debug" , "/var/log/nvidia-container-runtime.log" )
337+
338+ tmpFile , err := os .CreateTemp ("" , "config.toml" )
339+ require .NoError (t , err )
340+ defer os .Remove (tmpFile .Name ())
341+
342+ _ , err = cfgToml .Save (tmpFile )
343+ require .NoError (t , err )
344+ tmpFile .Close ()
345+
346+ testCases := []struct {
347+ description string
348+ options options
349+ expected string
350+ }{
351+ {
352+ description : "empty filename returns default config" ,
353+ options : options {
354+ configFile : "" ,
355+ },
356+ expected : func () string {
357+ cfgToml , _ := defaultToml ()
358+ buffer := new (bytes.Buffer )
359+ cfgToml .Save (buffer )
360+ return buffer .String ()
361+ }(),
362+ },
363+ {
364+ description : "save uncommented configuration items to file" ,
365+ options : options {
366+ configFile : tmpFile .Name (),
367+ },
368+ expected : func () string {
369+ cfgToml , _ := defaultToml ()
370+ cfgToml .Set ("nvidia-container-cli.ldconfig" , "OVERRIDDEN" )
371+ cfgToml .Set ("nvidia-container-cli.debug" , "/var/log/nvidia-container-toolkit.log" )
372+ cfgToml .Set ("nvidia-container-runtime.debug" , "/var/log/nvidia-container-runtime.log" )
373+ buffer := new (bytes.Buffer )
374+ cfgToml .Save (buffer )
375+ return buffer .String ()
376+ }(),
377+ },
378+ }
379+ for _ , tc := range testCases {
380+ t .Run (tc .description , func (t * testing.T ) {
381+ tomlCfg , err := tc .options .loadConfigToml ()
382+ require .NoError (t , err )
383+
384+ buffer := new (bytes.Buffer )
385+ _ , err = tomlCfg .Save (buffer )
386+ require .NoError (t , err )
387+
388+ require .EqualValues (t ,
389+ strings .TrimSpace (tc .expected ),
390+ strings .TrimSpace (buffer .String ()),
391+ )
392+ })
393+ }
394+ }
395+
329396func createEmpty () * Toml {
330397 t , _ := TreeFromMap (nil )
331398 return t
0 commit comments