Повышаю. Проблемы файловой системы, такие как сообщения об ошибках или запросы функций, должны сообщаться через билет Boost Trac.
Запросы на вытягивание GitHub также поощряются, хотя все, что выходит за рамки действительно тривиальных исправлений, нуждается в билете на трак.
Bug reports
Своевременный ответ на сообщение об ошибке гораздо более вероятен, если проблема может быть немедленно воспроизведена без догадок, а регрессионные тесты могут быть легко созданы .
Вам необходимо предоставить следующее:
Простая тестовая программа, которая:
Иллюстрирует проблему, и
Автоматически дает однозначный проход или результат отказа - предпочтительно возвращение нуля для прохода и ненуля для отказа, и
Можно использовать в качестве основы для добавления тестов в Boost. Filesystem's регрессионный тест.
Компилятор, стандартная библиотека, платформа и версия Boost, которую вы использовали для создания и запуска своей тестовой программы.
Описание того, как построить и запустить программу тестирования.
Копия вывода из тестовой программы, если таковая имеется.
Адрес электронной почты для последующих вопросов.
См. Обоснование , чтобы узнать, почему это необходимо.
Для большей части автоматического фреймворка, чтобы обеспечить вышесказанное, читайте дальше!
Bug reporting framework
Каталог /libs/filesystem/bug> предоставляет программу тестирования ошибок (bug.cpp) и файл сборки (Jamfile.v2). Вот что вам нужно сделать:
Добавьте один или несколько тестовых случаев кbug.cpp, используя любой текстовый редактор или редактор программы.
Это и #39, это! Когда вы завершите эти шаги, вы будете готовы!
Вывод теста предоставляет всю основную информацию о компиляторе, библиотеке std, платформе, версии Boost и командной строке, а добавленные вами тестовые кейсы должны облегчить разработчику библиотеки воспроизведение проблемы.
Вот bug.cpp как указано. Чтобы сообщить о реальной ошибке, используйте макросы BOOST_TEST и BOOST_TEST_EQ для создания собственных тестовых случаев. Вы можете удалить три теста в bug.cpp:
#include <boost/detail/lightweight_test_report.hpp>
#include <boost/filesystem.hpp>
namespace fs = boost::filesystem;
int test_main(int, char*[]) // note name
{
BOOST_TEST(2 + 2 == 5); // one convertible-to-bool argument; this one fails!
BOOST_TEST_EQ(4 + 4, 9); // two EqualityComparible arguments; this one fails!
BOOST_TEST(fs::exists(".")); // should pass, so nothing should be reported
return ::boost::report_errors(); // required
}
Запуск теста на Windows произвел этот вывод теста:
Microsoft Visual C++ version 14.0
Dinkumware standard library version 610
Win32
Boost version 1.58.0
Command line: bin\bug
bug.cpp(10): test '2 + 2 == 5' failed in function
'int __cdecl test_main(int,char *[])'
bug.cpp(11): test '4 + 4 == 9' failed in function
'int __cdecl test_main(int,char *[])': '8' != '9'
2 errors detected.
Структура теста выполняет test_main() из блока try с catch блокировать сообщения об исключениях через std:: исключая что(). Поэтому результат будет отличаться, если будет сделано исключение.
Background information
Теперь у вас должно быть достаточно информации, чтобы подать легко воспроизводимый отчет об ошибках. Таким образом, вы можете пропустить чтение остальной части этой страницы, если вам не нужно сделать что-то необычное.
Повышаю. Build b2 имеет множество опций, свойств и целей, но большинство из них вам не понадобятся. Вот некоторые из них, которые вы можете найти полезными:
Опции
-a Восстановить все, а не просто устаревшие цели. Используется в приведенном выше примере для обеспечения того, чтобы библиотеки были построены с той же настройкой, что и тестовая программа.
Свойства
address-model=n n равно 32 или 64. Явно запрашивайте генерацию 32-битного или 64-битного кода. Это обычно требует, чтобы ваш компилятор был соответствующим образом настроен.
variant=string строка является debug или release.
toolset=string Например, gcc-4.9, clang-3.3, или msvc-14.0.
include=string Дополнительные пути для компиляторов C и C++.
cxxflags=string Пользовательские опции для перехода на компилятор C++.
define=string Дополнительные макроопределения для компиляторов C и C++. строка должна быть либо SYMBOL, либо SYMBOL=VALUE
Вот список запросов снова, с обоснованием добавлено:
A simple test program
that:
Иллюстрация проблемы [Код сообщает более ясно, чем проза.] Если похоже, что потребуется некоторое время, чтобы выяснить, в чем именно заключается проблема, или, что еще хуже, может привести к погоне за диким гусем, отчет об ошибке откладывается для дальнейшей работы, а затем часто забывается. и
Автоматически дает однозначный проход или результат отказа - предпочтительнее возвращение нуля для прохода и ненуля для отказа.[Предотвращает недопонимание и позволяет использовать в автоматических регрессионных тестах].и
Можно использовать в качестве основы для добавления тестов в Boost. Filesystem & #39; набор регрессионных тестов[С хорошими тестовыми случаями исправления становятся легче, а регрессии становятся менее вероятными].
Компилятор, стандартная библиотека, платформа и версия Boost, которую вы использовали для создания и запуска своей тестовой программы.[Реализация включает в себя много кода, зависящего от платформы, а также зависит от других упомянутых факторов. Знайте, что эти вещи заранее привлекают внимание к отчету об ошибке, не требуя дополнительной информации.
Описание того, как построить и запустить программу тестирования.[Если в качестве двигателя сборки используется b2 (ранее известный как bjam), это не вызывает беспокойства, но в противном случае требуется гораздо больше информации.]
Копия результатов тестовой программы, если таковая имеется.[Избегает неправильного толкования результатов].
Адрес электронной почты для последующих вопросов.[Комментарии Trac являются основным средством ответа, но это удручает, когда на вопрос Trac не дается ответа и нет адреса электронной почты, прикрепленного для последующего наблюдения.]
Распространяется в соответствии с Лицензией на программное обеспечение Boost, версия 1.0. См. www.boost.org/LICENSE_1_0.txt
Статья Filesystem issue reporting раздела может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.