Files
flatpak/tests/test-completion.sh
Simon McVittie cb47d83b72 run: Add option to share /dev/shm between instances of an app-ID
Similar to /tmp, applications might well use /dev/shm as an IPC
rendezvous between instances, which wouldn't have worked without
--device=shm until now.

Because /dev/shm has specific characteristics (in particular it's
meant to always be a tmpfs), we offload the actual storage into a
subdirectory of the real /dev/shm. Because /dev/shm is a shared
directory between all uids, we have to be extra-careful how we
do this, which is why the test coverage here is important.

This is done on an opt-in basis because of its extra complexity.

Signed-off-by: Simon McVittie <smcv@collabora.com>
2021-04-16 08:57:20 +02:00

233 lines
5.2 KiB
Bash
Executable File

#!/bin/bash
#
# Copyright (C) 2019 Matthias Clasen
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the
# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
set -euo pipefail
#FLATPAK=flatpak
. $(dirname $0)/libtest.sh
skip_revokefs_without_fuse
# This test looks for specific localized strings.
export LC_ALL=C
echo "1..17"
setup_repo
install_repo
${FLATPAK} complete "flatpak a" 9 "a" | sort > complete_out
(diff -u complete_out - || exit 1) <<EOF
EOF
ok "complete a commands"
${FLATPAK} complete "flatpak b" 9 "b" | sort > complete_out
(diff -u complete_out - || exit 1) <<EOF
build
build-bundle
build-commit-from
build-export
build-finish
build-import-bundle
build-init
build-sign
build-update-repo
EOF
ok "complete b commands"
${FLATPAK} complete "flatpak i" 9 "i" | sort > complete_out
(diff -u complete_out - || exit 1) <<EOF
info
install
EOF
ok "complete i commands"
${FLATPAK} complete "flatpak --" 10 "--" | sort > complete_out
(diff -u complete_out - || exit 1) <<EOF
--default-arch
--gl-drivers
--help
--installation=
--installations
--ostree-verbose
--print-system-only
--print-updated-env
--supported-arches
--system
--user
--verbose
--version
EOF
ok "complete global options"
${FLATPAK} complete "flatpak list --" 15 "--" | sort > complete_out
(diff -u complete_out - || exit 1) <<EOF
--all
--app
--app-runtime=
--arch=
--columns=
--help
--installation=
--ostree-verbose
--runtime
--show-details
--system
--user
--verbose
EOF
ok "complete list options"
${FLATPAK} complete "flatpak create-usb /" 20 "/" | sort > complete_out
#(diff -u complete_out - || echo "fail") <<EOF
#__FLATPAK_DIR
#EOF
ok "complete create-usb"
${FLATPAK} complete "flatpak list --arch=" 20 "--arch=" | sort > complete_out
(diff -u complete_out - || exit 1) <<EOF
aarch64
arm
i386
x86_64
EOF
ok "complete --arch"
${FLATPAK} complete "flatpak override --allow=" 25 "--allow=" | sort > complete_out
(diff -u complete_out - || exit 1) <<EOF
bluetooth
canbus
devel
multiarch
per-app-dev-shm
EOF
ok "complete --allow"
${FLATPAK} complete "flatpak config --set l" 23 "l" > complete_out
(diff -u complete_out - || exit 1) <<EOF
languages
EOF
ok "complete config"
${FLATPAK} complete "flatpak info o" 16 "o" | sort > complete_out
(diff -u complete_out - || exit 1) <<EOF
org.test.Hello
org.test.Hello.Locale
org.test.Platform
EOF
ok "complete ref"
${FLATPAK} complete "flatpak permission-reset o" 26 "o" | sort > complete_out
(diff -u complete_out - || exit 1) <<EOF
org.test.Hello
EOF
ok "complete partial ref"
for cmd in build-bundle build-commit-from build-export build-finish \
build-import-bundle build-init build-sign build-update-repo \
build document-export document-info document-list document-unexport \
enter kill permission-list permission-remove permission-reset \
permission-show ps repo; do
len=$(awk '{ print length($0) }' <<< "flatpak $cmd --")
${FLATPAK} complete "flatpak $cmd --" $len "--" > complete_out
assert_not_file_has_content complete_out "^--system "
assert_not_file_has_content complete_out "^--user "
assert_not_file_has_content complete_out "^--installation="
done
ok "complete NO_DIR commands"
for cmd in history info list run update mask \
config install make-current override remote-add repair \
create-usb remote-delete remote-info remote-list remote-ls \
remote-modify search uninstall update; do
len=$(awk '{ print length($0) }' <<< "flatpak $cmd --")
${FLATPAK} complete "flatpak $cmd --" $len "--" > complete_out
assert_file_has_content complete_out "^--system "
assert_file_has_content complete_out "^--user "
assert_file_has_content complete_out "^--installation="
done
ok "complete non-NO_DIR commands"
${FLATPAK} complete "flatpak list --columns=" 24 "--columns=" | sort > complete_out
(diff -u complete_out - || exit 1) <<EOF
active
all
application
arch
branch
description
help
installation
latest
name
options
origin
ref
runtime
size
version
EOF
ok "complete list --columns="
${FLATPAK} complete "flatpak list --columns=all" 27 "--columns=all" | sort > complete_out
assert_file_empty complete-out
ok "complete list --columns=all"
${FLATPAK} complete "flatpak list --columns=hel" 27 "--columns=hel" | sort > complete_out
(diff -u complete_out - || exit 1) <<EOF
help
EOF
ok "complete list --columns=hel"
${FLATPAK} complete "flatpak list --columns=arch," 29 "--columns=arch," | sort > complete_out
(diff -u complete_out - || exit 1) <<EOF
arch,active
arch,application
arch,branch
arch,description
arch,installation
arch,latest
arch,name
arch,options
arch,origin
arch,ref
arch,runtime
arch,size
arch,version
EOF
ok "complete list --columns=arch,"