diff --git a/deb/deb.go b/deb/deb.go index 1985013..6f39ebc 100644 --- a/deb/deb.go +++ b/deb/deb.go @@ -681,9 +681,9 @@ const controlTemplate = ` {{- /* Mandatory fields */ -}} Package: {{.Info.Name}} Version: {{ if .Info.Epoch}}{{ .Info.Epoch }}:{{ end }}{{.Info.Version}} - {{- if .Info.Release}}-{{ .Info.Release }}{{- end }} {{- if .Info.Prerelease}}~{{ .Info.Prerelease }}{{- end }} {{- if .Info.VersionMetadata}}+{{ .Info.VersionMetadata }}{{- end }} + {{- if .Info.Release}}-{{ .Info.Release }}{{- end }} Section: {{.Info.Section}} Priority: {{.Info.Priority}} Architecture: {{.Info.Arch}} diff --git a/deb/deb_test.go b/deb/deb_test.go index 4b2c1b5..426218d 100644 --- a/deb/deb_test.go +++ b/deb/deb_test.go @@ -157,7 +157,7 @@ func TestDebVersionWithReleaseAndPrerelease(t *testing.T) { err := writeControl(&buf, controlData{info, 0}) require.NoError(t, err) v := extractDebVersion(&buf) - require.Equal(t, "1.0.0-2~rc1", v) + require.Equal(t, "1.0.0~rc1-2", v) } func TestDebVersionWithVersionMetadata(t *testing.T) { @@ -260,6 +260,41 @@ func TestNoJoinsControl(t *testing.T) { require.Equal(t, string(bts), w.String()) } +func TestVersionControl(t *testing.T) { + var w bytes.Buffer + require.NoError(t, writeControl(&w, controlData{ + Info: nfpm.WithDefaults(&nfpm.Info{ + Name: "foo", + Arch: "amd64", + Description: "Foo does things", + Priority: "extra", + Maintainer: "Carlos A Becker ", + Version: "v1.0.0-beta+meta", + Release: "2", + Section: "default", + Homepage: "http://carlosbecker.com", + Vendor: "nope", + Overridables: nfpm.Overridables{ + Depends: []string{}, + Recommends: []string{}, + Suggests: []string{}, + Replaces: []string{}, + Provides: []string{}, + Conflicts: []string{}, + Contents: []*files.Content{}, + }, + }), + InstalledSize: 10, + })) + golden := "testdata/control4.golden" + if *update { + require.NoError(t, ioutil.WriteFile(golden, w.Bytes(), 0o600)) + } + bts, err := ioutil.ReadFile(golden) //nolint:gosec + require.NoError(t, err) + require.Equal(t, string(bts), w.String()) +} + func TestDebFileDoesNotExist(t *testing.T) { abs, err := filepath.Abs("../testdata/whatever.confzzz") require.NoError(t, err) diff --git a/deb/testdata/control4.golden b/deb/testdata/control4.golden new file mode 100644 index 0000000..8ff9a12 --- /dev/null +++ b/deb/testdata/control4.golden @@ -0,0 +1,9 @@ +Package: foo +Version: 1.0.0~beta+meta-2 +Section: default +Priority: extra +Architecture: amd64 +Maintainer: Carlos A Becker +Installed-Size: 10 +Homepage: http://carlosbecker.com +Description: Foo does things