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