diff --git a/utils.go b/utils.go index f010cc0..43b4032 100644 --- a/utils.go +++ b/utils.go @@ -276,6 +276,17 @@ func (p *BuildPackage) repoVersion() (string, error) { } func (p *BuildPackage) increasePkgRel(buildNo int) error { + if p.Srcinfo == nil { + err := p.genSrcinfo() + if err != nil { + return fmt.Errorf("error generating srcinfo: %v", err) + } + } + + if p.Version == "" { + p.Version = constructVersion(p.Srcinfo.Pkgver, p.Srcinfo.Pkgrel, p.Srcinfo.Epoch) + } + f, err := os.OpenFile(p.Pkgbuild, os.O_RDWR, 0644) if err != nil { return err @@ -670,10 +681,10 @@ func (p *BuildPackage) genSrcinfo() error { return nil } - cmd := exec.Command("sh", "-c", "cd "+filepath.Dir(p.Pkgbuild)+"&&"+"makepkg --printsrcinfo") - res, err := cmd.Output() + cmd := exec.Command("sh", "-c", "cd "+filepath.Dir(p.Pkgbuild)+"&&"+"makepkg --printsrcinfo -p "+filepath.Base(p.Pkgbuild)) + res, err := cmd.CombinedOutput() if err != nil { - return err + return fmt.Errorf("makepkg exit non-zero (PKGBUILD: %s): %v (%s)", p.Pkgbuild, err, string(res)) } info, err := srcinfo.Parse(string(res)) diff --git a/utils_test.go b/utils_test.go new file mode 100644 index 0000000..32fc0d2 --- /dev/null +++ b/utils_test.go @@ -0,0 +1,97 @@ +package main + +import ( + "os" + "strings" + "testing" +) + +const PkgbuildTest = `# Maintainer: Jan Alexander Steffens (heftig) + +pkgname=gnome-todo +pkgver=41.0+r69+ga9a5b7cd +pkgrel=1 +pkgdesc="Task manager for GNOME" +url="https://wiki.gnome.org/Apps/Todo" +arch=(x86_64) +license=(GPL) +depends=(evolution-data-server libpeas python gtk4 libportal-gtk4 libadwaita) +makedepends=(gobject-introspection appstream-glib git meson yelp-tools) +groups=(gnome-extra) +_commit=a9a5b7cdde0244331d2d49220f04018be60c018e # master +source=("git+https://gitlab.gnome.org/GNOME/gnome-todo.git#commit=$_commit") +sha256sums=('SKIP') + +pkgver() { + cd $pkgname + git describe --tags | sed 's/^GNOME_TODO_//;s/_/./g;s/[^-]*-g/r&/;s/-/+/g' + +} + +prepare() { + cd $pkgname +} + +build() { + arch-meson $pkgname build + meson compile -C build +} + +check() ( + glib-compile-schemas "${GSETTINGS_SCHEMA_DIR:=$PWD/$pkgname/data}" + export GSETTINGS_SCHEMA_DIR + + meson test -C build --print-errorlogs +) + +package() { + meson install -C build --destdir "$pkgdir" +} + +# vim:set sw=2 et: +` + +func TestIncreasePkgRel(t *testing.T) { + pkgbuild, err := os.CreateTemp("", "") + if err != nil { + t.Fatal("Unable to setup temp. PKGBUILD") + } + defer func(name string) { + _ = os.Remove(name) + }(pkgbuild.Name()) + + _, err = pkgbuild.WriteString(PkgbuildTest) + if err != nil { + t.Fatal("Unable to write to temp. PKGBUILD") + } + _ = pkgbuild.Close() + + buildPkg := &BuildPackage{ + Pkgbase: "gnome-todo", + Pkgbuild: pkgbuild.Name(), + } + + err = buildPkg.increasePkgRel(1) + if err != nil { + t.Logf("increasePkgRel: %v", err) + t.Fail() + } + + versionSplit := strings.Split(buildPkg.Version, "-") + if versionSplit[len(versionSplit)-1] != "1.1" { + t.Logf("increasePkgRel: expected 1.1 pkgrel, got: %s", buildPkg.Version) + t.Fail() + } + + buildPkg.Srcinfo = nil + err = buildPkg.genSrcinfo() + if err != nil { + t.Logf("increasePkgRel: %v", err) + t.Fail() + } + + if buildPkg.Srcinfo.Pkgrel != "1.1" { + t.Logf("increasePkgRel: expected 1.1 pkgrel, got: %s", buildPkg.Srcinfo.Pkgrel) + t.Fail() + } +}