xref: /illumos-gate/usr/src/test/zfs-tests/tests/functional/cli_root/zfs_diff/zfs_diff_cliargs.ksh (revision a629ded1d7b2e67c2028ccbc5ba9099328cc4e1b)
1*a629ded1SLOLi#!/bin/ksh -p
2*a629ded1SLOLi#
3*a629ded1SLOLi# This file and its contents are supplied under the terms of the
4*a629ded1SLOLi# Common Development and Distribution License ("CDDL"), version 1.0.
5*a629ded1SLOLi# You may only use this file in accordance with the terms of version
6*a629ded1SLOLi# 1.0 of the CDDL.
7*a629ded1SLOLi#
8*a629ded1SLOLi# A full copy of the text of the CDDL should have accompanied this
9*a629ded1SLOLi# source.  A copy of the CDDL is also available via the Internet at
10*a629ded1SLOLi# http://www.illumos.org/license/CDDL.
11*a629ded1SLOLi#
12*a629ded1SLOLi
13*a629ded1SLOLi#
14*a629ded1SLOLi# Copyright 2017, loli10K <ezomori.nozomu@gmail.com>. All rights reserved.
15*a629ded1SLOLi#
16*a629ded1SLOLi
17*a629ded1SLOLi. $STF_SUITE/include/libtest.shlib
18*a629ded1SLOLi
19*a629ded1SLOLi#
20*a629ded1SLOLi# DESCRIPTION:
21*a629ded1SLOLi# 'zfs diff' should only work with supported options.
22*a629ded1SLOLi#
23*a629ded1SLOLi# STRATEGY:
24*a629ded1SLOLi# 1. Create two snapshots
25*a629ded1SLOLi# 2. Verify every supported option is accepted
26*a629ded1SLOLi# 3. Verify supported options raise an error with unsupported arguments
27*a629ded1SLOLi# 4. Verify other unsupported options raise an error
28*a629ded1SLOLi#
29*a629ded1SLOLi
30*a629ded1SLOLiverify_runnable "both"
31*a629ded1SLOLi
32*a629ded1SLOLifunction cleanup
33*a629ded1SLOLi{
34*a629ded1SLOLi	for snap in $TESTSNAP1 $TESTSNAP2; do
35*a629ded1SLOLi		if snapexists "$snap"; then
36*a629ded1SLOLi			log_must zfs destroy "$snap"
37*a629ded1SLOLi		fi
38*a629ded1SLOLi	done
39*a629ded1SLOLi}
40*a629ded1SLOLi
41*a629ded1SLOLilog_assert "'zfs diff' should only work with supported options."
42*a629ded1SLOLilog_onexit cleanup
43*a629ded1SLOLi
44*a629ded1SLOLitypeset goodopts=("" "-F" "-H" "-t" "-FH" "-Ft" "-Ht" "-FHt")
45*a629ded1SLOLitypeset badopts=("-f" "-h" "-h" "-T" "-Fx" "-Ho" "-tT" "-")
46*a629ded1SLOLi
47*a629ded1SLOLiDATASET="$TESTPOOL/$TESTFS"
48*a629ded1SLOLiTESTSNAP1="$DATASET@snap1"
49*a629ded1SLOLiTESTSNAP2="$DATASET@snap2"
50*a629ded1SLOLi
51*a629ded1SLOLi# 1. Create two snapshots
52*a629ded1SLOLilog_must zfs snapshot "$TESTSNAP1"
53*a629ded1SLOLilog_must zfs snapshot "$TESTSNAP2"
54*a629ded1SLOLi
55*a629ded1SLOLi# 2. Verify every supported option is accepted
56*a629ded1SLOLifor opt in ${goodopts[@]}
57*a629ded1SLOLido
58*a629ded1SLOLi	log_must zfs diff $opt "$TESTSNAP1"
59*a629ded1SLOLi	log_must zfs diff $opt "$TESTSNAP1" "$DATASET"
60*a629ded1SLOLi	log_must zfs diff $opt "$TESTSNAP1" "$TESTSNAP2"
61*a629ded1SLOLidone
62*a629ded1SLOLi
63*a629ded1SLOLi# 3. Verify supported options raise an error with unsupported arguments
64*a629ded1SLOLifor opt in ${goodopts[@]}
65*a629ded1SLOLido
66*a629ded1SLOLi	log_mustnot zfs diff $opt
67*a629ded1SLOLi	log_mustnot zfs diff $opt "$DATASET"
68*a629ded1SLOLi	log_mustnot zfs diff $opt "$DATASET@noexists"
69*a629ded1SLOLi	log_mustnot zfs diff $opt "$DATASET" "$TESTSNAP1"
70*a629ded1SLOLi	log_mustnot zfs diff $opt "$TESTSNAP2" "$TESTSNAP1"
71*a629ded1SLOLidone
72*a629ded1SLOLi
73*a629ded1SLOLi# 4. Verify other unsupported options raise an error
74*a629ded1SLOLifor opt in ${badopts[@]}
75*a629ded1SLOLido
76*a629ded1SLOLi	log_mustnot zfs diff $opt "$TESTSNAP1" "$DATASET"
77*a629ded1SLOLi	log_mustnot zfs diff $opt "$TESTSNAP1" "$TESTSNAP2"
78*a629ded1SLOLidone
79*a629ded1SLOLi
80*a629ded1SLOLilog_pass "'zfs diff' only works with supported options."
81