Инфраструктура модульных испытаний новапрова: тесты не обнаружены - PullRequest
0 голосов
/ 04 мая 2018

У меня есть простой созданный тест, и когда я компилирую его с novaprova , он не обнаруживает тесты.

novaprova фактически построен с нуля для моей платформы, которая является x86 Linux пользовательской платформой.

Кто-нибудь видел подобные проблемы?

Ниже приведен вывод с поддержкой отладки теста novaprova , который у меня есть.

./testrunner
np: creating testmanager_t instance
np: NovaProva Copyright (c) Gregory Banks
np: Built for O/S linux architecture x86
np: adding classifier /^test_([a-z0-9].*)/ -> test
...
...
np: adding classifier /^__np_parameter_(.*)/ -> param
np: creating np::spiegel::dwarf::state_t instance
np: state_t::add_self: platform linkobj (null)
np: state_t::add_self: platform linkobj /usr/lib/gcc/i486-pc-linux-gnu/4.1.2/libstdc++.so.6
np: state_t::add_self: platform linkobj /usr/i486-pc-linux-gnu/lib/libbfd-2.18.so
np: state_t::add_self: have spiegel linkobj
np: state_t::add_self: platform linkobj /lib/libdl.so.2
np: state_t::add_self: platform linkobj /lib/librt.so.1
np: state_t::add_self: platform linkobj /usr/lib/libxml2.so.2
np: state_t::add_self: platform linkobj /usr/lib/libglib-2.0.so.0
np: state_t::add_self: platform linkobj /lib/libpthread.so.0
np: state_t::add_self: platform linkobj /lib/libz.so.1
np: state_t::add_self: platform linkobj /usr/lib/libcrypto.so.0.9.8
np: state_t::add_self: platform linkobj /usr/lib/libcurl.so.4
np: state_t::add_self: platform linkobj /lib/libm.so.6
np: state_t::add_self: platform linkobj /usr/lib/gcc/i486-pc-linux-gnu/4.1.2/libgcc_s.so.1
np: state_t::add_self: platform linkobj /lib/libc.so.6
np: state_t::add_self: platform linkobj /lib/ld-linux.so.2
np: state_t::add_self: platform linkobj /usr/lib/libssl.so.0.9.8
np: opening bfd /usr/i486-pc-linux-gnu/lib/libbfd-2.18.so
np: sections:
np: section name .hash size 1ce0 filepos 114 index -1
np: section name .gnu.hash size 1ca0 filepos 1df4 index -1
np: section name .dynsym size 33d0 filepos 3a94 index -1
np: section name .dynstr size 4823 filepos 6e64 index -1
np: section name .gnu.version size 67a filepos b688 index -1
np: section name .gnu.version_r size 50 filepos bd04 index -1
np: section name .rel.dyn size 8010 filepos bd54 index -1
np: section name .rel.plt size d60 filepos 13d64 index -1
np: section name .init size 17 filepos 14ac4 index -1
np: section name .plt size 1ad0 filepos 14adc index 9
np: found system mapping for section .plt
np: section name .text size 89474 filepos 165b0 index -1
np: section name .fini size 1c filepos 9fa24 index -1
np: section name .rodata size 10c7b filepos 9fa40 index -1
np: section name .eh_frame_hdr size 1c filepos b06bc index -1
np: section name .eh_frame size 5c filepos b06d8 index -1
np: section name .ctors size 8 filepos b0fa8 index -1
np: section name .dtors size 8 filepos b0fb0 index -1
np: section name .jcr size 4 filepos b0fb8 index -1
np: section name .data.rel.ro size 6e60 filepos b0fc0 index -1
np: section name .dynamic size d0 filepos b7e20 index -1
np: section name .got size f0 filepos b7ef0 index -1
np: section name .got.plt size 6bc filepos b7ff4 index -1
np: section name .data size fc0 filepos b86c0 index -1
np: section name .bss size 41f0 filepos b9680 index -1
np: debug sections map:
np: index 0 name .debug_aranges map 0x0 size 0x0
np: index 1 name .debug_pubnames map 0x0 size 0x0
np: index 2 name .debug_info map 0x0 size 0x0
np: index 3 name .debug_abbrev map 0x0 size 0x0
np: index 4 name .debug_line map 0x0 size 0x0
np: index 5 name .debug_frame map 0x0 size 0x0
np: index 6 name .debug_str map 0x0 size 0x0
np: index 7 name .debug_loc map 0x0 size 0x0
np: index 8 name .debug_ranges map 0x0 size 0x0
np: index 9 name .plt map 0x55678adc size 0x1ad0
np: reading compile units for linkobj /usr/i486-pc-linux-gnu/lib/libbfd-2.18.so
np: DWARF compile unit header at section offset 0x0
np: scanning for test functions
np: WARNING: no tests discovered
np: running
np: 0 run 0 failed

1 Ответ

0 голосов
/ 04 мая 2018

Рассматривая структуру novaprova и вашу проблему, я пришел к следующей документации: Написание тестовых функций .

Цитировать из раздела «Дерево тестов»:

Тестовое дерево

Большинство других тестовых сред предоставляют простой двухуровневый механизм для организации тестов; тесты сгруппированы в комплекты.

В отличие от этого, NovaProva организует тесты в виде дерева тестовых узлов. Все тесты, встроенные в исполняемый файл теста, собираются во время выполнения и встроенный в дерево, с одним общим корнем. Корень затем обрезается пока названия тестов не станут настолько короткими, насколько это возможно. Каждая тестовая функция является листовой узел в этом дереве (обычно).

Местоположения тестов в этом дереве получены из имен функция теста, базовое имя исходного файла теста, содержащего тестовая функция и иерархия каталогов файловой системы, содержащих этот исходный файл. Они образуют естественную схему классификации, которую вы уже контролируя, выбирая имена имен файлов и функций. Эти имена склеены в порядке от наименьшего до наиболее конкретного, разделены символами ASCII ‘.’ и в целом выглядят следующим образом.

dir.subdir.more.subdirs.filename.function 

Вот пример, показывающий, как имена тестовых узлов естественно выпадают из вашей организации тестового кода.

% cat tests/startrek/tng/federation/enterprise.c 
static void test_torpedoes(void) {
    fprintf(stderr, "Testing photon torpedoes\n"); }

% cat tests/startrek/tng/klingons/neghvar.c 
static void test_disruptors(void) {
    fprintf(stderr, "Testing disruptors\n"); }

% cat tests/starwars/episode4/rebels/xwing.c 
static void test_lasers(void) {
    fprintf(stderr, "Testing laser cannon\n"); }

% ./testrunner --list 
tests.startrek.tng.federation.enterprise.torpedoes
tests.startrek.tng.klingons.neghvar.disruptors
tests.starwars.episode4.rebels.xwing.lasers

Обратите внимание, что для каждого распознанного теста с помощью provanove используется следующая сигнатура функции:

static void test_[your tested function name](void) {

Судя по вашему вопросу - это похоже на вероятного виновника ваших проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...