github.com/chipaca/snappy@v0.0.0-20210104084008-1f06296fe8ad/cmd/snap-confine/spread-tests/regression/lp-1599608/task.yaml (about)

     1  summary: Check that execle doesn't regress
     2  # This is blacklisted on debian because we first have to get the dpkg-vendor patches
     3  systems: [-debian-8]
     4  details: |
     5   The setup for this test is unorthodox because by the time the cgroup code is
     6   executed, the mounts are in place and /lib/udev/snap-device-helper from the core
     7   snap is used. Unfortunately, simple bind mounts over
     8   /snap/ubuntu-core/current/lib/udev don't work and the core snap must be
     9   unpacked, lib/udev/snap-device-helper modified to be tested, repacked and mounted.
    10   We unmount the core snap and move it aside to avoid both the original and the
    11   updated core snap from being mounted on the same mount point, which confuses
    12   the kernel.
    13  prepare: |
    14      echo "This test is disabled because it causes failures for subsequent tests"
    15      echo "it seems to unmount ubuntu-core snap and not re-mount the original one correctly"
    16      exit 0
    17      cd /
    18      echo "Install hello-world"
    19      snap install hello-world
    20      systemctl stop snapd.service snapd.socket
    21      # all of this ls madness can go away when we have remote environment
    22      # variables
    23      echo "Unmount original core snap"
    24      umount $(ls -1d /snap/ubuntu-core/* | grep -v current | tail -1)
    25      mv $(ls -1 /var/lib/snapd/snaps/ubuntu-core_*.snap | tail -1) $(ls -1 /var/lib/snapd/snaps/ubuntu-core_*.snap | tail -1).orig
    26      echo "Create modified core snap for snap-device-helper"
    27      unsquashfs $(ls -1 /var/lib/snapd/snaps/ubuntu-core_*.snap.orig | tail -1)
    28      echo 'echo PATH=$PATH > /run/udev/spread-test.out' >> ./squashfs-root/lib/udev/snap-device-helper
    29      echo 'echo TESTVAR=$TESTVAR >> /run/udev/spread-test.out' >> ./squashfs-root/lib/udev/snap-device-helper
    30      mksquashfs ./squashfs-root $(ls -1 /var/lib/snapd/snaps/ubuntu-core_*.snap.orig | tail -1 | sed 's/.orig//') -comp xz -no-fragments
    31      if [ ! -e $(ls -1 /var/lib/snapd/snaps/ubuntu-core_*.snap | tail -1) ]; then exit 1; fi
    32      echo "Mount modified core snap"
    33      mount $(ls -1 /var/lib/snapd/snaps/ubuntu-core_*.snap | tail -1) $(ls -1d /snap/ubuntu-core/* | grep -v current | tail -1)
    34      systemctl start snapd.service snapd.socket
    35  execute: |
    36      exit 0
    37      cd /
    38      echo "Add a udev tag so affected code branch is exercised"
    39      echo 'KERNEL=="uinput", TAG+="snap_hello-world_env"' > /etc/udev/rules.d/70-spread-test.rules
    40      udevadm control --reload-rules
    41      udevadm settle
    42      udevadm trigger
    43      udevadm settle
    44      PATH=/foo:$PATH TESTVAR=bar hello-world.env | grep PATH
    45      cat /run/udev/spread-test.out
    46      echo "Ensure user-specified PATH is not used"
    47      not grep 'PATH=/foo' /run/udev/spread-test.out
    48      echo "Ensure environment is clean"
    49      not grep 'TESTVAR=bar' /run/udev/spread-test.out
    50  restore: |
    51      exit 0
    52      echo "Remove hello-world"
    53      snap remove --purge hello-world
    54      systemctl stop snapd.service snapd.socket
    55      echo "Unmount the modified core snap"
    56      # all of this ls madness can go away when we have remote environment
    57      # variables
    58      umount $(ls -1d /snap/ubuntu-core/* | grep -v current | tail -1)
    59      if [ "x"$(ls -1 /var/lib/snapd/snaps/ubuntu-core_*.snap.orig | tail -1) != "x" ]; then mv -f $(ls -1 /var/lib/snapd/snaps/ubuntu-core_*.snap.orig | tail -1) $(ls -1 /var/lib/snapd/snaps/ubuntu-core_*.snap.orig | tail -1 | sed 's/.orig//') ; fi
    60      echo "Mount the original core snap"
    61      mount $(ls -1 /var/lib/snapd/snaps/ubuntu-core_*.snap | tail -1) $(ls -1d /snap/ubuntu-core/* | grep -v current | tail -1)
    62      rm -rf /squashfs-root
    63      rm -f /run/udev/spread-test.out
    64      rm -f /etc/udev/rules.d/70-spread-test.rules
    65      udevadm control --reload-rules
    66      udevadm settle
    67      udevadm trigger
    68      udevadm settle
    69      systemctl start snapd.service snapd.socket