From a087a19f7f0afd31e904ae9f311428f6900fc494 Mon Sep 17 00:00:00 2001
From: Ian Katz <ianfixes@gmail.com>
Date: Mon, 31 Dec 2018 09:17:48 -0500
Subject: [PATCH 1/6] Allow directory names to contain spaces

---
 CHANGELOG.md                  | 1 +
 lib/arduino_ci/cpp_library.rb | 3 ++-
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 359c9504..17bba6da 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -14,6 +14,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
 ### Removed
 
 ### Fixed
+- Spaces in the names of project directores no longer cause unit test binaries to fail execution
 
 ### Security
 
diff --git a/lib/arduino_ci/cpp_library.rb b/lib/arduino_ci/cpp_library.rb
index 16964e47..ed338a9e 100644
--- a/lib/arduino_ci/cpp_library.rb
+++ b/lib/arduino_ci/cpp_library.rb
@@ -1,6 +1,7 @@
 require 'find'
 require "arduino_ci/host"
 require 'pathname'
+require 'shellwords'
 
 HPP_EXTENSIONS = [".hpp", ".hh", ".h", ".hxx", ".h++"].freeze
 CPP_EXTENSIONS = [".cpp", ".cc", ".c", ".cxx", ".c++"].freeze
@@ -287,7 +288,7 @@ def run_test_file(executable)
       @last_cmd = executable
       @last_out = ""
       @last_err = ""
-      Host.run_and_output(executable.to_s)
+      Host.run_and_output(executable.to_s.shellescape)
     end
 
   end

From c4c1691854c69ba8cef1be7143f2769a6be9a586 Mon Sep 17 00:00:00 2001
From: Ian Katz <ianfixes@gmail.com>
Date: Mon, 31 Dec 2018 09:19:00 -0500
Subject: [PATCH 2/6] Allow overriding (with unsetting) in config files

---
 CHANGELOG.md                | 1 +
 lib/arduino_ci/ci_config.rb | 2 +-
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 17bba6da..30c6940c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -15,6 +15,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
 
 ### Fixed
 - Spaces in the names of project directores no longer cause unit test binaries to fail execution
+- Configuration file overrides with `nil`s (or empty arrays) now properly override their base configuration
 
 ### Security
 
diff --git a/lib/arduino_ci/ci_config.rb b/lib/arduino_ci/ci_config.rb
index dca697e1..25165be9 100644
--- a/lib/arduino_ci/ci_config.rb
+++ b/lib/arduino_ci/ci_config.rb
@@ -93,7 +93,7 @@ def validate_data(rootname, source, schema)
         if !schema.include?(ksym)
           puts "Warning: unknown field '#{ksym}' under definition for #{rootname}"
         elsif value.nil?
-          # unspecificed, that's fine
+          good_data[ksym] = nil
         elsif value.class != expected_type
           puts "Warning: expected field '#{ksym}' of #{rootname} to be '#{expected_type}', got '#{value.class}'"
         else

From 6f9bc67c0c262efc5924f74c988926cfd3b8e019 Mon Sep 17 00:00:00 2001
From: Ian Katz <ianfixes@gmail.com>
Date: Mon, 31 Dec 2018 09:21:19 -0500
Subject: [PATCH 3/6] Don't look for platform examples if no platforms are
 requested for building

---
 CHANGELOG.md             | 1 +
 exe/arduino_ci_remote.rb | 7 +++++--
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 30c6940c..4877bea1 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,6 +6,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
 
 ## [Unreleased]
 ### Added
+- Checking for (empty) set of platforms to build now precedes the check for examples to build; this avoids assuming that all libraries will have an example and dumping the file set when none are found
 
 ### Changed
 
diff --git a/exe/arduino_ci_remote.rb b/exe/arduino_ci_remote.rb
index e7e8a8d9..c50a4590 100755
--- a/exe/arduino_ci_remote.rb
+++ b/exe/arduino_ci_remote.rb
@@ -263,8 +263,11 @@ def display_files(pathname)
   end
 end
 
-if library_examples.empty?
-  inform_multiline("Skipping libraries; no examples found in #{installed_library_path}") do
+puts "config.platforms_to_build : #{config.platforms_to_build}"
+if config.platforms_to_build.empty?
+  inform("Skipping builds") { "no platforms were requested" }
+elsif library_examples.empty?
+  inform_multiline("Skipping builds; no examples found in #{installed_library_path}") do
     display_files(installed_library_path)
   end
 else

From d05cdca5c7a94eba399235685d1d6bc55401ac29 Mon Sep 17 00:00:00 2001
From: Ian Katz <ianfixes@gmail.com>
Date: Wed, 2 Jan 2019 10:14:10 -0500
Subject: [PATCH 4/6] Remove extraneous debug line

---
 exe/arduino_ci_remote.rb | 1 -
 1 file changed, 1 deletion(-)

diff --git a/exe/arduino_ci_remote.rb b/exe/arduino_ci_remote.rb
index c50a4590..63d04c99 100755
--- a/exe/arduino_ci_remote.rb
+++ b/exe/arduino_ci_remote.rb
@@ -263,7 +263,6 @@ def display_files(pathname)
   end
 end
 
