2018-01-04 13:31:22 +01:00
|
|
|
package deb
|
|
|
|
|
|
|
|
import (
|
2018-02-18 21:13:47 +01:00
|
|
|
"bytes"
|
|
|
|
"flag"
|
2018-01-10 00:03:01 +01:00
|
|
|
"io/ioutil"
|
2018-01-04 13:31:22 +01:00
|
|
|
"testing"
|
|
|
|
|
2018-02-05 02:53:22 +01:00
|
|
|
"github.com/goreleaser/nfpm"
|
2018-02-05 03:54:03 +01:00
|
|
|
"github.com/stretchr/testify/assert"
|
2018-01-04 13:31:22 +01:00
|
|
|
)
|
|
|
|
|
2018-02-18 21:13:47 +01:00
|
|
|
var update = flag.Bool("update", false, "update .golden files")
|
|
|
|
|
|
|
|
var info = nfpm.WithDefaults(nfpm.Info{
|
|
|
|
Name: "foo",
|
|
|
|
Arch: "amd64",
|
|
|
|
Depends: []string{
|
|
|
|
"bash",
|
|
|
|
},
|
|
|
|
Recommends: []string{
|
|
|
|
"git",
|
|
|
|
},
|
2018-02-18 22:41:32 +01:00
|
|
|
Suggests: []string{
|
|
|
|
"bash",
|
|
|
|
},
|
2018-02-18 21:13:47 +01:00
|
|
|
Replaces: []string{
|
|
|
|
"svn",
|
|
|
|
},
|
|
|
|
Provides: []string{
|
|
|
|
"bzr",
|
|
|
|
},
|
|
|
|
Conflicts: []string{
|
|
|
|
"zsh",
|
|
|
|
},
|
|
|
|
Description: "Foo does things",
|
|
|
|
Priority: "extra",
|
|
|
|
Maintainer: "Carlos A Becker <pkg@carlosbecker.com>",
|
|
|
|
Version: "1.0.0",
|
|
|
|
Section: "default",
|
|
|
|
Homepage: "http://carlosbecker.com",
|
|
|
|
Vendor: "nope",
|
|
|
|
Files: map[string]string{
|
|
|
|
"../testdata/fake": "/usr/local/bin/fake",
|
|
|
|
},
|
|
|
|
ConfigFiles: map[string]string{
|
|
|
|
"../testdata/whatever.conf": "/etc/fake/fake.conf",
|
|
|
|
},
|
|
|
|
})
|
|
|
|
|
2018-01-04 13:31:22 +01:00
|
|
|
func TestDeb(t *testing.T) {
|
2018-02-18 21:13:47 +01:00
|
|
|
var err = Default.Package(info, ioutil.Discard)
|
|
|
|
assert.NoError(t, err)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestControl(t *testing.T) {
|
|
|
|
var w bytes.Buffer
|
|
|
|
assert.NoError(t, writeControl(&w, controlData{
|
|
|
|
Info: info,
|
|
|
|
InstalledSize: 10,
|
|
|
|
}))
|
|
|
|
var golden = "testdata/control.golden"
|
|
|
|
if *update {
|
|
|
|
ioutil.WriteFile(golden, w.Bytes(), 0655)
|
|
|
|
}
|
|
|
|
bts, err := ioutil.ReadFile(golden)
|
2018-01-04 13:31:22 +01:00
|
|
|
assert.NoError(t, err)
|
2018-02-18 21:13:47 +01:00
|
|
|
assert.Equal(t, string(bts), w.String())
|
2018-01-04 13:31:22 +01:00
|
|
|
}
|
2018-02-16 22:11:52 +01:00
|
|
|
|
|
|
|
func TestDebFileDoesNotExist(t *testing.T) {
|
|
|
|
var err = Default.Package(
|
|
|
|
nfpm.WithDefaults(nfpm.Info{
|
|
|
|
Name: "foo",
|
|
|
|
Arch: "amd64",
|
|
|
|
Depends: []string{
|
|
|
|
"bash",
|
|
|
|
},
|
|
|
|
Description: "Foo does things",
|
|
|
|
Priority: "extra",
|
|
|
|
Maintainer: "Carlos A Becker <pkg@carlosbecker.com>",
|
|
|
|
Version: "1.0.0",
|
|
|
|
Section: "default",
|
|
|
|
Homepage: "http://carlosbecker.com",
|
|
|
|
Vendor: "nope",
|
|
|
|
Files: map[string]string{
|
|
|
|
"../testdata/": "/usr/local/bin/fake",
|
|
|
|
},
|
|
|
|
ConfigFiles: map[string]string{
|
|
|
|
"../testdata/whatever.confzzz": "/etc/fake/fake.conf",
|
|
|
|
},
|
|
|
|
}),
|
|
|
|
ioutil.Discard,
|
|
|
|
)
|
|
|
|
assert.Error(t, err)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestDebNoFiles(t *testing.T) {
|
|
|
|
var err = Default.Package(
|
|
|
|
nfpm.WithDefaults(nfpm.Info{
|
|
|
|
Name: "foo",
|
|
|
|
Arch: "amd64",
|
|
|
|
Depends: []string{
|
|
|
|
"bash",
|
|
|
|
},
|
|
|
|
Description: "Foo does things",
|
|
|
|
Priority: "extra",
|
|
|
|
Maintainer: "Carlos A Becker <pkg@carlosbecker.com>",
|
|
|
|
Version: "1.0.0",
|
|
|
|
Section: "default",
|
|
|
|
Homepage: "http://carlosbecker.com",
|
|
|
|
Vendor: "nope",
|
|
|
|
}),
|
|
|
|
ioutil.Discard,
|
|
|
|
)
|
|
|
|
assert.NoError(t, err)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestDebNoInfo(t *testing.T) {
|
|
|
|
var err = Default.Package(nfpm.WithDefaults(nfpm.Info{}), ioutil.Discard)
|
|
|
|
assert.NoError(t, err)
|
|
|
|
}
|
2018-02-17 21:49:09 +01:00
|
|
|
|
|
|
|
func TestConffiles(t *testing.T) {
|
|
|
|
out := conffiles(nfpm.Info{
|
|
|
|
ConfigFiles: map[string]string{
|
|
|
|
"fake": "/etc/fake",
|
|
|
|
},
|
|
|
|
})
|
|
|
|
assert.Equal(t, "/etc/fake\n", string(out), "should have a trailing empty line")
|
|
|
|
}
|
2018-02-25 18:56:29 +01:00
|
|
|
|
|
|
|
func TestPathsToCreate(t *testing.T) {
|
|
|
|
assert.Equal(
|
|
|
|
t,
|
|
|
|
[]string{"usr", "usr/share", "usr/share/doc", "usr/share/doc/whatever"},
|
|
|
|
pathsToCreate("/usr/share/doc/whatever/foo.md"),
|
|
|
|
)
|
|
|
|
}
|