mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-06-07 21:17:07 +09:00
AK: Add initial support for AK testsuite on Windows
We now explicitly enabling support for the minimum libraries needed to build and run the AK testsuite. 81/82 tests are running and passing. The exception is LexicalPath, as some path behaviour on Windows is different than Unix, so the current tests will have lots of platform specific failures. The implementer of LexicalPathWindows recommended windows-specific tests here, so I will do that in a follow up.
This commit is contained in:
parent
a11242f3de
commit
8cf01a25c2
Notes:
github-actions[bot]
2025-05-20 16:59:46 +00:00
Author: https://github.com/ayeteadoe
Commit: 8cf01a25c2
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/4707
Reviewed-by: https://github.com/ADKaster ✅
Reviewed-by: https://github.com/R-Goc
8 changed files with 53 additions and 15 deletions
|
@ -13,9 +13,10 @@
|
|||
#include <AK/Platform.h>
|
||||
#include <AK/Types.h>
|
||||
#ifdef AK_OS_WINDOWS
|
||||
// https://learn.microsoft.com/en-us/windows/win32/api/winsock/ns-winsock-timeval
|
||||
struct timeval {
|
||||
long tv_sec;
|
||||
long tv_usec;
|
||||
long tv_sec { 0 };
|
||||
long tv_usec { 0 };
|
||||
};
|
||||
#else
|
||||
# include <sys/time.h>
|
||||
|
|
|
@ -1,3 +1,14 @@
|
|||
add_subdirectory(LibRegex)
|
||||
add_subdirectory(LibTest)
|
||||
add_subdirectory(LibTextCodec)
|
||||
add_subdirectory(LibUnicode)
|
||||
add_subdirectory(LibURL)
|
||||
|
||||
# FIXME: Increase support for building targets on Windows
|
||||
if (WIN32 AND ENABLE_WINDOWS_CI)
|
||||
return()
|
||||
endif()
|
||||
|
||||
add_subdirectory(LibCompress)
|
||||
add_subdirectory(LibCrypto)
|
||||
add_subdirectory(LibDiff)
|
||||
|
@ -7,16 +18,11 @@ add_subdirectory(LibHTTP)
|
|||
add_subdirectory(LibIPC)
|
||||
add_subdirectory(LibJS)
|
||||
add_subdirectory(LibLine)
|
||||
add_subdirectory(LibRegex)
|
||||
add_subdirectory(LibRequests)
|
||||
add_subdirectory(LibRIFF)
|
||||
add_subdirectory(LibSyntax)
|
||||
add_subdirectory(LibTest)
|
||||
add_subdirectory(LibTextCodec)
|
||||
add_subdirectory(LibThreading)
|
||||
add_subdirectory(LibTLS)
|
||||
add_subdirectory(LibUnicode)
|
||||
add_subdirectory(LibURL)
|
||||
add_subdirectory(LibWasm)
|
||||
add_subdirectory(LibWebSocket)
|
||||
add_subdirectory(LibXML)
|
||||
|
|
|
@ -2,8 +2,6 @@ add_library(LibTestMain OBJECT TestMain.cpp AssertionHandler.cpp)
|
|||
|
||||
target_link_libraries(LibTestMain PUBLIC GenericClangPlugin)
|
||||
|
||||
add_library(JavaScriptTestRunnerMain OBJECT JavaScriptTestRunnerMain.cpp)
|
||||
|
||||
set(SOURCES
|
||||
TestSuite.cpp
|
||||
)
|
||||
|
@ -12,3 +10,10 @@ add_library(LibTest ${SOURCES})
|
|||
lagom_generate_export_header(LibTest test)
|
||||
target_link_libraries(LibTest PRIVATE AK LibCore LibFileSystem)
|
||||
set_target_properties(LibTest PROPERTIES OUTPUT_NAME lagom-test)
|
||||
|
||||
# FIXME: Increase support for building targets on Windows
|
||||
if (WIN32 AND ENABLE_WINDOWS_CI)
|
||||
return()
|
||||
endif()
|
||||
|
||||
add_library(JavaScriptTestRunnerMain OBJECT JavaScriptTestRunnerMain.cpp)
|
||||
|
|
|
@ -20,6 +20,7 @@ set(AK_TEST_SOURCES
|
|||
TestDisjointChunks.cpp
|
||||
TestDistinctNumeric.cpp
|
||||
TestDoublyLinkedList.cpp
|
||||
TestDuration.cpp
|
||||
TestEndian.cpp
|
||||
TestEnumBits.cpp
|
||||
TestEnumerate.cpp
|
||||
|
@ -44,7 +45,6 @@ set(AK_TEST_SOURCES
|
|||
TestIntrusiveRedBlackTree.cpp
|
||||
TestJSON.cpp
|
||||
TestLEB128.cpp
|
||||
TestLexicalPath.cpp
|
||||
TestMemory.cpp
|
||||
TestMemoryStream.cpp
|
||||
TestNeverDestroyed.cpp
|
||||
|
@ -70,7 +70,6 @@ set(AK_TEST_SOURCES
|
|||
TestStringFloatingPointConversions.cpp
|
||||
TestStringUtils.cpp
|
||||
TestStringView.cpp
|
||||
TestDuration.cpp
|
||||
TestTrie.cpp
|
||||
TestTuple.cpp
|
||||
TestTypeTraits.cpp
|
||||
|
@ -83,10 +82,21 @@ set(AK_TEST_SOURCES
|
|||
TestWeakPtr.cpp
|
||||
)
|
||||
|
||||
# FIXME: LexicalPathWindows has some parenting and path parts sizing inconsistencies with LexicalPath, so it deserves
|
||||
# it's own platform-specific tests to avoid if-def soup in the Unix-based tests.
|
||||
if(NOT WIN32)
|
||||
list(APPEND AK_TEST_SOURCES TestLexicalPath.cpp)
|
||||
endif()
|
||||
|
||||
foreach(source IN LISTS AK_TEST_SOURCES)
|
||||
serenity_test("${source}" AK)
|
||||
endforeach()
|
||||
|
||||
if (WIN32)
|
||||
# FIXME: Windows on ARM
|
||||
target_link_libraries(TestUFixedBigInt PRIVATE clang_rt.builtins-x86_64.lib)
|
||||
endif()
|
||||
|
||||
if (CXX_COMPILER_SUPPORTS_BLOCKS)
|
||||
serenity_test(TestFunction.mm AK NAME TestFunction)
|
||||
target_link_libraries(TestFunction PRIVATE ${BLOCKS_REQUIRED_LIBRARIES})
|
||||
|
|
|
@ -7,11 +7,10 @@
|
|||
#include <LibTest/TestCase.h>
|
||||
|
||||
#include <AK/Time.h>
|
||||
#include <sys/time.h>
|
||||
|
||||
using AK::Duration;
|
||||
|
||||
#if defined(__TIMESIZE) && __TIMESIZE < 64
|
||||
#if (defined(__TIMESIZE) && __TIMESIZE < 64) || defined(AK_OS_WINDOWS) // NOTE: See AK/Time.h, on Windows we hardcode to long's for timeval
|
||||
# define TIME_T_IS_32BIT
|
||||
#endif
|
||||
|
||||
|
|
|
@ -9,8 +9,10 @@
|
|||
#include <AK/ByteString.h>
|
||||
#include <AK/StringBuilder.h>
|
||||
#include <AK/Vector.h>
|
||||
#include <math.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#ifdef AK_OS_WINDOWS
|
||||
# include <stdio.h>
|
||||
#endif
|
||||
|
||||
TEST_CASE(is_integral_works_properly)
|
||||
{
|
||||
|
@ -232,8 +234,12 @@ TEST_CASE(file_descriptor)
|
|||
{
|
||||
char filename[] = "/tmp/test-file-descriptor-XXXXXX";
|
||||
|
||||
#ifdef AK_OS_WINDOWS
|
||||
FILE* file = tmpfile();
|
||||
#else
|
||||
int fd = mkstemp(filename);
|
||||
FILE* file = fdopen(fd, "w+");
|
||||
#endif
|
||||
|
||||
outln(file, "{}", "Hello, World!");
|
||||
out(file, "foo");
|
||||
|
|
|
@ -1,4 +1,10 @@
|
|||
add_subdirectory(AK)
|
||||
|
||||
# FIXME: Increase support for building targets on Windows
|
||||
if (WIN32 AND ENABLE_WINDOWS_CI)
|
||||
return()
|
||||
endif()
|
||||
|
||||
add_subdirectory(LibCrypto)
|
||||
add_subdirectory(LibCompress)
|
||||
add_subdirectory(LibCore)
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
# FIXME: Increase support for building targets on Windows
|
||||
if (WIN32 AND ENABLE_WINDOWS_CI)
|
||||
return()
|
||||
endif()
|
||||
|
||||
lagom_utility(abench SOURCES abench.cpp LIBS LibMain LibFileSystem LibMedia)
|
||||
lagom_utility(dns SOURCES dns.cpp LIBS LibDNS LibMain LibTLS LibCrypto)
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue