1
1
Fork 0
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:
Erik G 2020-07-15 15:10:29 +02:00 committed by GitHub
parent 815450cd78
commit 8920a77b95
Signed by: GitHub
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 81 additions and 2 deletions

View File

@ -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.

View File

@ -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",

View File

@ -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.

View File

@ -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"