This repository has been archived on 2023-10-09. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
blender-archive/source/blender/blenlib/tests/BLI_fileops_test.cc
Sybren A. Stüvel 8cf1994455 Fix T93960: Asset Catalogs I/O fails with unicode file paths on Windows
On Windows, encode file paths as UTF-16 before trying to open the file
for reading/writing.

This introduces a new class `blender::fstream`, which wraps
`std::fstream` and provides this UTF-16 encoding. This class should also
be used in other areas, like the Alembic importer/exporter.

Manifest Task: T93960

Reviewed By: JacquesLucke

Differential Revision: https://developer.blender.org/D13633
2021-12-21 15:54:09 +01:00

41 lines
1.2 KiB
C++

/* Apache License, Version 2.0 */
#include "BLI_fileops.hh"
#include "testing/testing.h"
namespace blender::tests {
TEST(fileops, fstream_open_string_filename)
{
const std::string test_files_dir = blender::tests::flags_test_asset_dir();
if (test_files_dir.empty()) {
FAIL();
}
const std::string filepath = test_files_dir + "/asset_library/новый/blender_assets.cats.txt";
fstream in(filepath, std::ios_base::in);
ASSERT_TRUE(in.is_open()) << "could not open " << filepath;
in.close(); /* This should not crash. */
/* Reading the file not tested here. That's deferred to `std::fstream` anyway. */
}
TEST(fileops, fstream_open_charptr_filename)
{
const std::string test_files_dir = blender::tests::flags_test_asset_dir();
if (test_files_dir.empty()) {
FAIL();
}
const std::string filepath_str = test_files_dir + "/asset_library/новый/blender_assets.cats.txt";
const char *filepath = filepath_str.c_str();
fstream in(filepath, std::ios_base::in);
ASSERT_TRUE(in.is_open()) << "could not open " << filepath;
in.close(); /* This should not crash. */
/* Reading the file not tested here. That's deferred to `std::fstream` anyway. */
}
} // namespace blender::tests