aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/.clang-tidy24
-rw-r--r--test/atom_test_utils.c20
-rw-r--r--test/cpp/.clang-tidy27
-rw-r--r--test/cpp/test_build.cpp54
-rw-r--r--test/headers/.clang-tidy22
-rw-r--r--test/headers/meson.build69
-rw-r--r--test/headers/test_headers.c42
-rw-r--r--test/meson.build202
-rw-r--r--test/test_atom.c18
-rw-r--r--test/test_build.c60
-rw-r--r--test/test_build.cpp54
-rw-r--r--test/test_forge_overflow.c14
12 files changed, 402 insertions, 204 deletions
diff --git a/test/.clang-tidy b/test/.clang-tidy
index ca868be..ef4d61f 100644
--- a/test/.clang-tidy
+++ b/test/.clang-tidy
@@ -1,26 +1,16 @@
-# Copyright 2020-2022 David Robillard <d@drobilla.net>
+# Copyright 2020-2025 David Robillard <d@drobilla.net>
# SPDX-License-Identifier: 0BSD OR ISC
Checks: >
- *,
-*-else-after-return,
- -*-magic-numbers,
- -altera-*,
-bugprone-easily-swappable-parameters,
- -bugprone-macro-parentheses,
+ -bugprone-multi-level-implicit-pointer-conversion,
-bugprone-suspicious-include,
- -llvm-header-guard,
+ -cert-err33-c,
+ -clang-diagnostic-unused-parameter,
+ -cppcoreguidelines-avoid-non-const-global-variables,
-llvmlibc-implementation-in-namespace,
- -llvmlibc-restrict-system-libc-headers,
+ -misc-unused-parameters,
-modernize-use-trailing-return-type,
- -performance-no-int-to-ptr,
-readability-function-cognitive-complexity,
- -readability-identifier-length,
-WarningsAsErrors: '*'
-HeaderFilterRegex: '.*'
-FormatStyle: file
-CheckOptions:
- - key: hicpp-uppercase-literal-suffix.NewSuffixes
- value: L;U;f
- - key: readability-uppercase-literal-suffix.NewSuffixes
- value: L;U;f
+InheritParentConfig: true
diff --git a/test/atom_test_utils.c b/test/atom_test_utils.c
index e7d45d0..5c313a5 100644
--- a/test/atom_test_utils.c
+++ b/test/atom_test_utils.c
@@ -1,12 +1,15 @@
// Copyright 2012-2018 David Robillard <d@drobilla.net>
// SPDX-License-Identifier: ISC
-#include "lv2/atom/atom.h"
-#include "lv2/atom/forge.h"
-#include "lv2/atom/util.h"
-#include "lv2/log/log.h"
-#include "lv2/urid/urid.h"
+#undef NDEBUG
+#include <lv2/atom/atom.h>
+#include <lv2/atom/forge.h>
+#include <lv2/atom/util.h>
+#include <lv2/log/log.h>
+#include <lv2/urid/urid.h>
+
+#include <assert.h>
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
@@ -32,8 +35,11 @@ urid_map(LV2_URID_Map_Handle handle, const char* uri)
}
}
- uris = (char**)realloc(uris, ++n_uris * sizeof(char*));
- uris[n_uris - 1] = copy_string(uri);
+ char** const new_uris = (char**)realloc(uris, (n_uris + 1) * sizeof(char*));
+ assert(new_uris);
+
+ uris = new_uris;
+ uris[n_uris++] = copy_string(uri);
return n_uris;
}
diff --git a/test/cpp/.clang-tidy b/test/cpp/.clang-tidy
new file mode 100644
index 0000000..1fe1f27
--- /dev/null
+++ b/test/cpp/.clang-tidy
@@ -0,0 +1,27 @@
+# Copyright 2020-2025 David Robillard <d@drobilla.net>
+# SPDX-License-Identifier: 0BSD OR ISC
+
+Checks: >
+ -*-avoid-c-arrays,
+ -*-deprecated-headers,
+ -*-no-malloc,
+ -*-use-auto,
+ -bugprone-reserved-identifier,
+ -cert-dcl37-c,
+ -cert-dcl50-cpp,
+ -cert-dcl51-cpp,
+ -cppcoreguidelines-macro-usage,
+ -cppcoreguidelines-owning-memory,
+ -cppcoreguidelines-pro-bounds-array-to-pointer-decay,
+ -cppcoreguidelines-pro-bounds-pointer-arithmetic,
+ -cppcoreguidelines-pro-type-cstyle-cast,
+ -cppcoreguidelines-pro-type-vararg,
+ -hicpp-no-array-decay,
+ -hicpp-use-nullptr,
+ -hicpp-vararg,
+ -llvmlibc-callee-namespace,
+ -modernize-use-nullptr,
+ -modernize-use-using,
+ -performance-enum-size,
+ -readability-implicit-bool-conversion,
+InheritParentConfig: true
diff --git a/test/cpp/test_build.cpp b/test/cpp/test_build.cpp
new file mode 100644
index 0000000..73868a4
--- /dev/null
+++ b/test/cpp/test_build.cpp
@@ -0,0 +1,54 @@
+// Copyright 2022 David Robillard <d@drobilla.net>
+// SPDX-License-Identifier: ISC
+
+#if defined(__clang__)
+_Pragma("clang diagnostic push")
+_Pragma("clang diagnostic ignored \"-Wold-style-cast\"")
+_Pragma("clang diagnostic ignored \"-Wzero-as-null-pointer-constant\"")
+#elif defined(__GNUC__)
+_Pragma("GCC diagnostic push")
+_Pragma("GCC diagnostic ignored \"-Wsuggest-attribute=const\"")
+#endif
+
+#include <lv2/atom/atom.h> // IWYU pragma: keep
+#include <lv2/atom/forge.h> // IWYU pragma: keep
+#include <lv2/atom/util.h> // IWYU pragma: keep
+#include <lv2/buf-size/buf-size.h> // IWYU pragma: keep
+#include <lv2/core/attributes.h> // IWYU pragma: keep
+#include <lv2/core/lv2.h> // IWYU pragma: keep
+#include <lv2/core/lv2_util.h> // IWYU pragma: keep
+#include <lv2/data-access/data-access.h> // IWYU pragma: keep
+#include <lv2/dynmanifest/dynmanifest.h> // IWYU pragma: keep
+#include <lv2/event/event-helpers.h> // IWYU pragma: keep
+#include <lv2/event/event.h> // IWYU pragma: keep
+#include <lv2/instance-access/instance-access.h> // IWYU pragma: keep
+#include <lv2/log/log.h> // IWYU pragma: keep
+#include <lv2/log/logger.h> // IWYU pragma: keep
+#include <lv2/midi/midi.h> // IWYU pragma: keep
+#include <lv2/morph/morph.h> // IWYU pragma: keep
+#include <lv2/options/options.h> // IWYU pragma: keep
+#include <lv2/parameters/parameters.h> // IWYU pragma: keep
+#include <lv2/patch/patch.h> // IWYU pragma: keep
+#include <lv2/port-groups/port-groups.h> // IWYU pragma: keep
+#include <lv2/port-props/port-props.h> // IWYU pragma: keep
+#include <lv2/presets/presets.h> // IWYU pragma: keep
+#include <lv2/resize-port/resize-port.h> // IWYU pragma: keep
+#include <lv2/state/state.h> // IWYU pragma: keep
+#include <lv2/time/time.h> // IWYU pragma: keep
+#include <lv2/ui/ui.h> // IWYU pragma: keep
+#include <lv2/units/units.h> // IWYU pragma: keep
+#include <lv2/uri-map/uri-map.h> // IWYU pragma: keep
+#include <lv2/urid/urid.h> // IWYU pragma: keep
+#include <lv2/worker/worker.h> // IWYU pragma: keep
+
+int
+main()
+{
+ return 0;
+}
+
+#if defined(__clang__)
+_Pragma("clang diagnostic pop")
+#elif defined(__GNUC__)
+_Pragma("GCC diagnostic pop")
+#endif
diff --git a/test/headers/.clang-tidy b/test/headers/.clang-tidy
new file mode 100644
index 0000000..bf971cc
--- /dev/null
+++ b/test/headers/.clang-tidy
@@ -0,0 +1,22 @@
+# Copyright 2020-2024 David Robillard <d@drobilla.net>
+# SPDX-License-Identifier: 0BSD OR ISC
+
+Checks: >
+ *,
+ -*-macro-to-enum,
+ -*-magic-numbers,
+ -altera-*,
+ -bugprone-assignment-in-if-condition,
+ -bugprone-easily-swappable-parameters,
+ -bugprone-macro-parentheses,
+ -llvmlibc-restrict-system-libc-headers,
+ -performance-no-int-to-ptr,
+ -readability-identifier-length,
+CheckOptions:
+ - key: hicpp-uppercase-literal-suffix.NewSuffixes
+ value: L;U;f
+ - key: readability-uppercase-literal-suffix.NewSuffixes
+ value: L;U;f
+FormatStyle: file
+HeaderFilterRegex: 'lv2/.*\.h'
+WarningsAsErrors: '*'
diff --git a/test/headers/meson.build b/test/headers/meson.build
new file mode 100644
index 0000000..89ee4b8
--- /dev/null
+++ b/test/headers/meson.build
@@ -0,0 +1,69 @@
+# Copyright 2020-2022 David Robillard <d@drobilla.net>
+# SPDX-License-Identifier: 0BSD OR ISC
+
+header_c_suppressions = []
+
+if get_option('warning_level') == 'everything'
+ if cc.get_id() == 'clang'
+ header_c_suppressions += [
+ '-Wno-cast-align',
+ '-Wno-cast-qual',
+ '-Wno-declaration-after-statement',
+ '-Wno-padded',
+ '-Wno-unsafe-buffer-usage',
+ ]
+
+ if not meson.is_cross_build()
+ header_c_suppressions += [
+ '-Wno-poison-system-directories',
+ ]
+ endif
+
+ if host_machine.system() == 'windows'
+ header_c_suppressions += [
+ '-Wno-format-nonliteral',
+ ]
+ endif
+
+ elif cc.get_id() == 'gcc'
+ header_c_suppressions += [
+ '-Wno-cast-align',
+ '-Wno-cast-qual',
+ '-Wno-padded',
+ '-Wno-sign-conversion',
+ '-Wno-suggest-attribute=format',
+ '-Wno-unused-const-variable',
+ ]
+
+ if host_machine.system() == 'windows'
+ header_c_suppressions += [
+ '-Wno-sign-conversion',
+ ]
+ endif
+
+ elif cc.get_id() == 'msvc'
+ header_c_suppressions += [
+ '/wd4820', # padding added after construct
+ ]
+ endif
+endif
+
+if cc.get_id() == 'clang'
+ header_c_suppressions += [
+ '-Wno-nullability-extension',
+ ]
+endif
+
+header_c_suppressions = cc.get_supported_arguments(header_c_suppressions)
+
+test(
+ 'headers',
+ executable(
+ 'test_headers',
+ files('test_headers.c'),
+ c_args: header_c_suppressions,
+ dependencies: [lv2_dep],
+ implicit_include_directories: false,
+ ),
+ suite: 'unit',
+)
diff --git a/test/headers/test_headers.c b/test/headers/test_headers.c
new file mode 100644
index 0000000..d62b000
--- /dev/null
+++ b/test/headers/test_headers.c
@@ -0,0 +1,42 @@
+// Copyright 2022 David Robillard <d@drobilla.net>
+// SPDX-License-Identifier: ISC
+
+#include <lv2/atom/atom.h> // IWYU pragma: keep
+#include <lv2/atom/forge.h> // IWYU pragma: keep
+#include <lv2/atom/util.h> // IWYU pragma: keep
+#include <lv2/buf-size/buf-size.h> // IWYU pragma: keep
+#include <lv2/core/attributes.h> // IWYU pragma: keep
+#include <lv2/core/lv2.h> // IWYU pragma: keep
+#include <lv2/core/lv2_util.h> // IWYU pragma: keep
+#include <lv2/data-access/data-access.h> // IWYU pragma: keep
+#include <lv2/dynmanifest/dynmanifest.h> // IWYU pragma: keep
+#include <lv2/event/event-helpers.h> // IWYU pragma: keep
+#include <lv2/event/event.h> // IWYU pragma: keep
+#include <lv2/instance-access/instance-access.h> // IWYU pragma: keep
+#include <lv2/log/log.h> // IWYU pragma: keep
+#include <lv2/log/logger.h> // IWYU pragma: keep
+#include <lv2/midi/midi.h> // IWYU pragma: keep
+#include <lv2/morph/morph.h> // IWYU pragma: keep
+#include <lv2/options/options.h> // IWYU pragma: keep
+#include <lv2/parameters/parameters.h> // IWYU pragma: keep
+#include <lv2/patch/patch.h> // IWYU pragma: keep
+#include <lv2/port-groups/port-groups.h> // IWYU pragma: keep
+#include <lv2/port-props/port-props.h> // IWYU pragma: keep
+#include <lv2/presets/presets.h> // IWYU pragma: keep
+#include <lv2/resize-port/resize-port.h> // IWYU pragma: keep
+#include <lv2/state/state.h> // IWYU pragma: keep
+#include <lv2/time/time.h> // IWYU pragma: keep
+#include <lv2/ui/ui.h> // IWYU pragma: keep
+#include <lv2/units/units.h> // IWYU pragma: keep
+#include <lv2/uri-map/uri-map.h> // IWYU pragma: keep
+#include <lv2/urid/urid.h> // IWYU pragma: keep
+#include <lv2/worker/worker.h> // IWYU pragma: keep
+
+#ifdef __GNUC__
+__attribute__((const))
+#endif
+int
+main(void)
+{
+ return 0;
+}
diff --git a/test/meson.build b/test/meson.build
index 092499a..cddb05a 100644
--- a/test/meson.build
+++ b/test/meson.build
@@ -5,51 +5,61 @@
# Data #
########
-# Check for spelling errors
-codespell = find_program('codespell', required: get_option('tests'))
-if codespell.found()
- ignore = [
- lv2_source_root / 'doc' / 'style' / 'pygments.css',
- lv2_source_root / 'lv2specgen' / 'DTD',
- lv2_source_root / 'schemas.lv2' / 'doap.ttl',
- ]
+if get_option('lint')
+ # Check for spelling errors
+ codespell = find_program('codespell', required: get_option('tests'))
+ if codespell.found()
+ ignore = [
+ lv2_source_root / 'doc' / 'style' / 'pygments.css',
+ lv2_source_root / 'lv2specgen' / 'DTD',
+ lv2_source_root / 'schemas.lv2' / 'doap.ttl',
+ ]
- test(
- 'codespell',
- codespell,
- args: [
- '-d',
- '-q', '3',
- '-S', ','.join(ignore),
- lv2_source_root / 'doc',
- lv2_source_root / 'lv2',
- lv2_source_root / 'lv2specgen',
- lv2_source_root / 'plugins',
- lv2_source_root / 'schemas.lv2',
- ],
- suite: 'data',
- )
-endif
+ test(
+ 'codespell',
+ codespell,
+ args: [
+ '-d',
+ ['-q', '3'],
+ ['-S', ','.join(ignore)],
+ lv2_source_root / 'doc',
+ lv2_source_root / 'lv2',
+ lv2_source_root / 'lv2specgen',
+ lv2_source_root / 'plugins',
+ lv2_source_root / 'schemas.lv2',
+ ],
+ suite: 'data',
+ )
+ endif
-# Check that specification data is strictly formatted
-serdi = find_program('serdi', required: get_option('tests'))
-native_build = not meson.is_cross_build() and host_machine.system() != 'windows'
-if serdi.found() and native_build
- lv2_check_syntax = files(lv2_source_root / 'scripts' / 'lv2_check_syntax.py')
+ # Check that specification data is strictly formatted
+ serdi = find_program(
+ 'serdi',
+ required: get_option('tests'),
+ version: '>= 0.32.0',
+ )
+ native_build = (
+ not meson.is_cross_build()
+ and host_machine.system() != 'windows'
+ )
+ if serdi.found() and native_build
+ lv2_check_syntax = files(
+ lv2_source_root / 'scripts' / 'lv2_check_syntax.py',
+ )
- test('syntax',
- lv2_check_syntax,
- args: ['--serdi', serdi.full_path()] + spec_files + schema_data,
- suite: 'data')
-endif
+ test(
+ 'syntax',
+ lv2_check_syntax,
+ args: ['--serdi', serdi.full_path()] + spec_files + schema_data,
+ suite: 'data',
+ )
+ endif
-# Check that specification data validates
-sord_validate = find_program('sord_validate', required: get_option('tests'))
-if sord_validate.found()
- test('valid',
- sord_validate,
- args: spec_files + schema_data,
- suite: 'data')
+ # Check that specification data validates
+ sord_validate = find_program('sord_validate', required: get_option('tests'))
+ if sord_validate.found()
+ test('valid', sord_validate, args: spec_files + schema_data, suite: 'data')
+ endif
endif
########
@@ -57,36 +67,38 @@ endif
########
# Check that all the headers compile cleanly in C
-test('c',
- executable(
- 'test_build_c',
- files('test_build.c'),
- c_args: c_suppressions,
- dependencies: lv2_dep,
- ),
- suite: 'build')
+test(
+ 'c',
+ executable(
+ 'test_build_c',
+ files('test_build.c'),
+ c_args: c_suppressions,
+ dependencies: [lv2_dep],
+ implicit_include_directories: false,
+ ),
+ suite: 'build',
+)
# Check that all the headers compile cleanly in C++
if is_variable('cpp')
- test('cpp',
- executable(
- 'test_build_cpp',
- files('test_build.cpp'),
- cpp_args: cpp_suppressions,
- dependencies: lv2_dep,
- ),
- suite: 'build')
+ test(
+ 'cpp',
+ executable(
+ 'test_build_cpp',
+ files('cpp/test_build.cpp'),
+ cpp_args: cpp_suppressions,
+ dependencies: [lv2_dep],
+ implicit_include_directories: false,
+ ),
+ suite: 'build',
+ )
endif
##########
# Python #
##########
-if get_option('strict')
- flake8 = find_program('flake8', required: get_option('tests'))
- pylint = find_program('pylint', required: get_option('tests'))
- black = find_program('black', required: get_option('tests'))
-
+if get_option('lint')
# Scripts that don't pass with pylint
lax_python_scripts = files(
'../lv2specgen/lv2docgen.py',
@@ -98,20 +110,46 @@ if get_option('strict')
all_python_scripts = lax_python_scripts + strict_python_scripts
- if is_variable('black') and black.found()
+ # Check script formatting
+ black = find_program('black', required: get_option('tests'))
+ if black.found()
black_opts = ['-l', '79', '-q', '--check']
- test('black', black, args: black_opts + all_python_scripts, suite: 'scripts')
+ test(
+ 'black',
+ black,
+ args: black_opts + all_python_scripts,
+ suite: 'scripts',
+ )
endif
- if is_variable('flake8') and flake8.found()
+ # Check scripts for errors with flake8
+ flake8 = find_program('flake8', required: get_option('tests'))
+ if flake8.found()
test('flake8', flake8, args: all_python_scripts, suite: 'scripts')
endif
- if is_variable('pylint') and pylint.found()
- test('pylint', pylint, args: strict_python_scripts, suite: 'scripts')
+ # Check scripts for errors with pylint
+ pylint = find_program('pylint', required: get_option('tests'))
+ if pylint.found()
+ pymod = import('python')
+ lint_py = pymod.find_installation(
+ 'python3',
+ modules: ['pygments', 'rdflib'],
+ required: false,
+ )
+
+ if lint_py.found()
+ test('pylint', pylint, args: strict_python_scripts, suite: 'scripts')
+ endif
endif
endif
+###################
+# Header Warnings #
+###################
+
+subdir('headers')
+
##############
# Unit Tests #
##############
@@ -121,18 +159,22 @@ test_names = [
'forge_overflow',
]
+atom_test_suppressions = []
+if cc.get_id() == 'gcc'
+ atom_test_suppressions += ['-Wno-stringop-overflow']
+endif
+
# Build and run tests
-if not get_option('tests').disabled()
- foreach test_name : test_names
- test(
+foreach test_name : test_names
+ test(
+ test_name,
+ executable(
test_name,
- executable(
- test_name,
- files('test_@0@.c'.format(test_name)),
- c_args: c_suppressions,
- dependencies: lv2_dep,
- ),
- suite: 'unit',
- )
- endforeach
-endif
+ files('test_@0@.c'.format(test_name)),
+ c_args: c_suppressions + atom_test_suppressions,
+ dependencies: [lv2_dep],
+ implicit_include_directories: false,
+ ),
+ suite: 'unit',
+ )
+endforeach
diff --git a/test/test_atom.c b/test/test_atom.c
index beac05c..f88c4c7 100644
--- a/test/test_atom.c
+++ b/test/test_atom.c
@@ -3,10 +3,10 @@
#include "atom_test_utils.c"
-#include "lv2/atom/atom.h"
-#include "lv2/atom/forge.h"
-#include "lv2/atom/util.h"
-#include "lv2/urid/urid.h"
+#include <lv2/atom/atom.h>
+#include <lv2/atom/forge.h>
+#include <lv2/atom/util.h>
+#include <lv2/urid/urid.h>
#include <stdbool.h>
#include <stdint.h>
@@ -101,7 +101,7 @@ main(void)
lv2_atom_forge_key(&forge, eg_path);
LV2_Atom_String* path = (LV2_Atom_String*)lv2_atom_forge_deref(
&forge, lv2_atom_forge_uri(&forge, pstr, pstr_len));
- char* pbody = (char*)LV2_ATOM_BODY(path);
+ char* pbody = (char*)&path[1];
if (!!strcmp(pbody, pstr)) {
return test_fail("%s != \"%s\"\n", pbody, pstr);
}
@@ -112,7 +112,7 @@ main(void)
lv2_atom_forge_key(&forge, eg_uri);
LV2_Atom_String* uri = (LV2_Atom_String*)lv2_atom_forge_deref(
&forge, lv2_atom_forge_uri(&forge, ustr, ustr_len));
- char* ubody = (char*)LV2_ATOM_BODY(uri);
+ char* ubody = (char*)&uri[1];
if (!!strcmp(ubody, ustr)) {
return test_fail("%s != \"%s\"\n", ubody, ustr);
}
@@ -130,7 +130,7 @@ main(void)
lv2_atom_forge_key(&forge, eg_string);
LV2_Atom_String* string = (LV2_Atom_String*)lv2_atom_forge_deref(
&forge, lv2_atom_forge_string(&forge, "hello", strlen("hello")));
- char* sbody = (char*)LV2_ATOM_BODY(string);
+ char* sbody = (char*)&string[1];
if (!!strcmp(sbody, "hello")) {
return test_fail("%s != \"hello\"\n", sbody);
}
@@ -144,7 +144,7 @@ main(void)
strlen("bonjour"),
0,
urid_map(NULL, "http://lexvo.org/id/term/fr")));
- char* lbody = (char*)LV2_ATOM_CONTENTS(LV2_Atom_Literal, literal);
+ char* lbody = (char*)&literal[1];
if (!!strcmp(lbody, "bonjour")) {
return test_fail("%s != \"bonjour\"\n", lbody);
}
@@ -186,7 +186,7 @@ main(void)
LV2_Atom_Vector* vector = (LV2_Atom_Vector*)lv2_atom_forge_deref(
&forge,
lv2_atom_forge_vector(&forge, sizeof(int32_t), forge.Int, 4, elems));
- void* vec_body = LV2_ATOM_CONTENTS(LV2_Atom_Vector, vector);
+ const void* vec_body = LV2_ATOM_CONTENTS_CONST(LV2_Atom_Vector, vector);
if (!!memcmp(elems, vec_body, sizeof(elems))) {
return test_fail("Corrupt vector\n");
}
diff --git a/test/test_build.c b/test/test_build.c
index bdc47f6..83a69df 100644
--- a/test/test_build.c
+++ b/test/test_build.c
@@ -1,36 +1,36 @@
// Copyright 2022 David Robillard <d@drobilla.net>
// SPDX-License-Identifier: ISC
-#include "lv2/atom/atom.h" // IWYU pragma: keep
-#include "lv2/atom/forge.h" // IWYU pragma: keep
-#include "lv2/atom/util.h" // IWYU pragma: keep
-#include "lv2/buf-size/buf-size.h" // IWYU pragma: keep
-#include "lv2/core/attributes.h" // IWYU pragma: keep
-#include "lv2/core/lv2.h" // IWYU pragma: keep
-#include "lv2/core/lv2_util.h" // IWYU pragma: keep
-#include "lv2/data-access/data-access.h" // IWYU pragma: keep
-#include "lv2/dynmanifest/dynmanifest.h" // IWYU pragma: keep
-#include "lv2/event/event-helpers.h" // IWYU pragma: keep
-#include "lv2/event/event.h" // IWYU pragma: keep
-#include "lv2/instance-access/instance-access.h" // IWYU pragma: keep
-#include "lv2/log/log.h" // IWYU pragma: keep
-#include "lv2/log/logger.h" // IWYU pragma: keep
-#include "lv2/midi/midi.h" // IWYU pragma: keep
-#include "lv2/morph/morph.h" // IWYU pragma: keep
-#include "lv2/options/options.h" // IWYU pragma: keep
-#include "lv2/parameters/parameters.h" // IWYU pragma: keep
-#include "lv2/patch/patch.h" // IWYU pragma: keep
-#include "lv2/port-groups/port-groups.h" // IWYU pragma: keep
-#include "lv2/port-props/port-props.h" // IWYU pragma: keep
-#include "lv2/presets/presets.h" // IWYU pragma: keep
-#include "lv2/resize-port/resize-port.h" // IWYU pragma: keep
-#include "lv2/state/state.h" // IWYU pragma: keep
-#include "lv2/time/time.h" // IWYU pragma: keep
-#include "lv2/ui/ui.h" // IWYU pragma: keep
-#include "lv2/units/units.h" // IWYU pragma: keep
-#include "lv2/uri-map/uri-map.h" // IWYU pragma: keep
-#include "lv2/urid/urid.h" // IWYU pragma: keep
-#include "lv2/worker/worker.h" // IWYU pragma: keep
+#include <lv2/atom/atom.h> // IWYU pragma: keep
+#include <lv2/atom/forge.h> // IWYU pragma: keep
+#include <lv2/atom/util.h> // IWYU pragma: keep
+#include <lv2/buf-size/buf-size.h> // IWYU pragma: keep
+#include <lv2/core/attributes.h> // IWYU pragma: keep
+#include <lv2/core/lv2.h> // IWYU pragma: keep
+#include <lv2/core/lv2_util.h> // IWYU pragma: keep
+#include <lv2/data-access/data-access.h> // IWYU pragma: keep
+#include <lv2/dynmanifest/dynmanifest.h> // IWYU pragma: keep
+#include <lv2/event/event-helpers.h> // IWYU pragma: keep
+#include <lv2/event/event.h> // IWYU pragma: keep
+#include <lv2/instance-access/instance-access.h> // IWYU pragma: keep
+#include <lv2/log/log.h> // IWYU pragma: keep
+#include <lv2/log/logger.h> // IWYU pragma: keep
+#include <lv2/midi/midi.h> // IWYU pragma: keep
+#include <lv2/morph/morph.h> // IWYU pragma: keep
+#include <lv2/options/options.h> // IWYU pragma: keep
+#include <lv2/parameters/parameters.h> // IWYU pragma: keep
+#include <lv2/patch/patch.h> // IWYU pragma: keep
+#include <lv2/port-groups/port-groups.h> // IWYU pragma: keep
+#include <lv2/port-props/port-props.h> // IWYU pragma: keep
+#include <lv2/presets/presets.h> // IWYU pragma: keep
+#include <lv2/resize-port/resize-port.h> // IWYU pragma: keep
+#include <lv2/state/state.h> // IWYU pragma: keep
+#include <lv2/time/time.h> // IWYU pragma: keep
+#include <lv2/ui/ui.h> // IWYU pragma: keep
+#include <lv2/units/units.h> // IWYU pragma: keep
+#include <lv2/uri-map/uri-map.h> // IWYU pragma: keep
+#include <lv2/urid/urid.h> // IWYU pragma: keep
+#include <lv2/worker/worker.h> // IWYU pragma: keep
int
main(void)
diff --git a/test/test_build.cpp b/test/test_build.cpp
deleted file mode 100644
index c8b2ca0..0000000
--- a/test/test_build.cpp
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright 2022 David Robillard <d@drobilla.net>
-// SPDX-License-Identifier: ISC
-
-#if defined(__clang__)
-_Pragma("clang diagnostic push")
-_Pragma("clang diagnostic ignored \"-Wold-style-cast\"")
-_Pragma("clang diagnostic ignored \"-Wzero-as-null-pointer-constant\"")
-#elif defined(__GNUC__)
-_Pragma("GCC diagnostic push")
-_Pragma("GCC diagnostic ignored \"-Wsuggest-attribute=const\"")
-#endif
-
-#include "lv2/atom/atom.h" // IWYU pragma: keep
-#include "lv2/atom/forge.h" // IWYU pragma: keep
-#include "lv2/atom/util.h" // IWYU pragma: keep
-#include "lv2/buf-size/buf-size.h" // IWYU pragma: keep
-#include "lv2/core/attributes.h" // IWYU pragma: keep
-#include "lv2/core/lv2.h" // IWYU pragma: keep
-#include "lv2/core/lv2_util.h" // IWYU pragma: keep
-#include "lv2/data-access/data-access.h" // IWYU pragma: keep
-#include "lv2/dynmanifest/dynmanifest.h" // IWYU pragma: keep
-#include "lv2/event/event-helpers.h" // IWYU pragma: keep
-#include "lv2/event/event.h" // IWYU pragma: keep
-#include "lv2/instance-access/instance-access.h" // IWYU pragma: keep
-#include "lv2/log/log.h" // IWYU pragma: keep
-#include "lv2/log/logger.h" // IWYU pragma: keep
-#include "lv2/midi/midi.h" // IWYU pragma: keep
-#include "lv2/morph/morph.h" // IWYU pragma: keep
-#include "lv2/options/options.h" // IWYU pragma: keep
-#include "lv2/parameters/parameters.h" // IWYU pragma: keep
-#include "lv2/patch/patch.h" // IWYU pragma: keep
-#include "lv2/port-groups/port-groups.h" // IWYU pragma: keep
-#include "lv2/port-props/port-props.h" // IWYU pragma: keep
-#include "lv2/presets/presets.h" // IWYU pragma: keep
-#include "lv2/resize-port/resize-port.h" // IWYU pragma: keep
-#include "lv2/state/state.h" // IWYU pragma: keep
-#include "lv2/time/time.h" // IWYU pragma: keep
-#include "lv2/ui/ui.h" // IWYU pragma: keep
-#include "lv2/units/units.h" // IWYU pragma: keep
-#include "lv2/uri-map/uri-map.h" // IWYU pragma: keep
-#include "lv2/urid/urid.h" // IWYU pragma: keep
-#include "lv2/worker/worker.h" // IWYU pragma: keep
-
-int
-main()
-{
- return 0;
-}
-
-#if defined(__clang__)
-_Pragma("clang diagnostic pop")
-#elif defined(__GNUC__)
-_Pragma("GCC diagnostic pop")
-#endif
diff --git a/test/test_forge_overflow.c b/test/test_forge_overflow.c
index 95e9b87..7e97ae4 100644
--- a/test/test_forge_overflow.c
+++ b/test/test_forge_overflow.c
@@ -3,9 +3,9 @@
#include "atom_test_utils.c"
-#include "lv2/atom/atom.h"
-#include "lv2/atom/forge.h"
-#include "lv2/urid/urid.h"
+#include <lv2/atom/atom.h>
+#include <lv2/atom/forge.h>
+#include <lv2/urid/urid.h>
#include <assert.h>
#include <stdint.h>
@@ -90,7 +90,7 @@ test_literal_overflow(void)
static int
test_sequence_overflow(void)
{
- static const size_t size = sizeof(LV2_Atom_Sequence) + 6 * sizeof(LV2_Atom);
+ static const size_t size = sizeof(LV2_Atom_Sequence) + (6 * sizeof(LV2_Atom));
LV2_URID_Map map = {NULL, urid_map};
// Test over a range that fails in the sequence header and event components
@@ -121,7 +121,7 @@ test_sequence_overflow(void)
static int
test_vector_head_overflow(void)
{
- static const size_t size = sizeof(LV2_Atom_Vector) + 3 * sizeof(LV2_Atom);
+ static const size_t size = sizeof(LV2_Atom_Vector) + (3 * sizeof(LV2_Atom));
LV2_URID_Map map = {NULL, urid_map};
// Test over a range that fails in the vector header and elements
@@ -154,7 +154,7 @@ test_vector_head_overflow(void)
static int
test_vector_overflow(void)
{
- static const size_t size = sizeof(LV2_Atom_Vector) + 3 * sizeof(LV2_Atom);
+ static const size_t size = sizeof(LV2_Atom_Vector) + (3 * sizeof(LV2_Atom));
static const int32_t vec[] = {1, 2, 3};
LV2_URID_Map map = {NULL, urid_map};
@@ -181,7 +181,7 @@ test_vector_overflow(void)
static int
test_tuple_overflow(void)
{
- static const size_t size = sizeof(LV2_Atom_Tuple) + 3 * sizeof(LV2_Atom);
+ static const size_t size = sizeof(LV2_Atom_Tuple) + (3 * sizeof(LV2_Atom));
LV2_URID_Map map = {NULL, urid_map};
// Test over a range that fails in the tuple header and elements