From bea380b9d5835bb632b537050aac28ed76f5d853 Mon Sep 17 00:00:00 2001 From: HNO3Miracle Date: Mon, 8 Jun 2026 18:23:53 +0800 Subject: [PATCH] fix(spec): order doc before license files --- pkgsite_test.go | 24 ++++++++++++++++++++++++ spec.go | 8 +++++--- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/pkgsite_test.go b/pkgsite_test.go index f6716e7..ac00428 100644 --- a/pkgsite_test.go +++ b/pkgsite_test.go @@ -87,6 +87,30 @@ func TestCleanSpecAssetPath(t *testing.T) { } } +func TestWriteLicenseAndDocFilesOrdersDocBeforeSortedLicenses(t *testing.T) { + path := filepath.Join(t.TempDir(), "files") + f, err := os.Create(path) + if err != nil { + t.Fatalf("create temp file: %v", err) + } + writeLicenseAndDocFiles(f, specAssetFiles{ + licenseFiles: []string{"zLICENSE", "COPYING", "LICENSE"}, + readmeFile: "README.md", + }, true) + if err := f.Close(); err != nil { + t.Fatalf("close temp file: %v", err) + } + + content, err := os.ReadFile(path) + if err != nil { + t.Fatalf("read temp file: %v", err) + } + want := "%doc README.md\n%license COPYING\n%license LICENSE\n%license zLICENSE\n" + if got := string(content); got != want { + t.Fatalf("writeLicenseAndDocFiles() = %q, want %q", got, want) + } +} + func TestSummaryFromReadme(t *testing.T) { readme := ` # Project diff --git a/spec.go b/spec.go index 5e2b6fd..28de148 100644 --- a/spec.go +++ b/spec.go @@ -260,12 +260,14 @@ func writeRPMProgramSubpackage(f *os.File, gopkg, openRuyiProgram, openRuyiSrc, } func writeLicenseAndDocFiles(f *os.File, assetFiles specAssetFiles, includeDoc bool) { - for _, licenseFile := range assetFiles.licenseFiles { - fmt.Fprintf(f, "%%license %s\n", licenseFile) - } if includeDoc && assetFiles.readmeFile != "" { fmt.Fprintf(f, "%%doc %s\n", assetFiles.readmeFile) } + licenseFiles := append([]string(nil), assetFiles.licenseFiles...) + sort.Strings(licenseFiles) + for _, licenseFile := range licenseFiles { + fmt.Fprintf(f, "%%license %s\n", licenseFile) + } } func writeRPMFilesSection(f *os.File, openRuyiSrc, openRuyiLib, openRuyiProgram string, pkgType packageType, assetFiles specAssetFiles) { -- 2.52.0