gitlab.com/prarit/lab@v0.14.0/internal/git/git_test.go (about)

     1  package git
     2  
     3  import (
     4  	"log"
     5  	"os"
     6  	"testing"
     7  
     8  	"github.com/stretchr/testify/assert"
     9  	"github.com/stretchr/testify/require"
    10  )
    11  
    12  func TestMain(m *testing.M) {
    13  	err := os.Chdir(os.ExpandEnv("$GOPATH/src/github.com/zaquestion/lab/testdata"))
    14  	if err != nil {
    15  		log.Fatal(err)
    16  	}
    17  	os.Exit(m.Run())
    18  }
    19  
    20  func TestGitDir(t *testing.T) {
    21  	dir, err := GitDir()
    22  	if err != nil {
    23  		t.Fatal(err)
    24  	}
    25  	expectedDir := os.ExpandEnv("$GOPATH/src/github.com/zaquestion/lab/testdata/.git")
    26  	require.Equal(t, expectedDir, dir)
    27  }
    28  
    29  func TestWorkingDir(t *testing.T) {
    30  	dir, err := WorkingDir()
    31  	if err != nil {
    32  		t.Fatal(err)
    33  	}
    34  	expectedDir := os.ExpandEnv("$GOPATH/src/github.com/zaquestion/lab/testdata")
    35  	require.Equal(t, expectedDir, dir)
    36  }
    37  
    38  func TestCommentChar(t *testing.T) {
    39  	require.Equal(t, "#", CommentChar())
    40  }
    41  
    42  func TestLastCommitMessage(t *testing.T) {
    43  	lcm, err := LastCommitMessage()
    44  	if err != nil {
    45  		t.Fatal(err)
    46  	}
    47  	expectedLCM := "(ci) jobs with interleaved sleeps and prints"
    48  	require.Equal(t, expectedLCM, lcm)
    49  }
    50  
    51  func TestLog(t *testing.T) {
    52  	log, err := Log("HEAD~1", "HEAD")
    53  	if err != nil {
    54  		t.Fatal(err)
    55  	}
    56  	expectedSHA := "09b519c"
    57  	expectedAuthor := "Zaq? Wiedmann"
    58  	expectedMessage := "(ci) jobs with interleaved sleeps and prints"
    59  	assert.Contains(t, log, expectedSHA)
    60  	assert.Contains(t, log, expectedAuthor)
    61  	assert.Contains(t, log, expectedMessage)
    62  }
    63  
    64  func TestCurrentBranch(t *testing.T) {
    65  	branch, err := CurrentBranch()
    66  	if err != nil {
    67  		t.Fatal(err)
    68  	}
    69  	expectedBranch := "master"
    70  	require.Equal(t, expectedBranch, branch)
    71  }
    72  
    73  func TestPathWithNameSpace(t *testing.T) {
    74  	tests := []struct {
    75  		desc        string
    76  		remote      string
    77  		expected    string
    78  		expectedErr string
    79  	}{
    80  		{
    81  			desc:        "ssh",
    82  			remote:      "origin",
    83  			expected:    "zaquestion/test",
    84  			expectedErr: "",
    85  		},
    86  		{
    87  			desc:        "http",
    88  			remote:      "origin-http",
    89  			expected:    "zaquestion/test",
    90  			expectedErr: "",
    91  		},
    92  		{
    93  			desc:        "https",
    94  			remote:      "origin-https",
    95  			expected:    "zaquestion/test",
    96  			expectedErr: "",
    97  		},
    98  		{
    99  			desc:        "https://token@gitlab.com/org/repo",
   100  			remote:      "origin-https-token",
   101  			expected:    "zaquestion/test",
   102  			expectedErr: "",
   103  		},
   104  		{
   105  			desc:        "git://",
   106  			remote:      "origin-git",
   107  			expected:    "zaquestion/test",
   108  			expectedErr: "",
   109  		},
   110  		{
   111  			desc:        "ssh://",
   112  			remote:      "origin-ssh-alt",
   113  			expected:    "zaquestion/test",
   114  			expectedErr: "",
   115  		},
   116  		{
   117  			desc:        "no .git suffix",
   118  			remote:      "origin-no_dot_git",
   119  			expected:    "zaquestion/test",
   120  			expectedErr: "",
   121  		},
   122  		{
   123  			desc:        "subdfolders-ssh",
   124  			remote:      "origin-subfolder-ssh",
   125  			expected:    "zaquestion/sub/folder/test",
   126  			expectedErr: "",
   127  		},
   128  		{
   129  			desc:        "subdfolders-git",
   130  			remote:      "origin-subfolder-git",
   131  			expected:    "zaquestion/sub/folder/test",
   132  			expectedErr: "",
   133  		},
   134  		{
   135  			desc:        "ssh-custom-port",
   136  			remote:      "origin-custom-port",
   137  			expected:    "zaquestion/test",
   138  			expectedErr: "",
   139  		},
   140  		{
   141  			desc:        "ssh-subfolder-custom-port",
   142  			remote:      "origin-subfolder-custom-port",
   143  			expected:    "zaquestion/sub/folder/test",
   144  			expectedErr: "",
   145  		},
   146  		{
   147  			desc:        "remote doesn't exist",
   148  			remote:      "phoney",
   149  			expected:    "",
   150  			expectedErr: "the key `remote.phoney.url` is not found",
   151  		},
   152  		{
   153  			desc:        "remote doesn't exist",
   154  			remote:      "garbage",
   155  			expected:    "",
   156  			expectedErr: "cannot parse remote: garbage url: garbageurl",
   157  		},
   158  	}
   159  
   160  	for _, test := range tests {
   161  		test := test
   162  		t.Run(test.desc, func(t *testing.T) {
   163  			t.Parallel()
   164  			path, err := PathWithNameSpace(test.remote)
   165  			if test.expectedErr != "" {
   166  				assert.EqualError(t, err, test.expectedErr)
   167  			} else {
   168  				assert.Nil(t, err)
   169  			}
   170  			assert.Equal(t, test.expected, path)
   171  		})
   172  	}
   173  }
   174  
   175  func TestRepoName(t *testing.T) {
   176  	repo, err := RepoName()
   177  	if err != nil {
   178  		t.Fatal(err)
   179  	}
   180  	expectedRepo := "test"
   181  	require.Equal(t, expectedRepo, repo)
   182  }
   183  
   184  func TestIsRemote(t *testing.T) {
   185  	res, err := IsRemote("origin")
   186  	if err != nil {
   187  		t.Fatal(err)
   188  	}
   189  	require.True(t, res)
   190  }
   191  
   192  func TestInsideGitRepo(t *testing.T) {
   193  	require.True(t, InsideGitRepo())
   194  }