Yes, that is a good idea!

On Mon, Dec 22, 2025 at 5:56 PM Matteo Golin <[email protected]> wrote:

> 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