I think I will try to make a version of the sample I wrote which uses
cmocka to compare a bit better and report back.

On Mon, Dec 22, 2025 at 1:28 PM Alan C. Assis <[email protected]> wrote:

> Hi Pierre-Noel,
>
> The instructions are here: https://nuttx.apache.org/community/
>
> We are glad for all the things you did for NuttX (EFM32 port, ESP8266,
> etc.)
>
> Thank you very much!
>
> BR,
>
> Alan
>
> On Mon, Dec 22, 2025 at 3:16 PM Pierre-Noel Bouteville <[email protected]
> >
> wrote:
>
> > How to unsbcribe?
> > Pierre-Noël Bouteville
> > Envoyé de mon iPhone
> >
> > > Le 22 déc. 2025 à 19:13, raiden00pl <[email protected]> a écrit :
> > >
> > > Cmocka tests can run on any target. It doesn't matter if it's sim,
> qemu
> > or
> > > real hardware.
> > > You just need to prepare a defconfig and have the right amount of
> FLASH.
> > >
> > > For small systems we can always try to reduce the size of the cmock,
> e.g.
> > > by disabling
> > > unnecessary prints. I doubt that the logic of running tests in cmoka is
> > > heavy, running
> > > test cases are not a complicated operation, I think most of the
> required
> > > FLASH is wasted
> > > on strings.
> > >
> > > NTFC supports serial port communication and sample test scenario based
> on
> > > nucleo-h743z
> > > with cmocka tests enabled. The only thing missing for full test
> > automation
> > > (compile, flash,
> > > test, result) is cmake support for testsuites.
> > >
> > > pon., 22 gru 2025 o 18:08 Matteo Golin <[email protected]>
> > napisał(a):
> > >
> > >> 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.
> > >> 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.
> > >>
> > >> 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
> > >>
> > >> 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