github.com/goreleaser/goreleaser@v1.25.1/internal/pipe/project/project_test.go (about)

     1  package project
     2  
     3  import (
     4  	"os/exec"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/require"
     8  
     9  	"github.com/goreleaser/goreleaser/internal/testctx"
    10  	"github.com/goreleaser/goreleaser/internal/testlib"
    11  	"github.com/goreleaser/goreleaser/pkg/config"
    12  )
    13  
    14  func TestCustomProjectName(t *testing.T) {
    15  	_ = testlib.Mktmp(t)
    16  	ctx := testctx.NewWithCfg(config.Project{
    17  		ProjectName: "foo",
    18  		Release: config.Release{
    19  			GitHub: config.Repo{
    20  				Owner: "bar",
    21  				Name:  "bar",
    22  			},
    23  		},
    24  	})
    25  	require.NoError(t, Pipe{}.Default(ctx))
    26  	require.Equal(t, "foo", ctx.Config.ProjectName)
    27  }
    28  
    29  func TestEmptyProjectName_DefaultsToGitHubRelease(t *testing.T) {
    30  	_ = testlib.Mktmp(t)
    31  	ctx := testctx.NewWithCfg(config.Project{
    32  		Release: config.Release{
    33  			GitHub: config.Repo{
    34  				Owner: "bar",
    35  				Name:  "bar",
    36  			},
    37  		},
    38  	})
    39  	require.NoError(t, Pipe{}.Default(ctx))
    40  	require.Equal(t, "bar", ctx.Config.ProjectName)
    41  }
    42  
    43  func TestEmptyProjectName_DefaultsToGitLabRelease(t *testing.T) {
    44  	_ = testlib.Mktmp(t)
    45  	ctx := testctx.NewWithCfg(config.Project{
    46  		Release: config.Release{
    47  			GitLab: config.Repo{
    48  				Owner: "bar",
    49  				Name:  "bar",
    50  			},
    51  		},
    52  	})
    53  	require.NoError(t, Pipe{}.Default(ctx))
    54  	require.Equal(t, "bar", ctx.Config.ProjectName)
    55  }
    56  
    57  func TestEmptyProjectName_DefaultsToGiteaRelease(t *testing.T) {
    58  	_ = testlib.Mktmp(t)
    59  	ctx := testctx.NewWithCfg(config.Project{
    60  		Release: config.Release{
    61  			Gitea: config.Repo{
    62  				Owner: "bar",
    63  				Name:  "bar",
    64  			},
    65  		},
    66  	})
    67  	require.NoError(t, Pipe{}.Default(ctx))
    68  	require.Equal(t, "bar", ctx.Config.ProjectName)
    69  }
    70  
    71  func TestEmptyProjectName_DefaultsToGoModPath(t *testing.T) {
    72  	_ = testlib.Mktmp(t)
    73  	ctx := testctx.New()
    74  	require.NoError(t, exec.Command("go", "mod", "init", "github.com/foo/bar").Run())
    75  	require.NoError(t, Pipe{}.Default(ctx))
    76  	require.Equal(t, "bar", ctx.Config.ProjectName)
    77  }
    78  
    79  func TestEmptyProjectName_DefaultsToGitURL(t *testing.T) {
    80  	_ = testlib.Mktmp(t)
    81  	ctx := testctx.New()
    82  	testlib.GitInit(t)
    83  	testlib.GitRemoteAdd(t, "git@github.com:foo/bar.git")
    84  	require.NoError(t, Pipe{}.Default(ctx))
    85  	require.Equal(t, "bar", ctx.Config.ProjectName)
    86  }
    87  
    88  func TestEmptyProjectName_DefaultsToNonSCMGitURL(t *testing.T) {
    89  	_ = testlib.Mktmp(t)
    90  	ctx := testctx.New()
    91  	testlib.GitInit(t)
    92  	testlib.GitRemoteAdd(t, "git@myhost.local:bar.git")
    93  	require.EqualError(t, Pipe{}.Default(ctx), "couldn't guess project_name, please add it to your config")
    94  }
    95  
    96  func TestEmptyProjectNameAndRelease(t *testing.T) {
    97  	_ = testlib.Mktmp(t)
    98  	ctx := testctx.NewWithCfg(config.Project{
    99  		Release: config.Release{
   100  			GitHub: config.Repo{},
   101  		},
   102  	})
   103  	require.EqualError(t, Pipe{}.Default(ctx), "couldn't guess project_name, please add it to your config")
   104  }