xref: /illumos-gate/usr/src/test/zfs-tests/tests/functional/cli_root/zfs_inherit/zfs_inherit_002_neg.ksh (revision 1d32ba663e202c24a5a1f2e5aef83fffb447cb7f)
1d583b39bSJohn Wren Kennedy#!/bin/ksh -p
2d583b39bSJohn Wren Kennedy#
3d583b39bSJohn Wren Kennedy# CDDL HEADER START
4d583b39bSJohn Wren Kennedy#
5d583b39bSJohn Wren Kennedy# The contents of this file are subject to the terms of the
6d583b39bSJohn Wren Kennedy# Common Development and Distribution License (the "License").
7d583b39bSJohn Wren Kennedy# You may not use this file except in compliance with the License.
8d583b39bSJohn Wren Kennedy#
9d583b39bSJohn Wren Kennedy# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10d583b39bSJohn Wren Kennedy# or http://www.opensolaris.org/os/licensing.
11d583b39bSJohn Wren Kennedy# See the License for the specific language governing permissions
12d583b39bSJohn Wren Kennedy# and limitations under the License.
13d583b39bSJohn Wren Kennedy#
14d583b39bSJohn Wren Kennedy# When distributing Covered Code, include this CDDL HEADER in each
15d583b39bSJohn Wren Kennedy# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16d583b39bSJohn Wren Kennedy# If applicable, add the following below this CDDL HEADER, with the
17d583b39bSJohn Wren Kennedy# fields enclosed by brackets "[]" replaced with your own identifying
18d583b39bSJohn Wren Kennedy# information: Portions Copyright [yyyy] [name of copyright owner]
19d583b39bSJohn Wren Kennedy#
20d583b39bSJohn Wren Kennedy# CDDL HEADER END
21d583b39bSJohn Wren Kennedy#
22d583b39bSJohn Wren Kennedy
23d583b39bSJohn Wren Kennedy#
24d583b39bSJohn Wren Kennedy# Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
25d583b39bSJohn Wren Kennedy# Use is subject to license terms.
26d583b39bSJohn Wren Kennedy#
27d583b39bSJohn Wren Kennedy
28d583b39bSJohn Wren Kennedy#
29*1d32ba66SJohn Wren Kennedy# Copyright (c) 2011, 2016 by Delphix. All rights reserved.
30d583b39bSJohn Wren Kennedy#
31d583b39bSJohn Wren Kennedy
32d583b39bSJohn Wren Kennedy. $STF_SUITE/include/libtest.shlib
33d583b39bSJohn Wren Kennedy
34d583b39bSJohn Wren Kennedy#
35d583b39bSJohn Wren Kennedy# DESCRIPTION:
36d583b39bSJohn Wren Kennedy# 'zfs inherit' should return an error with bad parameters in one command.
37d583b39bSJohn Wren Kennedy#
38d583b39bSJohn Wren Kennedy# STRATEGY:
39d583b39bSJohn Wren Kennedy# 1. Set an array of bad options and invlid properties to 'zfs inherit'
40d583b39bSJohn Wren Kennedy# 2. Execute 'zfs inherit' with bad options and passing invlid properties
41d583b39bSJohn Wren Kennedy# 3. Verify an error is returned.
42d583b39bSJohn Wren Kennedy#
43d583b39bSJohn Wren Kennedy
44d583b39bSJohn Wren Kennedyverify_runnable "both"
45d583b39bSJohn Wren Kennedy
46d583b39bSJohn Wren Kennedyfunction cleanup
47d583b39bSJohn Wren Kennedy{
48d583b39bSJohn Wren Kennedy	if snapexists $TESTPOOL/$TESTFS@$TESTSNAP; then
49*1d32ba66SJohn Wren Kennedy		log_must zfs destroy $TESTPOOL/$TESTFS@$TESTSNAP
50d583b39bSJohn Wren Kennedy	fi
51d583b39bSJohn Wren Kennedy}
52d583b39bSJohn Wren Kennedy
53ee0ab62fSYuri Pankovlog_assert "'zfs inherit' should return an error with bad parameters in" \
54ee0ab62fSYuri Pankov    "one command."
55d583b39bSJohn Wren Kennedylog_onexit cleanup
56d583b39bSJohn Wren Kennedy
57d583b39bSJohn Wren Kennedyset -A badopts "r" "R" "-R" "-rR" "-a" "-" "-?" "-1" "-2" "-v" "-n"
58d583b39bSJohn Wren Kennedyset -A props "recordsize" "mountpoint" "sharenfs" "checksum" "compression" \
59d583b39bSJohn Wren Kennedy    "atime" "devices" "exec" "setuid" "readonly" "zoned" "snapdir" "aclmode" \
60d583b39bSJohn Wren Kennedy    "aclinherit" "xattr" "copies"
61ee0ab62fSYuri Pankovset -A illprops "recordsiz" "mountpont" "sharen" "compres" "atme" "blah"
62d583b39bSJohn Wren Kennedy
63*1d32ba66SJohn Wren Kennedylog_must zfs snapshot $TESTPOOL/$TESTFS@$TESTSNAP
64d583b39bSJohn Wren Kennedy
65d583b39bSJohn Wren Kennedytypeset -i i=0
66d583b39bSJohn Wren Kennedyfor ds in $TESTPOOL $TESTPOOL/$TESTFS $TESTPOOL/$TESTVOL \
67d583b39bSJohn Wren Kennedy	$TESTPOOL/$TESTFS@$TESTSNAP; do
68d583b39bSJohn Wren Kennedy
69d583b39bSJohn Wren Kennedy	# zfs inherit should fail with bad options
70d583b39bSJohn Wren Kennedy	for opt in ${badopts[@]}; do
71d583b39bSJohn Wren Kennedy		for prop in ${props[@]}; do
72*1d32ba66SJohn Wren Kennedy			log_mustnot eval "zfs inherit $opt $prop $ds \
73d583b39bSJohn Wren Kennedy			    >/dev/null 2>&1"
74d583b39bSJohn Wren Kennedy		done
75d583b39bSJohn Wren Kennedy	done
76d583b39bSJohn Wren Kennedy
77d583b39bSJohn Wren Kennedy	# zfs inherit should fail with invalid properties
78d583b39bSJohn Wren Kennedy	for prop in "${illprops[@]}"; do
79*1d32ba66SJohn Wren Kennedy		log_mustnot eval "zfs inherit $prop $ds >/dev/null 2>&1"
80*1d32ba66SJohn Wren Kennedy		log_mustnot eval "zfs inherit -r $prop $ds >/dev/null 2>&1"
81d583b39bSJohn Wren Kennedy	done
82d583b39bSJohn Wren Kennedy
83d583b39bSJohn Wren Kennedy	# zfs inherit should fail with too many arguments
84d583b39bSJohn Wren Kennedy	(( i = 0 ))
85d583b39bSJohn Wren Kennedy	while (( i < ${#props[*]} -1 )); do
86*1d32ba66SJohn Wren Kennedy		log_mustnot eval "zfs inherit ${props[(( i ))]} \
87d583b39bSJohn Wren Kennedy				${props[(( i + 1 ))]} $ds >/dev/null 2>&1"
88*1d32ba66SJohn Wren Kennedy		log_mustnot eval "zfs inherit -r ${props[(( i ))]} \
89d583b39bSJohn Wren Kennedy				${props[(( i + 1 ))]} $ds >/dev/null 2>&1"
90d583b39bSJohn Wren Kennedy
91d583b39bSJohn Wren Kennedy		(( i = i + 2 ))
92d583b39bSJohn Wren Kennedy	done
93d583b39bSJohn Wren Kennedy
94d583b39bSJohn Wren Kennedydone
95d583b39bSJohn Wren Kennedy
96d583b39bSJohn Wren Kennedy# zfs inherit should fail with missing datasets
97d583b39bSJohn Wren Kennedyfor prop in ${props[@]}; do
98*1d32ba66SJohn Wren Kennedy	log_mustnot eval "zfs inherit $prop >/dev/null 2>&1"
99*1d32ba66SJohn Wren Kennedy	log_mustnot eval "zfs inherit -r $prop >/dev/null 2>&1"
100d583b39bSJohn Wren Kennedydone
101d583b39bSJohn Wren Kennedy
102d583b39bSJohn Wren Kennedylog_pass "'zfs inherit' failed as expected when passing illegal arguments."
103