github.com/bendemaree/terraform@v0.5.4-0.20150613200311-f50d97d6eee6/config/module/detect_file_test.go (about) 1 package module 2 3 import ( 4 "runtime" 5 "testing" 6 ) 7 8 type fileTest struct { 9 in, pwd, out string 10 err bool 11 } 12 13 var fileTests = []fileTest{ 14 {"./foo", "/pwd", "file:///pwd/foo", false}, 15 {"./foo?foo=bar", "/pwd", "file:///pwd/foo?foo=bar", false}, 16 {"foo", "/pwd", "file:///pwd/foo", false}, 17 } 18 19 var unixFileTests = []fileTest{ 20 {"/foo", "/pwd", "file:///foo", false}, 21 {"/foo?bar=baz", "/pwd", "file:///foo?bar=baz", false}, 22 } 23 24 var winFileTests = []fileTest{ 25 {"/foo", "/pwd", "file:///pwd/foo", false}, 26 {`C:\`, `/pwd`, `file://C:/`, false}, 27 {`C:\?bar=baz`, `/pwd`, `file://C:/?bar=baz`, false}, 28 } 29 30 func TestFileDetector(t *testing.T) { 31 if runtime.GOOS == "windows" { 32 fileTests = append(fileTests, winFileTests...) 33 } else { 34 fileTests = append(fileTests, unixFileTests...) 35 } 36 37 f := new(FileDetector) 38 for i, tc := range fileTests { 39 out, ok, err := f.Detect(tc.in, tc.pwd) 40 if err != nil { 41 t.Fatalf("err: %s", err) 42 } 43 if !ok { 44 t.Fatal("not ok") 45 } 46 47 if out != tc.out { 48 t.Fatalf("%d: bad: %#v", i, out) 49 } 50 } 51 } 52 53 var noPwdFileTests = []fileTest{ 54 {in: "./foo", pwd: "", out: "", err: true}, 55 {in: "foo", pwd: "", out: "", err: true}, 56 } 57 58 var noPwdUnixFileTests = []fileTest{ 59 {in: "/foo", pwd: "", out: "file:///foo", err: false}, 60 } 61 62 var noPwdWinFileTests = []fileTest{ 63 {in: "/foo", pwd: "", out: "", err: true}, 64 {in: `C:\`, pwd: ``, out: `file://C:/`, err: false}, 65 } 66 67 func TestFileDetector_noPwd(t *testing.T) { 68 if runtime.GOOS == "windows" { 69 noPwdFileTests = append(noPwdFileTests, noPwdWinFileTests...) 70 } else { 71 noPwdFileTests = append(noPwdFileTests, noPwdUnixFileTests...) 72 } 73 74 f := new(FileDetector) 75 for i, tc := range noPwdFileTests { 76 out, ok, err := f.Detect(tc.in, tc.pwd) 77 if (err != nil) != tc.err { 78 t.Fatalf("%d: err: %s", i, err) 79 } 80 if !ok { 81 t.Fatal("not ok") 82 } 83 84 if out != tc.out { 85 t.Fatalf("%d: bad: %#v", i, out) 86 } 87 } 88 }