mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 04:17:34 +00:00
Tests: Test LibMarkdown against commonmark test suite
TestCommonmark runs the CommonMark test suite (https://spec.commonmark.org/0.30/spec.json) against LibMarkdown. Currently 44/652 tests pass.
This commit is contained in:
parent
57ec19f963
commit
8d2c04821f
6 changed files with 71 additions and 1 deletions
|
@ -1,7 +1,7 @@
|
||||||
[Global]
|
[Global]
|
||||||
SkipDirectories=Kernel/Legacy
|
SkipDirectories=Kernel/Legacy
|
||||||
SkipRegex=^ue-.*$
|
SkipRegex=^ue-.*$
|
||||||
SkipTests=test-web
|
SkipTests=test-web TestCommonmark
|
||||||
NotTestsPattern=^.*(txt|frm|inc)$
|
NotTestsPattern=^.*(txt|frm|inc)$
|
||||||
|
|
||||||
[test-js]
|
[test-js]
|
||||||
|
|
9
Meta/CMake/commonmark_spec.cmake
Normal file
9
Meta/CMake/commonmark_spec.cmake
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
option(ENABLE_COMMONMARK_SPEC_DOWNLOAD "Enable download of commonmark test suite at build time" ON)
|
||||||
|
|
||||||
|
set(MARKDOWN_TEST_PATH ${CMAKE_BINARY_DIR}/commonmark.spec.json)
|
||||||
|
set(MARKDOWN_TEST_URL https://spec.commonmark.org/0.30/spec.json)
|
||||||
|
|
||||||
|
if(ENABLE_COMMONMARK_SPEC_DOWNLOAD)
|
||||||
|
file(DOWNLOAD ${MARKDOWN_TEST_URL} ${MARKDOWN_TEST_PATH})
|
||||||
|
install(FILES ${MARKDOWN_TEST_PATH} DESTINATION home/anon)
|
||||||
|
endif()
|
|
@ -518,6 +518,14 @@ if (BUILD_LAGOM)
|
||||||
)
|
)
|
||||||
set_tests_properties(JS PROPERTIES ENVIRONMENT SERENITY_SOURCE_DIR=${SERENITY_PROJECT_ROOT})
|
set_tests_properties(JS PROPERTIES ENVIRONMENT SERENITY_SOURCE_DIR=${SERENITY_PROJECT_ROOT})
|
||||||
|
|
||||||
|
# Markdown
|
||||||
|
include(${SERENITY_PROJECT_ROOT}/Meta/CMake/commonmark_spec.cmake)
|
||||||
|
file(GLOB LIBMARKDOWN_TEST_SOURCES CONFIGURE_DEPENDS "../../Tests/LibMarkdown/*.cpp")
|
||||||
|
foreach(source ${LIBMARKDOWN_TEST_SOURCES})
|
||||||
|
lagom_test(${source} LIBS LagomMarkdown)
|
||||||
|
endforeach()
|
||||||
|
set_tests_properties(TestCommonmark PROPERTIES DISABLED YES)
|
||||||
|
|
||||||
# test-wasm
|
# test-wasm
|
||||||
add_executable(test-wasm_lagom
|
add_executable(test-wasm_lagom
|
||||||
../../Tests/LibWasm/test-wasm.cpp
|
../../Tests/LibWasm/test-wasm.cpp
|
||||||
|
|
|
@ -9,6 +9,7 @@ add_subdirectory(LibGfx)
|
||||||
add_subdirectory(LibIMAP)
|
add_subdirectory(LibIMAP)
|
||||||
add_subdirectory(LibJS)
|
add_subdirectory(LibJS)
|
||||||
add_subdirectory(LibM)
|
add_subdirectory(LibM)
|
||||||
|
add_subdirectory(LibMarkdown)
|
||||||
add_subdirectory(LibPthread)
|
add_subdirectory(LibPthread)
|
||||||
add_subdirectory(LibRegex)
|
add_subdirectory(LibRegex)
|
||||||
add_subdirectory(LibSQL)
|
add_subdirectory(LibSQL)
|
||||||
|
|
6
Tests/LibMarkdown/CMakeLists.txt
Normal file
6
Tests/LibMarkdown/CMakeLists.txt
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
include(${SERENITY_PROJECT_ROOT}/Meta/CMake/commonmark_spec.cmake)
|
||||||
|
file(GLOB TEST_SOURCES CONFIGURE_DEPENDS "*.cpp")
|
||||||
|
|
||||||
|
foreach(source ${TEST_SOURCES})
|
||||||
|
serenity_test(${source} LibMarkdown LIBS LibMarkdown)
|
||||||
|
endforeach()
|
46
Tests/LibMarkdown/TestCommonmark.cpp
Normal file
46
Tests/LibMarkdown/TestCommonmark.cpp
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2021, Peter Elliott <pelliott@ualberta.ca>
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: BSD-2-Clause
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <AK/JsonArray.h>
|
||||||
|
#include <AK/JsonObject.h>
|
||||||
|
#include <AK/JsonParser.h>
|
||||||
|
#include <AK/String.h>
|
||||||
|
#include <LibCore/File.h>
|
||||||
|
#include <LibMarkdown/Document.h>
|
||||||
|
#include <LibTest/TestCase.h>
|
||||||
|
#include <LibTest/TestSuite.h>
|
||||||
|
|
||||||
|
TEST_SETUP
|
||||||
|
{
|
||||||
|
auto file = Core::File::construct("/home/anon/commonmark.spec.json");
|
||||||
|
if (!file->open(Core::OpenMode::ReadOnly)) {
|
||||||
|
file = Core::File::construct("./commonmark.spec.json");
|
||||||
|
VERIFY(file->open(Core::OpenMode::ReadOnly));
|
||||||
|
}
|
||||||
|
|
||||||
|
String test_data(file->read_all(), AK::ShouldChomp::NoChomp);
|
||||||
|
|
||||||
|
auto tests = JsonParser(test_data).parse().value().as_array();
|
||||||
|
for (size_t i = 0; i < tests.size(); ++i) {
|
||||||
|
auto testcase = tests[i].as_object();
|
||||||
|
|
||||||
|
auto name = String::formatted("{}_ex{}_{}..{}",
|
||||||
|
testcase.get("section"),
|
||||||
|
testcase.get("example"),
|
||||||
|
testcase.get("start_line"),
|
||||||
|
testcase.get("end_line"));
|
||||||
|
|
||||||
|
String markdown = testcase.get("markdown").as_string();
|
||||||
|
String html = testcase.get("html").as_string();
|
||||||
|
|
||||||
|
Test::TestSuite::the().add_case(adopt_ref(*new Test::TestCase(
|
||||||
|
name, [markdown, html]() {
|
||||||
|
auto document = Markdown::Document::parse(markdown);
|
||||||
|
EXPECT_EQ(document->render_to_inline_html(), html);
|
||||||
|
},
|
||||||
|
false)));
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue