github.com/openshift/source-to-image@v1.4.1-0.20240516041539-bf52fc02204e/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  }