Browse Source

Meta: Add LibTest and Tests/AK to gn build

Andrew Kaster 2 years ago
parent
commit
cbda1a6c73

+ 2 - 1
Meta/gn/secondary/BUILD.gn

@@ -1,7 +1,8 @@
 import("//Meta/gn/build/toolchain/compiler.gni")
 
 group("default") {
-  deps = [ "//Userland/Libraries/LibCore" ]
+  deps = [ "//Tests" ]
+  testonly = true
 }
 
 # A pool called "console" in the root BUILD.gn is magic and represents ninja's

+ 106 - 0
Meta/gn/secondary/Tests/AK/BUILD.gn

@@ -0,0 +1,106 @@
+import("//Tests/unittest.gni")
+
+tests = [
+  "TestAllOf",
+  "TestAnyOf",
+  "TestArbitrarySizedEnum",
+  "TestArray",
+  "TestAtomic",
+  "TestBadge",
+  "TestBase64",
+  "TestBinaryHeap",
+  "TestBinarySearch",
+  "TestBitCast",
+  "TestBitmap",
+  "TestBitStream",
+  "TestBuiltinWrappers",
+  "TestByteBuffer",
+  "TestCharacterTypes",
+  "TestChecked",
+  "TestCircularBuffer",
+  "TestCircularDeque",
+  "TestCircularQueue",
+  "TestComplex",
+  "TestDeprecatedString",
+  "TestDisjointChunks",
+  "TestDistinctNumeric",
+  "TestDoublyLinkedList",
+  "TestDuration",
+  "TestEndian",
+  "TestEnumBits",
+  "TestFind",
+  "TestFixedArray",
+  "TestFixedPoint",
+  "TestFloatingPoint",
+  "TestFloatingPointParsing",
+  "TestFlyString",
+  "TestFormat",
+  "TestGenericLexer",
+  "TestHashFunctions",
+  "TestHashMap",
+  "TestHashTable",
+  "TestHex",
+  "TestIPv4Address",
+  "TestIPv6Address",
+  "TestIndexSequence",
+  "TestInsertionSort",
+  "TestIntegerMath",
+  "TestIntrusiveList",
+  "TestIntrusiveRedBlackTree",
+  "TestJSON",
+  "TestLEB128",
+  "TestLexicalPath",
+  "TestMACAddress",
+  "TestMemory",
+  "TestMemoryStream",
+  "TestNeverDestroyed",
+  "TestNonnullRefPtr",
+  "TestNumberFormat",
+  "TestOptional",
+  "TestOwnPtr",
+  "TestPrint",
+  "TestQueue",
+  "TestQuickSelect",
+  "TestQuickSort",
+  "TestRedBlackTree",
+  "TestRefPtr",
+  "TestSIMD",
+  "TestSinglyLinkedList",
+  "TestSourceGenerator",
+  "TestSourceLocation",
+  "TestSpan",
+  "TestStack",
+  "TestStatistics",
+  "TestStdLibExtras",
+  "TestStringFloatingPointConversions",
+  "TestStringUtils",
+  "TestStringView",
+  "TestTrie",
+  "TestTuple",
+  "TestTypeTraits",
+  "TestTypedTransfer",
+  "TestUFixedBigInt",
+  "TestURL",
+  "TestUtf16",
+  "TestUtf8",
+  "TestVariant",
+  "TestVector",
+  "TestWeakPtr",
+]
+
+# FIXME: "TestString", when LibUnicode is available
+
+foreach(test_name, tests) {
+  unittest(test_name) {
+    include_dirs = [ "//Userland/Libraries" ]
+    sources = [ test_name + ".cpp" ]
+  }
+}
+
+group("AK") {
+  deps = []
+  foreach(test_name, tests) {
+    deps += [ ":" + test_name ]
+  }
+  testonly = true
+}

+ 4 - 0
Meta/gn/secondary/Tests/BUILD.gn

@@ -0,0 +1,4 @@
+group("Tests") {
+  deps = [ "//Tests/AK" ]
+  testonly = true
+}

+ 28 - 0
Meta/gn/secondary/Tests/unittest.gni

@@ -0,0 +1,28 @@
+template("unittest") {
+  executable(target_name) {
+    has_custom_main = false
+    use_js_main = false
+
+    # Foward everything (has_custom_main if set; configs, sources, deps, ...).
+    forward_variables_from(invoker, "*")
+    assert(!defined(invoker.output_dir), "cannot set unittest output_dir")
+    assert(!defined(invoker.testonly), "cannot set unittest testonly")
+
+    output_dir = target_out_dir
+
+    deps = [ "//AK" ]
+    if (has_custom_main) {
+      deps += [ "//Userland/Libraries/LibTest" ]
+    } else if (use_js_main) {
+      deps += [ "//Userland/Libraries/LibTest:test_js_main" ]
+    } else {
+      deps += [ "//Userland/Libraries/LibTest:test_main" ]
+    }
+
+    if (current_os != "serenity") {
+      deps += [ "//Userland/Libraries/LibCore" ]
+    }
+
+    testonly = true
+  }
+}

+ 43 - 0
Meta/gn/secondary/Userland/Libraries/LibTest/BUILD.gn

@@ -0,0 +1,43 @@
+shared_library("LibTest") {
+  output_name = "test"
+  include_dirs = [ "//Userland/Libraries" ]
+  sources = [
+    "CrashTest.cpp",
+    "CrashTest.h",
+    "Macros.h",
+    "Results.h",
+    "TestCase.h",
+    "TestRunner.h",
+    "TestRunnerUtil.h",
+    "TestSuite.cpp",
+    "TestSuite.h",
+  ]
+
+  deps = [ "//AK" ]
+  if (current_os != "serenity") {
+    deps += [ "//Userland/Libraries/LibCore" ]
+  }
+
+  output_name = "test"
+
+  testonly = true
+}
+
+source_set("test_main") {
+  include_dirs = [ "//Userland/Libraries" ]
+  sources = [ "TestMain.cpp" ]
+  deps = [ "//AK" ]
+  public_deps = [ ":LibTest" ]
+  testonly = true
+}
+
+source_set("test_js_main") {
+  include_dirs = [ "//Userland/Libraries" ]
+  sources = [
+    "JavaScriptTestRunner.h",
+    "JavaScriptTestRunnerMain.cpp",
+  ]
+  deps = [ "//AK" ]
+  public_deps = [ ":LibTest" ]
+  testonly = true
+}