File: task.yaml

package info (click to toggle)
snapd 2.72-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 80,412 kB
  • sloc: sh: 16,506; ansic: 16,211; python: 11,213; makefile: 1,919; exp: 190; awk: 58; xml: 22
file content (87 lines) | stat: -rw-r--r-- 3,647 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
summary: Check snap alias and snap unalias across different instances of the same snap

details: |
    Snapd contains an alias system, whereas an application from a snap may be
    called with an unqualified name that is different from that of the snap. The
    alias system is closely related to snap names, and once snap instances were
    introduced, where the same snap name may be installed under different names,
    by combining snap name and the so-called instance key, then aliases could
    misbehave and act on the wrong instance.

    The test installs a snap twice, with different instance keys and uses
    aliases in diverse ways to check that aliases from one snap instance do not
    break or get confused with the other snap instance.

prepare: |
    snap set system experimental.parallel-instances=true

    "$TESTSTOOLS"/snaps-state install-local aliases
    "$TESTSTOOLS"/snaps-state install-local-as aliases aliases_foo

restore: |
    snap set system experimental.parallel-instances=null

execute: |
    echo "Create manual aliases"
    snap alias aliases.cmd1 alias1|MATCH ".*- aliases.cmd1 as alias1.*"
    snap alias aliases.cmd2 alias2

    echo "Test the aliases"
    SNAP_MOUNT_DIR="$(os.paths snap-mount-dir)"
    test "$(readlink "$SNAP_MOUNT_DIR"/bin/alias1)" = "aliases.cmd1"
    test "$(readlink "$SNAP_MOUNT_DIR"/bin/alias2)" = "aliases.cmd2"
    alias1|MATCH "ok command 1"
    alias2|MATCH "ok command 2"

    echo "Attempting to create the same aliases for aliases_foo should conflict"
    not snap alias aliases_foo.cmd1 alias1
    snap change --last=alias | MATCH 'cannot enable alias "alias1" for "aliases_foo", already enabled for "aliases"'
    not snap alias aliases_foo.cmd2 alias2
    snap change --last=alias | MATCH 'cannot enable alias "alias2" for "aliases_foo", already enabled for "aliases"'

    echo "Check listing"
    snap aliases > aliases.out
    MATCH "aliases.cmd1 +alias1 +manual" < aliases.out
    MATCH "aliases.cmd2 +alias2 +manual" < aliases.out
    NOMATCH aliases_foo                  < aliases.out

    echo "Disable one alias for aliases snap"
    snap unalias alias2|MATCH ".*- aliases.cmd2 as alias2.*"

    echo "Creating an alias for aliases_foo should work now"
    snap alias aliases_foo.cmd2 alias2

    echo "The symlinks should be updated and pointing to the right snaps"
    test "$(readlink "$SNAP_MOUNT_DIR"/bin/alias1)" = "aliases.cmd1"
    test "$(readlink "$SNAP_MOUNT_DIR"/bin/alias2)" = "aliases_foo.cmd2"

    # precondition check if apps can still be run
    alias1|MATCH "ok command 1"
    alias2|MATCH "ok command 2"

    echo "Listing should show both snaps having aliases"
    snap aliases > aliases.out
    MATCH "aliases.cmd1 +alias1 +manual"     < aliases.out
    MATCH "aliases_foo.cmd2 +alias2 +manual" < aliases.out

    echo "Disable all aliases of aliases snap"
    snap unalias aliases|MATCH ".*- aliases.cmd1 as alias1*"
    test ! -h "$SNAP_MOUNT_DIR"/bin/alias1

    echo "Aliases of aliases_foo remain unchanged"
    test "$(readlink "$SNAP_MOUNT_DIR"/bin/alias2)" = "aliases_foo.cmd2"
    snap aliases | MATCH "aliases_foo.cmd2 +alias2 +manual"

    echo "Recreate an alias1 for aliases snap"
    snap alias aliases.cmd1 alias1
    test "$(readlink "$SNAP_MOUNT_DIR"/bin/alias1)" = "aliases.cmd1"

    echo "Removing the aliases snap should remove its aliases"
    snap remove --purge aliases
    test ! -e "$SNAP_MOUNT_DIR/bin/alias1"

    echo "Aliases of aliases_foo remain unchanged"
    test "$(readlink "$SNAP_MOUNT_DIR"/bin/alias2)" = "aliases_foo.cmd2"

    snap remove --purge aliases_foo
    test ! -e "$SNAP_MOUNT_DIR/bin/alias2"