I was wondering if ostest is even supposed to work on AVR so I gave it a try... it didn't do much, the only result I got when I ran ostest from NSH was:

stdio_test: write fd=1
stdio_test: write fd=2

And that's it.

(There may be something wrong with printf when the application gets executed through NSH though - just noticed that my other testing apps also print nothing when executed from NSH while being able to printf when executed as init entrypoint. Will try to update apps to something more recent but if anyone has any idea what may be causing this, it would be appreciated.)

Anyway, the compilation also throws a lot of warnings, for example

semtimed.c:87:32: warning: integer overflow in expression of type ‘int’ results in ‘16960’ [-Woverflow]
   87 |            tp->tv_nsec >= 1000 * 1000 * 1000)

and there are also warnings regarding to size mismatch in pointer/integer conversion.

So it may be that ostest doesn't work well for AVR (and probably for other 8 bit MCUs) already. It also already barely fits the flash of the largest AVR DA chip.

(Not suggesting to make it even more faulty, just mentioning it FYI.)

On 2025-12-22 13:35, Alan C. Assis wrote:
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