2.0.0-rc (#9)
### Issues
* \#1 \[bug\] Unable to mount S3 due to 'item_not_found' exception
* \#2 Require bucket name for S3 mounts
* \#3 \[bug\] File size is not being updated in S3 mount
* \#4 Upgrade to libfuse-3.x.x
* \#5 Switch to renterd for Sia support
* \#6 Switch to cpp-httplib to further reduce dependencies
* \#7 Remove global_data and calculate used disk space per provider
* \#8 Switch to libcurl for S3 mount support
### Changes from v1.x.x
* Added read-only encrypt provider
* Pass-through mount point that transparently encrypts source data using `XChaCha20-Poly1305`
* Added S3 encryption support via `XChaCha20-Poly1305`
* Added replay protection to remote mounts
* Added support base64 writes in remote FUSE
* Created static linked Linux binaries for `amd64` and `aarch64` using `musl-libc`
* Removed legacy Sia renter support
* Removed Skynet support
* Fixed multiple remote mount WinFSP API issues on \*NIX servers
* Implemented chunked read and write
* Writes for non-cached files are performed in chunks of 8Mib
* Removed `repertory-ui` support
* Removed `FreeBSD` support
* Switched to `libsodium` over `CryptoPP`
* Switched to `XChaCha20-Poly1305` for remote mounts
* Updated `GoogleTest` to v1.14.0
* Updated `JSON for Modern C++` to v3.11.2
* Updated `OpenSSL` to v1.1.1w
* Updated `RocksDB` to v8.5.3
* Updated `WinFSP` to 2023
* Updated `boost` to v1.78.0
* Updated `cURL` to v8.3.0
* Updated `zlib` to v1.3
* Use `upload_manager` for all providers
* Adds a delay to uploads to prevent excessive API calls
* Supports re-upload after mount restart for incomplete uploads
* NOTE: Uploads for all providers are full file (no resume support)
* Multipart upload support is planned for S3
Reviewed-on: #9
This commit is contained in:
79
3rd_party/pugixml/tests/writer_string.cpp
vendored
Normal file
79
3rd_party/pugixml/tests/writer_string.cpp
vendored
Normal file
@@ -0,0 +1,79 @@
|
||||
#include "writer_string.hpp"
|
||||
|
||||
#include "test.hpp"
|
||||
|
||||
static bool test_narrow(const std::string& result, const char* expected, size_t length)
|
||||
{
|
||||
// check result
|
||||
if (result != std::string(expected, expected + length)) return false;
|
||||
|
||||
// check comparison operator (incorrect implementation can theoretically early-out on zero terminators...)
|
||||
if (length > 0 && result == std::string(expected, expected + length - 1) + "?") return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void xml_writer_string::write(const void* data, size_t size)
|
||||
{
|
||||
contents.append(static_cast<const char*>(data), size);
|
||||
}
|
||||
|
||||
std::string xml_writer_string::as_narrow() const
|
||||
{
|
||||
return contents;
|
||||
}
|
||||
|
||||
std::basic_string<wchar_t> xml_writer_string::as_wide() const
|
||||
{
|
||||
CHECK(contents.size() % sizeof(wchar_t) == 0);
|
||||
|
||||
// round-trip pointer through void* to avoid pointer alignment warnings; contents data should be heap allocated => safe to cast
|
||||
return std::basic_string<wchar_t>(static_cast<const wchar_t*>(static_cast<const void*>(contents.data())), contents.size() / sizeof(wchar_t));
|
||||
}
|
||||
|
||||
std::basic_string<pugi::char_t> xml_writer_string::as_string() const
|
||||
{
|
||||
#ifdef PUGIXML_WCHAR_MODE // to avoid "condition is always true" warning in BCC
|
||||
CHECK(contents.size() % sizeof(pugi::char_t) == 0);
|
||||
#endif
|
||||
|
||||
// round-trip pointer through void* to avoid pointer alignment warnings; contents data should be heap allocated => safe to cast
|
||||
return std::basic_string<pugi::char_t>(static_cast<const pugi::char_t*>(static_cast<const void*>(contents.data())), contents.size() / sizeof(pugi::char_t));
|
||||
}
|
||||
|
||||
std::string save_narrow(const pugi::xml_document& doc, unsigned int flags, pugi::xml_encoding encoding)
|
||||
{
|
||||
xml_writer_string writer;
|
||||
|
||||
doc.save(writer, STR("\t"), flags, encoding);
|
||||
|
||||
return writer.as_narrow();
|
||||
}
|
||||
|
||||
bool test_save_narrow(const pugi::xml_document& doc, unsigned int flags, pugi::xml_encoding encoding, const char* expected, size_t length)
|
||||
{
|
||||
return test_narrow(save_narrow(doc, flags, encoding), expected, length);
|
||||
}
|
||||
|
||||
std::string write_narrow(pugi::xml_node node, unsigned int flags, pugi::xml_encoding encoding)
|
||||
{
|
||||
xml_writer_string writer;
|
||||
|
||||
node.print(writer, STR("\t"), flags, encoding);
|
||||
|
||||
return writer.as_narrow();
|
||||
}
|
||||
|
||||
bool test_write_narrow(pugi::xml_node node, unsigned int flags, pugi::xml_encoding encoding, const char* expected, size_t length)
|
||||
{
|
||||
return test_narrow(write_narrow(node, flags, encoding), expected, length);
|
||||
}
|
||||
|
||||
std::basic_string<wchar_t> write_wide(pugi::xml_node node, unsigned int flags, pugi::xml_encoding encoding)
|
||||
{
|
||||
xml_writer_string writer;
|
||||
|
||||
node.print(writer, STR("\t"), flags, encoding);
|
||||
|
||||
return writer.as_wide();
|
||||
}
|
||||
Reference in New Issue
Block a user