github.com/triarius/goreleaser@v1.12.5/internal/git/config_test.go (about)

     1  package git_test
     2  
     3  import (
     4  	"context"
     5  	"testing"
     6  
     7  	"github.com/triarius/goreleaser/internal/git"
     8  	"github.com/triarius/goreleaser/internal/testlib"
     9  	"github.com/stretchr/testify/require"
    10  )
    11  
    12  func TestNotARepo(t *testing.T) {
    13  	testlib.Mktmp(t)
    14  	_, err := git.ExtractRepoFromConfig(context.Background())
    15  	require.EqualError(t, err, `current folder is not a git repository`)
    16  }
    17  
    18  func TestNoRemote(t *testing.T) {
    19  	testlib.Mktmp(t)
    20  	testlib.GitInit(t)
    21  	_, err := git.ExtractRepoFromConfig(context.Background())
    22  	require.EqualError(t, err, `no remote configured to list refs from`)
    23  }
    24  
    25  func TestRepoName(t *testing.T) {
    26  	testlib.Mktmp(t)
    27  	testlib.GitInit(t)
    28  	testlib.GitRemoteAdd(t, "git@github.com:goreleaser/goreleaser.git")
    29  	repo, err := git.ExtractRepoFromConfig(context.Background())
    30  	require.NoError(t, err)
    31  	require.Equal(t, "goreleaser/goreleaser", repo.String())
    32  }
    33  
    34  func TestRepoNameWithDifferentRemote(t *testing.T) {
    35  	ctx := context.Background()
    36  	testlib.Mktmp(t)
    37  	testlib.GitInit(t)
    38  	testlib.GitRemoteAddWithName(t, "upstream", "https://github.com/triarius/goreleaser.git")
    39  	_, err := git.Run(ctx, "pull", "upstream", "main")
    40  	require.NoError(t, err)
    41  	_, err = git.Run(ctx, "branch", "--set-upstream-to", "upstream/main")
    42  	require.NoError(t, err)
    43  	repo, err := git.ExtractRepoFromConfig(ctx)
    44  	require.NoError(t, err)
    45  	require.Equal(t, "goreleaser/goreleaser", repo.String())
    46  }
    47  
    48  func TestExtractRepoFromURL(t *testing.T) {
    49  	// valid urls
    50  	for _, url := range []string{
    51  		"git@github.com:goreleaser/goreleaser.git",
    52  		"git@custom:goreleaser/goreleaser.git",
    53  		"https://foo@github.com/triarius/goreleaser",
    54  		"https://github.com/triarius/goreleaser.git",
    55  		"https://something.with.port:8080/goreleaser/goreleaser.git",
    56  		"https://github.enterprise.com/goreleaser/goreleaser.git",
    57  		"https://gitlab-ci-token:SOME_TOKEN@gitlab.yourcompany.com/goreleaser/goreleaser.git",
    58  	} {
    59  		t.Run(url, func(t *testing.T) {
    60  			repo, err := git.ExtractRepoFromURL(url)
    61  			require.NoError(t, err)
    62  			require.Equal(t, "goreleaser/goreleaser", repo.String())
    63  			require.NoError(t, repo.CheckSCM())
    64  			require.Equal(t, url, repo.RawURL)
    65  		})
    66  	}
    67  
    68  	// nested urls
    69  	for _, url := range []string{
    70  		"git@custom:group/nested/goreleaser/goreleaser.git",
    71  		"https://gitlab.mycompany.com/group/nested/goreleaser/goreleaser.git",
    72  		"https://gitlab-ci-token:SOME_TOKEN@gitlab.yourcompany.com/group/nested/goreleaser/goreleaser.git",
    73  	} {
    74  		t.Run(url, func(t *testing.T) {
    75  			repo, err := git.ExtractRepoFromURL(url)
    76  			require.NoError(t, err)
    77  			require.Equal(t, "group/nested/goreleaser/goreleaser", repo.String())
    78  			require.NoError(t, repo.CheckSCM())
    79  			require.Equal(t, url, repo.RawURL)
    80  		})
    81  	}
    82  
    83  	for _, url := range []string{
    84  		"git@gist.github.com:someid.git",
    85  		"https://gist.github.com/someid.git",
    86  	} {
    87  		t.Run(url, func(t *testing.T) {
    88  			repo, err := git.ExtractRepoFromURL(url)
    89  			require.NoError(t, err)
    90  			require.Equal(t, "someid", repo.String())
    91  			require.Error(t, repo.CheckSCM())
    92  			require.Equal(t, url, repo.RawURL)
    93  		})
    94  	}
    95  
    96  	// invalid urls
    97  	for _, url := range []string{
    98  		"git@gist.github.com:",
    99  		"https://gist.github.com/",
   100  	} {
   101  		t.Run(url, func(t *testing.T) {
   102  			repo, err := git.ExtractRepoFromURL(url)
   103  			require.EqualError(t, err, "unsupported repository URL: "+url)
   104  			require.Equal(t, "", repo.String())
   105  			require.Error(t, repo.CheckSCM())
   106  			require.Equal(t, url, repo.RawURL)
   107  		})
   108  	}
   109  }