diff options
author | Dan Goodliffe <dan@randomdan.homeip.net> | 2018-01-01 18:22:31 +0000 |
---|---|---|
committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2018-01-01 18:22:31 +0000 |
commit | d8da9adb53b296ea6f5ca863a4871696ca41faf1 (patch) | |
tree | 5333afbf737bbef3ddf2dc211f87d9d29383e43c /netfs/unittests | |
parent | General test config for alternative setups (diff) | |
download | netfs-d8da9adb53b296ea6f5ca863a4871696ca41faf1.tar.bz2 netfs-d8da9adb53b296ea6f5ca863a4871696ca41faf1.tar.xz netfs-d8da9adb53b296ea6f5ca863a4871696ca41faf1.zip |
Allow listdir to be disabled
Adds covering unit tests over readdir now.
Removes async caching of contents when using readdir, you want caching,
that's what listdir is for.
Diffstat (limited to 'netfs/unittests')
-rw-r--r-- | netfs/unittests/altFuse.xml | 1 | ||||
-rw-r--r-- | netfs/unittests/testCore.cpp | 56 |
2 files changed, 50 insertions, 7 deletions
diff --git a/netfs/unittests/altFuse.xml b/netfs/unittests/altFuse.xml index 37f55a3..22b791a 100644 --- a/netfs/unittests/altFuse.xml +++ b/netfs/unittests/altFuse.xml @@ -5,6 +5,7 @@ <name>testvol</name> <resource> <export>testvol</export> + <listdir>false</listdir> <endpoints> <endpoint>overridden</endpoint> </endpoints> diff --git a/netfs/unittests/testCore.cpp b/netfs/unittests/testCore.cpp index de5c9d2..34e2cec 100644 --- a/netfs/unittests/testCore.cpp +++ b/netfs/unittests/testCore.cpp @@ -51,6 +51,15 @@ class Core { { } + static + int + nameListAdd(void *buf, const char *name, const struct stat *, off_t) + { + static_cast<NetFS::NameList *>(buf)->push_back(name); + return 0; + } + + protected: MockDaemonHost daemonHost; FuseMockHost fuseHost; @@ -160,13 +169,6 @@ BOOST_AUTO_TEST_CASE( testSandboxing ) BOOST_REQUIRE(boost::filesystem::exists(binDir / testExport / "inside2")); } -int -nameListAdd(void *buf, const char *name, const struct stat *, off_t) -{ - static_cast<NetFS::NameList *>(buf)->push_back(name); - return 0; -} - void enableWriteOnDir(const fuse_operations * fuse, const char * dir) { @@ -502,6 +504,46 @@ BOOST_AUTO_TEST_SUITE_END(); BOOST_FIXTURE_TEST_SUITE( NetfsAltCore, AltCore ); +BOOST_AUTO_TEST_CASE( noListDir ) +{ + struct fuse_file_info fi; + memset(&fi, 0, sizeof(fi)); + BOOST_REQUIRE_EQUAL(fuse->mkdir("/test", 0700), 0); + BOOST_REQUIRE(boost::filesystem::is_directory(binDir / testExport / "test")); + BOOST_REQUIRE_EQUAL(fuse->mkdir("/test", 0700), -EEXIST); + + BOOST_REQUIRE_EQUAL(fuse->opendir("/test", &fi), 0); + NetFS::NameList nl; + BOOST_REQUIRE_EQUAL(fuse->readdir("/test", &nl, &nameListAdd, 0, &fi), 0); + BOOST_REQUIRE_EQUAL(nl.size(), 2); + std::sort(nl.begin(), nl.end()); + BOOST_REQUIRE_EQUAL(nl[0], "."); + BOOST_REQUIRE_EQUAL(nl[1], ".."); + BOOST_REQUIRE_EQUAL(fuse->releasedir("/test", &fi), 0); + nl.clear(); + + BOOST_REQUIRE_EQUAL(fuse->mkdir("/test/sub", 0700), 0); + BOOST_REQUIRE_EQUAL(fuse->opendir("/test", &fi), 0); + BOOST_REQUIRE_EQUAL(fuse->readdir("/test", &nl, &nameListAdd, 0, &fi), 0); + BOOST_REQUIRE_EQUAL(nl.size(), 3); + std::sort(nl.begin(), nl.end()); + BOOST_REQUIRE_EQUAL(nl[0], "."); + BOOST_REQUIRE_EQUAL(nl[1], ".."); + BOOST_REQUIRE_EQUAL(nl[2], "sub"); + BOOST_REQUIRE_EQUAL(fuse->releasedir("/test", &fi), 0); + nl.clear(); + + BOOST_REQUIRE_EQUAL(fuse->readdir("/test", &nl, &nameListAdd, 0, &fi), -EBADF); + BOOST_REQUIRE_EQUAL(fuse->releasedir("/test", &fi), -EBADF); + + BOOST_REQUIRE_EQUAL(fuse->rmdir("/test"), -ENOTEMPTY); + BOOST_REQUIRE_EQUAL(fuse->rmdir("/test/sub"), 0); + BOOST_REQUIRE_EQUAL(fuse->rmdir("/test"), 0); + BOOST_REQUIRE(!boost::filesystem::is_directory(binDir / testExport / "test")); + BOOST_REQUIRE_EQUAL(fuse->rmdir("/test"), -ENOENT); + BOOST_REQUIRE_EQUAL(fuse->opendir("/test", &fi), -ENOENT); +} + BOOST_AUTO_TEST_CASE( testFGWrites ) { struct fuse_file_info fi; |