2014-11-25 14:29:44 +01:00
|
|
|
#include "testutils/FuseFstatTest.h"
|
|
|
|
|
2016-02-11 12:53:42 +01:00
|
|
|
#include "fspp/fuse/FuseErrnoException.h"
|
2014-11-25 14:29:44 +01:00
|
|
|
|
|
|
|
using ::testing::_;
|
|
|
|
using ::testing::StrEq;
|
|
|
|
using ::testing::WithParamInterface;
|
|
|
|
using ::testing::Values;
|
|
|
|
using ::testing::Eq;
|
|
|
|
using ::testing::Return;
|
|
|
|
using ::testing::Throw;
|
|
|
|
|
2017-08-25 01:14:16 +02:00
|
|
|
using cpputils::unique_ref;
|
|
|
|
using cpputils::make_unique_ref;
|
|
|
|
|
2014-11-28 14:46:45 +01:00
|
|
|
using namespace fspp::fuse;
|
2014-11-25 14:29:44 +01:00
|
|
|
|
|
|
|
// Cite from FUSE documentation on the fgetattr function:
|
|
|
|
// "Currently this is only called after the create() method if that is implemented (see above).
|
|
|
|
// Later it may be called for invocations of fstat() too."
|
|
|
|
// So we need to issue a create to get our fstat called.
|
|
|
|
|
|
|
|
class FuseFstatErrorTest: public FuseFstatTest, public WithParamInterface<int> {
|
|
|
|
public:
|
2017-08-25 01:14:16 +02:00
|
|
|
/*unique_ref<OpenFileHandle> CreateFileAllowErrors(const TempTestFS *fs, const std::string &filename) {
|
2014-11-25 14:29:44 +01:00
|
|
|
auto real_path = fs->mountDir() / filename;
|
2017-08-25 01:14:16 +02:00
|
|
|
return make_unique_ref<OpenFileHandle>(real_path.c_str(), O_RDWR | O_CREAT, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
|
|
|
|
}*/
|
2014-11-25 14:29:44 +01:00
|
|
|
};
|
|
|
|
INSTANTIATE_TEST_CASE_P(FuseFstatErrorTest, FuseFstatErrorTest, Values(EACCES, EBADF, EFAULT, ELOOP, ENAMETOOLONG, ENOENT, ENOMEM, ENOTDIR, EOVERFLOW));
|
|
|
|
|
2014-11-25 14:58:00 +01:00
|
|
|
TEST_P(FuseFstatErrorTest, ReturnedErrorCodeIsCorrect) {
|
2014-11-25 14:29:44 +01:00
|
|
|
ReturnDoesntExistOnLstat(FILENAME);
|
2014-11-25 18:43:50 +01:00
|
|
|
OnCreateAndOpenReturnFileDescriptor(FILENAME, 0);
|
2014-11-25 14:29:44 +01:00
|
|
|
|
|
|
|
EXPECT_CALL(fsimpl, fstat(Eq(0), _)).Times(1).WillOnce(Throw(FuseErrnoException(GetParam())));
|
|
|
|
|
|
|
|
auto fs = TestFS();
|
|
|
|
|
2014-12-06 15:33:01 +01:00
|
|
|
int error = CreateFileReturnError(fs.get(), FILENAME);
|
|
|
|
EXPECT_EQ(GetParam(), error);
|
2014-11-25 14:29:44 +01:00
|
|
|
}
|