Caution: Rant ahead.
Woah, look at this thing!
I’m currently toying with an embedded framework called PlatformIO.
It’s everything you expect from a cool modern framework. It has a cute logo, a nice Bootstrap web design, the whole nine yards.
Installing it is seamless and quick. It boasts a nice interface to install drivers for a number of popular embedded boards. It wants to be your one-stop framework for embedded development.
And it’s not doing badly at all: I could port a test project of mine in minutes, to the point where I could deploy it to Arduino. I was quite impressed.
So I decided I would go a step further and set up my entire project within PlatformIO. Unit tests, acceptance tests, static analysis, the works.
But don’t look too closely
Now here’s the catch: in order to test, I need to cross-compile my code for my development OS of choice (Linux, in my case). I may need to include a different set of libraries which contain e.g. mock hardware.
Just as importantly, I need to run my tests/analyses after I compile them. I might need to massage or collect results.
Turns out that PlatformIO is ill-equipped to help me do that.
There is a platformio run
target (which doesn’t run the program, but compiles it, but whatever), there’s platformio run --target upload
which uploads it to the target platform in the same step. That’s all very nice — but there is no hint of a platformio test
or similar command.
Why is testing still not even an afterthought
Now, of course I can shoehorn something which will give me the ability to run my tests — but this is the year 2016, and PlatformIO is not some hot-off-the-press MVP. It’s at version 2.3. I expect testing to be a first-class citizen of my development frameworks.
I expect it to be an obvious part of the CLI. I expect it to be a prominent chapter in the documentation. I expect it to be the next thing after hello world.
The only hint I can find is a vaguely listless discussion of a feature request on Github where they ponder adding something to do with testing into version 3.0.
You can’t be serious.
/Rant.