file: Add an internal "mode"
[nbdkit.git] / tests / test-old-plugins.sh
bloba02cd17912c2e54ffef33682c04271bbb7281028
1 #!/usr/bin/env bash
2 # nbdkit
3 # Copyright (C) 2019 Red Hat Inc.
5 # Redistribution and use in source and binary forms, with or without
6 # modification, are permitted provided that the following conditions are
7 # met:
9 # * Redistributions of source code must retain the above copyright
10 # notice, this list of conditions and the following disclaimer.
12 # * Redistributions in binary form must reproduce the above copyright
13 # notice, this list of conditions and the following disclaimer in the
14 # documentation and/or other materials provided with the distribution.
16 # * Neither the name of Red Hat nor the names of its contributors may be
17 # used to endorse or promote products derived from this software without
18 # specific prior written permission.
20 # THIS SOFTWARE IS PROVIDED BY RED HAT AND CONTRIBUTORS ''AS IS'' AND
21 # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22 # THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
23 # PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT OR
24 # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
27 # USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
28 # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
29 # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
30 # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31 # SUCH DAMAGE.
33 # See also: tests/old-plugins/README.
35 source ./functions.sh
36 set -e
37 set -x
39 requires guestfish --version
40 requires $CUT --version
41 requires test -f disk
43 # This script is called with one parameter in the form
44 # <ARCH>-<OS>-<VERSION> corresponding to a test in
45 # tests/old-plugins/<ARCH>/<OS>/<VERSION>/
46 if [ -z "$1" ]; then
47 echo "$0: do not call this script directly"
48 exit 1
50 test_arch=$(echo "$1" | $CUT -d - -f 1)
51 test_os=$(echo "$1" | $CUT -d - -f 2)
52 test_version=$(echo "$1" | $CUT -d - -f 3-)
53 d="old-plugins/$test_arch/$test_os/$test_version"
54 f="$d/nbdkit-file-plugin.so"
56 # User can delete the directory or plugin file if they want because of
57 # concerns about distributing binaries in the source. We simply skip
58 # the test in this case.
59 requires test -d "$d"
60 requires test -f "$f"
62 # If we're not running on the right arch/OS for this test, skip.
63 requires test "$(uname -m)" = "$test_arch"
64 requires test "$(uname -s)" = "$test_os"
66 disk="$(mktemp /tmp/nbdkit-test-disk.XXXXXX)"
67 files="$disk"
68 cleanup_fn rm -f $files
70 cp disk $disk
72 nbdkit -fv -U - $f file=$disk \
73 --run '
74 guestfish \
75 add "" protocol:nbd server:unix:$unixsocket : \
76 run : \
77 mount /dev/sda1 / : \
78 write /hello "hello,world" : \
79 cat /hello : \
80 fstrim /