2022-12-05 22:45:57

by Rae Moar

[permalink] [raw]
Subject: [PATCH v2 1/2] kunit: add macro to allow conditionally exposing static symbols to tests

Create two macros:

VISIBLE_IF_KUNIT - A macro that sets symbols to be static if CONFIG_KUNIT
is not enabled. Otherwise if CONFIG_KUNIT is enabled there is no change to
the symbol definition.

EXPORT_SYMBOL_IF_KUNIT(symbol) - Exports symbol into
EXPORTED_FOR_KUNIT_TESTING namespace only if CONFIG_KUNIT is enabled. Must
use MODULE_IMPORT_NS(EXPORTED_FOR_KUNIT_TESTING) in test file in order to
use symbols.

Signed-off-by: Rae Moar <[email protected]>
Reviewed-by: John Johansen <[email protected]>
Reviewed-by: David Gow <[email protected]>
---

Changes since v1:
- Separated the documentation comments for macros.
- Changed copyright date and author for new header file.

include/kunit/visibility.h | 33 +++++++++++++++++++++++++++++++++
1 file changed, 33 insertions(+)
create mode 100644 include/kunit/visibility.h

diff --git a/include/kunit/visibility.h b/include/kunit/visibility.h
new file mode 100644
index 000000000000..0dfe35feeec6
--- /dev/null
+++ b/include/kunit/visibility.h
@@ -0,0 +1,33 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * KUnit API to allow symbols to be conditionally visible during KUnit
+ * testing
+ *
+ * Copyright (C) 2022, Google LLC.
+ * Author: Rae Moar <[email protected]>
+ */
+
+#ifndef _KUNIT_VISIBILITY_H
+#define _KUNIT_VISIBILITY_H
+
+#if IS_ENABLED(CONFIG_KUNIT)
+ /**
+ * VISIBLE_IF_KUNIT - A macro that sets symbols to be static if
+ * CONFIG_KUNIT is not enabled. Otherwise if CONFIG_KUNIT is enabled
+ * there is no change to the symbol definition.
+ */
+ #define VISIBLE_IF_KUNIT
+ /**
+ * EXPORT_SYMBOL_IF_KUNIT(symbol) - Exports symbol into
+ * EXPORTED_FOR_KUNIT_TESTING namespace only if CONFIG_KUNIT is
+ * enabled. Must use MODULE_IMPORT_NS(EXPORTED_FOR_KUNIT_TESTING)
+ * in test file in order to use symbols.
+ */
+ #define EXPORT_SYMBOL_IF_KUNIT(symbol) EXPORT_SYMBOL_NS(symbol, \
+ EXPORTED_FOR_KUNIT_TESTING)
+#else
+ #define VISIBLE_IF_KUNIT static
+ #define EXPORT_SYMBOL_IF_KUNIT(symbol)
+#endif
+
+#endif /* _KUNIT_VISIBILITY_H */
--
2.39.0.rc0.267.gcb52ba06e7-goog


2022-12-06 10:42:16

by David Gow

[permalink] [raw]
Subject: Re: [PATCH v2 1/2] kunit: add macro to allow conditionally exposing static symbols to tests

On Tue, Dec 6, 2022 at 5:51 AM Rae Moar <[email protected]> wrote:
>
> Create two macros:
>
> VISIBLE_IF_KUNIT - A macro that sets symbols to be static if CONFIG_KUNIT
> is not enabled. Otherwise if CONFIG_KUNIT is enabled there is no change to
> the symbol definition.
>
> EXPORT_SYMBOL_IF_KUNIT(symbol) - Exports symbol into
> EXPORTED_FOR_KUNIT_TESTING namespace only if CONFIG_KUNIT is enabled. Must
> use MODULE_IMPORT_NS(EXPORTED_FOR_KUNIT_TESTING) in test file in order to
> use symbols.
>
> Signed-off-by: Rae Moar <[email protected]>
> Reviewed-by: John Johansen <[email protected]>
> Reviewed-by: David Gow <[email protected]>
> ---
>
> Changes since v1:
> - Separated the documentation comments for macros.
> - Changed copyright date and author for new header file.
>

This still looks good to me, thanks!

Reviewed-by: David Gow <[email protected]>

Cheers,
-- David


