From patchwork Fri Oct 16 20:29:10 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ray Strode X-Patchwork-Id: 28485 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id F171EC3305 for ; Fri, 16 Oct 2026 20:29:29 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 9AB9668E57; Fri, 16 Oct 2026 22:29:29 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="sfjoOqdw"; dkim-atps=neutral Received: from mail-ua1-x932.google.com (mail-ua1-x932.google.com [IPv6:2607:f8b0:4864:20::932]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id A3DE668E3D for ; Fri, 16 Oct 2026 22:29:27 +0200 (CEST) Received: by mail-ua1-x932.google.com with SMTP id a1e0cc1a2514c-9906a5410f5so1358680241.0 for ; Fri, 16 Oct 2026 13:29:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1792182566; x=1792787366; darn=lists.libcamera.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=frglHG+FRg5h7LVXbE64TfdmiDFbHBi0FtPryEjADy4=; b=sfjoOqdw68/VtLIS2O56C3usmUIzzzyE0tPEhIcVPQkGRYq+px7zc5iPKqGeXG/l3M 4MEz1lGkwbDQMsvCPTwRI3biB3FPRBy59ki+WaEiEUS90gxegaZfyiiZUAGvH7OcQxqT BGPJsPh/lZtLIlYdt6fhV2scg3x9N33V7FsgEmYlh/fK/CwaDhGPf5+3tjzHbd/3rD9+ GYiriCpDbWlhpRkGt+mwDe37MNEVoKXI8QajXR5Yb6ST+CFmMIo10Ci8s94bh7E0VEog i3ZZ4E/x8Goi/Q2ZL2P/zYR+hi9co5U9XYHsyqFc8KOK0D16lhRpJjcLf2s7agqhw/8S 0q2g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1792182566; x=1792787366; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=frglHG+FRg5h7LVXbE64TfdmiDFbHBi0FtPryEjADy4=; b=rbfPmSqRPrzm7rf2gNXTF2tHOySM4cROtADpksJ2PMBYixBbz+x8500KTnaJZ3n19t 8DsKRaVNSOEj+vYr7rFTc+EHmMiKDVWEUycSTmi+GQlDDgyUW6E/rjRKZx0T0rErLzpT IACduZOJwiRKXq3mbGoh0BrHYnXlTook02rA/aNOCPecL+F7+/r8Eaizci521C1LyZQo Mm8dC1PpAVxlLUcjcy5oWtMj6gSPo5xsgHT0uh9GpTDEHE1SZTijInIr/WMbCn3AuTfu RYJodpIbSWDh56t4jXHbAnAiTonmro46p/lnkrr2WEVG9Nlxqhzm9dA6S0XtMq+pfYUk pyfw== X-Gm-Message-State: AFq9FYI1pgamD2UxzqN2QbBPt0Tluy+8mnCNYo3vbZuD2VVORQhhk0WF qG/8Vx3TQ+Xzl8qBcchArVu/LtbzkIIVonEkbv932AToKH5pD63z8PooXmEcWbfVTdc= X-Gm-Gg: AYBFou0jepA7SsAdsTUzjrBoXv/PHGA7pmJt3y7iZn3qumoFkmq3B6q11Iwp3+QMgmV JKWG1n+8NsQW4wpsWcPaF9YaYU8Kj2UBxNtJmoe93zCDHMV0zxtBgfIl3e830RBFUlNYZcA13cg BKS95tSGpMqbP+6xGMzRDjTsN95Y6CU5deEsBsMjPg8SCO2ulWKJqe+uSNzoZgZpR7kYV6xO8iM ZlM3gnXiWZUasCo7wP6PwBGbj2zPVDuUgC9GpIlTZymPEiJeTaVyShS4s8AWYmQTV/4vxj6RMHL ni+C/0AcuWCV6GCAoF/y09Wlae98HnHDbcmSJz9D7eKU5+v6s7liJ+AvcGYrpCZ7bCtA1rp+E0s UHJ3XQCPb6+bkDlFHDbWoJ55U7gkx0EHwkVLAtBF6VfatTt7+48EF233A4vAJHntfwTc6WwBb3I qDrBZ5iq3HYrT/31LzmCLo0KtRnuoDatfaY68cIIaaqCWmMyCjripYpzNK/eMkFhCVCNSk20lAi 7tYZQsAojJKT5+22vhhehGW3Ozv X-Received: by 2002:a67:f34d:0:b0:7cc:ace:24ad with SMTP id ada2fe7eead31-7cc17c72bd9mr970380137.0.1792182566482; Fri, 16 Oct 2026 13:29:26 -0700 (PDT) Received: from localhost ([2601:19c:4a00:897d:3391:ed89:5571:41a8]) by smtp.gmail.com with ESMTPSA id a1e0cc1a2514c-990835c29eesm2271202241.4.2026.10.16.13.29.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 16 Oct 2026 13:29:26 -0700 (PDT) From: Ray Strode To: libcamera-devel@lists.libcamera.org Cc: johannes.goede@oss.qualcomm.com, laurent.pinchart@ideasonboard.com, kieran.bingham@ideasonboard.com Subject: [PATCH 1/7] tests: Separate unit and integration suites Date: Fri, 16 Oct 2026 16:29:10 -0400 Message-ID: <20261016202916.1405813-2-halfline@gmail.com> X-Mailer: git-send-email 2.56.0 In-Reply-To: <20261016202916.1405813-1-halfline@gmail.com> References: <8fd58439-d19e-4539-962f-a6110be5c971@oss.qualcomm.com> <20261016202916.1405813-1-halfline@gmail.com> MIME-Version: 1.0 X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" From: Ray Strode This commit identifies the existing tests as unit or integration tests in Meson. The test option currently enables one collection containing both self-contained component checks and tests that enumerate devices, capture frames or load real IPA modules. The collection has component suites, but no common way to select either kind of test. Each test now belongs to the unit or integration suite. Existing component suites, executable names and execution settings stay the same, preserving existing test commands and component selection. Signed-off-by: Ray Strode --- test/camera/meson.build | 2 +- test/controls/meson.build | 6 +++--- test/gstreamer/meson.build | 2 +- test/ipa/libipa/meson.build | 2 +- test/ipa/meson.build | 2 +- test/ipc/meson.build | 4 ++-- test/log/meson.build | 2 +- test/media_device/meson.build | 2 +- test/meson.build | 16 ++++++++++------ test/process/meson.build | 2 +- test/py/meson.build | 2 +- .../generated_serializer/meson.build | 2 +- test/serialization/meson.build | 2 +- test/software_isp/meson.build | 2 +- test/stream/meson.build | 2 +- test/v4l2_compat/meson.build | 2 +- test/v4l2_subdevice/meson.build | 2 +- test/v4l2_videodevice/meson.build | 2 +- 18 files changed, 30 insertions(+), 26 deletions(-) diff --git a/test/camera/meson.build b/test/camera/meson.build index 4f9f8c8c..b92e16de 100644 --- a/test/camera/meson.build +++ b/test/camera/meson.build @@ -16,5 +16,5 @@ foreach test : camera_tests dependencies : libcamera_private, link_with : test_libraries, include_directories : test_includes_internal) - test(test['name'], exe, suite : 'camera', is_parallel : false) + test(test['name'], exe, suite : ['integration', 'camera'], is_parallel : false) endforeach diff --git a/test/controls/meson.build b/test/controls/meson.build index 763f8905..cab33717 100644 --- a/test/controls/meson.build +++ b/test/controls/meson.build @@ -2,8 +2,8 @@ control_tests = [ {'name': 'control_info', 'sources': ['control_info.cpp']}, - {'name': 'control_info_map', 'sources': ['control_info_map.cpp']}, - {'name': 'control_list', 'sources': ['control_list.cpp']}, + {'name': 'control_info_map', 'sources': ['control_info_map.cpp'], 'suite': 'integration'}, + {'name': 'control_list', 'sources': ['control_list.cpp'], 'suite': 'integration'}, {'name': 'control_value', 'sources': ['control_value.cpp']}, ] @@ -12,5 +12,5 @@ foreach test : control_tests dependencies : libcamera_public, link_with : test_libraries, include_directories : test_includes_internal) - test(test['name'], exe, suite : 'controls', is_parallel : false) + test(test['name'], exe, suite : [test.get('suite', 'unit'), 'controls'], is_parallel : false) endforeach diff --git a/test/gstreamer/meson.build b/test/gstreamer/meson.build index e066c582..249cf933 100644 --- a/test/gstreamer/meson.build +++ b/test/gstreamer/meson.build @@ -26,6 +26,6 @@ foreach test : gstreamer_tests link_with : test_libraries, include_directories : test_includes_internal) - test(test['name'], exe, suite : 'gstreamer', is_parallel : false, + test(test['name'], exe, suite : ['integration', 'gstreamer'], is_parallel : false, env : gst_env, should_fail : test.get('should_fail', false)) endforeach diff --git a/test/ipa/libipa/meson.build b/test/ipa/libipa/meson.build index c3e25587..c3c542b6 100644 --- a/test/ipa/libipa/meson.build +++ b/test/ipa/libipa/meson.build @@ -16,6 +16,6 @@ foreach test : libipa_test include_directories : [test_includes_internal, '../../../src/ipa/libipa/']) - test(test['name'], exe, suite : 'ipa', + test(test['name'], exe, suite : ['unit', 'ipa'], should_fail : test.get('should_fail', false)) endforeach diff --git a/test/ipa/meson.build b/test/ipa/meson.build index ceed15ba..08067092 100644 --- a/test/ipa/meson.build +++ b/test/ipa/meson.build @@ -13,5 +13,5 @@ foreach test : ipa_test link_with : [test_libraries], include_directories : [test_includes_internal]) - test(test['name'], exe, suite : 'ipa') + test(test['name'], exe, suite : ['integration', 'ipa']) endforeach diff --git a/test/ipc/meson.build b/test/ipc/meson.build index 8e447d22..394a87c1 100644 --- a/test/ipc/meson.build +++ b/test/ipc/meson.build @@ -1,7 +1,7 @@ # SPDX-License-Identifier: CC0-1.0 ipc_tests = [ - {'name': 'unixsocket_ipc', 'sources': ['unixsocket_ipc.cpp']}, + {'name': 'unixsocket_ipc', 'sources': ['unixsocket_ipc.cpp'], 'suite': 'integration'}, {'name': 'unixsocket', 'sources': ['unixsocket.cpp']}, ] @@ -11,5 +11,5 @@ foreach test : ipc_tests link_with : test_libraries, include_directories : test_includes_internal) - test(test['name'], exe, suite : 'ipc') + test(test['name'], exe, suite : [test.get('suite', 'unit'), 'ipc']) endforeach diff --git a/test/log/meson.build b/test/log/meson.build index f413c389..468e70db 100644 --- a/test/log/meson.build +++ b/test/log/meson.build @@ -11,6 +11,6 @@ foreach test : log_test link_with : test_libraries, include_directories : test_includes_internal) - test(test['name'], exe, suite : 'log', + test(test['name'], exe, suite : ['unit', 'log'], should_fail : test.get('should_fail', false)) endforeach diff --git a/test/media_device/meson.build b/test/media_device/meson.build index 84966c97..7a8a6520 100644 --- a/test/media_device/meson.build +++ b/test/media_device/meson.build @@ -20,5 +20,5 @@ foreach test : media_device_tests link_with : [test_libraries, lib_mdev_test], include_directories : test_includes_internal) - test(test['name'], exe, suite : 'media_device', is_parallel : false) + test(test['name'], exe, suite : ['integration', 'media_device'], is_parallel : false) endforeach diff --git a/test/meson.build b/test/meson.build index fc72d105..99ff5e84 100644 --- a/test/meson.build +++ b/test/meson.build @@ -52,15 +52,15 @@ public_tests = [ internal_tests = [ {'name': 'bayer-format', 'sources': ['bayer-format.cpp']}, {'name': 'byte-stream-buffer', 'sources': ['byte-stream-buffer.cpp']}, - {'name': 'camera-sensor', 'sources': ['camera-sensor.cpp']}, + {'name': 'camera-sensor', 'sources': ['camera-sensor.cpp'], 'suite': 'integration'}, {'name': 'debayer-geometry', 'sources': ['debayer-geometry.cpp']}, - {'name': 'delayed_controls', 'sources': ['delayed_controls.cpp']}, + {'name': 'delayed_controls', 'sources': ['delayed_controls.cpp'], 'suite': 'integration'}, {'name': 'event', 'sources': ['event.cpp']}, {'name': 'event-dispatcher', 'sources': ['event-dispatcher.cpp']}, {'name': 'event-thread', 'sources': ['event-thread.cpp']}, {'name': 'file', 'sources': ['file.cpp']}, {'name': 'flags', 'sources': ['flags.cpp']}, - {'name': 'hotplug-cameras', 'sources': ['hotplug-cameras.cpp']}, + {'name': 'hotplug-cameras', 'sources': ['hotplug-cameras.cpp'], 'suite': 'integration'}, {'name': 'matrix', 'sources': ['matrix.cpp']}, {'name': 'message', 'sources': ['message.cpp']}, {'name': 'object', 'sources': ['object.cpp']}, @@ -97,7 +97,9 @@ foreach test : public_tests link_with : test_libraries, include_directories : test_includes_public) - test(test['name'], exe, should_fail : test.get('should_fail', false)) + test(test['name'], exe, + suite : test.get('suite', 'unit'), + should_fail : test.get('should_fail', false)) endforeach foreach test : internal_tests @@ -112,7 +114,9 @@ foreach test : internal_tests link_with : test_libraries, include_directories : test_includes_internal) - test(test['name'], exe, should_fail : test.get('should_fail', false)) + test(test['name'], exe, + suite : test.get('suite', 'unit'), + should_fail : test.get('should_fail', false)) endforeach foreach test : internal_non_parallel_tests @@ -127,7 +131,7 @@ foreach test : internal_non_parallel_tests link_with : test_libraries, include_directories : test_includes_internal) - test(test['name'], exe, + test(test['name'], exe, suite : 'integration', is_parallel : false, should_fail : test.get('should_fail', false)) endforeach diff --git a/test/process/meson.build b/test/process/meson.build index a80dc2d9..d40b3e74 100644 --- a/test/process/meson.build +++ b/test/process/meson.build @@ -10,5 +10,5 @@ foreach test : process_tests link_with : test_libraries, include_directories : test_includes_internal) - test(test['name'], exe, suite : 'process', is_parallel : false) + test(test['name'], exe, suite : ['unit', 'process'], is_parallel : false) endforeach diff --git a/test/py/meson.build b/test/py/meson.build index d014aac4..c35209df 100644 --- a/test/py/meson.build +++ b/test/py/meson.build @@ -35,5 +35,5 @@ test('pyunittests', py3, args : files('unittests.py'), env : py_env, - suite : 'pybindings', + suite : ['integration', 'pybindings'], is_parallel : false) diff --git a/test/serialization/generated_serializer/meson.build b/test/serialization/generated_serializer/meson.build index 9fb9cd1d..6595164c 100644 --- a/test/serialization/generated_serializer/meson.build +++ b/test/serialization/generated_serializer/meson.build @@ -16,4 +16,4 @@ exe = executable('generated_serializer_test', ]) test('generated_serializer_test', exe, - suite : 'generated_serializer', is_parallel : false) + suite : ['unit', 'generated_serializer'], is_parallel : false) diff --git a/test/serialization/meson.build b/test/serialization/meson.build index a6e8d793..77cfa8c3 100644 --- a/test/serialization/meson.build +++ b/test/serialization/meson.build @@ -12,5 +12,5 @@ foreach test : serialization_tests dependencies : libcamera_private, link_with : test_libraries, include_directories : test_includes_internal) - test(test['name'], exe, suite : 'serialization', is_parallel : false) + test(test['name'], exe, suite : ['integration', 'serialization'], is_parallel : false) endforeach diff --git a/test/software_isp/meson.build b/test/software_isp/meson.build index ebabde59..539278ad 100644 --- a/test/software_isp/meson.build +++ b/test/software_isp/meson.build @@ -16,5 +16,5 @@ foreach test : software_isp_tests include_directories : [test_includes_internal, '../../src/libcamera/software_isp/']) - test(test['name'], exe, suite : 'software_isp') + test(test['name'], exe, suite : ['unit', 'software_isp']) endforeach diff --git a/test/stream/meson.build b/test/stream/meson.build index dd77f2f7..dc9468c7 100644 --- a/test/stream/meson.build +++ b/test/stream/meson.build @@ -10,5 +10,5 @@ foreach test : stream_tests dependencies : libcamera_public, link_with : test_libraries, include_directories : test_includes_internal) - test(test['name'], exe, suite : 'stream') + test(test['name'], exe, suite : ['unit', 'stream']) endforeach diff --git a/test/v4l2_compat/meson.build b/test/v4l2_compat/meson.build index 2691eacf..01045a83 100644 --- a/test/v4l2_compat/meson.build +++ b/test/v4l2_compat/meson.build @@ -25,5 +25,5 @@ v4l2_compat_args += [v4l2_compat] test('v4l2_compat_test', v4l2_compat_test, args : v4l2_compat_args, - suite : 'v4l2_compat', + suite : ['integration', 'v4l2_compat'], timeout : 60) diff --git a/test/v4l2_subdevice/meson.build b/test/v4l2_subdevice/meson.build index 277f29bb..68255717 100644 --- a/test/v4l2_subdevice/meson.build +++ b/test/v4l2_subdevice/meson.build @@ -10,5 +10,5 @@ foreach test : v4l2_subdevice_tests dependencies : libcamera_private, link_with : test_libraries, include_directories : test_includes_internal) - test(test['name'], exe, suite : 'v4l2_subdevice', is_parallel : false) + test(test['name'], exe, suite : ['integration', 'v4l2_subdevice'], is_parallel : false) endforeach diff --git a/test/v4l2_videodevice/meson.build b/test/v4l2_videodevice/meson.build index 87ea4f96..486e831c 100644 --- a/test/v4l2_videodevice/meson.build +++ b/test/v4l2_videodevice/meson.build @@ -20,5 +20,5 @@ foreach test : v4l2_videodevice_tests dependencies : libcamera_private, link_with : test_libraries, include_directories : test_includes_internal) - test(test['name'], exe, suite : 'v4l2_videodevice', is_parallel : false) + test(test['name'], exe, suite : ['integration', 'v4l2_videodevice'], is_parallel : false) endforeach