github.com/polydawn/docket@v0.5.4-0.20140630233848-90b70fb433da/conf/parse_test.go (about) 1 package conf 2 3 import ( 4 "path/filepath" 5 "testing" 6 "github.com/coocood/assrt" 7 ) 8 9 func parser() *TomlConfigParser { 10 return &TomlConfigParser{} 11 } 12 13 func TestTomlParser(t *testing.T) { 14 //Testing library, current directory, and some config strings 15 assert := assrt.NewAssert(t) 16 cwd, _ := filepath.Abs(".") 17 nwd, _ := filepath.Abs("..") 18 f1, f2, f3, f4, f5, settings := "", "", "", "", "", "[settings]\n" 19 20 21 // 22 // Default config 23 // 24 conf := parser().GetConfig() 25 assert.Equal(DefaultConfiguration, *conf) 26 27 28 // 29 // Basic settings 30 // 31 f1 = ` 32 # Custom DNS servers 33 dns = [ "8.8.8.8" ] 34 35 # What container folder to start in 36 folder = "/hroot" 37 38 # Interactive mode 39 attach = true 40 41 # Delete the container after running 42 purge = true 43 ` 44 conf = parser(). 45 AddConfig(settings + f1, "."). 46 GetConfig() 47 expect := DefaultConfiguration //Use default fields with a few exceptions 48 expect.Settings.DNS = []string{ "8.8.8.8" } 49 expect.Settings.Folder = "/hroot" 50 expect.Settings.Attach = true 51 expect.Settings.Purge = true 52 assert.Equal(expect, *conf) 53 54 55 // 56 // Mount localizing 57 // 58 f2 = ` 59 # Folder mounts 60 # (host folder, container folder, 'ro' or 'rw' permissions) 61 mounts = [ 62 [ ".../", "/boxen", "ro"], # The top folder 63 [ "./", "/hroot", "rw"], # The current folder 64 ] 65 ` 66 conf = parser(). 67 AddConfig(settings + f1 + f2, ".."). 68 GetConfig() 69 expect.Settings.Mounts = [][]string{ 70 []string{ nwd, "/boxen", "ro" }, 71 []string{ cwd, "/hroot", "rw" }, 72 } 73 assert.Equal(expect, *conf) 74 75 76 // 77 // Settings override 78 // 79 f3 = ` 80 folder = "/home" 81 ` 82 conf = parser(). 83 AddConfig(settings + f1 + f2, ".."). 84 AddConfig(settings + f3, "." ). 85 GetConfig() 86 expect.Settings.Folder = "/home" 87 assert.Equal(expect, *conf) 88 89 90 // 91 // Image names 92 // 93 f4 = ` 94 [image] 95 name = "example.com/ubuntu/12.04" 96 upstream = "index.docker.IO/ubuntu/12.04" 97 ` 98 conf = parser(). 99 AddConfig(settings + f1 + f2, ".."). 100 AddConfig(settings + f3 + f4, "." ). 101 GetConfig() 102 expect.Image.Name = "example.com/ubuntu/12.04" 103 expect.Image.Upstream = "index.docker.IO/ubuntu/12.04" 104 assert.Equal(expect, *conf) 105 106 107 // 108 // Target settings override 109 // 110 111 f5 = ` 112 # This is where you specify run targets. 113 # Targets let you take different actions with the same container. 114 [target.bash] 115 command = [ "/bin/bash" ] 116 dns = [ "8.8.4.4" ] 117 ` 118 conf = parser(). 119 AddConfig(settings + f1 + f2, ".."). 120 AddConfig(settings + f3 + f4 + f5, "." ). 121 GetConfig() 122 expect.Settings.DNS = append(expect.Settings.DNS, "8.8.4.4") 123 expect.Settings.Command = []string{ "/bin/bash" } 124 assert.Equal(1, len(conf.Targets)) 125 assert.Equal(expect.Settings, conf.Targets["bash"]) 126 }