Создание временных файлов в Гугл тестах
Мне надо протестировать аналог утилиты tree, используя гугл тесты, boost и C++ 14. Для этого, естественно, нужно создать временные директории с файлами. Я умею создавать временную директорию, но как создать временной файл (так, чтобы ему можно было указывать имя, адресс). Я пробовал через tmpnam, но получал ошибку bus error 10, по непонятной мне причине:
class TreeTestCase : public ::testing::Test {
public:
path p;
std::string testFile;
TreeTestCase() {
this->p = current_path();
this->p += "/my_tmp";
create_directory(p);
testFile = std::tmpnam("my_tmp/testFileLongNameToBeFound.txt");
}
~TreeTestCase() {
remove_all(this->p);
}
};
Ответы (1 шт):
Автор решения: avp
→ Ссылка
Вы передаете в tmpnam() константу, а не char массив, который она должна заполнить, вот она и валится.
И вообще, это устаревшая функция, вы должны были получить warning при компиляции (по крайней мере в gcc/g++).
Лучше посмотрите man tempnam и пользуйтесь ей.