Support failure tests
This commit is contained in:
@ -107,6 +107,8 @@ namespace elna::source
|
||||
std::int32_t number() const;
|
||||
const elna::source::position& position() const noexcept;
|
||||
|
||||
std::string to_string() const;
|
||||
|
||||
private:
|
||||
type m_type;
|
||||
value m_value{};
|
||||
|
@ -279,6 +279,7 @@ namespace elna::source
|
||||
std::unique_ptr<expression> parse_term();
|
||||
std::unique_ptr<expression> parse_expression();
|
||||
std::unique_ptr<constant_definition> parse_constant_definition();
|
||||
std::unique_ptr<procedure_definition> parse_procedure_definition();
|
||||
std::unique_ptr<declaration> parse_declaration();
|
||||
std::unique_ptr<statement> parse_statement();
|
||||
std::unique_ptr<call_statement> parse_call_statement();
|
||||
@ -286,7 +287,8 @@ namespace elna::source
|
||||
std::unique_ptr<assign_statement> parse_assign_statement();
|
||||
std::unique_ptr<if_statement> parse_if_statement();
|
||||
std::unique_ptr<while_statement> parse_while_statement();
|
||||
std::vector<std::unique_ptr<definition>> parse_definitions();
|
||||
std::vector<std::unique_ptr<constant_definition>> parse_constant_definitions();
|
||||
std::vector<std::unique_ptr<procedure_definition>> parse_procedure_definitions();
|
||||
std::vector<std::unique_ptr<declaration>> parse_declarations();
|
||||
std::unique_ptr<block> parse_block();
|
||||
|
||||
|
@ -70,6 +70,11 @@ namespace elna::source
|
||||
errors().emplace_back(std::make_unique<U>(first));
|
||||
}
|
||||
|
||||
explicit result(E&& errors)
|
||||
: payload(std::move(errors))
|
||||
{
|
||||
}
|
||||
|
||||
bool has_errors() const noexcept
|
||||
{
|
||||
return std::holds_alternative<E>(payload);
|
||||
|
@ -22,4 +22,9 @@ namespace elna::source
|
||||
void visit(declaration *declaration) override;
|
||||
void visit(block *block) override;
|
||||
};
|
||||
|
||||
class type_analysis_visitor final : public empty_visitor
|
||||
{
|
||||
public:
|
||||
};
|
||||
}
|
||||
|
@ -6,6 +6,10 @@
|
||||
|
||||
#define BOOST_PROCESS_USE_STD_FS
|
||||
|
||||
#include <boost/asio.hpp>
|
||||
#include <boost/process.hpp>
|
||||
#include <boost/process/v2.hpp>
|
||||
|
||||
namespace elna
|
||||
{
|
||||
enum class test_status
|
||||
@ -14,6 +18,7 @@ namespace elna
|
||||
compile_failed,
|
||||
build_failed,
|
||||
expectation_failed,
|
||||
expectation_not_found
|
||||
};
|
||||
|
||||
struct test_result final
|
||||
@ -39,5 +44,9 @@ namespace elna
|
||||
void add_exit_code(const test_status result) noexcept;
|
||||
};
|
||||
|
||||
test_result run_for_output(boost::asio::io_context& context, const std::filesystem::path& binary,
|
||||
std::initializer_list<boost::string_view> arguments);
|
||||
test_result build_test(boost::asio::io_context& context, const std::filesystem::directory_entry& test_entry);
|
||||
test_result run_test(boost::asio::io_context& context, const std::filesystem::directory_entry& test_entry);
|
||||
void print_result(const std::filesystem::directory_entry& test_entry, const test_result& result);
|
||||
}
|
||||
|
Reference in New Issue
Block a user