github.com/soltysh/source-to-image@v1.2.0/pkg/scm/scm_test.go (about) 1 package scm 2 3 import ( 4 "io/ioutil" 5 "os" 6 "path/filepath" 7 "reflect" 8 "testing" 9 10 "github.com/openshift/source-to-image/pkg/scm/git" 11 "github.com/openshift/source-to-image/pkg/util/fs" 12 ) 13 14 func TestDownloaderForSource(t *testing.T) { 15 gitLocalDir, err := git.CreateLocalGitDirectory() 16 if err != nil { 17 t.Fatal(err) 18 } 19 defer os.RemoveAll(gitLocalDir) 20 localDir, _ := ioutil.TempDir(os.TempDir(), "localdir-s2i-test") 21 defer os.RemoveAll(localDir) 22 23 tc := map[*git.URL]string{ 24 // Valid Git clone specs 25 git.MustParse("git://github.com/bar"): "git.Clone", 26 git.MustParse("https://github.com/bar"): "git.Clone", 27 git.MustParse("git@github.com:foo/bar.git"): "git.Clone", 28 // Local directory with valid Git repository 29 git.MustParse(gitLocalDir): "git.Clone", 30 git.MustParse("file:///" + filepath.ToSlash(gitLocalDir)): "git.Clone", 31 // Local directory that exists but it is not Git repository 32 git.MustParse(localDir): "file.File", 33 git.MustParse("file:///" + filepath.ToSlash(localDir)): "file.File", 34 // Empty source string 35 nil: "empty.Noop", 36 } 37 38 for s, expected := range tc { 39 r, err := DownloaderForSource(fs.NewFileSystem(), s, false) 40 if err != nil { 41 t.Errorf("Unexpected error %q for %q, expected %q", err, s, expected) 42 continue 43 } 44 45 expected = "*" + expected 46 if reflect.TypeOf(r).String() != expected { 47 t.Errorf("Expected %q for %q, got %q", expected, s, reflect.TypeOf(r).String()) 48 } 49 } 50 } 51 52 func TestDownloaderForSourceOnRelativeGit(t *testing.T) { 53 gitLocalDir, err := git.CreateLocalGitDirectory() 54 if err != nil { 55 t.Fatal(err) 56 } 57 defer os.RemoveAll(gitLocalDir) 58 os.Chdir(gitLocalDir) 59 r, err := DownloaderForSource(fs.NewFileSystem(), git.MustParse("."), false) 60 if err != nil { 61 t.Errorf("Unexpected error %q for %q, expected %q", err, ".", "git.Clone") 62 } 63 if reflect.TypeOf(r).String() != "*git.Clone" { 64 t.Errorf("Expected %q for %q, got %q", "*git.Clone", ".", reflect.TypeOf(r).String()) 65 } 66 } 67 68 func TestDownloaderForceCopy(t *testing.T) { 69 gitLocalDir, err := git.CreateLocalGitDirectory() 70 if err != nil { 71 t.Fatal(err) 72 } 73 defer os.RemoveAll(gitLocalDir) 74 os.Chdir(gitLocalDir) 75 r, err := DownloaderForSource(fs.NewFileSystem(), git.MustParse("."), true) 76 if err != nil { 77 t.Errorf("Unexpected error %q for %q, expected %q", err, ".", "*file.File") 78 } 79 if reflect.TypeOf(r).String() != "*file.File" { 80 t.Errorf("Expected %q for %q, got %q", "*file.File", ".", reflect.TypeOf(r).String()) 81 } 82 }