Привет мир llvm-lit с файлом cfg - PullRequest
0 голосов
/ 24 июня 2018

Я пытаюсь запустить простой тест с помощью llvm-lit. У меня есть специальный каталог:

llvm-lit-dir
+---lit.cfg
+---llvm_lit_example.c

Файл cfg находится по адресу llvm-3.8.0 / utils / lit / lit / ExampleTests.ObjDir. Вот оно:

$ cat lit.cfg
config.example_obj_root = os.path.dirname(__file__)
lit.load_config(config, os.path.join(config.test_source_root,'lit.cfg'))

Вот пример, который я пытаюсь проверить:

$ cat llvm_lit_example.c
// RUN: %clang -o %t0 %s
// RUN: %t0 | grep "YES"

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main(int argc, char **argv)
{
    int i=rand()%4;

    char s1[5]={'0','1','2','3', 0 };
    char s2[5]={'0','1','2','3', 0 };

    s1[i]='6';

    if (strcmp(s1,s2) == 0) printf("NO \n");
    if (strcmp(s1,s2) != 0) printf("YES\n");
}

Я пробовал несколько вариантов, но ни один из них не работает:

$ llvm-lit llvm-lit-dir/llvm_lit_example.c
llvm-lit: TestingConfig.py:114: fatal: unable to parse config file '/home//llvm-lit-dir/lit.site.cfg', traceback: Traceback (most recent call last):
File "/home/llvm-3.8.0/llvm/utils/lit/lit/TestingConfig.py", line 101, in load_from_path
  exec(compile(data, path, 'exec'), cfg_globals, None)
File "/home/llvm-lit-dir/lit.site.cfg", line 14, in <module>
  lit.load_config(config, os.path.join(config.test_source_root,'lit.cfg'))
NameError: name 'lit' is not defined

Что я делаю не так? Спасибо!

Ответы [ 2 ]

0 голосов
/ 08 июля 2019

Ниже приведен минималистичный пример «Привет, мир», который сейчас работает для меня:

файл конфигурации: lit.cfg

import lit.formats

config.name = "LIT hello world"
config.test_format = lit.formats.ShTest("0")

файл теста: тесты / тест

; RUN: echo "Foo" | FileCheck %s
; CHECK: Foo

запустите его с

lit -v tests/test

Чтобы тест не прошел, измените его на echo "Bar".


Два дополнительных комментария:

1) Установка lit проста:

pip3 install lit

Чтобы установить FileCheck Мне пришлось загрузить исходный код LLVM ( Страница загрузки LLVM ) и построить цель FileCheck с помощью CMake.

2) config.test_format = lit.formats.ShTest("0") важно, потому что в противном случае горит сбой со следующей ошибкой:

AttributeError: 'NoneType' object has no attribute 'execute'

Похоже, ShTest является форматом по умолчанию, но пользователь все равно должен активировать его вручную.

0 голосов
/ 25 июня 2018

Этот конфиг является источником Python.lit там явно не определено.Попробуйте импортировать что-то, связанное с освещением, например from lit.llvm import llvm_config.Взгляните на test/lit.cfg.py в источнике LLVM.

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