xref: /illumos-gate/usr/src/test/zfs-tests/tests/functional/cli_root/zfs_unmount/zfs_unmount_007_neg.ksh (revision b6805bf78d2bbbeeaea8909a05623587b42d58b3)
1#!/bin/ksh -p
2#
3# CDDL HEADER START
4#
5# The contents of this file are subject to the terms of the
6# Common Development and Distribution License (the "License").
7# You may not use this file except in compliance with the License.
8#
9# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10# or http://www.opensolaris.org/os/licensing.
11# See the License for the specific language governing permissions
12# and limitations under the License.
13#
14# When distributing Covered Code, include this CDDL HEADER in each
15# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16# If applicable, add the following below this CDDL HEADER, with the
17# fields enclosed by brackets "[]" replaced with your own identifying
18# information: Portions Copyright [yyyy] [name of copyright owner]
19#
20# CDDL HEADER END
21#
22
23#
24# Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
25# Use is subject to license terms.
26#
27
28. $STF_SUITE/tests/functional/cli_root/zfs_mount/zfs_mount.kshlib
29. $STF_SUITE/tests/functional/cli_root/zfs_unmount/zfs_unmount.kshlib
30
31#
32# DESCRIPTION:
33#	Try each 'zfs unmount' with inapplicable scenarios to make sure
34#	it returns an error. include:
35#		* Multiple filesystem|mountpoint specified
36#		* '-a', but also with a specific filesystem|mountpoint.
37#
38# STRATEGY:
39#	1. Create an array of parameters
40#	2. For each parameter in the array, execute the sub-command
41#	3. Verify an error is returned.
42#
43
44verify_runnable "both"
45
46multifs="$TESTFS $TESTFS1"
47datasets=""
48
49for fs in $multifs ; do
50	datasets="$datasets $TESTPOOL/$fs"
51done
52
53set -A args "$unmountall $TESTPOOL/$TESTFS" \
54	"$unmountcmd $datasets"
55
56function setup_all
57{
58	typeset fs
59
60	for fs in $multifs ; do
61		setup_filesystem "$DISKS" "$TESTPOOL" \
62			"$fs" \
63			"${TEST_BASE_DIR%%/}/testroot$$/$TESTPOOL/$fs"
64	done
65	return 0
66}
67
68function cleanup_all
69{
70	typeset fs
71
72	cleanup_filesystem "$TESTPOOL" "$TESTFS1"
73	log_must $ZFS set mountpoint=$TESTDIR $TESTPOOL/$TESTFS
74
75	[[ -d ${TEST_BASE_DIR%%/}/testroot$$ ]] && \
76		$RM -rf ${TEST_BASE_DIR%%/}/testroot$$
77
78	return 0
79}
80
81function verify_all
82{
83	typeset fs
84
85	for fs in $multifs ; do
86		log_must mounted $TESTPOOL/$fs
87	done
88	return 0
89}
90
91log_assert "Badly-formed 'zfs $unmountcmd' with inapplicable scenarios " \
92	"should return an error."
93log_onexit cleanup_all
94
95log_must setup_all
96
97typeset -i i=0
98while (( i < ${#args[*]} )); do
99	log_mustnot $ZFS ${args[i]}
100	((i = i + 1))
101done
102
103log_must verify_all
104
105log_pass "Badly formed 'zfs $unmountcmd' with inapplicable scenarios " \
106	"fail as expected."
107