This commit is contained in:
Scott E. Graves 2024-10-24 12:40:30 -05:00
parent 6e7b030afa
commit 52df12493b
17 changed files with 152 additions and 141 deletions

View File

@ -149,7 +149,7 @@ public:
[[nodiscard]] auto get_used_drive_space() const -> std::uint64_t override; [[nodiscard]] auto get_used_drive_space() const -> std::uint64_t override;
[[nodiscard]] auto is_direct_only() const -> bool override { return true; } [[nodiscard]] auto is_read_only() const -> bool override { return true; }
[[nodiscard]] auto is_directory(const std::string &api_path, [[nodiscard]] auto is_directory(const std::string &api_path,
bool &exists) const -> api_error override; bool &exists) const -> api_error override;

View File

@ -31,13 +31,14 @@ class i_provider {
INTERFACE_SETUP(i_provider); INTERFACE_SETUP(i_provider);
public: public:
[[nodiscard]] virtual auto [[nodiscard]] virtual auto create_directory(const std::string &api_path,
create_directory(const std::string &api_path, api_meta_map &meta)
api_meta_map &meta) -> api_error = 0; -> api_error = 0;
[[nodiscard]] virtual auto create_directory_clone_source_meta( [[nodiscard]] virtual auto
const std::string &source_api_path, create_directory_clone_source_meta(const std::string &source_api_path,
const std::string &api_path) -> api_error = 0; const std::string &api_path)
-> api_error = 0;
[[nodiscard]] virtual auto create_file(const std::string &api_path, [[nodiscard]] virtual auto create_file(const std::string &api_path,
api_meta_map &meta) -> api_error = 0; api_meta_map &meta) -> api_error = 0;
@ -46,8 +47,9 @@ public:
get_api_path_from_source(const std::string &source_path, get_api_path_from_source(const std::string &source_path,
std::string &api_path) const -> api_error = 0; std::string &api_path) const -> api_error = 0;
[[nodiscard]] virtual auto get_directory_item_count( [[nodiscard]] virtual auto
const std::string &api_path) const -> std::uint64_t = 0; get_directory_item_count(const std::string &api_path) const
-> std::uint64_t = 0;
[[nodiscard]] virtual auto [[nodiscard]] virtual auto
get_directory_items(const std::string &api_path, get_directory_items(const std::string &api_path,
@ -56,35 +58,38 @@ public:
[[nodiscard]] virtual auto get_file(const std::string &api_path, [[nodiscard]] virtual auto get_file(const std::string &api_path,
api_file &file) const -> api_error = 0; api_file &file) const -> api_error = 0;
[[nodiscard]] virtual auto [[nodiscard]] virtual auto get_file_list(api_file_list &list) const
get_file_list(api_file_list &list) const -> api_error = 0; -> api_error = 0;
[[nodiscard]] virtual auto [[nodiscard]] virtual auto get_file_size(const std::string &api_path,
get_file_size(const std::string &api_path, std::uint64_t &file_size) const
std::uint64_t &file_size) const -> api_error = 0; -> api_error = 0;
[[nodiscard]] virtual auto [[nodiscard]] virtual auto get_filesystem_item(const std::string &api_path,
get_filesystem_item(const std::string &api_path, bool directory, bool directory,
filesystem_item &fsi) const -> api_error = 0; filesystem_item &fsi) const
-> api_error = 0;
[[nodiscard]] virtual auto [[nodiscard]] virtual auto
get_filesystem_item_and_file(const std::string &api_path, api_file &file, get_filesystem_item_and_file(const std::string &api_path, api_file &file,
filesystem_item &fsi) const -> api_error = 0; filesystem_item &fsi) const -> api_error = 0;
[[nodiscard]] virtual auto get_filesystem_item_from_source_path(
const std::string &source_path,
filesystem_item &fsi) const -> api_error = 0;
[[nodiscard]] virtual auto [[nodiscard]] virtual auto
get_item_meta(const std::string &api_path, get_filesystem_item_from_source_path(const std::string &source_path,
api_meta_map &meta) const -> api_error = 0; filesystem_item &fsi) const
-> api_error = 0;
[[nodiscard]] virtual auto [[nodiscard]] virtual auto get_item_meta(const std::string &api_path,
get_item_meta(const std::string &api_path, const std::string &key, api_meta_map &meta) const
std::string &value) const -> api_error = 0; -> api_error = 0;
[[nodiscard]] virtual auto [[nodiscard]] virtual auto get_item_meta(const std::string &api_path,
get_pinned_files() const -> std::vector<std::string> = 0; const std::string &key,
std::string &value) const
-> api_error = 0;
[[nodiscard]] virtual auto get_pinned_files() const
-> std::vector<std::string> = 0;
[[nodiscard]] virtual auto get_provider_type() const -> provider_type = 0; [[nodiscard]] virtual auto get_provider_type() const -> provider_type = 0;
@ -94,8 +99,6 @@ public:
[[nodiscard]] virtual auto get_used_drive_space() const -> std::uint64_t = 0; [[nodiscard]] virtual auto get_used_drive_space() const -> std::uint64_t = 0;
[[nodiscard]] virtual auto is_direct_only() const -> bool = 0;
[[nodiscard]] virtual auto is_directory(const std::string &api_path, [[nodiscard]] virtual auto is_directory(const std::string &api_path,
bool &exists) const -> api_error = 0; bool &exists) const -> api_error = 0;
@ -107,6 +110,8 @@ public:
[[nodiscard]] virtual auto is_online() const -> bool = 0; [[nodiscard]] virtual auto is_online() const -> bool = 0;
[[nodiscard]] virtual auto is_read_only() const -> bool = 0;
[[nodiscard]] virtual auto is_rename_supported() const -> bool = 0; [[nodiscard]] virtual auto is_rename_supported() const -> bool = 0;
[[nodiscard]] virtual auto [[nodiscard]] virtual auto
@ -114,36 +119,38 @@ public:
std::uint64_t offset, data_buffer &data, std::uint64_t offset, data_buffer &data,
stop_type &stop_requested) -> api_error = 0; stop_type &stop_requested) -> api_error = 0;
[[nodiscard]] virtual auto [[nodiscard]] virtual auto remove_directory(const std::string &api_path)
remove_directory(const std::string &api_path) -> api_error = 0; -> api_error = 0;
[[nodiscard]] virtual auto [[nodiscard]] virtual auto remove_file(const std::string &api_path)
remove_file(const std::string &api_path) -> api_error = 0; -> api_error = 0;
[[nodiscard]] virtual auto [[nodiscard]] virtual auto remove_item_meta(const std::string &api_path,
remove_item_meta(const std::string &api_path, const std::string &key)
const std::string &key) -> api_error = 0; -> api_error = 0;
[[nodiscard]] virtual auto [[nodiscard]] virtual auto rename_file(const std::string &from_api_path,
rename_file(const std::string &from_api_path, const std::string &to_api_path)
const std::string &to_api_path) -> api_error = 0; -> api_error = 0;
[[nodiscard]] virtual auto [[nodiscard]] virtual auto set_item_meta(const std::string &api_path,
set_item_meta(const std::string &api_path, const std::string &key, const std::string &key,
const std::string &value) -> api_error = 0; const std::string &value)
-> api_error = 0;
[[nodiscard]] virtual auto [[nodiscard]] virtual auto set_item_meta(const std::string &api_path,
set_item_meta(const std::string &api_path, const api_meta_map &meta)
const api_meta_map &meta) -> api_error = 0; -> api_error = 0;
[[nodiscard]] virtual auto start(api_item_added_callback api_item_added, [[nodiscard]] virtual auto start(api_item_added_callback api_item_added,
i_file_manager *mgr) -> bool = 0; i_file_manager *mgr) -> bool = 0;
virtual void stop() = 0; virtual void stop() = 0;
[[nodiscard]] virtual auto [[nodiscard]] virtual auto upload_file(const std::string &api_path,
upload_file(const std::string &api_path, const std::string &source_path, const std::string &source_path,
stop_type &stop_requested) -> api_error = 0; stop_type &stop_requested)
-> api_error = 0;
}; };
} // namespace repertory } // namespace repertory