-puts "config.platforms_to_build : #{config.platforms_to_build}"
 if config.platforms_to_build.empty?
   inform("Skipping builds") { "no platforms were requested" }
 elsif library_examples.empty?

From 3d989f40ddf56cf1fa9f33a9c035dc8498198d34 Mon Sep 17 00:00:00 2001
From: Ian Katz <ianfixes@gmail.com>
Date: Fri, 4 Jan 2019 15:37:35 -0500
Subject: [PATCH 5/6] more documentation on pin history

---
 REFERENCE.md | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/REFERENCE.md b/REFERENCE.md
index ef4f177b..2aaae553 100644
--- a/REFERENCE.md
+++ b/REFERENCE.md
@@ -174,12 +174,16 @@ unittest(pin_history)
   digitalWrite(myPin, HIGH);
 
   // pin history is queued in case we want to analyze it later.
-  // we expect 6 values in that queue.
+  // we expect 6 values in that queue (5 that we set plus one
+  // initial value), which we'll hard-code here for convenience.
+  // (we'll actually assert those 6 values in the next block)
   assertEqual(6, state->digitalPin[1].size());
   bool expected[6] = {LOW, HIGH, LOW, LOW, HIGH, HIGH};
   bool actual[6];
 
-  // convert history queue into an array so we can verify it
+  // convert history queue into an array so we can verify it.
+  // while we're at it, check that we received the amount of
+  // elements that we expected.
   int numMoved = state->digitalPin[myPin].toArray(actual, 6);
   assertEqual(6, numMoved);
 

From 80cbfa8d2b4f18a1fb3e71ac641cf473e0f27d2d Mon Sep 17 00:00:00 2001
From: Ian Katz <ianfixes@gmail.com>
Date: Fri, 4 Jan 2019 15:45:39 -0500
Subject: [PATCH 6/6] v0.1.15 bump

---
 CHANGELOG.md              | 15 +++++++++++----
 README.md                 |  2 +-
 lib/arduino_ci/version.rb |  2 +-
 3 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 4877bea1..bbeee6fa 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,7 +6,6 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
 
 ## [Unreleased]
 ### Added
-- Checking for (empty) set of platforms to build now precedes the check for examples to build; this avoids assuming that all libraries will have an example and dumping the file set when none are found
 
 ### Changed
 
@@ -15,12 +14,19 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
 ### Removed
 
 ### Fixed
-- Spaces in the names of project directores no longer cause unit test binaries to fail execution
-- Configuration file overrides with `nil`s (or empty arrays) now properly override their base configuration
 
 ### Security
 
 
+## [0.1.15] - 2019-01-04
+### Added
+- Checking for (empty) set of platforms to build now precedes the check for examples to build; this avoids assuming that all libraries will have an example and dumping the file set when none are found
+
+### Fixed
+- Spaces in the names of project directores no longer cause unit test binaries to fail execution
+- Configuration file overrides with `nil`s (or empty arrays) now properly override their base configuration
+
+
 ## [0.1.14] - 2018-09-21
 ### Added
 - Arduino command wrapper now natively supports board manager URLs
@@ -257,7 +263,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
 - Skeleton for gem with working unit tests
 
 
-[Unreleased]: https://github.com/ianfixes/arduino_ci/compare/v0.1.14...HEAD
+[Unreleased]: https://github.com/ianfixes/arduino_ci/compare/v0.1.15...HEAD
+[0.1.15]: https://github.com/ianfixes/arduino_ci/compare/v0.1.14...v0.1.15
 [0.1.14]: https://github.com/ianfixes/arduino_ci/compare/v0.1.13...v0.1.14
 [0.1.13]: https://github.com/ianfixes/arduino_ci/compare/v0.1.12...v0.1.13
 [0.1.12]: https://github.com/ianfixes/arduino_ci/compare/v0.1.11...v0.1.12
diff --git a/README.md b/README.md
index 17a415b1..8e87848c 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
 
-# ArduinoCI Ruby gem (`arduino_ci`) [![Gem Version](https://badge.fury.io/rb/arduino_ci.svg)](https://rubygems.org/gems/arduino_ci) [![Documentation](http://img.shields.io/badge/docs-rdoc.info-blue.svg)](http://www.rubydoc.info/gems/arduino_ci/0.1.14)
+# ArduinoCI Ruby gem (`arduino_ci`) [![Gem Version](https://badge.fury.io/rb/arduino_ci.svg)](https://rubygems.org/gems/arduino_ci) [![Documentation](http://img.shields.io/badge/docs-rdoc.info-blue.svg)](http://www.rubydoc.info/gems/arduino_ci/0.1.15)
 
 You want your Arduino library to be automatically built and tested every time someone contributes code to your project on GitHub, but the Arduino IDE lacks the ability to run unit tests. [Arduino CI](https://github.com/ianfixes/arduino_ci) provides that ability.
 
diff --git a/lib/arduino_ci/version.rb b/lib/arduino_ci/version.rb
index 30ead803..0fd92a3c 100644
--- a/lib/arduino_ci/version.rb
+++ b/lib/arduino_ci/version.rb
@@ -1,3 +1,3 @@
 module ArduinoCI
-  VERSION = "0.1.14".freeze
+  VERSION = "0.1.15".freeze
 end