Okay this is great information! And I learned a new testing method today. I
will play with cmocka then since it seems like it could also work well for
the smaller NuttX devices.

Thank you Xiang!

On Mon, Dec 22, 2025, 10:57 PM Xiang Xiao <[email protected]> wrote:

> On Tue, Dec 23, 2025 at 10:29 AM Matteo Golin <[email protected]>
> wrote:
>
> > Thank you Xiang for the information! It makes sense of course that you're
> > not able to share the Xiaomi internal test suites.
> >
> >
> Actually, raiden00pl is working on upstreaming the part of the test suite
> which tests NuttX's components to the NuttX community.
> The part we can't share is that:
>
>    1. The test suite specific for openvela framework
>    2. Internal CI/CD infrastructure which is couple with our workflow and
>    very different from github
>
>
>
> > Are there any modifications Xiaomi has needed to make to cmocka to
> improve
> > it's ability to run on small devices? I know some of your targets are
> > wearables which I imagine are very resource constrained?
> >
> >
> No, we don't do any size optimization for cmocka since it is already a
> small unit test framework containing one .h and one .c.
> We run many test cases(including cmocka's) on the smallest BLE only module
> which has 256KB SRAM and 2MB flash.
>
>
>
> > Can you clarify what you mean by monkey test? Is that another test
> > framework? I'm interested since you mentioned it running on watches and
> > speakers.
> >
> >
> Here is an explanation from wiki:
> https://en.wikipedia.org/wiki/Monkey_testing
> https://en.wikipedia.org/wiki/Mean_time_between_failures
> Here is the our monkey test requirement:
>
>    1. Boot 50 instances for each simulator/qemu/hardware with the product
>    config
>    2. Generate the random input quickly through the fake drivers(e.g.
>    touch/button/audio...)
>
> All devices need to run beyond 24 hours without crash or hang for three
> consecutive days.
>
> Thanks,
> > Matteo
> >
> > On Mon, Dec 22, 2025, 9:08 PM Xiang Xiao <[email protected]>
> > wrote:
> >
> > > On Tue, Dec 23, 2025 at 1:08 AM Matteo Golin <[email protected]>
> > > wrote:
> > >
> > > > Hello everyone,
> > > >
> > > > Thanks for all the feedback! I'm glad I discussed this here first.
> I'll
> > > try
> > > > to address everything that was brought up.
> > > >
> > > > Thanks Guiding for the input! I must just be missing some library on
> my
> > > > machine if you're able to compile it just fine. Maybe I'll track down
> > > that
> > > > error and see if you can recognize what's wrong.
> > > >
> > > > I don't intend to replace OS test anymore. I think it serves its
> > purpose
> > > as
> > > > a minimal sanity check. Instead, I think we need something a little
> > more
> > > > involved to test PRs since OS test can't catch many issues. It is
> > > currently
> > > > the standard everyone uses for verifying their patches and it would
> be
> > > > better to have more complete, alternate options. I do think that we
> can
> > > all
> > > > agree that OS test needs a revision of its console output so that it
> is
> > > > much easier to see pass/fail results, but that is just a matter of
> > print
> > > > statements and can be done in a different effort.
> > > >
> > > > I think the overwhelming concern here is mixing two unit testing
> > > frameworks
> > > > and no longer having one resource where we can go for tests. I share
> > > raiden
> > > > and Guiding's concern about that, which is why I'm glad I opened for
> > > > discussion here. On the one hand, Xiaomi has a pretty substantial
> > > > collection of tests in the `testsuite` application which they are
> using
> > > > internally I believe (in their CI). These run well on virtual
> machines,
> > > > which I assume is why the only configurations with that test suite
> > > included
> > > > is sim and rv-virt. I do not know nearly enough about cmocka to make
> > any
> > > > claim that it *wouldn't* work on smaller hardware devices, but it
> also
> > > > definitely looks to be less light-weight from the feature set in the
> > > > documentation. On the other hand, the Xiaomi test suites are also
> not a
> > > > complete silver bullet since they seem not to be intended to run on
> > > > hardware, and there are *a lot *of tests that need hardware
> > verification.
> > > >
> > >
> > > The test suite also runs on hardware daily, but sorry it's impossible
> to
> > > share our hardware and internal CI/CD infrastructure for the community.
> > > But, we already contract raiden00pl to refactor our test automation
> > > framework for public use.
> > >
> > >
> > > > In PRs we often request more than just a simulator test for certain
> > > > changes. For instance, sim isn't able to have `/dev/rand`, so that
> > needs
> > > to
> > > > be tested on a different target.
> > > >
> > >
> > > Maybe someone more familiar with Xiaomi's testing practices can weigh
> in
> > on
> > > > whether cmocka has been run on hardware. Going purely based off of
> > their
> > > > PRs, which almost exclusively cite tests on simulators, my guess is
> > that
> > > > cmocka was not designed with embedded in mind when it was written.
> > > >
> > > >
> > > CI/CD in Xiaomi is far more complex than your description:
> > >
> > >    1. Each patch will test on 10+ devices(include sim/qemu/hardware,
> > >    arm/arm64/riscv/xtensa/x64, smp/up) with 1000+ test case
> > >    2. Run the full test suite(10000+ test case) every day
> > >    3. Run the monkey test every day on watch and speaker product:
> 24hour
> > X
> > >    50 instance X (sim + qemu + hardware)
> > >
> > > Many stability bugs only happen randomly in monkey test.
> > >
> > > As for size: unit testing can get large with Unity or cmocka (as raiden
> > > > mentioned) as more tests are added. Hence my effort to enable/disable
> > > > individual test suites from getting compiled. It might not be
> possible
> > to
> > > > ever get good testing ability for AVR just because the devices are so
> > > > small. Whatever solution is used there is probably going to involve
> > > > flashing the device multiple times with different tests. The size
> goal
> > > > should just be to target the most NuttX devices possible.
> > > >
> > > > Then there are the pros and cons of each framework (again, I don't
> know
> > > > much about cmocka so take it with a grain of salt):
> > > >
> > > > Unity's cons:
> > > > - Designed for each test-suite to be a standalone binary. This is
> > clunky
> > > on
> > > > NuttX, so `nest` is currently implemented as a mega-suite where test
> > > cases
> > > > just follow a naming convention to make it clear what is being tested
> > > > - setUp/tearDown can't really be leveraged because of the above
> > > > - I've noticed some funky behaviour using TEST_IGNORE in certain
> > > scenarios
> > > > but that's possibly my own configuration issue
> > > > - Would be in conflict with existing cmocka tests
> > > >
> > > > Unity's pros:
> > > > - Highly configurable, like NuttX
> > > > - Light-weight and works for embedded devices
> > > > - Significantly larger user base than cmocka
> > > >
> > > > Cmocka's cons:
> > > > - Possibly (?) not light-weight
> > > > - No documentation for existing test cases in NuttX
> > > > - Small user base
> > > >
> > > > Cmocka's pros:
> > > > - Seems to have a larger set of features, including setup/teardown
> > > > functions per-test case
> > > > - Existing tests in NuttX
> > > >
> > > >
> > > Xiaomi selected cmocka just because it has the test suite concept which
> > > could help us manage 10000+ tests.
> > > But we also use gtest for the c++ code base, and run many test cases
> from
> > > 3rd parties(e.g. LTP, libuv, libcxx testsuite, PSE52...) which may use
> a
> > > different test framework.
> > > So, is it hard or meaningless to stick to one unit test framework for
> an
> > > open source project.
> > >
> > > Irrespective of whether we go with Unity or cmocka, the collection of
> > tests
> > > > that we write will be intended to run on the actual hardware devices
> > > > themselves for the purposes of testing patches and doing regression
> > > tests.
> > > > As a result, the tests will be separate from the Xiaomi 'testsuite'
> > > > application which is intended for CI testing. I think this
> > realistically
> > > > nullifies choosing which framework to use on the basis of
> consistency,
> > > > since the tests are not coexisting with the cmocka tests Xiaomi has
> > > > written. Instead, the choice should be based on what best achieves
> the
> > > goal
> > > > from a functionality perspective. Unity seems like a really great
> > choice
> > > > for this in my opinion, but I am bothered by the fact that it's
> > designed
> > > > with multiple test binaries in mind.
> > > >
> > > > Let me know what you think,
> > > > Matteo
> > > >
> > > > On Mon, Dec 22, 2025 at 11:02 AM Alan C. Assis <[email protected]>
> > > wrote:
> > > >
> > > > > Yes, I agree! We need data size from each solution for comparison,
> > this
> > > > is
> > > > > the first step.
> > > > >
> > > > > Maybe the conversion could be facilitated if we create equivalent
> > > > functions
> > > > > like those used in the apps/testing/testsuites:
> > > > >
> > > > > cmocka_run_group_tests -> unity_run_group_tests
> > > > > cmocka_unit_test_setup_teardown -> unity_unit_test_setup_teardown
> > > > > etc...
> > > > >
> > > > > This way we avoid end up with two unit test framework, we already
> > have
> > > > the
> > > > > Makefile vs CMake precedent! :-D
> > > > >
> > > > > On Mon, Dec 22, 2025 at 11:27 AM raiden00pl <[email protected]>
> > > > wrote:
> > > > >
> > > > > > The discussion about small systems doesn't make much sense
> without
> > > > > > data comparing resources of the same test cases for cmock and
> > unity.
> > > > > >
> > > > > > But let's assume that Unity is better. Should we use two
> frameworks
> > > > > > to implement unit tests for OS? Or choose one framework? If we
> > choose
> > > > > only
> > > > > > Unity, who
> > > > > > will migrate the current cmocka tests to Unity? Remember that
> cmoka
> > > > tests
> > > > > > are used in CI, so all CI tools must be also migrated.
> > > > > > Or should we use two different frameworks to test different
> things
> > > and
> > > > > make
> > > > > > even
> > > > > > more mess in apps/testing as it is now?
> > > > > >
> > > > > > No one is forcing anyone to do anything. This is an open-source
> > > > project,
> > > > > > everyone
> > > > > > should do what they feel is right. But whether the change should
> be
> > > > > merged
> > > > > > is
> > > > > > a different question. In this case, it's a very important
> question,
> > > > > because
> > > > > > unit testing
> > > > > > isn't just about test cases. It's about the entire infrastructure
> > > that
> > > > > > runs, captures and
> > > > > > handles test results later. Writing the test cases is the least
> of
> > > the
> > > > > > problems.
> > > > > > The infrastructure for cmoka testing is already in place, the
> > > > > > infrastructure for Unity
> > > > > > testing isn't.
> > > > > >
> > > > > > pon., 22 gru 2025 o 14:16 Alan C. Assis <[email protected]>
> > > > napisał(a):
> > > > > >
> > > > > > > Mateusz,
> > > > > > > but some chips like AVR DA have big flash, but not so much RAM.
> > > > > > >
> > > > > > > It is better to have some possible way to test on a small
> system,
> > > > using
> > > > > > > cmocka we are removing this option from the table.
> > > > > > >
> > > > > > > I liked the test Matteo did with Unity and I think we should
> let
> > > him
> > > > > > > continue. Forcing him to migrate to cmocka just because
> there's a
> > > > test
> > > > > > > suite from Xiaomi doesn't seem prudent to me.
> > > > > > >
> > > > > > > This is the advantage of an open mind open-source project: "the
> > > > > > possibility
> > > > > > > to test new ideas", if someone had said to Michal Lenc he
> > couldn't
> > > > > create
> > > > > > > NXBoot because where is already MCUBoot integrated on NuttX, we
> > > > didn't
> > > > > > have
> > > > > > > the option to use NXBoot today. ;-)
> > > > > > >
> > > > > > > BR,
> > > > > > >
> > > > > > > Alan
> > > > > > >
> > > > > > > On Mon, Dec 22, 2025 at 10:02 AM raiden00pl <
> > [email protected]>
> > > > > > wrote:
> > > > > > >
> > > > > > > > Unit testing by itself isn't suitable for small systems.
> Ostest
> > > is
> > > > > > > > something
> > > > > > > > different (system level testing), so running it on small
> > systems
> > > > > makes
> > > > > > > > sense.
> > > > > > > > Running unit tests on small systems is pointless because you
> > > won't
> > > > > fit
> > > > > > in
> > > > > > > > FLASH
> > > > > > > > either way. You can run the same on large targets (preferably
> > on
> > > > > host:
> > > > > > > sim,
> > > > > > > > qemu)
> > > > > > > > and achieve the same result.
> > > > > > > >
> > > > > > > > pon., 22 gru 2025 o 13:35 Alan C. Assis <[email protected]>
> > > > > > napisał(a):
> > > > > > > >
> > > > > > > > > Is it too complicated to rewrite the cmocka tests in Unity?
> > > > > > > > >
> > > > > > > > > If cmoka is not feasible for small microcontrollers, like
> > AVRs
> > > > and
> > > > > > > > others,
> > > > > > > > > our test coverage will be faulty.
> > > > > > > > >
> > > > > > > > > BR,
> > > > > > > > >
> > > > > > > > > Alan
> > > > > > > > >
> > > > > > > > > On Mon, Dec 22, 2025 at 6:14 AM raiden00pl <
> > > [email protected]
> > > > >
> > > > > > > wrote:
> > > > > > > > >
> > > > > > > > > > I'm a fan of Unity and have been using it in my projects
> > for
> > > > > years,
> > > > > > > > but I
> > > > > > > > > > think
> > > > > > > > > > we should stick with one testing framework. Currently,
> > Cmocka
> > > > is
> > > > > > used
> > > > > > > > in
> > > > > > > > > > nuttx-apps, and we should stick with it. The only
> question
> > is
> > > > how
> > > > > > > well
> > > > > > > > > > Cmocka
> > > > > > > > > > is suitable for running on small systems? Will ostest
> still
> > > be
> > > > > able
> > > > > > > to
> > > > > > > > > run
> > > > > > > > > > on small MCUs?
> > > > > > > > > > With Unity this would be quite likely, so maybe an
> > exception
> > > > for
> > > > > > > Unity
> > > > > > > > > and
> > > > > > > > > > ostest would
> > > > > > > > > > be acceptable, but using it for other test cases will
> only
> > > > cause
> > > > > > > chaos.
> > > > > > > > > >
> > > > > > > > > > pon., 22 gru 2025 o 10:05 Guiding Li <[email protected]>
> > > > > > napisał(a):
> > > > > > > > > >
> > > > > > > > > > > Hi Matteo,
> > > > > > > > > > >
> > > > > > > > > > > Good idea !
> > > > > > > > > > >
> > > > > > > > > > > But it is best to stick with a single testing
> framework.
> > > > > > Currently,
> > > > > > > > > many
> > > > > > > > > > > test cases are using cmocka, so I suggest reusing
> cmocka
> > > for
> > > > > > > > > consistency.
> > > > > > > > > > >
> > > > > > > > > > > ostest is a minimal basic test suite, typically used
> for
> > CT
> > > > > > > > (continuous
> > > > > > > > > > > testing) of each patch.
> > > > > > > > > > > If we move ostest to cmocka, it would make ostest
> > dependent
> > > > on
> > > > > a
> > > > > > > > > specific
> > > > > > > > > > > framework before it can be run.
> > > > > > > > > > > And It may increase the code size, which is not very
> > > friendly
> > > > > for
> > > > > > > > > > > configurations with small flash memory.
> > > > > > > > > > >
> > > > > > > > > > > As Greg mentioned: the answer depends on a tradeoff
> > between
> > > > > > effort
> > > > > > > > and
> > > > > > > > > > test
> > > > > > > > > > > coverage.
> > > > > > > > > > >
> > > > > > > > > > > We need to clarify whether we define ostest as a
> > > lightweight,
> > > > > > > > > > ready-to-run
> > > > > > > > > > > test set for quick verification, or as part of the full
> > > test
> > > > > > suite.
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > The follow is my compiling for cmocka:
> > > > > > > > > > >
> > > > > > > > > > > *ligd@BAI:~/platform/mainline/nuttx$
> > ./tools/configure.sh
> > > > > > > sim:citest
> > > > > > > > > > -j8*
> > > > > > > > > > >   Copy files
> > > > > > > > > > >   Select CONFIG_HOST_LINUX=y
> > > > > > > > > > >   Refreshing...
> > > > > > > > > > > CP: arch/dummy/Kconfig to
> > > > > > > > > > >
> > /home/ligd/platform/mainline/nuttx/arch/dummy/dummy_kconfig
> > > > > > > > > > > CP: boards/dummy/Kconfig to
> > > > > > > > > > >
> > > /home/ligd/platform/mainline/nuttx/boards/dummy/dummy_kconfig
> > > > > > > > > > > LN: include/arch to arch/sim/include
> > > > > > > > > > > LN: drivers/platform to
> > > > > > > > > /home/ligd/platform/mainline/nuttx/drivers/dummy
> > > > > > > > > > > LN: arch/sim/src/chip to
> > > > > > > > > > > /home/ligd/platform/mainline/nuttx/arch/sim/src/sim
> > > > > > > > > > > LN: arch/sim/src/board to
> > > > > > > > > > >
> /home/ligd/platform/mainline/nuttx/boards/sim/sim/sim/src
> > > > > > > > > > > LN: include/arch/board to
> > > > > > > > > > >
> > > /home/ligd/platform/mainline/nuttx/boards/sim/sim/sim/include
> > > > > > > > > > > LN: include/arch/chip to
> > > > > > > > > > > /home/ligd/platform/mainline/nuttx/arch/sim/include/sim
> > > > > > > > > > > LN: platform/board to
> > > > > > > > /home/ligd/platform/mainline/apps/platform/dummy
> > > > > > > > > > > mkkconfig in
> /home/ligd/platform/mainline/apps/audioutils
> > > > > > > > > > > mkkconfig in
> /home/ligd/platform/mainline/apps/benchmarks
> > > > > > > > > > > mkkconfig in /home/ligd/platform/mainline/apps/boot
> > > > > > > > > > > mkkconfig in /home/ligd/platform/mainline/apps/canutils
> > > > > > > > > > > mkkconfig in /home/ligd/platform/mainline/apps/crypto
> > > > > > > > > > > mkkconfig in /home/ligd/platform/mainline/apps/database
> > > > > > > > > > > mkkconfig in
> > > /home/ligd/platform/mainline/apps/examples/rust
> > > > > > > > > > > mkkconfig in
> > > > /home/ligd/platform/mainline/apps/examples/sotest
> > > > > > > > > > > mkkconfig in
> > > > /home/ligd/platform/mainline/apps/examples/module
> > > > > > > > > > > mkkconfig in
> > > > /home/ligd/platform/mainline/apps/examples/mcuboot
> > > > > > > > > > > mkkconfig in /home/ligd/platform/mainline/apps/examples
> > > > > > > > > > > mkkconfig in /home/ligd/platform/mainline/apps/fsutils
> > > > > > > > > > > mkkconfig in /home/ligd/platform/mainline/apps/games
> > > > > > > > > > > mkkconfig in /home/ligd/platform/mainline/apps/graphics
> > > > > > > > > > > mkkconfig in /home/ligd/platform/mainline/apps/industry
> > > > > > > > > > > mkkconfig in /home/ligd/platform/mainline/apps/inertial
> > > > > > > > > > > mkkconfig in
> > > > > > > > /home/ligd/platform/mainline/apps/interpreters/luamodules
> > > > > > > > > > > mkkconfig in
> > /home/ligd/platform/mainline/apps/interpreters
> > > > > > > > > > > mkkconfig in /home/ligd/platform/mainline/apps/logging
> > > > > > > > > > > mkkconfig in /home/ligd/platform/mainline/apps/lte
> > > > > > > > > > > mkkconfig in /home/ligd/platform/mainline/apps/math
> > > > > > > > > > > mkkconfig in
> /home/ligd/platform/mainline/apps/mlearning
> > > > > > > > > > > mkkconfig in /home/ligd/platform/mainline/apps/netutils
> > > > > > > > > > > mkkconfig in /home/ligd/platform/mainline/apps/sdr
> > > > > > > > > > > mkkconfig in /home/ligd/platform/mainline/apps/system
> > > > > > > > > > > mkkconfig in /home/ligd/platform/mainline/apps/tee
> > > > > > > > > > > mkkconfig in
> > > > /home/ligd/platform/mainline/apps/testing/drivers
> > > > > > > > > > > mkkconfig in
> > > /home/ligd/platform/mainline/apps/testing/sched
> > > > > > > > > > > mkkconfig in
> /home/ligd/platform/mainline/apps/testing/fs
> > > > > > > > > > > mkkconfig in
> /home/ligd/platform/mainline/apps/testing/mm
> > > > > > > > > > > mkkconfig in
> > /home/ligd/platform/mainline/apps/testing/libc
> > > > > > > > > > > mkkconfig in
> > /home/ligd/platform/mainline/apps/testing/arch
> > > > > > > > > > > mkkconfig in
> > /home/ligd/platform/mainline/apps/testing/cxx
> > > > > > > > > > > mkkconfig in /home/ligd/platform/mainline/apps/testing
> > > > > > > > > > > mkkconfig in
> /home/ligd/platform/mainline/apps/videoutils
> > > > > > > > > > > mkkconfig in
> > > > > /home/ligd/platform/mainline/apps/wireless/bluetooth
> > > > > > > > > > > mkkconfig in
> > > > > > /home/ligd/platform/mainline/apps/wireless/ieee802154
> > > > > > > > > > > mkkconfig in /home/ligd/platform/mainline/apps/wireless
> > > > > > > > > > > mkkconfig in /home/ligd/platform/mainline/apps
> > > > > > > > > > > Loaded configuration '.config'
> > > > > > > > > > > Configuration saved to '.config'
> > > > > > > > > > > ligd@BAI:~/platform/mainline/nuttx$
> > > > > > > > > > > *ligd@BAI:~/platform/mainline/nuttx$ make*
> > > > > > > > > > > Create version.h
> > > > > > > > > > > Downloading: libcxx-17.0.6.src.tar.xz LN:
> platform/board
> > to
> > > > > > > > > > > /home/ligd/platform/mainline/apps/platform/dummy
> > > > > > > > > > > Downloading: v1.46.0.zip
> > > > > > > > > > > ...
> > > > > > > > > > > patching file
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> testcases/open_posix_testsuite/conformance/interfaces/pthread_sigmask/18-1.c
> > > > > > > > > > > Hunk #1 succeeded at 160 with fuzz 2 (offset -8 lines).
> > > > > > > > > > >
> > > > > > > > > > > CP:
> > > > /home/ligd/platform/mainline/nuttx/include/nuttx/config.h
> > > > > > > > > > > CP:
> > > > > /home/ligd/platform/mainline/nuttx/include/nuttx/fs/hostfs.h
> > > > > > > > > > > LD:  nuttx
> > > > > > > > > > > Pac SIM with dynamic libs..
> > > > > > > > > > > '/lib/x86_64-linux-gnu/libz.so.1' ->
> > > 'sim-pac/libs/libz.so.1'
> > > > > > > > > > > '/lib/x86_64-linux-gnu/libstdc++.so.6' ->
> > > > > > > > 'sim-pac/libs/libstdc++.so.6'
> > > > > > > > > > > '/lib/x86_64-linux-gnu/libc.so.6' ->
> > > 'sim-pac/libs/libc.so.6'
> > > > > > > > > > > '/lib/x86_64-linux-gnu/libm.so.6' ->
> > > 'sim-pac/libs/libm.so.6'
> > > > > > > > > > > '/lib/x86_64-linux-gnu/libgcc_s.so.1' ->
> > > > > > > 'sim-pac/libs/libgcc_s.so.1'
> > > > > > > > > > > '/lib64/ld-linux-x86-64.so.2' ->
> > > > 'sim-pac/ld-linux-x86-64.so.2'
> > > > > > > > > > > SIM elf with dynamic libs archive in nuttx.tgz
> > > > > > > > > > > ligd@BAI:~/platform/mainline/nuttx$
> > > > > > > > > > > ligd@BAI:~/platform/mainline/nuttx$
> > > > > > > > > > > ligd@BAI:~/platform/mainline/nuttx$
> > > > > > > > > > > *ligd@BAI:~/platform/mainline/nuttx$ ./nuttx *
> > > > > > > > > > > CHelloWorld: Constructor: mSecret=42
> > > > > > > > > > > nsh: init: open failed: 2
> > > > > > > > > > >
> > > > > > > > > > > NuttShell (NSH) NuttX-12.11.0
> > > > > > > > > > > MOTD: username=admin password=Administrator
> > > > > > > > > > > nsh>
> > > > > > > > > > > nsh> help
> > > > > > > > > > > help usage:  help [-v] [<cmd>]
> > > > > > > > > > >
> > > > > > > > > > >     .           df          ifconfig    mkfifo
> > > readlink
> > > > > > > > umount
> > > > > > > > > > >     [           dmesg       ifdown      mkrd        rm
> > > > > > > unset
> > > > > > > > > > >     ?           echo        ifup        mount
>  rmdir
> > > > > > > >  uptime
> > > > > > > > > > >     alias       env         insmod      mv
> rmmod
> > > > > > > >  usleep
> > > > > > > > > > >     unalias     exec        kill        nslookup    set
> > > > > > >  watch
> > > > > > > > > > >     basename    exit        pkill       pidof
>  sleep
> > > > > >  xd
> > > > > > > > > > >     break       expr        losetup     pmconfig
> > source
> > > > > > > wait
> > > > > > > > > > >     cat         false       ln          poweroff
> test
> > > > > > > > > > >     cd          fdinfo      ls          quit
> time
> > > > > > > > > > >     cp          free        lsmod       printf
> true
> > > > > > > > > > >     cmp         help        mkdir       ps
> > > truncate
> > > > > > > > > > >     dirname     hexdump     mkfatfs     pwd
>  uname
> > > > > > > > > > >
> > > > > > > > > > > Builtin Apps:
> > > > > > > > > > >     cmocka
> > > > > > > > > > >     cmocka_driver_block
> > > > > > > > > > >     cmocka_driver_gpio
> > > > > > > > > > >     cmocka_driver_pm
> > > > > > > > > > >     cmocka_driver_pm_runtime
> > > > > > > > > > >     cmocka_driver_regulator
> > > > > > > > > > >
> > > > > > > > > > > Matteo Golin <[email protected]> 于2025年12月22日周一
> > > > 10:15写道:
> > > > > > > > > > >
> > > > > > > > > > > > I think so. Best to leave OS test alone and slowly
> > > replace
> > > > it
> > > > > > > with
> > > > > > > > a
> > > > > > > > > > new
> > > > > > > > > > > > tool that has improvements. The only reason I can see
> > to
> > > > > modify
> > > > > > > OS
> > > > > > > > > test
> > > > > > > > > > > now
> > > > > > > > > > > > would just be to have clearer output about what
> > > > > passed/failed.
> > > > > > > > > > > >
> > > > > > > > > > > > I'll come up with an improved proof of concept for a
> > new
> > > > tool
> > > > > > to
> > > > > > > > > share
> > > > > > > > > > in
> > > > > > > > > > > > the next few days.
> > > > > > > > > > > >
> > > > > > > > > > > > Matteo
> > > > > > > > > > > >
> > > > > > > > > > > > On Sun, Dec 21, 2025, 9:13 PM Tomek CEDRO <
> > > > [email protected]>
> > > > > > > > wrote:
> > > > > > > > > > > >
> > > > > > > > > > > > > Small steps with measurable results may be the best
> > > > > approach
> > > > > > > > here,
> > > > > > > > > to
> > > > > > > > > > > > > create some new solution next to existing ostest
> but
> > > not
> > > > > > > > replacing
> > > > > > > > > it
> > > > > > > > > > > > > until ready? :-)
> > > > > > > > > > > > >
> > > > > > > > > > > > > --
> > > > > > > > > > > > > CeDeROM, SQ7MHZ, http://www.tomek.cedro.info
> > > > > > > > > > > > >
> > > > > > > > > > > > > On Mon, Dec 22, 2025 at 3:06 AM Matteo Golin <
> > > > > > > > > [email protected]
> > > > > > > > > > >
> > > > > > > > > > > > > wrote:
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > I agree, I think it would take a long time to
> have
> > > > proper
> > > > > > > > > coverage
> > > > > > > > > > of
> > > > > > > > > > > > > NuttX
> > > > > > > > > > > > > > as a whole. Perhaps even impossible, since Unity
> is
> > > > more
> > > > > > of a
> > > > > > > > > unit
> > > > > > > > > > > > > testing
> > > > > > > > > > > > > > framework and thus there are definitely test
> cases
> > > for
> > > > > > NuttX
> > > > > > > > that
> > > > > > > > > > > would
> > > > > > > > > > > > > be
> > > > > > > > > > > > > > outside of its realm of "applicability". There is
> > > > still a
> > > > > > > need
> > > > > > > > > for
> > > > > > > > > > a
> > > > > > > > > > > > > > variety of testing applications and bench-marking
> > > > > > > applications
> > > > > > > > > for
> > > > > > > > > > > > those
> > > > > > > > > > > > > > scenarios.
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > That makes sense, prerequisites would need to be
> > > > > > considered.
> > > > > > > I
> > > > > > > > > > think
> > > > > > > > > > > > > > targeting the low-hanging fruit of unit-testable
> > code
> > > > > would
> > > > > > > be
> > > > > > > > > easy
> > > > > > > > > > > in
> > > > > > > > > > > > > that
> > > > > > > > > > > > > > case, since prerequisites are mostly encoded in
> the
> > > > > Kconfig
> > > > > > > > > > > definitions
> > > > > > > > > > > > > > existing or not for features to be tested. Any
> > > complex
> > > > > > > > behaviour
> > > > > > > > > > > > > > (interrupts, multi-threading, etc.) might be out
> of
> > > the
> > > > > > realm
> > > > > > > > of
> > > > > > > > > > > what's
> > > > > > > > > > > > > > testable by Unity in the first place. We'll
> always
> > > have
> > > > > OS
> > > > > > > test
> > > > > > > > > in
> > > > > > > > > > > that
> > > > > > > > > > > > > > case, but maybe then it's better to do what Alan
> > > > > suggested
> > > > > > > and
> > > > > > > > at
> > > > > > > > > > > least
> > > > > > > > > > > > > > make its output more clear in the meantime. I
> > suppose
> > > > > RTOS
> > > > > > > > > testing
> > > > > > > > > > > is a
> > > > > > > > > > > > > > whole field in itself.
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > On Sun, Dec 21, 2025 at 8:40 PM Gregory Nutt <
> > > > > > > > > [email protected]>
> > > > > > > > > > > > > wrote:
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > > I think that the answer depends on a tradeoff
> > > between
> > > > > > > effort
> > > > > > > > > and
> > > > > > > > > > > test
> > > > > > > > > > > > > > > coverage.  I could imagine that a proper job
> > could
> > > be
> > > > > > > > man-years
> > > > > > > > > > of
> > > > > > > > > > > > > effort.
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > My only concern with a re-design is to be
> certain
> > > > that
> > > > > > > tests
> > > > > > > > > are
> > > > > > > > > > > > > > > arranged so that the prerequisites of later
> test
> > > are
> > > > > > tested
> > > > > > > > > > first.
> > > > > > > > > > > > If
> > > > > > > > > > > > > > > tests are grouped by, for example, functional
> > area,
> > > > > then
> > > > > > > > > failures
> > > > > > > > > > > can
> > > > > > > > > > > > > be
> > > > > > > > > > > > > > > difficult to understand if there is a failure
> in
> > an
> > > > > > > > unverified
> > > > > > > > > > test
> > > > > > > > > > > > > > > prerequisite.
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > Some of the "tests" are bogus and only exist to
> > > > provide
> > > > > > > some
> > > > > > > > > > > minimum
> > > > > > > > > > > > > > > confidence that we have the functionality to
> run
> > > the
> > > > > > test.
> > > > > > > > For
> > > > > > > > > > > > > > > example:  Can I start tasks?  Can I pass
> > > parameters?
> > > > > Can
> > > > > > I
> > > > > > > > > > survive
> > > > > > > > > > > a
> > > > > > > > > > > > > > > context switch.  Some of the tests were
> intended
> > > only
> > > > > to
> > > > > > > > > support
> > > > > > > > > > > > debug.
> > > > > > > > > > > > > > > Some were created only to track down specific
> > bugs.
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > On 12/21/25 18:39, Matteo Golin wrote:
> > > > > > > > > > > > > > > > LTS being the Long-Term-Stable release of
> > NuttX?
> > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > I'm starting to think that it would be best
> to
> > > > create
> > > > > > new
> > > > > > > > > suite
> > > > > > > > > > > of
> > > > > > > > > > > > > tests
> > > > > > > > > > > > > > > > using Unity, using what's in OS Test as a
> basis
> > > and
> > > > > > then
> > > > > > > > > > > expanding
> > > > > > > > > > > > it
> > > > > > > > > > > > > > > > further. Greg has pointed out that OS test is
> > not
> > > > > > > intended
> > > > > > > > to
> > > > > > > > > > be
> > > > > > > > > > > a
> > > > > > > > > > > > > > > complete
> > > > > > > > > > > > > > > > test, so maybe a more solid testing framework
> > > base
> > > > > in a
> > > > > > > new
> > > > > > > > > > form
> > > > > > > > > > > > > would be
> > > > > > > > > > > > > > > > in order. At that point it would also be good
> > to
> > > > > > document
> > > > > > > > and
> > > > > > > > > > > > educate
> > > > > > > > > > > > > > > users
> > > > > > > > > > > > > > > > about other test options, since OS test is a
> > > > current
> > > > > > > > > favourite
> > > > > > > > > > > for
> > > > > > > > > > > > > > > showing
> > > > > > > > > > > > > > > > PRs haven't broken anything. Maybe that's not
> > the
> > > > > best
> > > > > > > > choice
> > > > > > > > > > > > anymore
> > > > > > > > > > > > > > > with
> > > > > > > > > > > > > > > > this information.
> > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > I don't want to re-invent the wheel of what's
> > > > already
> > > > > > in
> > > > > > > > > > > > `testsuite`,
> > > > > > > > > > > > > > > but I
> > > > > > > > > > > > > > > > think Unity might end up being lighter-weight
> > in
> > > > the
> > > > > > long
> > > > > > > > > run?
> > > > > > > > > > > And
> > > > > > > > > > > > > it is
> > > > > > > > > > > > > > > > also not a Xiaomi owned/maintained framework
> so
> > > it
> > > > > may
> > > > > > > > > receive
> > > > > > > > > > > > better
> > > > > > > > > > > > > > > > external support (i.e. more users rely on
> > it?). I
> > > > > tried
> > > > > > > to
> > > > > > > > > > > compile
> > > > > > > > > > > > > the
> > > > > > > > > > > > > > > > sim:citest configuration to run the testsuite
> > > > example
> > > > > > and
> > > > > > > > see
> > > > > > > > > > > what
> > > > > > > > > > > > > it was
> > > > > > > > > > > > > > > > like, but I was met with a long list of C++
> > > > > compilation
> > > > > > > > > errors
> > > > > > > > > > > that
> > > > > > > > > > > > > I'd
> > > > > > > > > > > > > > > > rather not deal with. There also seems to be
> > zero
> > > > > docs
> > > > > > > > about
> > > > > > > > > it
> > > > > > > > > > > or
> > > > > > > > > > > > > cmocka
> > > > > > > > > > > > > > > > in our NuttX docs at the moment.
> > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > What do you think? Start a Unity test suite,
> > add
> > > > some
> > > > > > > > > switches
> > > > > > > > > > to
> > > > > > > > > > > > > choose
> > > > > > > > > > > > > > > > which test cases get compiled into the
> binary,
> > > open
> > > > > for
> > > > > > > > > > > extensions
> > > > > > > > > > > > by
> > > > > > > > > > > > > > > users
> > > > > > > > > > > > > > > > who know more about different subsystems?
> This
> > > way
> > > > we
> > > > > > can
> > > > > > > > > keep
> > > > > > > > > > OS
> > > > > > > > > > > > > test
> > > > > > > > > > > > > > > how
> > > > > > > > > > > > > > > > it is for a quick, low-resource sanity check
> of
> > > > > "board
> > > > > > > > > bringup"
> > > > > > > > > > > > while
> > > > > > > > > > > > > > > > having a dedicated testing application for
> > > patches?
> > > > > > > Someone
> > > > > > > > > > > > changing
> > > > > > > > > > > > > file
> > > > > > > > > > > > > > > > system stuff can just compile to include file
> > > > system
> > > > > > test
> > > > > > > > > cases
> > > > > > > > > > > and
> > > > > > > > > > > > > run
> > > > > > > > > > > > > > > > that suite only as proof that their PR works.
> > The
> > > > > > output
> > > > > > > is
> > > > > > > > > > > really
> > > > > > > > > > > > > easy
> > > > > > > > > > > > > > > to
> > > > > > > > > > > > > > > > glance at to determine pass/fail results.
> > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > Anyways, here's my draft demonstrating how
> > Unity
> > > > > works
> > > > > > > with
> > > > > > > > > the
> > > > > > > > > > > FPU
> > > > > > > > > > > > > test
> > > > > > > > > > > > > > > > suite from OS test:
> > > > > > > > > > > https://github.com/apache/nuttx-apps/pull/3259
> > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > Matteo
> > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > On Sun, Dec 21, 2025 at 7:13 PM Tomek CEDRO <
> > > > > > > > > [email protected]>
> > > > > > > > > > > > > wrote:
> > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > >> On Mon, Dec 22, 2025 at 1:02 AM Gregory
> Nutt <
> > > > > > > > > > > [email protected]
> > > > > > > > > > > > >
> > > > > > > > > > > > > > > wrote:
> > > > > > > > > > > > > > > >>> (..)
> > > > > > > > > > > > > > > >>> Starting with bits and pieces of something
> > like
> > > > the
> > > > > > LTS
> > > > > > > > > might
> > > > > > > > > > > > make
> > > > > > > > > > > > > more
> > > > > > > > > > > > > > > >>> sense other than its licensing problems.
> > Since
> > > > it
> > > > > > > would
> > > > > > > > > > never
> > > > > > > > > > > be
> > > > > > > > > > > > > > > >>> included in a distributed binary, the
> > licensing
> > > > > > really
> > > > > > > > > should
> > > > > > > > > > > not
> > > > > > > > > > > > > > > matter
> > > > > > > > > > > > > > > >>> much in practice.
> > > > > > > > > > > > > > > >> Unless its GPL and some company would like
> to
> > > have
> > > > > > their
> > > > > > > > own
> > > > > > > > > > > > > internal
> > > > > > > > > > > > > > > >> bits and pieces.. luckily its MIT and the
> > whole
> > > > > thing
> > > > > > is
> > > > > > > > > > > > open-source
> > > > > > > > > > > > > > > >> anyways :-)
> > > > > > > > > > > > > > > >>
> > > > > > > > > > > > > > > >> Yes we had many discussions about the LTS
> and
> > > this
> > > > > > could
> > > > > > > > be
> > > > > > > > > > > great
> > > > > > > > > > > > > start!
> > > > > > > > > > > > > > > >> :-)
> > > > > > > > > > > > > > > >>
> > > > > > > > > > > > > > > >> --
> > > > > > > > > > > > > > > >> CeDeROM, SQ7MHZ,
> http://www.tomek.cedro.info
> > > > > > > > > > > > > > > >>
> > > > > > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>

Reply via email to