> include/kunit/visibility.h | 33 +++++++++++++++++++++++++++++++++
> 1 file changed, 33 insertions(+)
> create mode 100644 include/kunit/visibility.h
>
> diff --git a/include/kunit/visibility.h b/include/kunit/visibility.h
> new file mode 100644
> index 000000000000..0dfe35feeec6
> --- /dev/null
> +++ b/include/kunit/visibility.h
> @@ -0,0 +1,33 @@
> +/* SPDX-License-Identifier: GPL-2.0 */
> +/*
> + * KUnit API to allow symbols to be conditionally visible during KUnit
> + * testing
> + *
> + * Copyright (C) 2022, Google LLC.
> + * Author: Rae Moar <[email protected]>
> + */
> +
> +#ifndef _KUNIT_VISIBILITY_H
> +#define _KUNIT_VISIBILITY_H
> +
> +#if IS_ENABLED(CONFIG_KUNIT)
> + /**
> + * VISIBLE_IF_KUNIT - A macro that sets symbols to be static if
> + * CONFIG_KUNIT is not enabled. Otherwise if CONFIG_KUNIT is enabled
> + * there is no change to the symbol definition.
> + */
> + #define VISIBLE_IF_KUNIT
> + /**
> + * EXPORT_SYMBOL_IF_KUNIT(symbol) - Exports symbol into
> + * EXPORTED_FOR_KUNIT_TESTING namespace only if CONFIG_KUNIT is
> + * enabled. Must use MODULE_IMPORT_NS(EXPORTED_FOR_KUNIT_TESTING)
> + * in test file in order to use symbols.
> + */
> + #define EXPORT_SYMBOL_IF_KUNIT(symbol) EXPORT_SYMBOL_NS(symbol, \
> + EXPORTED_FOR_KUNIT_TESTING)
> +#else
> + #define VISIBLE_IF_KUNIT static
> + #define EXPORT_SYMBOL_IF_KUNIT(symbol)
> +#endif
> +
> +#endif /* _KUNIT_VISIBILITY_H */
> --
> 2.39.0.rc0.267.gcb52ba06e7-goog
>


Attachments:
smime.p7s (3.91 kB)
S/MIME Cryptographic Signature

2022-12-06 10:43:16

by John Johansen

[permalink] [raw]
Subject: Re: [PATCH v2 1/2] kunit: add macro to allow conditionally exposing static symbols to tests

On 12/6/22 01:40, David Gow wrote:
> On Tue, Dec 6, 2022 at 5:51 AM Rae Moar <[email protected]> wrote:
>>
>> Create two macros:
>>
>> VISIBLE_IF_KUNIT - A macro that sets symbols to be static if CONFIG_KUNIT
>> is not enabled. Otherwise if CONFIG_KUNIT is enabled there is no change to
>> the symbol definition.
>>
>> EXPORT_SYMBOL_IF_KUNIT(symbol) - Exports symbol into
>> EXPORTED_FOR_KUNIT_TESTING namespace only if CONFIG_KUNIT is enabled. Must
>> use MODULE_IMPORT_NS(EXPORTED_FOR_KUNIT_TESTING) in test file in order to
>> use symbols.
>>
>> Signed-off-by: Rae Moar <[email protected]>
>> Reviewed-by: John Johansen <[email protected]>
>> Reviewed-by: David Gow <[email protected]>
>> ---
>>
>> Changes since v1:
>> - Separated the documentation comments for macros.
>> - Changed copyright date and author for new header file.
>>
>
> This still looks good to me, thanks!
>
> Reviewed-by: David Gow <[email protected]>

yep, and you already have my Reviewed-by for this one

>
> Cheers,
> -- David
>
>
>> include/kunit/visibility.h | 33 +++++++++++++++++++++++++++++++++
>> 1 file changed, 33 insertions(+)
>> create mode 100644 include/kunit/visibility.h
>>
>> diff --git a/include/kunit/visibility.h b/include/kunit/visibility.h
>> new file mode 100644
>> index 000000000000..0dfe35feeec6
>> --- /dev/null
>> +++ b/include/kunit/visibility.h
>> @@ -0,0 +1,33 @@
>> +/* SPDX-License-Identifier: GPL-2.0 */
>> +/*
>> + * KUnit API to allow symbols to be conditionally visible during KUnit
>> + * testing
>> + *
>> + * Copyright (C) 2022, Google LLC.
>> + * Author: Rae Moar <[email protected]>
>> + */
>> +
>> +#ifndef _KUNIT_VISIBILITY_H
>> +#define _KUNIT_VISIBILITY_H
>> +
>> +#if IS_ENABLED(CONFIG_KUNIT)
>> + /**
>> + * VISIBLE_IF_KUNIT - A macro that sets symbols to be static if
>> + * CONFIG_KUNIT is not enabled. Otherwise if CONFIG_KUNIT is enabled
>> + * there is no change to the symbol definition.
>> + */
>> + #define VISIBLE_IF_KUNIT
>> + /**
>> + * EXPORT_SYMBOL_IF_KUNIT(symbol) - Exports symbol into
>> + * EXPORTED_FOR_KUNIT_TESTING namespace only if CONFIG_KUNIT is
>> + * enabled. Must use MODULE_IMPORT_NS(EXPORTED_FOR_KUNIT_TESTING)
>> + * in test file in order to use symbols.
>> + */
>> + #define EXPORT_SYMBOL_IF_KUNIT(symbol) EXPORT_SYMBOL_NS(symbol, \
>> + EXPORTED_FOR_KUNIT_TESTING)
>> +#else
>> + #define VISIBLE_IF_KUNIT static
>> + #define EXPORT_SYMBOL_IF_KUNIT(symbol)
>> +#endif
>> +
>> +#endif /* _KUNIT_VISIBILITY_H */
>> --
>> 2.39.0.rc0.267.gcb52ba06e7-goog
>>