Join my daily Newsletter

Subscribe to get my latest content by email.

    I respect your privacy. Unsubscribe at any time.

    preloader

    They still don’t get it (PlatformIO edition)

    • Thursday, May 5, 2016
    blog-image

    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.