tests: add zfs_unshare_008_pos checking whitespace escaping
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Ahelenia Ziemiańska <nabijaczleweli@nabijaczleweli.xyz> Closes #13165
This commit is contained in:
parent
9b06aa634a
commit
88d5580e51
|
@ -309,7 +309,7 @@ tags = ['functional', 'cli_root', 'zfs_unmount']
|
|||
[tests/functional/cli_root/zfs_unshare]
|
||||
tests = ['zfs_unshare_001_pos', 'zfs_unshare_002_pos', 'zfs_unshare_003_pos',
|
||||
'zfs_unshare_004_neg', 'zfs_unshare_005_neg', 'zfs_unshare_006_pos',
|
||||
'zfs_unshare_007_pos']
|
||||
'zfs_unshare_007_pos', 'zfs_unshare_008_pos']
|
||||
tags = ['functional', 'cli_root', 'zfs_unshare']
|
||||
|
||||
[tests/functional/cli_root/zfs_upgrade]
|
||||
|
|
|
@ -165,6 +165,7 @@ if sys.platform.startswith('freebsd'):
|
|||
'cli_root/zpool_wait/zpool_wait_trim_basic': ['SKIP', trim_reason],
|
||||
'cli_root/zpool_wait/zpool_wait_trim_cancel': ['SKIP', trim_reason],
|
||||
'cli_root/zpool_wait/zpool_wait_trim_flag': ['SKIP', trim_reason],
|
||||
'cli_root/zfs_unshare/zfs_unshare_008_pos': ['SKIP', na_reason],
|
||||
'link_count/link_count_001': ['SKIP', na_reason],
|
||||
'casenorm/mixed_create_failure': ['FAIL', 13215],
|
||||
'mmap/mmap_sync_001_pos': ['SKIP', na_reason],
|
||||
|
|
|
@ -1110,6 +1110,18 @@ function datasetnonexists
|
|||
return 0
|
||||
}
|
||||
|
||||
# FreeBSD breaks exports(5) at whitespace and doesn't process escapes
|
||||
# Solaris just breaks
|
||||
#
|
||||
# cf. https://github.com/openzfs/zfs/pull/13165#issuecomment-1059845807
|
||||
#
|
||||
# Linux can have spaces (which are \OOO-escaped),
|
||||
# but can't have backslashes because they're parsed recursively
|
||||
function shares_can_have_whitespace
|
||||
{
|
||||
is_linux
|
||||
}
|
||||
|
||||
function is_shared_freebsd
|
||||
{
|
||||
typeset fs=$1
|
||||
|
|
|
@ -878,6 +878,7 @@ nobase_dist_datadir_zfs_tests_tests_SCRIPTS += \
|
|||
functional/cli_root/zfs_unshare/zfs_unshare_005_neg.ksh \
|
||||
functional/cli_root/zfs_unshare/zfs_unshare_006_pos.ksh \
|
||||
functional/cli_root/zfs_unshare/zfs_unshare_007_pos.ksh \
|
||||
functional/cli_root/zfs_unshare/zfs_unshare_008_pos.ksh \
|
||||
functional/cli_root/zfs_upgrade/cleanup.ksh \
|
||||
functional/cli_root/zfs_upgrade/setup.ksh \
|
||||
functional/cli_root/zfs_upgrade/zfs_upgrade_001_pos.ksh \
|
||||
|
|
|
@ -0,0 +1,58 @@
|
|||
#!/bin/ksh -p
|
||||
#
|
||||
# CDDL HEADER START
|
||||
#
|
||||
# The contents of this file are subject to the terms of the
|
||||
# Common Development and Distribution License (the "License").
|
||||
# You may not use this file except in compliance with the License.
|
||||
#
|
||||
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
|
||||
# or http://www.opensolaris.org/os/licensing.
|
||||
# See the License for the specific language governing permissions
|
||||
# and limitations under the License.
|
||||
#
|
||||
# When distributing Covered Code, include this CDDL HEADER in each
|
||||
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
|
||||
# If applicable, add the following below this CDDL HEADER, with the
|
||||
# fields enclosed by brackets "[]" replaced with your own identifying
|
||||
# information: Portions Copyright [yyyy] [name of copyright owner]
|
||||
#
|
||||
# CDDL HEADER END
|
||||
#
|
||||
|
||||
. $STF_SUITE/include/libtest.shlib
|
||||
|
||||
#
|
||||
# DESCRIPTION:
|
||||
# Verify that datasets mounted at directories with whitespace are properly escaped
|
||||
# both going in (for mountd consumption) and going out (for removing from export list)
|
||||
#
|
||||
# STRATEGY:
|
||||
# 1. Create and share a dataset with spaces, tabs, and newlines
|
||||
# 2. Verify it's shared
|
||||
# 3. Unshare it
|
||||
# 4. Verify it's not shared
|
||||
#
|
||||
|
||||
shares_can_have_whitespace || log_unsupported "Platform doesn't permit whitespace in NFS shares"
|
||||
basename='a + b
|
||||
c d'
|
||||
escname='a\040+\040b\012\040c\011d'
|
||||
|
||||
verify_runnable "global"
|
||||
|
||||
function cleanup
|
||||
{
|
||||
datasetexists "$TESTPOOL/$TESTFS/shared1" && \
|
||||
destroy_dataset "$TESTPOOL/$TESTFS/shared1" -f
|
||||
}
|
||||
|
||||
log_assert "Datasets with spaces are properly shared and unshared."
|
||||
log_onexit cleanup
|
||||
|
||||
log_must zfs create -o sharenfs=on -o mountpoint="$TESTDIR/$basename" "$TESTPOOL/$TESTFS/shared1"
|
||||
log_must is_shared "$TESTDIR/$escname"
|
||||
log_must zfs unshare "$TESTPOOL/$TESTFS/shared1"
|
||||
log_mustnot is_shared "$TESTDIR/$escname"
|
||||
|
||||
log_pass "Datasets with spaces are properly shared and unshared."
|
Loading…
Reference in New Issue