View File

@ -117,7 +117,7 @@ public:
return type; return type;
} }
[[nodiscard]] auto is_direct_only() const -> bool override { return false; } [[nodiscard]] auto is_read_only() const -> bool override { return false; }
[[nodiscard]] auto is_directory(const std::string &api_path, [[nodiscard]] auto is_directory(const std::string &api_path,
bool &exists) const -> api_error override; bool &exists) const -> api_error override;

View File

@ -90,7 +90,7 @@ public:
[[nodiscard]] auto get_total_drive_space() const -> std::uint64_t override; [[nodiscard]] auto get_total_drive_space() const -> std::uint64_t override;
[[nodiscard]] auto is_direct_only() const -> bool override { return false; } [[nodiscard]] auto is_read_only() const -> bool override { return false; }
[[nodiscard]] auto is_directory(const std::string &api_path, [[nodiscard]] auto is_directory(const std::string &api_path,
bool &exists) const -> api_error override; bool &exists) const -> api_error override;

View File

@ -564,7 +564,7 @@ void *fuse_drive::init_impl(struct fuse_conn_info *conn) {
fm_ = std::make_unique<file_manager>(config_, provider_); fm_ = std::make_unique<file_manager>(config_, provider_);
server_ = std::make_unique<full_server>(config_, provider_, *fm_); server_ = std::make_unique<full_server>(config_, provider_, *fm_);
if (not provider_.is_direct_only()) { if (not provider_.is_read_only()) {
eviction_ = std::make_unique<eviction>(provider_, config_, *fm_); eviction_ = std::make_unique<eviction>(provider_, config_, *fm_);
} }
directory_cache_ = std::make_unique<directory_cache>(); directory_cache_ = std::make_unique<directory_cache>();

View File

@ -609,7 +609,7 @@ auto winfsp_drive::Mounted(PVOID host) -> NTSTATUS {
polling::instance().start(&config_); polling::instance().start(&config_);
fm_ = std::make_unique<file_manager>(config_, provider_); fm_ = std::make_unique<file_manager>(config_, provider_);
server_ = std::make_unique<full_server>(config_, provider_, *fm_); server_ = std::make_unique<full_server>(config_, provider_, *fm_);
if (not provider_.is_direct_only()) { if (not provider_.is_read_only()) {
eviction_ = std::make_unique<eviction>(provider_, config_, *fm_); eviction_ = std::make_unique<eviction>(provider_, config_, *fm_);
} }

View File

@ -110,7 +110,7 @@ file_manager::file_manager(app_config &config, i_provider &provider)
utils::path::combine(config_.get_data_directory(), {"file_manager.db"}), utils::path::combine(config_.get_data_directory(), {"file_manager.db"}),
sql_create_tables); sql_create_tables);
if (not provider_.is_direct_only()) { if (not provider_.is_read_only()) {
E_SUBSCRIBE_EXACT(file_upload_completed, E_SUBSCRIBE_EXACT(file_upload_completed,
[this](const file_upload_completed &completed) { [this](const file_upload_completed &completed) {
this->upload_completed(completed); this->upload_completed(completed);
@ -190,7 +190,7 @@ auto file_manager::create(const std::string &api_path, api_meta_map &meta,
auto file_manager::evict_file(const std::string &api_path) -> bool { auto file_manager::evict_file(const std::string &api_path) -> bool {
REPERTORY_USES_FUNCTION_NAME(); REPERTORY_USES_FUNCTION_NAME();
if (provider_.is_direct_only()) { if (provider_.is_read_only()) {
return false; return false;
} }
@ -330,7 +330,7 @@ auto file_manager::get_open_handle_count() const -> std::size_t {
auto file_manager::get_stored_downloads() const -> std::vector<json> { auto file_manager::get_stored_downloads() const -> std::vector<json> {
REPERTORY_USES_FUNCTION_NAME(); REPERTORY_USES_FUNCTION_NAME();
if (provider_.is_direct_only()) { if (provider_.is_read_only()) {
return {}; return {};
} }
@ -408,7 +408,7 @@ auto file_manager::has_no_open_file_handles() const -> bool {
} }
auto file_manager::is_processing(const std::string &api_path) const -> bool { auto file_manager::is_processing(const std::string &api_path) const -> bool {
if (provider_.is_direct_only()) { if (provider_.is_read_only()) {
return false; return false;
} }
@ -491,7 +491,7 @@ void file_manager::queue_upload(const i_open_file &file) {
void file_manager::queue_upload(const std::string &api_path, void file_manager::queue_upload(const std::string &api_path,
const std::string &source_path, bool no_lock) { const std::string &source_path, bool no_lock) {
if (provider_.is_direct_only()) { if (provider_.is_read_only()) {
return; return;
} }
@ -581,7 +581,7 @@ void file_manager::remove_upload(const std::string &api_path) {
void file_manager::remove_upload(const std::string &api_path, bool no_lock) { void file_manager::remove_upload(const std::string &api_path, bool no_lock) {
REPERTORY_USES_FUNCTION_NAME(); REPERTORY_USES_FUNCTION_NAME();
if (provider_.is_direct_only()) { if (provider_.is_read_only()) {
return; return;
} }
@ -786,7 +786,7 @@ void file_manager::start() {
{"timed_out_close", polling::frequency::second, {"timed_out_close", polling::frequency::second,
[this]() { this->close_timed_out_files(); }}); [this]() { this->close_timed_out_files(); }});
if (provider_.is_direct_only()) { if (provider_.is_read_only()) {
stop_requested_ = false; stop_requested_ = false;
return; return;
} }
@ -933,7 +933,7 @@ void file_manager::stop() {
} }
void file_manager::store_resume(const i_open_file &file) { void file_manager::store_resume(const i_open_file &file) {
if (provider_.is_direct_only()) { if (provider_.is_read_only()) {
return; return;
} }

View File

@ -69,7 +69,7 @@ open_file::open_file(std::uint64_t chunk_size, std::uint8_t chunk_timeout,
if (not fsi.directory) { if (not fsi.directory) {
nf_ = utils::file::file::open_or_create_file(fsi.source_path, nf_ = utils::file::file::open_or_create_file(fsi.source_path,
provider_.is_direct_only()); provider_.is_read_only());
set_api_error(*nf_ ? api_error::success : api_error::os_error); set_api_error(*nf_ ? api_error::success : api_error::os_error);
if (get_api_error() == api_error::success) { if (get_api_error() == api_error::success) {
if (read_state.has_value()) { if (read_state.has_value()) {
@ -81,7 +81,7 @@ open_file::open_file(std::uint64_t chunk_size, std::uint8_t chunk_timeout,
false); false);
auto file_size = nf_->size(); auto file_size = nf_->size();
if (provider_.is_direct_only() || file_size == fsi.size) { if (provider_.is_read_only() || file_size == fsi.size) {
read_state_.set(0U, read_state_.size(), true); read_state_.set(0U, read_state_.size(), true);
} else if (not nf_->truncate(fsi.size)) { } else if (not nf_->truncate(fsi.size)) {
set_api_error(api_error::os_error); set_api_error(api_error::os_error);
@ -351,7 +351,7 @@ auto open_file::read(std::size_t read_size, std::uint64_t read_offset,
const auto read_from_source = [this, &data, &read_offset, const auto read_from_source = [this, &data, &read_offset,
&read_size]() -> api_error { &read_size]() -> api_error {
return do_io([this, &data, &read_offset, &read_size]() -> api_error { return do_io([this, &data, &read_offset, &read_size]() -> api_error {
if (provider_.is_direct_only()) { if (provider_.is_read_only()) {
return provider_.read_file_bytes(fsi_.api_path, read_size, read_offset, return provider_.read_file_bytes(fsi_.api_path, read_size, read_offset,
data, stop_requested_); data, stop_requested_);
} }
@ -531,7 +531,7 @@ auto open_file::write(std::uint64_t write_offset, const data_buffer &data,
bytes_written = 0U; bytes_written = 0U;
if (fsi_.directory || provider_.is_direct_only()) { if (fsi_.directory || provider_.is_read_only()) {
return api_error::invalid_operation; return api_error::invalid_operation;
} }

View File

@ -119,7 +119,7 @@ auto open_file_base::can_close() const -> bool {
return true; return true;
} }
if (provider_.is_direct_only()) { if (provider_.is_read_only()) {
return true; return true;
} }

View File

@ -431,7 +431,7 @@ auto base_provider::is_file_writeable(const std::string &api_path) const
void base_provider::remove_deleted_files(bool source_only) { void base_provider::remove_deleted_files(bool source_only) {
REPERTORY_USES_FUNCTION_NAME(); REPERTORY_USES_FUNCTION_NAME();
if (not is_direct_only()) { if (not is_read_only()) {
auto source_list = auto source_list =
utils::file::directory{config_.get_cache_directory()}.get_files(); utils::file::directory{config_.get_cache_directory()}.get_files();
for (auto &&source_file : source_list) { for (auto &&source_file : source_list) {

View File

@ -101,7 +101,7 @@ public:
MOCK_METHOD(std::uint64_t, get_used_drive_space, (), (const, override)); MOCK_METHOD(std::uint64_t, get_used_drive_space, (), (const, override));
MOCK_METHOD(bool, is_direct_only, (), (const, override)); MOCK_METHOD(bool, is_read_only, (), (const, override));
MOCK_METHOD(api_error, is_directory, MOCK_METHOD(api_error, is_directory,
(const std::string &api_path, bool &exists), (const, override)); (const std::string &api_path, bool &exists), (const, override));

View File

@ -76,7 +76,7 @@ protected:
std::atomic<std::size_t> file_manager_test::inst{0U}; std::atomic<std::size_t> file_manager_test::inst{0U};
TEST_F(file_manager_test, can_start_and_stop) { TEST_F(file_manager_test, can_start_and_stop) {
EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false));
event_consumer es("service_started", [](const event &e) { event_consumer es("service_started", [](const event &e) {
const auto &ee = dynamic_cast<const service_started &>(e); const auto &ee = dynamic_cast<const service_started &>(e);
@ -107,7 +107,7 @@ TEST_F(file_manager_test, can_start_and_stop) {
TEST_F(file_manager_test, can_create_and_close_file) { TEST_F(file_manager_test, can_create_and_close_file) {
cfg->set_enable_chunk_downloader_timeout(true); cfg->set_enable_chunk_downloader_timeout(true);
EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false));
polling::instance().start(cfg.get()); polling::instance().start(cfg.get());
@ -215,7 +215,7 @@ TEST_F(file_manager_test, can_create_and_close_file) {
TEST_F(file_manager_test, can_open_and_close_file) { TEST_F(file_manager_test, can_open_and_close_file) {
cfg->set_enable_chunk_downloader_timeout(true); cfg->set_enable_chunk_downloader_timeout(true);
EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false));
polling::instance().start(cfg.get()); polling::instance().start(cfg.get());
file_manager fm(*cfg, mp); file_manager fm(*cfg, mp);
@ -319,7 +319,7 @@ TEST_F(file_manager_test, can_open_and_close_file) {
} }
TEST_F(file_manager_test, can_open_and_close_multiple_handles_for_same_file) { TEST_F(file_manager_test, can_open_and_close_multiple_handles_for_same_file) {
EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false));
polling::instance().start(cfg.get()); polling::instance().start(cfg.get());
file_manager fm(*cfg, mp); file_manager fm(*cfg, mp);
@ -381,7 +381,7 @@ TEST_F(file_manager_test, can_open_and_close_multiple_handles_for_same_file) {
TEST_F(file_manager_test, TEST_F(file_manager_test,
download_is_stored_after_write_if_partially_downloaded) { download_is_stored_after_write_if_partially_downloaded) {
EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false));
file_manager fm(*cfg, mp); file_manager fm(*cfg, mp);
fm.start(); fm.start();
@ -531,7 +531,7 @@ TEST_F(file_manager_test,
TEST_F(file_manager_test, upload_occurs_after_write_if_fully_downloaded) { TEST_F(file_manager_test, upload_occurs_after_write_if_fully_downloaded) {
cfg->set_enable_chunk_downloader_timeout(true); cfg->set_enable_chunk_downloader_timeout(true);
EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false));
polling::instance().start(cfg.get()); polling::instance().start(cfg.get());
file_manager fm(*cfg, mp); file_manager fm(*cfg, mp);
@ -639,7 +639,7 @@ TEST_F(file_manager_test, upload_occurs_after_write_if_fully_downloaded) {
} }
TEST_F(file_manager_test, can_evict_file) { TEST_F(file_manager_test, can_evict_file) {
EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false));
file_manager fm(*cfg, mp); file_manager fm(*cfg, mp);
fm.start(); fm.start();
@ -730,7 +730,7 @@ TEST_F(file_manager_test, can_evict_file) {
} }
TEST_F(file_manager_test, evict_file_fails_if_file_is_pinned) { TEST_F(file_manager_test, evict_file_fails_if_file_is_pinned) {
EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false));
file_manager fm(*cfg, mp); file_manager fm(*cfg, mp);
EXPECT_CALL(mp, get_item_meta(_, META_PINNED, _)) EXPECT_CALL(mp, get_item_meta(_, META_PINNED, _))
@ -745,14 +745,14 @@ TEST_F(file_manager_test, evict_file_fails_if_file_is_pinned) {
EXPECT_FALSE(fm.evict_file("/test_open.txt")); EXPECT_FALSE(fm.evict_file("/test_open.txt"));
} }
TEST_F(file_manager_test, evict_file_fails_if_provider_is_direct_only) { TEST_F(file_manager_test, evict_file_fails_if_provider_is_read_only) {
EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(true)); EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(true));
file_manager fm(*cfg, mp); file_manager fm(*cfg, mp);
EXPECT_FALSE(fm.evict_file("/test.txt")); EXPECT_FALSE(fm.evict_file("/test.txt"));
} }
TEST_F(file_manager_test, evict_file_fails_if_file_is_open) { TEST_F(file_manager_test, evict_file_fails_if_file_is_open) {
EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false));
file_manager fm(*cfg, mp); file_manager fm(*cfg, mp);
EXPECT_CALL(mp, get_filesystem_item) EXPECT_CALL(mp, get_filesystem_item)
@ -793,7 +793,7 @@ TEST_F(file_manager_test, evict_file_fails_if_file_is_open) {
TEST_F(file_manager_test, TEST_F(file_manager_test,
evict_file_fails_if_unable_to_get_source_path_from_item_meta) { evict_file_fails_if_unable_to_get_source_path_from_item_meta) {
EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false));
file_manager fm(*cfg, mp); file_manager fm(*cfg, mp);
EXPECT_CALL(mp, get_item_meta(_, META_SOURCE, _)) EXPECT_CALL(mp, get_item_meta(_, META_SOURCE, _))
@ -817,7 +817,7 @@ TEST_F(file_manager_test,
} }
TEST_F(file_manager_test, evict_file_fails_if_source_path_is_empty) { TEST_F(file_manager_test, evict_file_fails_if_source_path_is_empty) {
EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false));
file_manager fm(*cfg, mp); file_manager fm(*cfg, mp);
EXPECT_CALL(mp, get_item_meta(_, META_SOURCE, _)) EXPECT_CALL(mp, get_item_meta(_, META_SOURCE, _))
@ -841,7 +841,7 @@ TEST_F(file_manager_test, evict_file_fails_if_source_path_is_empty) {
} }
TEST_F(file_manager_test, evict_file_fails_if_file_is_uploading) { TEST_F(file_manager_test, evict_file_fails_if_file_is_uploading) {
EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false));
file_manager fm(*cfg, mp); file_manager fm(*cfg, mp);
fm.start(); fm.start();
@ -924,7 +924,7 @@ TEST_F(file_manager_test, evict_file_fails_if_file_is_uploading) {
} }
TEST_F(file_manager_test, evict_file_fails_if_file_is_in_upload_queue) { TEST_F(file_manager_test, evict_file_fails_if_file_is_in_upload_queue) {
EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false));
file_manager fm(*cfg, mp); file_manager fm(*cfg, mp);
@ -939,7 +939,7 @@ TEST_F(file_manager_test, evict_file_fails_if_file_is_in_upload_queue) {
} }
TEST_F(file_manager_test, evict_file_fails_if_file_is_modified) { TEST_F(file_manager_test, evict_file_fails_if_file_is_modified) {
EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false));
file_manager fm(*cfg, mp); file_manager fm(*cfg, mp);
EXPECT_CALL(mp, get_filesystem_item) EXPECT_CALL(mp, get_filesystem_item)
@ -975,7 +975,7 @@ TEST_F(file_manager_test, evict_file_fails_if_file_is_modified) {
} }
TEST_F(file_manager_test, evict_file_fails_if_file_is_not_complete) { TEST_F(file_manager_test, evict_file_fails_if_file_is_not_complete) {
EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false));
file_manager fm(*cfg, mp); file_manager fm(*cfg, mp);
EXPECT_CALL(mp, get_filesystem_item) EXPECT_CALL(mp, get_filesystem_item)
@ -1013,7 +1013,7 @@ TEST_F(file_manager_test, evict_file_fails_if_file_is_not_complete) {
} }
TEST_F(file_manager_test, can_get_directory_items) { TEST_F(file_manager_test, can_get_directory_items) {
EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false));
file_manager fm(*cfg, mp); file_manager fm(*cfg, mp);
EXPECT_CALL(mp, get_directory_items) EXPECT_CALL(mp, get_directory_items)
@ -1037,7 +1037,7 @@ TEST_F(file_manager_test, can_get_directory_items) {
} }
TEST_F(file_manager_test, file_is_not_opened_if_provider_create_file_fails) { TEST_F(file_manager_test, file_is_not_opened_if_provider_create_file_fails) {
EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false));
const auto now = utils::time::get_time_now(); const auto now = utils::time::get_time_now();
auto meta = create_meta_attributes( auto meta = create_meta_attributes(
@ -1062,7 +1062,7 @@ TEST_F(file_manager_test, file_is_not_opened_if_provider_create_file_fails) {
} }
TEST_F(file_manager_test, create_fails_if_provider_create_is_unsuccessful) { TEST_F(file_manager_test, create_fails_if_provider_create_is_unsuccessful) {
EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false));
file_manager fm(*cfg, mp); file_manager fm(*cfg, mp);
@ -1083,7 +1083,7 @@ TEST_F(file_manager_test, create_fails_if_provider_create_is_unsuccessful) {
} }
TEST_F(file_manager_test, get_open_file_fails_if_file_is_not_open) { TEST_F(file_manager_test, get_open_file_fails_if_file_is_not_open) {
EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false));
file_manager fm(*cfg, mp); file_manager fm(*cfg, mp);
@ -1097,7 +1097,7 @@ TEST_F(file_manager_test, get_open_file_fails_if_file_is_not_open) {
TEST_F(file_manager_test, TEST_F(file_manager_test,
get_open_file_promotes_non_writeable_file_if_writeable_is_specified) { get_open_file_promotes_non_writeable_file_if_writeable_is_specified) {
EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false));
file_manager fm(*cfg, mp); file_manager fm(*cfg, mp);
@ -1173,7 +1173,7 @@ TEST_F(file_manager_test,
} }
TEST_F(file_manager_test, open_file_fails_if_file_is_not_found) { TEST_F(file_manager_test, open_file_fails_if_file_is_not_found) {
EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false));
file_manager fm(*cfg, mp); file_manager fm(*cfg, mp);
@ -1189,7 +1189,7 @@ TEST_F(file_manager_test, open_file_fails_if_file_is_not_found) {
TEST_F(file_manager_test, TEST_F(file_manager_test,
open_file_fails_if_provider_get_filesystem_item_fails) { open_file_fails_if_provider_get_filesystem_item_fails) {
EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false));
file_manager fm(*cfg, mp); file_manager fm(*cfg, mp);
@ -1223,7 +1223,7 @@ TEST_F(file_manager_test,
} }
TEST_F(file_manager_test, open_file_fails_if_provider_set_item_meta_fails) { TEST_F(file_manager_test, open_file_fails_if_provider_set_item_meta_fails) {
EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false));
file_manager fm(*cfg, mp); file_manager fm(*cfg, mp);
@ -1264,7 +1264,7 @@ TEST_F(file_manager_test, open_file_fails_if_provider_set_item_meta_fails) {
} }
TEST_F(file_manager_test, open_file_creates_source_path_if_empty) { TEST_F(file_manager_test, open_file_creates_source_path_if_empty) {
EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false));
file_manager fm(*cfg, mp); file_manager fm(*cfg, mp);
@ -1317,7 +1317,7 @@ TEST_F(file_manager_test, open_file_creates_source_path_if_empty) {
} }
TEST_F(file_manager_test, open_file_first_file_handle_is_not_zero) { TEST_F(file_manager_test, open_file_first_file_handle_is_not_zero) {
EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false));
file_manager fm(*cfg, mp); file_manager fm(*cfg, mp);
@ -1355,7 +1355,7 @@ TEST_F(file_manager_test, open_file_first_file_handle_is_not_zero) {
} }
TEST_F(file_manager_test, can_remove_file) { TEST_F(file_manager_test, can_remove_file) {
EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false));
file_manager fm(*cfg, mp); file_manager fm(*cfg, mp);
@ -1391,7 +1391,7 @@ TEST_F(file_manager_test, can_queue_and_remove_upload) {
"download_resume_removed", "download_resume_removed",
}); });
EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false));
file_manager fm(*cfg, mp); file_manager fm(*cfg, mp);
@ -1415,7 +1415,7 @@ TEST_F(file_manager_test, file_is_closed_after_download_timeout) {
polling::instance().start(cfg.get()); polling::instance().start(cfg.get());
EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false));
file_manager fm(*cfg, mp); file_manager fm(*cfg, mp);
fm.start(); fm.start();
@ -1499,7 +1499,7 @@ TEST_F(file_manager_test, file_is_closed_after_download_timeout) {
} }
TEST_F(file_manager_test, remove_file_fails_if_file_does_not_exist) { TEST_F(file_manager_test, remove_file_fails_if_file_does_not_exist) {
EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false));
file_manager fm(*cfg, mp); file_manager fm(*cfg, mp);
@ -1515,7 +1515,7 @@ TEST_F(file_manager_test, remove_file_fails_if_file_does_not_exist) {
} }
TEST_F(file_manager_test, remove_file_fails_if_provider_remove_file_fails) { TEST_F(file_manager_test, remove_file_fails_if_provider_remove_file_fails) {
EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false));
file_manager fm(*cfg, mp); file_manager fm(*cfg, mp);

View File

@ -59,7 +59,7 @@ TEST(open_file, properly_initializes_state_for_0_byte_file) {
mock_provider mp; mock_provider mp;
mock_upload_manager um; mock_upload_manager um;
EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false));
filesystem_item fsi; filesystem_item fsi;
fsi.directory = false; fsi.directory = false;
@ -80,7 +80,7 @@ TEST(open_file, properly_initializes_state_based_on_chunk_size) {
mock_provider mp; mock_provider mp;
mock_upload_manager um; mock_upload_manager um;
EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false));
filesystem_item fsi; filesystem_item fsi;
fsi.directory = false; fsi.directory = false;
@ -113,7 +113,7 @@ TEST(open_file, will_not_change_source_path_for_0_byte_file) {
mock_provider mp; mock_provider mp;
mock_upload_manager um; mock_upload_manager um;
EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false));
filesystem_item fsi; filesystem_item fsi;
fsi.directory = false; fsi.directory = false;
@ -137,7 +137,7 @@ TEST(open_file, will_change_source_path_if_file_size_is_greater_than_0) {
mock_provider mp; mock_provider mp;
mock_upload_manager um; mock_upload_manager um;
EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false));
filesystem_item fsi; filesystem_item fsi;
fsi.api_path = "/test.txt"; fsi.api_path = "/test.txt";
@ -177,7 +177,7 @@ TEST(open_file,
mock_provider mp; mock_provider mp;
mock_upload_manager um; mock_upload_manager um;
EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false));
filesystem_item fsi; filesystem_item fsi;
fsi.api_path = "/test.txt"; fsi.api_path = "/test.txt";
@ -201,7 +201,7 @@ TEST(open_file, write_with_incomplete_download) {
mock_provider mp; mock_provider mp;
mock_upload_manager um; mock_upload_manager um;
EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false));
filesystem_item fsi; filesystem_item fsi;
fsi.api_path = "/test.txt"; fsi.api_path = "/test.txt";
@ -289,7 +289,7 @@ TEST(open_file, write_new_file) {
mock_provider mp; mock_provider mp;
mock_upload_manager um; mock_upload_manager um;
EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false));
filesystem_item fsi; filesystem_item fsi;
fsi.api_path = "/test.txt"; fsi.api_path = "/test.txt";
@ -362,7 +362,7 @@ TEST(open_file, write_new_file_multiple_chunks) {
mock_provider mp; mock_provider mp;
mock_upload_manager um; mock_upload_manager um;
EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false));
filesystem_item fsi; filesystem_item fsi;
fsi.api_path = "/test.txt"; fsi.api_path = "/test.txt";
@ -455,7 +455,7 @@ TEST(open_file, resize_file_to_0_bytes) {
mock_provider mp; mock_provider mp;
mock_upload_manager um; mock_upload_manager um;
EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false));
filesystem_item fsi; filesystem_item fsi;
fsi.api_path = "/test.txt"; fsi.api_path = "/test.txt";
@ -505,7 +505,7 @@ TEST(open_file, resize_file_by_full_chunk) {
mock_provider mp; mock_provider mp;
mock_upload_manager um; mock_upload_manager um;
EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false));
filesystem_item fsi; filesystem_item fsi;
fsi.api_path = "/test.txt"; fsi.api_path = "/test.txt";
@ -556,7 +556,7 @@ TEST(open_file, can_add_handle) {
mock_provider mp; mock_provider mp;
mock_upload_manager um; mock_upload_manager um;
EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false));
filesystem_item fsi; filesystem_item fsi;
fsi.api_path = "/test.txt"; fsi.api_path = "/test.txt";
@ -618,7 +618,7 @@ TEST(open_file, can_remove_handle) {
mock_provider mp; mock_provider mp;
mock_upload_manager um; mock_upload_manager um;
EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false));
filesystem_item fsi; filesystem_item fsi;
fsi.api_path = "/test.txt"; fsi.api_path = "/test.txt";

View File

@ -178,7 +178,7 @@ const auto decrypt_parts = [](const repertory::app_config &cfg,
namespace repertory { namespace repertory {
static void can_create_and_remove_directory(i_provider &provider) { static void can_create_and_remove_directory(i_provider &provider) {
if (provider.is_direct_only()) { if (provider.is_read_only()) {
api_meta_map meta{}; api_meta_map meta{};
EXPECT_EQ(api_error::not_implemented, EXPECT_EQ(api_error::not_implemented,
provider.create_directory("/moose", meta)); provider.create_directory("/moose", meta));
@ -196,7 +196,7 @@ static void can_create_and_remove_directory(i_provider &provider) {
} }
static void create_directory_fails_if_already_exists(i_provider &provider) { static void create_directory_fails_if_already_exists(i_provider &provider) {
if (provider.is_direct_only()) { if (provider.is_read_only()) {
return; return;
} }
@ -210,7 +210,7 @@ static void create_directory_fails_if_already_exists(i_provider &provider) {
static void static void
create_directory_fails_if_file_already_exists(i_provider &provider) { create_directory_fails_if_file_already_exists(i_provider &provider) {
if (provider.is_direct_only()) { if (provider.is_read_only()) {
return; return;
} }
@ -223,7 +223,7 @@ create_directory_fails_if_file_already_exists(i_provider &provider) {
} }
static void create_directory_clone_source_meta(i_provider &provider) { static void create_directory_clone_source_meta(i_provider &provider) {
if (provider.is_direct_only()) { if (provider.is_read_only()) {
EXPECT_EQ(api_error::not_implemented, EXPECT_EQ(api_error::not_implemented,
provider.create_directory_clone_source_meta("/moose", "/moose")); provider.create_directory_clone_source_meta("/moose", "/moose"));
return; return;
@ -257,7 +257,7 @@ static void create_directory_clone_source_meta(i_provider &provider) {
static void create_directory_clone_source_meta_fails_if_already_exists( static void create_directory_clone_source_meta_fails_if_already_exists(
i_provider &provider) { i_provider &provider) {
if (provider.is_direct_only()) { if (provider.is_read_only()) {
return; return;
} }
create_directory(provider, "/clone"); create_directory(provider, "/clone");
@ -272,7 +272,7 @@ static void create_directory_clone_source_meta_fails_if_already_exists(
static void create_directory_clone_source_meta_fails_if_directory_not_found( static void create_directory_clone_source_meta_fails_if_directory_not_found(
i_provider &provider) { i_provider &provider) {
if (provider.is_direct_only()) { if (provider.is_read_only()) {
return; return;
} }
@ -282,7 +282,7 @@ static void create_directory_clone_source_meta_fails_if_directory_not_found(
static void create_directory_clone_source_meta_fails_if_file_already_exists( static void create_directory_clone_source_meta_fails_if_file_already_exists(
i_provider &provider) { i_provider &provider) {
if (provider.is_direct_only()) { if (provider.is_read_only()) {
return; return;
} }
@ -297,7 +297,7 @@ static void create_directory_clone_source_meta_fails_if_file_already_exists(
} }
static void can_create_and_remove_file(i_provider &provider) { static void can_create_and_remove_file(i_provider &provider) {
if (provider.is_direct_only()) { if (provider.is_read_only()) {
api_meta_map meta{}; api_meta_map meta{};
EXPECT_EQ(api_error::not_implemented, EXPECT_EQ(api_error::not_implemented,
provider.create_file("/moose.txt", meta)); provider.create_file("/moose.txt", meta));
@ -317,7 +317,7 @@ static void can_create_and_remove_file(i_provider &provider) {
} }
static void create_file_fails_if_already_exists(i_provider &provider) { static void create_file_fails_if_already_exists(i_provider &provider) {
if (provider.is_direct_only()) { if (provider.is_read_only()) {
return; return;
} }
@ -331,7 +331,7 @@ static void create_file_fails_if_already_exists(i_provider &provider) {
static void static void
create_file_fails_if_directory_already_exists(i_provider &provider) { create_file_fails_if_directory_already_exists(i_provider &provider) {
if (provider.is_direct_only()) { if (provider.is_read_only()) {
return; return;
} }
@ -659,7 +659,7 @@ TEST(providers, encrypt_provider) {
}, },
&mgr)); &mgr));
EXPECT_EQ(provider_type::encrypt, provider.get_provider_type()); EXPECT_EQ(provider_type::encrypt, provider.get_provider_type());
EXPECT_TRUE(provider.is_direct_only()); EXPECT_TRUE(provider.is_read_only());
EXPECT_TRUE(provider.is_online()); EXPECT_TRUE(provider.is_online());
EXPECT_FALSE(provider.is_rename_supported()); EXPECT_FALSE(provider.is_rename_supported());
@ -698,7 +698,7 @@ TEST(providers, s3_provider) {
}, },
&mgr)); &mgr));
EXPECT_EQ(provider_type::s3, provider.get_provider_type()); EXPECT_EQ(provider_type::s3, provider.get_provider_type());
EXPECT_FALSE(provider.is_direct_only()); EXPECT_FALSE(provider.is_read_only());
EXPECT_TRUE(provider.is_online()); EXPECT_TRUE(provider.is_online());
EXPECT_FALSE(provider.is_rename_supported()); EXPECT_FALSE(provider.is_rename_supported());
@ -737,7 +737,7 @@ TEST(providers, sia_provider) {
}, },
&mgr)); &mgr));
EXPECT_EQ(provider_type::sia, provider.get_provider_type()); EXPECT_EQ(provider_type::sia, provider.get_provider_type());
EXPECT_FALSE(provider.is_direct_only()); EXPECT_FALSE(provider.is_read_only());
EXPECT_TRUE(provider.is_online()); EXPECT_TRUE(provider.is_online());
EXPECT_TRUE(provider.is_rename_supported()); EXPECT_TRUE(provider.is_rename_supported());

View File

@ -39,7 +39,7 @@ TEST(ring_buffer_open_file, can_forward_to_last_chunk) {
mock_provider mp; mock_provider mp;
EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false));
filesystem_item fsi; filesystem_item fsi;
fsi.directory = false; fsi.directory = false;
@ -71,7 +71,7 @@ TEST(ring_buffer_open_file,
mock_provider mp; mock_provider mp;
EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false));
filesystem_item fsi; filesystem_item fsi;
fsi.directory = false; fsi.directory = false;
@ -102,7 +102,7 @@ TEST(ring_buffer_open_file, can_forward_after_last_chunk) {
mock_provider mp; mock_provider mp;
EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false));
filesystem_item fsi; filesystem_item fsi;
fsi.directory = false; fsi.directory = false;
@ -134,7 +134,7 @@ TEST(ring_buffer_open_file, can_forward_and_rollover_after_last_chunk) {
mock_provider mp; mock_provider mp;
EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false));
filesystem_item fsi; filesystem_item fsi;
fsi.directory = false; fsi.directory = false;
@ -162,7 +162,7 @@ TEST(ring_buffer_open_file, can_reverse_to_first_chunk) {
mock_provider mp; mock_provider mp;
EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false));
filesystem_item fsi; filesystem_item fsi;
fsi.directory = false; fsi.directory = false;
@ -194,7 +194,7 @@ TEST(ring_buffer_open_file,
mock_provider mp; mock_provider mp;
EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false));
filesystem_item fsi; filesystem_item fsi;
fsi.directory = false; fsi.directory = false;
@ -225,7 +225,7 @@ TEST(ring_buffer_open_file, can_reverse_before_first_chunk) {
mock_provider mp; mock_provider mp;
EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false));
filesystem_item fsi; filesystem_item fsi;
fsi.directory = false; fsi.directory = false;
@ -257,7 +257,7 @@ TEST(ring_buffer_open_file, can_reverse_and_rollover_before_first_chunk) {
mock_provider mp; mock_provider mp;
EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false));
filesystem_item fsi; filesystem_item fsi;
fsi.directory = false; fsi.directory = false;
@ -293,7 +293,7 @@ TEST(ring_buffer_open_file, can_reverse_full_ring) {
mock_provider mp; mock_provider mp;
EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false));
filesystem_item fsi; filesystem_item fsi;
fsi.directory = false; fsi.directory = false;
@ -327,7 +327,7 @@ TEST(ring_buffer_open_file, read_full_file) {
mock_provider mp; mock_provider mp;
EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false));
filesystem_item fsi; filesystem_item fsi;
fsi.directory = false; fsi.directory = false;
@ -392,7 +392,7 @@ TEST(ring_buffer_open_file, read_full_file_in_reverse) {
mock_provider mp; mock_provider mp;
EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false));
filesystem_item fsi; filesystem_item fsi;
fsi.directory = false; fsi.directory = false;
@ -457,7 +457,7 @@ TEST(ring_buffer_open_file, read_full_file_in_partial_chunks) {
mock_provider mp; mock_provider mp;
EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false));
filesystem_item fsi; filesystem_item fsi;
fsi.directory = false; fsi.directory = false;
@ -523,7 +523,7 @@ TEST(ring_buffer_open_file, read_full_file_in_partial_chunks_in_reverse) {
mock_provider mp; mock_provider mp;
EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false)); EXPECT_CALL(mp, is_read_only()).WillRepeatedly(Return(false));
filesystem_item fsi; filesystem_item fsi;
fsi.directory = false; fsi.directory = false;

View File

@ -37,7 +37,7 @@ TEST(upload, can_upload_a_valid_file) {
mock_provider mock_prov; mock_provider mock_prov;
EXPECT_CALL(mock_prov, is_direct_only()).WillRepeatedly(Return(false)); EXPECT_CALL(mock_prov, is_read_only()).WillRepeatedly(Return(false));
filesystem_item fsi; filesystem_item fsi;
fsi.api_path = "/test.txt"; fsi.api_path = "/test.txt";
@ -80,7 +80,7 @@ TEST(upload, can_cancel_upload) {
mock_provider mock_provider; mock_provider mock_provider;
EXPECT_CALL(mock_provider, is_direct_only()).WillRepeatedly(Return(false)); EXPECT_CALL(mock_provider, is_read_only()).WillRepeatedly(Return(false));
filesystem_item fsi; filesystem_item fsi;
fsi.api_path = "/test.txt"; fsi.api_path = "/test.txt";
@ -146,7 +146,7 @@ TEST(upload, can_stop_upload) {
mock_provider mock_provider; mock_provider mock_provider;
EXPECT_CALL(mock_provider, is_direct_only()).WillRepeatedly(Return(false)); EXPECT_CALL(mock_provider, is_read_only()).WillRepeatedly(Return(false));
filesystem_item fsi; filesystem_item fsi;
fsi.api_path = "/test.txt"; fsi.api_path = "/test.txt";

View File

@ -220,6 +220,10 @@ TYPED_TEST(winfsp_test, can_get_and_set_basic_info_test) {
} }
TYPED_TEST(winfsp_test, run_winfsp_tests) { TYPED_TEST(winfsp_test, run_winfsp_tests) {
if (this->provider->is_read_only()) {
return;
}
auto cur = std::filesystem::current_path(); auto cur = std::filesystem::current_path();
std::filesystem::current_path(this->mount_location); std::filesystem::current_path(this->mount_location);