github.com/markdia/terraform@v0.5.1-0.20150508012022-f1ae920aa970/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  }