A lot of code has been written, and none of the LUA code written for OpenWRT/LEDE (at least on my knowledge) uses testing as a way of verifying the quality of the code.
I want to use this approach as it has proven useful for other projects.
If you are interested in understanding what TDD is, here there is a little excerpt from one of Uncle Bob’s explanations of how TDD works: https://www.youtube.com/watch?v=GvAzrC6-spQ
In order to do testing on this platforms, the library should not require LuaROCKS (because the default development environment does not require it).
Let’s see what LUA has to offer in this area.
Lua Unit Testing Libraries
Thankfully, Lua wiki is an amazing source of information. You can find information about unit testing over here: http://lua-users.org/wiki/UnitTesting
There are many Lua Unit Testing libraries, but for what I understood the most used is Luauit, so I will try to work on an example and share it with you ASAP.
Lunitx: a good contender
There is also a guy that did a review on the available tools: http://web.archive.org/web/20141028091215/blog.octetcloud.com/?p=32
His concern was not in the context of OpenWRT/LEDE, so there are things that need to be considered that don’t apply for him.
He basically saw that lunit was good, but needed some tweaks, to he forked it into lunitx… which was forked again and this is the outcome: https://github.com/dcurrie/lunit
Conclusions
These seems to be the mos viable options.
I’ll be testing these during the next days.
If you have any suggestion or comment, please leave it below.
I’ve used luaunit which is very nice:
https://github.com/openwisp/openwisp-config/blob/master/openwisp-config/tests/test_utils.lua
I will try that then… thank you Federico!
Federico, one question…
You are implementing test, but the makefile says nothing about the tests.
How do you run the tests? and couldn’t this be integrated in the build pipeline (and optionally turn them on/off)?