2017-02-26 2 views
2

J'apprends à utiliser vérifier pour l'unité de tester mon code. J'ai mon projet mis en place avec autotools, et j'ai vérifié mis en place pour faire quelques tests.Comment puis-je définir des chemins pour la lecture d'entrée à partir d'un fichier dans le test de vérification?

Le programme que je réalise est un arbre noir rouge que je veux pouvoir utiliser pour d'autres projets. Pour l'un de mes tests, je souhaite lire les entrées d'un fichier à utiliser comme données de test à insérer dans l'arborescence. J'ai un fichier appelé words.txt dans mon répertoire de tests que je veux lire. J'aime bien garder mon arbre de construction séparé. Alors, comment configurer mes makefiles pour mettre le fichier de mots au bon endroit? Puis-je le lire dans le répertoire qui fait fonctionner check?

Voici ce que tout ressemble à:

Répertoire du projet:

├── aclocal.m4 
├── autom4te.cache 
│   ├── output.0 
│   ├── output.1 
│   ├── requests 
│   ├── traces.0 
│   └── traces.1 
├── build-aux 
│   ├── ar-lib 
│   ├── compile 
│   ├── depcomp 
│   ├── install-sh 
│   ├── missing 
│   └── test-driver 
├── config.h.in 
├── config.h.in~ 
├── configure 
├── configure.ac 
├── Makefile.am 
├── Makefile.in 
├── src 
│   ├── libredblack.c 
│   ├── libredblack.h 
│   ├── main.c 
│   ├── Makefile.am 
│   └── Makefile.in 
└── tests 
    ├── check_libredblack.c 
    ├── Makefile.am 
    ├── Makefile.in 
    └── words.txt 

tests/Makefile.am:

TESTS = check_libredblack 
check_PROGRAMS = check_libredblack 
check_libredblack_SOURCES = check_libredblack.c $(top_builddir)/src/libredblack.h 
check_libredblack_CFLAGS = @[email protected] 
check_libredblack_LDADD = $(top_builddir)/src/libredblack.a @[email protected] 

Répondre

0

Une façon est de l et le Makefile indique au programme de test où le trouver.

Ajoutez à votre programme de test CPPFLAGS quelque chose comme -DWORDS_LOCATION="\"$(top_srcdir)/tests/data/words.txt\"" puis le chemin d'accès au fichier de données sera disponible pour votre programme sous la forme d'une chaîne, définie dans la macro WORDS_LOCATION.