[tests] moulette: added a sleep test to see if processes are well waited.
[ozulis.git] / src / moulette / test-parser.cc
blob8c420309d7b34a3f60e461b5f489761ca36db49b
1 #include <config.hh>
2 #include <ozulis/core/assert.hh>
3 #include <moulette/bison/parser.hh>
4 #include <moulette/bison/lexer-extra.hh>
5 #include <moulette/bison/lexer.hh>
6 #include "test-parser.hh"
8 int moulette_parse(yyscan_t yyscanner, moulette::TestParser & ctx);
10 namespace moulette
12 TestParser::TestParser()
13 : path(),
14 result(0)
18 Testable *
19 TestParser::parseBuffer(const std::string & buffer,
20 const boost::filesystem::path & path)
22 TestParser parser;
23 yyscan_t scanner;
24 LexerExtra extra;
26 parser.path = path;
27 moulette_lex_init_extra(&extra, &scanner);
28 moulette__scan_string(buffer.c_str(), scanner);
29 assert_msg(!moulette_parse(scanner, parser), _("parse error"));
30 moulette_lex_destroy(scanner);
31 return parser.result;
34 Testable *
35 TestParser::parseFile(const boost::filesystem::path & path)
37 if (!boost::filesystem::is_regular_file(path))
38 return 0;
40 TestParser parser;
41 parser.path = path;
43 yyscan_t scanner;
44 LexerExtra extra;
45 moulette_lex_init_extra(&extra, &scanner);
47 FILE * stream = fopen(path.string().c_str(), "r");
48 assert(stream);
49 moulette_set_in(stream, scanner);
50 assert_msg(!moulette_parse(scanner, parser), _("parse error"));
51 moulette_lex_destroy(scanner);
52 return parser.result;