mirror of
https://github.com/goreleaser/nfpm
synced 2024-06-08 16:46:45 +02:00
a18661b627
* feat: add support for Arch Linux packages * test: Add initial tests * test: Increase coverage by modifying example info * test: Add test for ArchLinux.ConventionalFileName() * docs: Return error if package name is invalid * fix: Make empty name invalid * fix: Add replaces field to .PKGINFO generator * test: Add additional tests * test: Test for added replaces field * docs: Add more comments * style: Run gofumpt * fix: Handle errors as recommended by linter * fix: Allow changing the pkgbase * style: Resolve semgrep findings * docs: Change docs to reflect new Arch Linux packager * docs: Fix spelling mistake in comment Co-authored-by: Dj Gilcrease <digitalxero@gmail.com> * docs: use aspell to fix all spelling mistakes * feat: Handle packaging formats with non-distinct file extensions as described in #546 * fix: Add newline to generated .INSTALL file * fix: Take into account provided info for non-symlink files * docs: Fix names for arch-specific scripts in documentation * fix: Only consider files with the correct packager field * fix: Use correct scripts field for post_remove script * test: Implement archlinux acceptance tests * test: Add archlinux to acceptance_test.go * test: Add archlinux to github test matrix * test: Use updated build.yml from main branch * Fix ConventionalExtension() for apk * fix: Take epoch value into account * fix: Add arm5 and arm6 architectures Co-authored-by: Dj Gilcrease <digitalxero@gmail.com> Co-authored-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
131 lines
3.8 KiB
Docker
131 lines
3.8 KiB
Docker
FROM archlinux AS test_base
|
|
ARG package
|
|
RUN echo "${package}"
|
|
COPY ${package} /tmp/foo.pkg.tar.zst
|
|
|
|
|
|
# ---- minimal test ----
|
|
FROM test_base AS min
|
|
RUN pacman --noconfirm -U /tmp/foo.pkg.tar.zst
|
|
|
|
|
|
# ---- symlink test ----
|
|
FROM min AS symlink
|
|
RUN ls -l /path/to/symlink | grep "/path/to/symlink -> /etc/foo/whatever.conf"
|
|
|
|
|
|
# ---- simple test ----
|
|
FROM min AS simple
|
|
RUN test -e /usr/local/bin/fake
|
|
RUN test -f /etc/foo/whatever.conf
|
|
RUN echo wat >> /etc/foo/whatever.conf
|
|
RUN pacman --noconfirm -R foo
|
|
RUN test -f /etc/foo/whatever.conf.pacsave
|
|
RUN test ! -f /usr/local/bin/fake
|
|
|
|
|
|
# ---- no-glob test ----
|
|
FROM min AS no-glob
|
|
RUN test -d /usr/share/whatever/
|
|
RUN test -f /usr/share/whatever/file1
|
|
RUN test -f /usr/share/whatever/file2
|
|
RUN test -d /usr/share/whatever/folder2
|
|
RUN test -f /usr/share/whatever/folder2/file1
|
|
RUN test -f /usr/share/whatever/folder2/file2
|
|
|
|
|
|
# ---- complex test ----
|
|
FROM min AS complex
|
|
RUN pacman -Qi foo | grep "Depends On\\s*: bash"
|
|
RUN pacman -Qi foo | grep "Replaces\\s*: foo"
|
|
RUN pacman -Qi foo | grep "Provides\\s*: fake"
|
|
RUN test -e /usr/local/bin/fake
|
|
RUN test -f /etc/foo/whatever.conf
|
|
RUN test -d /usr/share/whatever/
|
|
RUN test -d /usr/share/whatever/folder
|
|
RUN test -f /usr/share/whatever/folder/file1
|
|
RUN test -f /usr/share/whatever/folder/file2
|
|
RUN test -d /usr/share/whatever/folder/folder2
|
|
RUN test -f /usr/share/whatever/folder/folder2/file1
|
|
RUN test -f /usr/share/whatever/folder/folder2/file2
|
|
RUN test -d /var/log/whatever
|
|
RUN test -d /usr/share/foo
|
|
RUN test -d /usr/foo/bar/something
|
|
RUN test $(stat -c %a /usr/bin/fake) -eq 4755
|
|
RUN test -f /tmp/preinstall-proof
|
|
RUN test -f /tmp/postinstall-proof
|
|
RUN test ! -f /tmp/preremove-proof
|
|
RUN test ! -f /tmp/postremove-proof
|
|
RUN echo wat >> /etc/foo/whatever.conf
|
|
RUN pacman --noconfirm -R foo
|
|
RUN test -f /etc/foo/whatever.conf.pacsave
|
|
RUN test ! -f /usr/local/bin/fake
|
|
RUN test ! -f /usr/bin/fake
|
|
RUN test -f /tmp/preremove-proof
|
|
RUN test -f /tmp/postremove-proof
|
|
RUN test ! -d /var/log/whatever
|
|
RUN test ! -d /usr/share/foo
|
|
RUN test ! -d /usr/foo/bar/something
|
|
|
|
|
|
# ---- signed test ----
|
|
FROM min AS signed
|
|
RUN echo "Arch Linux has no signature support"
|
|
|
|
|
|
# ---- overrides test ----
|
|
FROM min AS overrides
|
|
RUN test -e /usr/local/bin/fake
|
|
RUN test -f /etc/foo/whatever.conf
|
|
RUN test ! -f /tmp/preinstall-proof
|
|
RUN test -f /tmp/postinstall-proof
|
|
RUN test ! -f /tmp/preremove-proof
|
|
RUN test ! -f /tmp/postremove-proof
|
|
RUN echo wat >> /etc/foo/whatever.conf
|
|
RUN pacman --noconfirm -R foo
|
|
RUN test -f /etc/foo/whatever.conf.pacsave
|
|
RUN test ! -f /usr/local/bin/fake
|
|
RUN test -f /tmp/preremove-proof
|
|
RUN test ! -f /tmp/postremove-proof
|
|
|
|
|
|
# ---- meta test ----
|
|
FROM test_base AS meta
|
|
RUN pacman -Sy && pacman --noconfirm -U /tmp/foo.pkg.tar.zst
|
|
RUN command -v zsh
|
|
|
|
|
|
# ---- env-var-version test ----
|
|
FROM min AS env-var-version
|
|
ENV EXPECTVER="foo 1.0.0-1"
|
|
RUN export FOUND_VER="$(pacman -Q foo)" && \
|
|
echo "Expected: '${EXPECTVER}' :: Found: '${FOUND_VER}'" && \
|
|
test "${FOUND_VER}" = "${EXPECTVER}"
|
|
|
|
|
|
# ---- changelog test ----
|
|
FROM min AS withchangelog
|
|
RUN echo "Arch Linux has no changelog support"
|
|
|
|
|
|
# ---- upgrade test ----
|
|
FROM test_base AS upgrade
|
|
ARG oldpackage
|
|
RUN echo "${oldpackage}"
|
|
COPY ${oldpackage} /tmp/old_foo.pkg.tar.zst
|
|
RUN pacman --noconfirm -U /tmp/old_foo.pkg.tar.zst
|
|
RUN test -f /tmp/preinstall-proof
|
|
RUN cat /tmp/preinstall-proof | grep "Install"
|
|
RUN test -f /tmp/postinstall-proof
|
|
RUN cat /tmp/postinstall-proof | grep "Install"
|
|
RUN test ! -f /tmp/preupgrade-proof
|
|
RUN test ! -f /tmp/postupgrade-proof
|
|
RUN echo modified > /etc/regular.conf
|
|
RUN echo modified > /etc/noreplace.conf
|
|
RUN pacman --noconfirm -U /tmp/foo.pkg.tar.zst
|
|
RUN test -f /tmp/preupgrade-proof
|
|
RUN test -f /tmp/postupgrade-proof
|
|
RUN test -f /etc/regular.conf
|
|
RUN test -f /etc/regular.conf.pacnew
|
|
RUN test -f /etc/noreplace.conf
|
|
RUN test -f /etc/noreplace.conf.pacnew |