Devicetree
 help / color / mirror / Atom feed
From: Jonathan Cameron <jic23@kernel.org>
To: Rodrigo Alencar via B4 Relay
	<devnull+rodrigo.alencar.analog.com@kernel.org>
Cc: rodrigo.alencar@analog.com, linux-iio@vger.kernel.org,
	devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-doc@vger.kernel.org, linux-hardening@vger.kernel.org,
	Lars-Peter Clausen <lars@metafoo.de>,
	Michael Hennerich <Michael.Hennerich@analog.com>,
	David Lechner <dlechner@baylibre.com>,
	Andy Shevchenko <andy@kernel.org>, Rob Herring <robh@kernel.org>,
	Krzysztof Kozlowski <krzk+dt@kernel.org>,
	Conor Dooley <conor+dt@kernel.org>,
	Philipp Zabel <p.zabel@pengutronix.de>,
	Jonathan Corbet <corbet@lwn.net>,
	Shuah Khan <skhan@linuxfoundation.org>,
	Kees Cook <kees@kernel.org>,
	"Gustavo A. R. Silva" <gustavoars@kernel.org>
Subject: Re: [PATCH v7 07/17] iio: test: add kunit tests for channel prefix naming generation
Date: Sun, 12 Jul 2026 02:09:28 +0100	[thread overview]
Message-ID: <20260712020928.2c8d1667@jic23-huawei> (raw)
In-Reply-To: <20260707-ad9910-iio-driver-v7-7-a4ec30f63700@analog.com>

On Tue, 07 Jul 2026 15:04:28 +0100
Rodrigo Alencar via B4 Relay <devnull+rodrigo.alencar.analog.com@kernel.org> wrote:

> From: Rodrigo Alencar <rodrigo.alencar@analog.com>
> 
> Add a KUnit test suite covering __iio_chan_prefix_emit(), the helper
> that builds IIO sysfs attribute name prefixes from an iio_chan_spec.
> The suite groups cases by the enum iio_shared_by mode it exercises:
> 
>   - IIO_SHARED_BY_ALL: produces an empty prefix.
>   - IIO_SHARED_BY_DIR: emits direction only ("in" / "out").
>   - IIO_SHARED_BY_TYPE: emits "<dir>_<type>" and the differential
>     "<dir>_<type>-<type>" variant.
>   - IIO_SEPARATE: covers the full matrix of indexed, differential,
>     modified, output and extend_name combinations, plus the two
>     documented error paths (differential without indexed, differential
>     with modifier).
> 
> A final case exercises the seq_buf overflow path by passing an
> undersized buffer and expects -EOVERFLOW.
> 
> Because __iio_chan_prefix_emit() is static, the test translation unit
> is pulled into industrialio-core.c.

Isn't there some magic route cases like this that makes it non static
only when self tests are enabled? 
Claude tells me to look at include/kunit/visibility.h


Very nice.  A couple of really small additions requested inline.
I might well have missed where you exercised the corners requested though!
+ I'll need an Ack from Lars for that maintainers entry. I'll guess that
Lars won't give one as not very active at the moment in this area.

Jonathan

> 
> Also, an entry is created under MAINTAINERS dedicated to tests for IIO
> core helpers.
> 
> Signed-off-by: Rodrigo Alencar <rodrigo.alencar@analog.com>
> ---
>  MAINTAINERS                                |   8 +
>  drivers/iio/industrialio-core.c            |   4 +
>  drivers/iio/test/Kconfig                   |  14 ++
>  drivers/iio/test/iio-test-channel-prefix.c | 246 +++++++++++++++++++++++++++++
>  4 files changed, 272 insertions(+)
> 
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 2b1ec46c5919..57ffc0dcfdb6 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -12634,6 +12634,14 @@ F:	include/dt-bindings/iio/
>  F:	include/linux/iio/
>  F:	tools/iio/
>  
> +IIO CORE KUNIT TESTS
> +M:	Lars-Peter Clausen <lars@metafoo.de>

I'd need an Ack from Lars for this entry.   If we don't get one are you
fine looking after this without Lars listed?  

