mirror of
https://github.com/goreleaser/nfpm
synced 2024-05-23 00:46:18 +02:00
fix: Reflect (pre)release in conventional file names. (#170)
* fix: Reflect (pre)release in conventional file names. * test: Add tests for conventional file names. * test: Make test case variables consistent. Co-authored-by: Erik Geiser <erik.geiser@redteam-pentesting.de>
This commit is contained in:
parent
815450cd78
commit
8920a77b95
10
deb/deb.go
10
deb/deb.go
|
@ -55,8 +55,16 @@ func (*Deb) ConventionalFileName(info *nfpm.Info) string {
|
|||
arch = info.Arch
|
||||
}
|
||||
|
||||
version := info.Version
|
||||
if info.Release != "" {
|
||||
version += "-" + info.Release
|
||||
}
|
||||
if info.Prerelease != "" {
|
||||
version += "~" + info.Prerelease
|
||||
}
|
||||
|
||||
// package_version_architecture.package-type
|
||||
return fmt.Sprintf("%s_%s_%s.deb", info.Name, info.Version, arch)
|
||||
return fmt.Sprintf("%s_%s_%s.deb", info.Name, version, arch)
|
||||
}
|
||||
|
||||
// Package writes a new deb package to the given writer using the given info.
|
||||
|
|
|
@ -386,6 +386,37 @@ func TestMultilineFields(t *testing.T) {
|
|||
assert.Equal(t, string(bts), w.String())
|
||||
}
|
||||
|
||||
func TestDEBConventionalFileName(t *testing.T) {
|
||||
info := &nfpm.Info{
|
||||
Name: "testpkg",
|
||||
Arch: "all",
|
||||
}
|
||||
|
||||
testCases := []struct {
|
||||
Version string
|
||||
Release string
|
||||
Prerelease string
|
||||
Expected string
|
||||
}{
|
||||
{Version: "1.2.3", Release: "", Prerelease: "",
|
||||
Expected: fmt.Sprintf("%s_1.2.3_%s.deb", info.Name, info.Arch)},
|
||||
{Version: "1.2.3", Release: "4", Prerelease: "",
|
||||
Expected: fmt.Sprintf("%s_1.2.3-4_%s.deb", info.Name, info.Arch)},
|
||||
{Version: "1.2.3", Release: "4", Prerelease: "5",
|
||||
Expected: fmt.Sprintf("%s_1.2.3-4~5_%s.deb", info.Name, info.Arch)},
|
||||
{Version: "1.2.3", Release: "", Prerelease: "5",
|
||||
Expected: fmt.Sprintf("%s_1.2.3~5_%s.deb", info.Name, info.Arch)},
|
||||
}
|
||||
|
||||
for _, testCase := range testCases {
|
||||
info.Version = testCase.Version
|
||||
info.Release = testCase.Release
|
||||
info.Prerelease = testCase.Prerelease
|
||||
|
||||
assert.Equal(t, testCase.Expected, Default.ConventionalFileName(info))
|
||||
}
|
||||
}
|
||||
|
||||
func TestDebChangelogControl(t *testing.T) {
|
||||
info := &nfpm.Info{
|
||||
Name: "changelog-test",
|
||||
|
|
11
rpm/rpm.go
11
rpm/rpm.go
|
@ -69,8 +69,17 @@ func ensureValidArch(info *nfpm.Info) *nfpm.Info {
|
|||
// http://ftp.rpm.org/max-rpm/ch-rpm-file-format.html
|
||||
func (*RPM) ConventionalFileName(info *nfpm.Info) string {
|
||||
info = ensureValidArch(info)
|
||||
|
||||
version := info.Version
|
||||
if info.Release != "" {
|
||||
version += "-" + info.Release
|
||||
}
|
||||
if info.Prerelease != "" {
|
||||
version += "~" + info.Prerelease
|
||||
}
|
||||
|
||||
// name-version-release.architecture.rpm
|
||||
return fmt.Sprintf("%s-%s.%s.rpm", info.Name, info.Version, info.Arch)
|
||||
return fmt.Sprintf("%s-%s.%s.rpm", info.Name, version, info.Arch)
|
||||
}
|
||||
|
||||
// Package writes a new RPM package to the given writer using the given info.
|
||||
|
|
|
@ -302,6 +302,37 @@ func TestRPMMultiArch(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func TestRPMConventionalFileName(t *testing.T) {
|
||||
info := &nfpm.Info{
|
||||
Name: "testpkg",
|
||||
Arch: "noarch",
|
||||
}
|
||||
|
||||
testCases := []struct {
|
||||
Version string
|
||||
Release string
|
||||
Prerelease string
|
||||
Expected string
|
||||
}{
|
||||
{Version: "1.2.3", Release: "", Prerelease: "",
|
||||
Expected: fmt.Sprintf("%s-1.2.3.%s.rpm", info.Name, info.Arch)},
|
||||
{Version: "1.2.3", Release: "4", Prerelease: "",
|
||||
Expected: fmt.Sprintf("%s-1.2.3-4.%s.rpm", info.Name, info.Arch)},
|
||||
{Version: "1.2.3", Release: "4", Prerelease: "5",
|
||||
Expected: fmt.Sprintf("%s-1.2.3-4~5.%s.rpm", info.Name, info.Arch)},
|
||||
{Version: "1.2.3", Release: "", Prerelease: "5",
|
||||
Expected: fmt.Sprintf("%s-1.2.3~5.%s.rpm", info.Name, info.Arch)},
|
||||
}
|
||||
|
||||
for _, testCase := range testCases {
|
||||
info.Version = testCase.Version
|
||||
info.Release = testCase.Release
|
||||
info.Prerelease = testCase.Prerelease
|
||||
|
||||
assert.Equal(t, testCase.Expected, Default.ConventionalFileName(info))
|
||||
}
|
||||
}
|
||||
|
||||
func TestRPMChangelog(t *testing.T) {
|
||||
info := exampleInfo()
|
||||
info.Changelog = "../testdata/changelog.yaml"
|
||||
|
|
Loading…
Reference in New Issue