From owner-svn-src-projects@freebsd.org Wed Mar 20 20:36:48 2019 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 02C711535454 for ; Wed, 20 Mar 2019 20:36:48 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 9E97780B4C; Wed, 20 Mar 2019 20:36:47 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 77BFE25EF7; Wed, 20 Mar 2019 20:36:47 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x2KKaluQ022391; Wed, 20 Mar 2019 20:36:47 GMT (envelope-from asomers@FreeBSD.org) Received: (from asomers@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x2KKak6A022387; Wed, 20 Mar 2019 20:36:46 GMT (envelope-from asomers@FreeBSD.org) Message-Id: <201903202036.x2KKak6A022387@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: asomers set sender to asomers@FreeBSD.org using -f From: Alan Somers Date: Wed, 20 Mar 2019 20:36:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345347 - projects/fuse2/tests/sys/fs/fuse X-SVN-Group: projects X-SVN-Commit-Author: asomers X-SVN-Commit-Paths: projects/fuse2/tests/sys/fs/fuse X-SVN-Commit-Revision: 345347 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: 9E97780B4C X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.97 / 15.00]; local_wl_from(0.00)[FreeBSD.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.999,0]; NEURAL_HAM_SHORT(-0.97)[-0.969,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 20 Mar 2019 20:36:48 -0000 Author: asomers Date: Wed Mar 20 20:36:46 2019 New Revision: 345347 URL: https://svnweb.freebsd.org/changeset/base/345347 Log: fuse(4): use GTEST_SKIP in the tests Now the entire fuse test suite can "pass", or at least not fail. Skipped tests are reported to Kyua as passes, because googletest is still using Kyua's plain test adapter. Sponsored by: The FreeBSD Foundation Modified: projects/fuse2/tests/sys/fs/fuse/default_permissions.cc projects/fuse2/tests/sys/fs/fuse/mknod.cc projects/fuse2/tests/sys/fs/fuse/read.cc projects/fuse2/tests/sys/fs/fuse/utils.cc projects/fuse2/tests/sys/fs/fuse/write.cc Modified: projects/fuse2/tests/sys/fs/fuse/default_permissions.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fuse/default_permissions.cc Wed Mar 20 20:07:12 2019 (r345346) +++ projects/fuse2/tests/sys/fs/fuse/default_permissions.cc Wed Mar 20 20:36:46 2019 (r345347) @@ -46,11 +46,12 @@ using namespace testing; class DefaultPermissions: public FuseTest { virtual void SetUp() { + FuseTest::SetUp(); + if (geteuid() == 0) { - FAIL() << "This test requires an unprivileged user"; + GTEST_SKIP() << "This test requires an unprivileged user"; } m_default_permissions = true; - FuseTest::SetUp(); } public: Modified: projects/fuse2/tests/sys/fs/fuse/mknod.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fuse/mknod.cc Wed Mar 20 20:07:12 2019 (r345346) +++ projects/fuse2/tests/sys/fs/fuse/mknod.cc Wed Mar 20 20:36:46 2019 (r345347) @@ -42,11 +42,11 @@ class Mknod: public FuseTest { public: virtual void SetUp() { + FuseTest::SetUp(); + if (geteuid() != 0) { - // TODO: With GoogleTest 1.8.2, use SKIP instead - FAIL() << "Only root may use most mknod(2) variations"; + GTEST_SKIP() << "Only root may use most mknod(2) variations"; } - FuseTest::SetUp(); } /* Test an OK creation of a file with the given mode and device number */ Modified: projects/fuse2/tests/sys/fs/fuse/read.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fuse/read.cc Wed Mar 20 20:07:12 2019 (r345346) +++ projects/fuse2/tests/sys/fs/fuse/read.cc Wed Mar 20 20:36:46 2019 (r345347) @@ -61,12 +61,13 @@ virtual void SetUp() { int val = 0; size_t size = sizeof(val); + FuseTest::SetUp(); + ASSERT_EQ(0, sysctlbyname(node, &val, &size, NULL, 0)) << strerror(errno); - // TODO: With GoogleTest 1.8.2, use SKIP instead if (!val) - FAIL() << "vfs.aio.enable_unsafe must be set for this test"; - FuseTest::SetUp(); + GTEST_SKIP() << + "vfs.aio.enable_unsafe must be set for this test"; } }; Modified: projects/fuse2/tests/sys/fs/fuse/utils.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fuse/utils.cc Wed Mar 20 20:07:12 2019 (r345346) +++ projects/fuse2/tests/sys/fs/fuse/utils.cc Wed Mar 20 20:36:46 2019 (r345347) @@ -40,31 +40,36 @@ using namespace testing; +/* Check that fuse(4) is accessible and the current user can mount(2) */ +void check_environment() +{ + const char *mod_name = "fuse"; + const char *devnode = "/dev/fuse"; + const char *usermount_node = "vfs.usermount"; + int usermount_val = 0; + size_t usermount_size = sizeof(usermount_val); + if (modfind(mod_name) == -1) { + GTEST_SKIP() << "Module " << mod_name << + " could not be resolved"; + } + if (eaccess(devnode, R_OK | W_OK)) { + if (errno == ENOENT) { + GTEST_SKIP() << devnode << " does not exist"; + } else if (errno == EACCES) { + GTEST_SKIP() << devnode << + " is not accessible by the current user"; + } else { + GTEST_SKIP() << strerror(errno); + } + } + sysctlbyname(usermount_node, &usermount_val, &usermount_size, + NULL, 0); + if (geteuid() != 0 && !usermount_val) + GTEST_SKIP() << "current user is not allowed to mount"; +} + class FuseEnv: public Environment { virtual void SetUp() { - const char *mod_name = "fuse"; - const char *devnode = "/dev/fuse"; - const char *usermount_node = "vfs.usermount"; - int usermount_val = 0; - size_t usermount_size = sizeof(usermount_val); - if (modfind(mod_name) == -1) { - FAIL() << "Module " << mod_name << - " could not be resolved"; - } - if (eaccess(devnode, R_OK | W_OK)) { - if (errno == ENOENT) { - FAIL() << devnode << " does not exist"; - } else if (errno == EACCES) { - FAIL() << devnode << - " is not accessible by the current user"; - } else { - FAIL() << strerror(errno); - } - } - sysctlbyname(usermount_node, &usermount_val, &usermount_size, - NULL, 0); - if (geteuid() != 0 && !usermount_val) - FAIL() << "current user is not allowed to mount"; } }; @@ -72,6 +77,14 @@ void FuseTest::SetUp() { const char *node = "vfs.maxbcachebuf"; int val = 0; size_t size = sizeof(val); + + /* + * XXX check_environment should be called from FuseEnv::SetUp, but + * can't due to https://github.com/google/googletest/issues/2189 + */ + check_environment(); + if (IsSkipped()) + return; ASSERT_EQ(0, sysctlbyname(node, &val, &size, NULL, 0)) << strerror(errno); Modified: projects/fuse2/tests/sys/fs/fuse/write.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fuse/write.cc Wed Mar 20 20:07:12 2019 (r345346) +++ projects/fuse2/tests/sys/fs/fuse/write.cc Wed Mar 20 20:36:46 2019 (r345347) @@ -73,7 +73,8 @@ void require_sync_resize_0() { ASSERT_EQ(0, sysctlbyname(sync_resize_node, &val, &size, NULL, 0)) << strerror(errno); if (val != 0) - FAIL() << "vfs.fuse.sync_resize must be set to 0 for this test." + GTEST_SKIP() << + "vfs.fuse.sync_resize must be set to 0 for this test." " That sysctl will probably be removed soon."; } @@ -85,12 +86,13 @@ virtual void SetUp() { int val = 0; size_t size = sizeof(val); + FuseTest::SetUp(); + ASSERT_EQ(0, sysctlbyname(node, &val, &size, NULL, 0)) << strerror(errno); - // TODO: With GoogleTest 1.8.2, use SKIP instead if (!val) - FAIL() << "vfs.aio.enable_unsafe must be set for this test"; - FuseTest::SetUp(); + GTEST_SKIP() << + "vfs.aio.enable_unsafe must be set for this test"; } }; @@ -102,14 +104,15 @@ virtual void SetUp() { int val = 0; size_t size = sizeof(val); + FuseTest::SetUp(); + if (IsSkipped()) + return; + ASSERT_EQ(0, sysctlbyname(cache_mode_node, &val, &size, NULL, 0)) << strerror(errno); - // TODO: With GoogleTest 1.8.2, use SKIP instead if (val != 1) - FAIL() << "vfs.fuse.data_cache_mode must be set to 1 " + GTEST_SKIP() << "vfs.fuse.data_cache_mode must be set to 1 " "(writethrough) for this test"; - - FuseTest::SetUp(); } }; @@ -122,13 +125,15 @@ virtual void SetUp() { int val = 0; size_t size = sizeof(val); + FuseTest::SetUp(); + if (IsSkipped()) + return; + ASSERT_EQ(0, sysctlbyname(node, &val, &size, NULL, 0)) << strerror(errno); - // TODO: With GoogleTest 1.8.2, use SKIP instead if (val != 2) - FAIL() << "vfs.fuse.data_cache_mode must be set to 2 " + GTEST_SKIP() << "vfs.fuse.data_cache_mode must be set to 2 " "(writeback) for this test"; - FuseTest::SetUp(); } };