> +M:	Rodrigo Alencar <rodrigo.alencar@analog.com>
> +L:	linux-iio@vger.kernel.org
> +S:	Maintained
> +F:	drivers/iio/test/iio-test-channel-prefix.c
> +F:	drivers/iio/test/iio-test-format.c
> +
>  IIO UNIT CONVERTER
>  M:	Peter Rosin <peda@lysator.liu.se>
>  L:	linux-iio@vger.kernel.org
> diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c
> index ecc69adf61de..78a3c27d17a1 100644
> --- a/drivers/iio/industrialio-core.c
> +++ b/drivers/iio/industrialio-core.c
> @@ -2232,6 +2232,10 @@ EXPORT_SYMBOL_GPL(iio_device_get_current_mode);
>  subsys_initcall(iio_init);
>  module_exit(iio_exit);
>  
> +#if IS_ENABLED(CONFIG_IIO_CHANNEL_PREFIX_KUNIT_TEST)
> +#include "test/iio-test-channel-prefix.c"
> +#endif

> +
>  MODULE_AUTHOR("Jonathan Cameron <jic23@kernel.org>");
>  MODULE_DESCRIPTION("Industrial I/O core");
>  MODULE_LICENSE("GPL");

> diff --git a/drivers/iio/test/iio-test-channel-prefix.c b/drivers/iio/test/iio-test-channel-prefix.c
> new file mode 100644
> index 000000000000..e6f2739331f2
> --- /dev/null
> +++ b/drivers/iio/test/iio-test-channel-prefix.c

> +
> +static void iio_test_prefix_shared_by_all(struct kunit *test)
> +{
> +	const struct iio_chan_spec chan = {
> +		.type = IIO_VOLTAGE,

I'd throw some stuff that won't be used in here.  Maybe even have
two different ones where we ignore things and then end up with the
same answer?  Same for the other ones where fields are ignored.

Obviously it is a bit of a dead chicken test (wave it around
and if still dead, all good :) so only really illustrates that
typically there is more stuff there that gets ignored.


> +	};
> +	char *buf = iio_test_prefix_alloc(test);
> +	ssize_t ret;
> +
> +	ret = __iio_chan_prefix_emit(NULL, &chan, IIO_SHARED_BY_ALL,
> +				     buf, PREFIX_BUF_SIZE);
> +	EXPECT_PREFIX(test, buf, ret, "");
> +}

