This post describes how to use GitHub, Travis CI, and PlatformIO to automatically test build Arduino libraries.
Modern languages and frameworks typically have mature, well-developed facilities for performing unit, integration, and functional testing. The Arduino/C++ platform is not as well-developed in terms of automated testing. Developers traditionally rely on manual testing of libraries (build via Arduino IDE) which is slow, prone to human error, and limit the ability to test against multiple hardware architectures.
As a project owner
I want my library to compile cleanly for multiple boards
So that it may be used on a wide variety of hardware
This post describes how to leverage Chef and Test Kitchen to create a pristine virtual machine from which to create an RPM package.
I needed customized versions of the FcgiWrap and Postfix RPM packages and preferred to develop a method that would allow me to periodically update the packages as new versions of the upstream source were released. Vagrant is a great tool for managing virtual machines and I was originally going to use this to provision a new VM to build the packages. I developed Chef cookbooks to provision the VMs, and while developing integration tests for the provisioners, I realized that it was more effective to use Test Kitchen to build and test my VMs (which itself uses Vagrant).
The following post describes how to mount a remote file system over ssh on Mac OS X 10.9.2. With minor modifications, the same thing can be achieved on other platforms.
I recently needed to manipulate a sqlite database on a virtual machine and my gui tool lacked the ability to tunnel over ssh.
Enter sshfs: Secure SHell FileSystem – a file system for Linux (and other operating systems with a FUSE implementation, such as Mac OS X or FreeBSD) capable of operating on files on a remote computer using just a secure shell login on the remote computer.
It often happens that while working on one project, you need to use another project from within it. Perhaps it’s a library that a third party developed or that you’re developing separately and using in multiple parent projects. A common issue arises in these scenarios: you want to be able to treat the two projects as separate yet still be able to use one from within the other.
I frequently need to look up the exact series of commands remove a git submodule. This post is primarily for my convenience, but may be useful to others as well.