github.com/marianogappa/goreleaser@v0.26.2-0.20170715090149-96acd0a9fc46/pipeline/fpm/fpm_test.go (about)

     1  package fpm
     2  
     3  import (
     4  	"io/ioutil"
     5  	"os"
     6  	"path/filepath"
     7  	"testing"
     8  
     9  	"github.com/goreleaser/goreleaser/config"
    10  	"github.com/goreleaser/goreleaser/context"
    11  	"github.com/stretchr/testify/assert"
    12  )
    13  
    14  func TestDescription(t *testing.T) {
    15  	assert.NotEmpty(t, Pipe{}.Description())
    16  }
    17  
    18  func TestRunPipeNoFormats(t *testing.T) {
    19  	var assert = assert.New(t)
    20  	var ctx = &context.Context{
    21  		Config: config.Project{},
    22  	}
    23  	assert.NoError(Pipe{}.Run(ctx))
    24  }
    25  
    26  func TestRunPipeFormatBinary(t *testing.T) {
    27  	var assert = assert.New(t)
    28  	var ctx = &context.Context{
    29  		Config: config.Project{
    30  			FPM: config.FPM{
    31  				Formats: []string{"deb"},
    32  			},
    33  			Archive: config.Archive{
    34  				Format: "binary",
    35  			},
    36  		},
    37  	}
    38  	assert.NoError(Pipe{}.Run(ctx))
    39  }
    40  
    41  func TestRunPipe(t *testing.T) {
    42  	var assert = assert.New(t)
    43  	folder, err := ioutil.TempDir("", "archivetest")
    44  	assert.NoError(err)
    45  	var dist = filepath.Join(folder, "dist")
    46  	assert.NoError(os.Mkdir(dist, 0755))
    47  	assert.NoError(os.Mkdir(filepath.Join(dist, "mybin"), 0755))
    48  	_, err = os.Create(filepath.Join(dist, "mybin", "mybin"))
    49  	assert.NoError(err)
    50  	var ctx = &context.Context{
    51  		Folders: map[string]string{
    52  			"linuxamd64":  "mybin",
    53  			"linux386":    "mybin",
    54  			"darwinamd64": "anotherbin",
    55  		},
    56  		Config: config.Project{
    57  			ProjectName: "mybin",
    58  			Dist:        dist,
    59  			FPM: config.FPM{
    60  				Formats:      []string{"deb"},
    61  				Dependencies: []string{"make"},
    62  				Conflicts:    []string{"git"},
    63  				Description:  "Some description",
    64  				License:      "MIT",
    65  				Maintainer:   "me@me",
    66  				Vendor:       "asdf",
    67  				Homepage:     "https://goreleaser.github.io",
    68  			},
    69  		},
    70  	}
    71  	assert.NoError(Pipe{}.Run(ctx))
    72  }
    73  
    74  func TestNoFPMInPath(t *testing.T) {
    75  	var assert = assert.New(t)
    76  	var path = os.Getenv("PATH")
    77  	defer func() {
    78  		assert.NoError(os.Setenv("PATH", path))
    79  	}()
    80  	assert.NoError(os.Setenv("PATH", ""))
    81  	var ctx = &context.Context{
    82  		Config: config.Project{
    83  			FPM: config.FPM{
    84  				Formats: []string{"deb"},
    85  			},
    86  		},
    87  	}
    88  	assert.EqualError(Pipe{}.Run(ctx), ErrNoFPM.Error())
    89  }
    90  
    91  func TestCreateFileDoesntExist(t *testing.T) {
    92  	var assert = assert.New(t)
    93  	folder, err := ioutil.TempDir("", "archivetest")
    94  	assert.NoError(err)
    95  	var dist = filepath.Join(folder, "dist")
    96  	assert.NoError(os.Mkdir(dist, 0755))
    97  	assert.NoError(os.Mkdir(filepath.Join(dist, "mybin"), 0755))
    98  	var ctx = &context.Context{
    99  		Folders: map[string]string{
   100  			"linuxamd64": "mybin",
   101  		},
   102  		Config: config.Project{
   103  			Dist: dist,
   104  			FPM: config.FPM{
   105  				Formats: []string{"deb"},
   106  			},
   107  		},
   108  	}
   109  	assert.Error(Pipe{}.Run(ctx))
   110  }
   111  
   112  func TestCreatePathDoesntExist(t *testing.T) {
   113  	var assert = assert.New(t)
   114  	var ctx = &context.Context{}
   115  	assert.Contains(
   116  		create(ctx, "tar.gz", "/nope/noooo", "windowsarm64").Error(),
   117  		"no such file",
   118  	)
   119  }