> +static void iio_test_prefix_separate_modified(struct kunit *test)
> +{
> +	const struct iio_chan_spec chan = {
> +		.type = IIO_ACCEL,
> +		.modified = 1,
> +		.channel2 = IIO_MOD_X,
> +	};
> +	char *buf = iio_test_prefix_alloc(test);
> +	ssize_t ret;
> +
> +	ret = __iio_chan_prefix_emit(NULL, &chan, IIO_SEPARATE,
> +				     buf, PREFIX_BUF_SIZE);
> +	EXPECT_PREFIX(test, buf, ret, "in_accel_x");

I think it is worth one indexed + modified test

> +}
> +
> +static void iio_test_prefix_separate_extend_name(struct kunit *test)
> +{
> +	const struct iio_chan_spec chan = {
> +		.type = IIO_VOLTAGE,
> +		.indexed = 1,
> +		.channel = 2,
> +		.extend_name = "supply",
> +	};
> +	char *buf = iio_test_prefix_alloc(test);
> +	ssize_t ret;
> +
> +	ret = __iio_chan_prefix_emit(NULL, &chan, IIO_SEPARATE,
> +				     buf, PREFIX_BUF_SIZE);
> +	EXPECT_PREFIX(test, buf, ret, "in_voltage2_supply");
> +}
> +
> +static void iio_test_prefix_output_separate(struct kunit *test)
> +{
> +	const struct iio_chan_spec chan = {
> +		.type = IIO_VOLTAGE,
> +		.output = 1,
> +		.indexed = 1,
> +		.channel = 0,
> +	};
> +	char *buf = iio_test_prefix_alloc(test);
> +	ssize_t ret;
> +
> +	ret = __iio_chan_prefix_emit(NULL, &chan, IIO_SEPARATE,
> +				     buf, PREFIX_BUF_SIZE);
> +	EXPECT_PREFIX(test, buf, ret, "out_voltage0");
> +}

  parent reply	other threads:[~2026-07-12  1:09 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-07 14:04 [PATCH v7 00/17] AD9910 Direct Digital Synthesizer Rodrigo Alencar via B4 Relay
2026-07-07 14:04 ` [PATCH v7 01/17] iio: ABI: add attributes for altcurrent channels Rodrigo Alencar via B4 Relay
2026-07-07 14:04 ` [PATCH v7 02/17] iio: ABI: scale and offset for frequency/phase channels Rodrigo Alencar via B4 Relay
2026-07-07 14:04 ` [PATCH v7 03/17] iio: ABI: add parent entry for iio channels Rodrigo Alencar via B4 Relay
2026-07-12  0:51   ` Jonathan Cameron
2026-07-07 14:04 ` [PATCH v7 04/17] iio: add IIO_FREQUENCY channel type Rodrigo Alencar via B4 Relay
2026-07-07 14:24   ` sashiko-bot
2026-07-07 14:04 ` [PATCH v7 05/17] iio: core: support 64-bit register through debugfs Rodrigo Alencar via B4 Relay
2026-07-07 14:04 ` [PATCH v7 06/17] iio: core: create local __iio_chan_prefix_emit() for reuse Rodrigo Alencar via B4 Relay
2026-07-07 15:58   ` Andy Shevchenko
2026-07-07 14:04 ` [PATCH v7 07/17] iio: test: add kunit tests for channel prefix naming generation Rodrigo Alencar via B4 Relay
2026-07-07 14:53   ` sashiko-bot
2026-07-12  1:09   ` Jonathan Cameron [this message]
2026-07-07 14:04 ` [PATCH v7 08/17] iio: core: add hierarchical channel relationships Rodrigo Alencar via B4 Relay
2026-07-07 16:00   ` Andy Shevchenko
2026-07-07 14:04 ` [PATCH v7 09/17] dt-bindings: iio: frequency: add ad9910 Rodrigo Alencar via B4 Relay
2026-07-07 16:11   ` Conor Dooley
2026-07-07 16:13   ` Conor Dooley
2026-07-07 14:04 ` [PATCH v7 10/17] iio: frequency: ad9910: initial driver implementation Rodrigo Alencar via B4 Relay
2026-07-07 15:15   ` sashiko-bot
2026-07-08  9:04   ` Uwe Kleine-König
2026-07-07 14:04 ` [PATCH v7 11/17] iio: frequency: ad9910: add basic parallel port support Rodrigo Alencar via B4 Relay
2026-07-07 14:04 ` [PATCH v7 12/17] iio: frequency: ad9910: add digital ramp generator support Rodrigo Alencar via B4 Relay
2026-07-07 14:04 ` [PATCH v7 13/17] iio: frequency: ad9910: add RAM mode support Rodrigo Alencar via B4 Relay
2026-07-07 15:51   ` sashiko-bot
2026-07-07 14:04 ` [PATCH v7 14/17] iio: frequency: ad9910: add output shift keying support Rodrigo Alencar via B4 Relay
2026-07-07 14:04 ` [PATCH v7 15/17] iio: frequency: ad9910: show channel priority in debugfs Rodrigo Alencar via B4 Relay
2026-07-07 14:04 ` [PATCH v7 16/17] iio: ABI: add docs for ad9910 sysfs and debugfs entries Rodrigo Alencar via B4 Relay
2026-07-07 16:16   ` sashiko-bot
2026-07-12  1:19   ` Jonathan Cameron
2026-07-07 14:04 ` [PATCH v7 17/17] docs: iio: add documentation for ad9910 driver Rodrigo Alencar via B4 Relay
2026-07-07 16:17   ` sashiko-bot
2026-07-12  1:35   ` Jonathan Cameron

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260712020928.2c8d1667@jic23-huawei \
    --to=jic23@kernel.org \
    --cc=Michael.Hennerich@analog.com \
    --cc=andy@kernel.org \
    --cc=conor+dt@kernel.org \
    --cc=corbet@lwn.net \
    --cc=devicetree@vger.kernel.org \
    --cc=devnull+rodrigo.alencar.analog.com@kernel.org \
    --cc=dlechner@baylibre.com \
    --cc=gustavoars@kernel.org \
    --cc=kees@kernel.org \
    --cc=krzk+dt@kernel.org \
    --cc=lars@metafoo.de \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-hardening@vger.kernel.org \
    --cc=linux-iio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=p.zabel@pengutronix.de \
    --cc=robh@kernel.org \
    --cc=rodrigo.alencar@analog.com \
    --cc=skhan@linuxfoundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox