arduino-ci / arduino_ci Goto Github PK
View Code? Open in Web Editor NEWUnit testing and Continuous Integration (CI) for Arduino libraries, from a Ruby gem
License: Apache License 2.0
Unit testing and Continuous Integration (CI) for Arduino libraries, from a Ruby gem
License: Apache License 2.0
Hello,
it seems that unit tests are executed with filenames alphabetically sorted... but examples
are not compiled alphabetically sorted.
See this build
https://travis-ci.com/scls19fr/mwe_arduino_ci/builds/97293666#L748-L752
Kind regards
It's time to add Windows as a supported OS. There should be no technical limitation here beyond the difficulty of developing it without a Windows machine (relying instead on Appveyor directly).
At the moment, that failure due to lack of OS support (originally raised by @tomduff) is expressed in this form:
C:\User\someone\GitHub\arduino_ci\SampleProjects\DoSomething>bundle exec arduino_ci_remote.rb
Installing library under test... Traceback (most recent call last):
5: from C:/Ruby25-x64/lib/ruby/gems/2.5.0/bin/arduino_ci_remote.rb:23:in `<main>'
4: from C:/Ruby25-x64/lib/ruby/gems/2.5.0/bin/arduino_ci_remote.rb:23:in `load'
3: from C:/User/someone/Documents/GitHub/arduino_ci/exe/arduino_ci_remote.rb:66:in `<top (required)>'
2: from C:/User/someone/Documents/GitHub/arduino_ci/exe/arduino_ci_remote.rb:58:in `assure'
1: from C:/User/someone/Documents/GitHub/arduino_ci/exe/arduino_ci_remote.rb:32:in `perform_action'
C:/User/someone/GitHub/arduino_ci/exe/arduino_ci_remote.rb:66:in `block in <top (required)>': undefined method `install_local_library' for nil:NilClass (NoMethodError)
Hello,
I'm trying Arduino_CI on a different system (at work)...
I can't really understand what's going on...
(installing all this is a pain with Windows...)
Here is my install procedure:
Install Ruby (I choosed https://rubyinstaller.org/downloads/ Ruby+Devkit 2.5.3-1 (x64))
Install MinGW http://www.mingw.org/ to have gcc / g++
Add C:\MinGW\bin to PATH to have g++ available from any directory
gem install --http-proxy http://cache.mydomain.fr:3128 bundler
cd my_project
bundle install
(after setting http_proxy variable... which is a bit different depending if you are doing this on Git Bash or on Windows command terminal cmd)
Feel free to delete this section if you're submitting a feature request
OS: Windows 7 Pro - SP1
ruby -v
:
ruby 2.5.3p105 (2018-10-18 revision 65156) [x64-mingw32]
bundle -v
:
Bundler version 2.0.1
bundle info arduino_ci
:
* arduino_ci (0.1.16)
Summary: Tools for building and unit testing Arduino libraries
Homepage: http://github.com/ianfixes/arduino_ci
Path: C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16
g++ -v
:$ g++ -v
Using built-in specs.
COLLECT_GCC=C:\MinGW\bin\g++.exe
COLLECT_LTO_WRAPPER=c:/mingw/bin/../libexec/gcc/mingw32/8.2.0/lto-wrapper.exe
Target: mingw32
Configured with: ../src/gcc-8.2.0/configure --build=x86_64-pc-linux-gnu --host=mingw32 --target=mingw32 --prefix=/mingw --disable-win32-registry --with-arch=i586 --with-tune=generic --enable-languages=c,c++,objc,obj-c++,fortran,ada --with-pkgversion='MinGW.org GCC-8.2.0-1' --with-gmp=/mingw --with-mpfr=/mingw --with-mpc=/mingw --enable-static --enable-shared --enable-threads --with-dwarf2 --disable-sjlj-exceptions --enable-version-specific-runtime-libs --with-libiconv-prefix=/mingw --with-libintl-prefix=/mingw --enable-libstdcxx-debug --with-isl=/mingw --enable-libgomp --disable-libvtv --enable-nls --disable-build-format-warnings
Thread model: win32
gcc version 8.2.0 (MinGW.org GCC-8.2.0-1)
java -version
: can't find java executable... but Arduino IDE is running (fine)$ bundle exec arduino_ci_remote.rb
Located Arduino binary... C:\Program Files (x86)\Arduino/arduino_debug.exe
The set of compilers (1) isn't empty... ✓
Checking g++ version...
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=c:/mingw/bin/../libexec/gcc/mingw32/8.2.0/lto-wrapper.exe
Target: mingw32
Configured with: ../src/gcc-8.2.0/configure --build=x86_64-pc-linux-gnu --host=mingw32 --target=mingw32 --prefix=/mingw --disable-win32-registry --with-arch=i586 --with-tune=generic --enable-languages=c,c++,objc,obj-c++,fortran,ada --with-pkgversion='MinGW.org GCC-8.2.0-1' --with-gmp=/mingw --with-mpfr=/mingw --with-mpc=/mingw --enable-static --enable-shared --enable-threads --with-dwarf2 --disable-sjlj-exceptions --enable-version-specific-runtime-libs --with-libiconv-prefix=/mingw --with-libintl-prefix=/mingw --enable-libstdcxx-debug --with-isl=/mingw --enable-libgomp --disable-libvtv --enable-nls --disable-build-format-warnings
Thread model: win32
gcc version 8.2.0 (MinGW.org GCC-8.2.0-1)
...Checking g++ version ✓
libasan availability for g++... false
Requested unittest platform 'uno' is defined in 'platforms' YML... ✓
Unit testing test_application.cpp with g++...
Last command: $ g++ -std=c++0x -o U:/github/scls19fr/gokart_multilaptimer/unittest_test_application.cpp.bin -DARDUINO=100 -D__AVR_ATmega328P__ -IC:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/arduino -IC:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/unittest -IU:/github/scls19fr/gokart_multilaptimer/multilaptimer C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/arduino/Arduino.cpp C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/arduino/Godmode.cpp C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/unittest/ArduinoUnitTests.cpp U:/github/scls19fr/gokart_multilaptimer/multilaptimer/application.cpp U:/github/scls19fr/gokart_multilaptimer/multilaptimer/laptimer.cpp U:/github/scls19fr/gokart_multilaptimer/multilaptimer/utils.cpp U:/github/scls19fr/gokart_multilaptimer/test/test_application.cpp
In file included from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\cstdio:42,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\ext\string_conversions.h:43,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\bits\basic_string.h:6391,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\string:52,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\stdexcept:39,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/arduino/WString.h:4,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/arduino/Godmode.h:4,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/arduino/Arduino.cpp:1:
c:\mingw\include\stdio.h:788:34: error: '__off64_t' does not name a type; did you mean '__time64_t'?
typedef union { __int64 __value; __off64_t __offset; } fpos_t;
^~~~~~~~~
__time64_t
In file included from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\cstdio:42,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\ext\string_conversions.h:43,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\bits\basic_string.h:6391,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\string:52,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\stdexcept:39,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/arduino/WString.h:4,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/arduino/Godmode.h:4,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/arduino/Godmode.cpp:1:
c:\mingw\include\stdio.h:788:34: error: '__off64_t' does not name a type; did you mean '__time64_t'?
typedef union { __int64 __value; __off64_t __offset; } fpos_t;
^~~~~~~~~
__time64_t
In file included from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\cstdio:42,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\ext\string_conversions.h:43,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\bits\basic_string.h:6391,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\string:52,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\stdexcept:39,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/arduino/WString.h:4,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/unittest/Compare.h:3,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/unittest/Assertion.h:7,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/unittest/ArduinoUnitTests.h:3,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/unittest/ArduinoUnitTests.cpp:1:
c:\mingw\include\stdio.h:788:34: error: '__off64_t' does not name a type; did you mean '__time64_t'?
typedef union { __int64 __value; __off64_t __offset; } fpos_t;
^~~~~~~~~
__time64_t
In file included from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\cstdio:42,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\ext\string_conversions.h:43,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\bits\basic_string.h:6391,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\string:52,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\stdexcept:39,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/arduino/WString.h:4,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/arduino/Arduino.h:13,
from U:/github/scls19fr/gokart_multilaptimer/multilaptimer/application.cpp:1:
c:\mingw\include\stdio.h:788:34: error: '__off64_t' does not name a type; did you mean '__time64_t'?
typedef union { __int64 __value; __off64_t __offset; } fpos_t;
^~~~~~~~~
__time64_t
In file included from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\cstdio:42,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\ext\string_conversions.h:43,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\bits\basic_string.h:6391,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\string:52,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\stdexcept:39,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/arduino/WString.h:4,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/arduino/Arduino.h:13,
from U:/github/scls19fr/gokart_multilaptimer/multilaptimer/laptimer.cpp:1:
c:\mingw\include\stdio.h:788:34: error: '__off64_t' does not name a type; did you mean '__time64_t'?
typedef union { __int64 __value; __off64_t __offset; } fpos_t;
^~~~~~~~~
__time64_t
In file included from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\cstdio:42,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\ext\string_conversions.h:43,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\bits\basic_string.h:6391,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\string:52,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\stdexcept:39,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/arduino/WString.h:4,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/arduino/Arduino.h:13,
from U:/github/scls19fr/gokart_multilaptimer/multilaptimer/utils.h:4,
from U:/github/scls19fr/gokart_multilaptimer/multilaptimer/utils.cpp:1:
c:\mingw\include\stdio.h:788:34: error: '__off64_t' does not name a type; did you mean '__time64_t'?
typedef union { __int64 __value; __off64_t __offset; } fpos_t;
^~~~~~~~~
__time64_t
In file included from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\cstdio:42,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\ext\string_conversions.h:43,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\bits\basic_string.h:6391,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\string:52,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\stdexcept:39,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/arduino/WString.h:4,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/unittest/Compare.h:3,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/unittest/Assertion.h:7,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/unittest/ArduinoUnitTests.h:3,
from U:/github/scls19fr/gokart_multilaptimer/test/test_application.cpp:1:
c:\mingw\include\stdio.h:788:34: error: '__off64_t' does not name a type; did you mean '__time64_t'?
typedef union { __int64 __value; __off64_t __offset; } fpos_t;
^~~~~~~~~
__time64_t
...Unit testing test_application.cpp with g++ ✗
Unit testing test_laptimer.cpp with g++...
Last command: $ g++ -std=c++0x -o U:/github/scls19fr/gokart_multilaptimer/unittest_test_laptimer.cpp.bin -DARDUINO=100 -D__AVR_ATmega328P__ -IC:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/arduino -IC:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/unittest -IU:/github/scls19fr/gokart_multilaptimer/multilaptimer C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/arduino/Arduino.cpp C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/arduino/Godmode.cpp C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/unittest/ArduinoUnitTests.cpp U:/github/scls19fr/gokart_multilaptimer/multilaptimer/application.cpp U:/github/scls19fr/gokart_multilaptimer/multilaptimer/laptimer.cpp U:/github/scls19fr/gokart_multilaptimer/multilaptimer/utils.cpp U:/github/scls19fr/gokart_multilaptimer/test/test_laptimer.cpp
In file included from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\cstdio:42,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\ext\string_conversions.h:43,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\bits\basic_string.h:6391,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\string:52,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\stdexcept:39,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/arduino/WString.h:4,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/arduino/Godmode.h:4,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/arduino/Arduino.cpp:1:
c:\mingw\include\stdio.h:788:34: error: '__off64_t' does not name a type; did you mean '__time64_t'?
typedef union { __int64 __value; __off64_t __offset; } fpos_t;
^~~~~~~~~
__time64_t
In file included from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\cstdio:42,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\ext\string_conversions.h:43,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\bits\basic_string.h:6391,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\string:52,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\stdexcept:39,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/arduino/WString.h:4,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/arduino/Godmode.h:4,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/arduino/Godmode.cpp:1:
c:\mingw\include\stdio.h:788:34: error: '__off64_t' does not name a type; did you mean '__time64_t'?
typedef union { __int64 __value; __off64_t __offset; } fpos_t;
^~~~~~~~~
__time64_t
In file included from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\cstdio:42,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\ext\string_conversions.h:43,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\bits\basic_string.h:6391,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\string:52,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\stdexcept:39,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/arduino/WString.h:4,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/unittest/Compare.h:3,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/unittest/Assertion.h:7,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/unittest/ArduinoUnitTests.h:3,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/unittest/ArduinoUnitTests.cpp:1:
c:\mingw\include\stdio.h:788:34: error: '__off64_t' does not name a type; did you mean '__time64_t'?
typedef union { __int64 __value; __off64_t __offset; } fpos_t;
^~~~~~~~~
__time64_t
In file included from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\cstdio:42,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\ext\string_conversions.h:43,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\bits\basic_string.h:6391,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\string:52,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\stdexcept:39,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/arduino/WString.h:4,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/arduino/Arduino.h:13,
from U:/github/scls19fr/gokart_multilaptimer/multilaptimer/application.cpp:1:
c:\mingw\include\stdio.h:788:34: error: '__off64_t' does not name a type; did you mean '__time64_t'?
typedef union { __int64 __value; __off64_t __offset; } fpos_t;
^~~~~~~~~
__time64_t
In file included from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\cstdio:42,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\ext\string_conversions.h:43,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\bits\basic_string.h:6391,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\string:52,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\stdexcept:39,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/arduino/WString.h:4,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/arduino/Arduino.h:13,
from U:/github/scls19fr/gokart_multilaptimer/multilaptimer/laptimer.cpp:1:
c:\mingw\include\stdio.h:788:34: error: '__off64_t' does not name a type; did you mean '__time64_t'?
typedef union { __int64 __value; __off64_t __offset; } fpos_t;
^~~~~~~~~
__time64_t
In file included from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\cstdio:42,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\ext\string_conversions.h:43,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\bits\basic_string.h:6391,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\string:52,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\stdexcept:39,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/arduino/WString.h:4,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/arduino/Arduino.h:13,
from U:/github/scls19fr/gokart_multilaptimer/multilaptimer/utils.h:4,
from U:/github/scls19fr/gokart_multilaptimer/multilaptimer/utils.cpp:1:
c:\mingw\include\stdio.h:788:34: error: '__off64_t' does not name a type; did you mean '__time64_t'?
typedef union { __int64 __value; __off64_t __offset; } fpos_t;
^~~~~~~~~
__time64_t
In file included from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\cstdio:42,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\ext\string_conversions.h:43,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\bits\basic_string.h:6391,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\string:52,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\stdexcept:39,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/arduino/WString.h:4,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/unittest/Compare.h:3,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/unittest/Assertion.h:7,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/unittest/ArduinoUnitTests.h:3,
from U:/github/scls19fr/gokart_multilaptimer/test/test_laptimer.cpp:1:
c:\mingw\include\stdio.h:788:34: error: '__off64_t' does not name a type; did you mean '__time64_t'?
typedef union { __int64 __value; __off64_t __offset; } fpos_t;
^~~~~~~~~
__time64_t
...Unit testing test_laptimer.cpp with g++ ✗
Unit testing test_utils.cpp with g++...
Last command: $ g++ -std=c++0x -o U:/github/scls19fr/gokart_multilaptimer/unittest_test_utils.cpp.bin -DARDUINO=100 -D__AVR_ATmega328P__ -IC:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/arduino -IC:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/unittest -IU:/github/scls19fr/gokart_multilaptimer/multilaptimer C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/arduino/Arduino.cpp C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/arduino/Godmode.cpp C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/unittest/ArduinoUnitTests.cpp U:/github/scls19fr/gokart_multilaptimer/multilaptimer/application.cpp U:/github/scls19fr/gokart_multilaptimer/multilaptimer/laptimer.cpp U:/github/scls19fr/gokart_multilaptimer/multilaptimer/utils.cpp U:/github/scls19fr/gokart_multilaptimer/test/test_utils.cpp
In file included from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\cstdio:42,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\ext\string_conversions.h:43,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\bits\basic_string.h:6391,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\string:52,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\stdexcept:39,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/arduino/WString.h:4,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/arduino/Godmode.h:4,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/arduino/Arduino.cpp:1:
c:\mingw\include\stdio.h:788:34: error: '__off64_t' does not name a type; did you mean '__time64_t'?
typedef union { __int64 __value; __off64_t __offset; } fpos_t;
^~~~~~~~~
__time64_t
In file included from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\cstdio:42,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\ext\string_conversions.h:43,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\bits\basic_string.h:6391,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\string:52,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\stdexcept:39,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/arduino/WString.h:4,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/arduino/Godmode.h:4,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/arduino/Godmode.cpp:1:
c:\mingw\include\stdio.h:788:34: error: '__off64_t' does not name a type; did you mean '__time64_t'?
typedef union { __int64 __value; __off64_t __offset; } fpos_t;
^~~~~~~~~
__time64_t
In file included from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\cstdio:42,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\ext\string_conversions.h:43,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\bits\basic_string.h:6391,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\string:52,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\stdexcept:39,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/arduino/WString.h:4,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/unittest/Compare.h:3,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/unittest/Assertion.h:7,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/unittest/ArduinoUnitTests.h:3,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/unittest/ArduinoUnitTests.cpp:1:
c:\mingw\include\stdio.h:788:34: error: '__off64_t' does not name a type; did you mean '__time64_t'?
typedef union { __int64 __value; __off64_t __offset; } fpos_t;
^~~~~~~~~
__time64_t
In file included from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\cstdio:42,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\ext\string_conversions.h:43,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\bits\basic_string.h:6391,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\string:52,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\stdexcept:39,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/arduino/WString.h:4,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/arduino/Arduino.h:13,
from U:/github/scls19fr/gokart_multilaptimer/multilaptimer/application.cpp:1:
c:\mingw\include\stdio.h:788:34: error: '__off64_t' does not name a type; did you mean '__time64_t'?
typedef union { __int64 __value; __off64_t __offset; } fpos_t;
^~~~~~~~~
__time64_t
In file included from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\cstdio:42,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\ext\string_conversions.h:43,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\bits\basic_string.h:6391,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\string:52,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\stdexcept:39,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/arduino/WString.h:4,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/arduino/Arduino.h:13,
from U:/github/scls19fr/gokart_multilaptimer/multilaptimer/laptimer.cpp:1:
c:\mingw\include\stdio.h:788:34: error: '__off64_t' does not name a type; did you mean '__time64_t'?
typedef union { __int64 __value; __off64_t __offset; } fpos_t;
^~~~~~~~~
__time64_t
In file included from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\cstdio:42,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\ext\string_conversions.h:43,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\bits\basic_string.h:6391,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\string:52,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\stdexcept:39,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/arduino/WString.h:4,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/arduino/Arduino.h:13,
from U:/github/scls19fr/gokart_multilaptimer/multilaptimer/utils.h:4,
from U:/github/scls19fr/gokart_multilaptimer/multilaptimer/utils.cpp:1:
c:\mingw\include\stdio.h:788:34: error: '__off64_t' does not name a type; did you mean '__time64_t'?
typedef union { __int64 __value; __off64_t __offset; } fpos_t;
^~~~~~~~~
__time64_t
In file included from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\cstdio:42,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\ext\string_conversions.h:43,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\bits\basic_string.h:6391,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\string:52,
from c:\mingw\lib\gcc\mingw32\8.2.0\include\c++\stdexcept:39,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/arduino/WString.h:4,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/unittest/Compare.h:3,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/unittest/Assertion.h:7,
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/arduino_ci-0.1.16/cpp/unittest/ArduinoUnitTests.h:3,
from U:/github/scls19fr/gokart_multilaptimer/test/test_utils.cpp:1:
c:\mingw\include\stdio.h:788:34: error: '__off64_t' does not name a type; did you mean '__time64_t'?
typedef union { __int64 __value; __off64_t __offset; } fpos_t;
^~~~~~~~~
__time64_t
...Unit testing test_utils.cpp with g++ ✗
Indexing libraries... ✓
Installing library under test... ✓
Library installed successfully...
C:\Users\scelles\Documents\Arduino/libraries/Adafruit_Circuit_Playground/Adafruit_CircuitPlayground.cpp
(skipped)
C:\Users\scelles\Documents\Arduino/libraries/USBHost/README.adoc
C:\Users\scelles\Documents\Arduino/libraries/USBHost/examples/ADKTerminalTest/ADKTerminalTest.ino
C:\Users\scelles\Documents\Arduino/libraries/USBHost/examples/KeyboardController/KeyboardController.ino
C:\Users\scelles\Documents\Arduino/libraries/USBHost/examples/MouseController/MouseController.ino
C:\Users\scelles\Documents\Arduino/libraries/USBHost/keywords.txt
C:\Users\scelles\Documents\Arduino/libraries/USBHost/library.properties
C:\Users\scelles\Documents\Arduino/libraries/USBHost/src/KeyboardController.cpp
C:\Users\scelles\Documents\Arduino/libraries/USBHost/src/KeyboardController.h
C:\Users\scelles\Documents\Arduino/libraries/USBHost/src/MouseController.cpp
C:\Users\scelles\Documents\Arduino/libraries/USBHost/src/MouseController.h
C:\Users\scelles\Documents\Arduino/libraries/USBHost/src/Usb.cpp
C:\Users\scelles\Documents\Arduino/libraries/USBHost/src/Usb.h
C:\Users\scelles\Documents\Arduino/libraries/USBHost/src/address.h
C:\Users\scelles\Documents\Arduino/libraries/USBHost/src/adk.cpp
C:\Users\scelles\Documents\Arduino/libraries/USBHost/src/adk.h
C:\Users\scelles\Documents\Arduino/libraries/USBHost/src/confdescparser.h
C:\Users\scelles\Documents\Arduino/libraries/USBHost/src/hid.h
C:\Users\scelles\Documents\Arduino/libraries/USBHost/src/hid2.cpp
C:\Users\scelles\Documents\Arduino/libraries/USBHost/src/hidboot.cpp
C:\Users\scelles\Documents\Arduino/libraries/USBHost/src/hidboot.h
C:\Users\scelles\Documents\Arduino/libraries/USBHost/src/hidusagestr.h
C:\Users\scelles\Documents\Arduino/libraries/USBHost/src/parsetools.cpp
C:\Users\scelles\Documents\Arduino/libraries/USBHost/src/parsetools.h
C:\Users\scelles\Documents\Arduino/libraries/USBHost/src/usb_ch9.h
C:\Users\scelles\Documents\Arduino/libraries/readme.txt
...Library installed successfully ✗
This may indicate a problem with ArduinoCI, or your configuration
Failures: 4
Last message: $ C:\Program Files (x86)\Arduino/arduino_debug.exe --install-library USBHost
========== Stdout:
T▒l▒chargement du catalogue de biblioth▒ques...
T▒l▒chargement du catalogue de biblioth▒ques... T▒l▒charg▒: 0kb sur 741kb.
T▒l▒chargement du catalogue de biblioth▒ques... T▒l▒charg▒: 23kb sur 741kb.
T▒l▒chargement du catalogue de biblioth▒ques... T▒l▒charg▒: 46kb sur 741kb.
T▒l▒chargement du catalogue de biblioth▒ques... T▒l▒charg▒: 69kb sur 741kb.
T▒l▒chargement du catalogue de biblioth▒ques... T▒l▒charg▒: 95kb sur 741kb.
T▒l▒chargement du catalogue de biblioth▒ques... T▒l▒charg▒: 119kb sur 741kb.
T▒l▒chargement du catalogue de biblioth▒ques... T▒l▒charg▒: 142kb sur 741kb.
T▒l▒chargement du catalogue de biblioth▒ques... T▒l▒charg▒: 166kb sur 741kb.
T▒l▒chargement du catalogue de biblioth▒ques... T▒l▒charg▒: 191kb sur 741kb.
T▒l▒chargement du catalogue de biblioth▒ques... T▒l▒charg▒: 216kb sur 741kb.
T▒l▒chargement du catalogue de biblioth▒ques... T▒l▒charg▒: 242kb sur 741kb.
T▒l▒chargement du catalogue de biblioth▒ques... T▒l▒charg▒: 271kb sur 741kb.
T▒l▒chargement du catalogue de biblioth▒ques... T▒l▒charg▒: 293kb sur 741kb.
T▒l▒chargement du catalogue de biblioth▒ques... T▒l▒charg▒: 320kb sur 741kb.
T▒l▒chargement du catalogue de biblioth▒ques... T▒l▒charg▒: 342kb sur 741kb.
T▒l▒chargement du catalogue de biblioth▒ques... T▒l▒charg▒: 369kb sur 741kb.
T▒l▒chargement du catalogue de biblioth▒ques... T▒l▒charg▒: 392kb sur 741kb.
T▒l▒chargement du catalogue de biblioth▒ques... T▒l▒charg▒: 418kb sur 741kb.
T▒l▒chargement du catalogue de biblioth▒ques... T▒l▒charg▒: 441kb sur 741kb.
T▒l▒chargement du catalogue de biblioth▒ques... T▒l▒charg▒: 467kb sur 741kb.
T▒l▒chargement du catalogue de biblioth▒ques... T▒l▒charg▒: 490kb sur 741kb.
T▒l▒chargement du catalogue de biblioth▒ques... T▒l▒charg▒: 517kb sur 741kb.
T▒l▒chargement du catalogue de biblioth▒ques... T▒l▒charg▒: 539kb sur 741kb.
T▒l▒chargement du catalogue de biblioth▒ques... T▒l▒charg▒: 566kb sur 741kb.
T▒l▒chargement du catalogue de biblioth▒ques... T▒l▒charg▒: 588kb sur 741kb.
T▒l▒chargement du catalogue de biblioth▒ques... T▒l▒charg▒: 615kb sur 741kb.
T▒l▒chargement du catalogue de biblioth▒ques... T▒l▒charg▒: 637kb sur 741kb.
T▒l▒chargement du catalogue de biblioth▒ques... T▒l▒charg▒: 664kb sur 741kb.
T▒l▒chargement du catalogue de biblioth▒ques... T▒l▒charg▒: 687kb sur 741kb.
T▒l▒chargement du catalogue de biblioth▒ques... T▒l▒charg▒: 713kb sur 741kb.
T▒l▒chargement du catalogue de biblioth▒ques... T▒l▒charg▒: 736kb sur 741kb.
Mise a jour de la liste des biblioth▒que install▒e
Library is already installed: USBHost:1.0.5
========== Stderr:
Chargement de la configuration
Initialisation des paquets...
Pr▒paration des cartes
Using proxy HTTP @ cache.my-domain.fr:3128
This issue is to track the (as yet undefined) method of passing rich data back and forth from the ruby test runner to the executable.
lib/arduino_ci/arduino_downloader_windows.rb:30:7: C: Security/Open: The use of Kernel#open is a serious security risk.
open(URI.parse(package_url), ssl_verify_mode: 0) do |url|
^^^^
lib/arduino_ci/arduino_downloader.rb:134:7: C: Security/Open: The use of Kernel#open is a serious security risk.
open(package_url, ssl_verify_mode: 0, progress_proc: dot_printer) do |url|
^^^^
Hello,
I think SampleProjects/DoSomething and SampleProjects/TestSomething should be in their own repository
so it will be easier for a library creator to just look at one of this repository.
Moreover these repositories could have their own build and testing infrastructure with Travis
Kind regards
Based on their release date, my previous CI upgrades lasted literally one day before going obsolete
https://blog.travis-ci.com/2018-05-07-announcing-support-for-github-checks-api-on-travis-ci-com
verify_sketch stdout:
Invalid library found in /Users/ikatz/Documents/Arduino/libraries/arduino_ci: no headers files (.h) found in /Users/ikatz/Documents/Arduino/libraries/arduino_ci
Invalid library found in /Users/ikatz/Documents/Arduino/libraries/CompileSomething: no headers files (.h) found in /Users/ikatz/Documents/Arduino/libraries/CompileSomething
Invalid library found in /Users/ikatz/Documents/Arduino/libraries/arduino_ci: no headers files (.h) found in /Users/ikatz/Documents/Arduino/libraries/arduino_ci
Invalid library found in /Users/ikatz/Documents/Arduino/libraries/CompileSomething: no headers files (.h) found in /Users/ikatz/Documents/Arduino/libraries/CompileSomething
Sketch uses 22084 bytes (4%) of program storage space. Maximum is 524288 bytes.
This can be found in the ret[:err]
of ArduinoCmd.verify_sketch
:
Loading configuration...
Initializing packages...
Preparing boards...
Verifying...
/path/to/arduino_ci/spec/FakeSketch/FakeSketch.ino: In function 'void setup()':
/path/to/arduino_ci/spec/FakeSketch/FakeSketch.ino:1:21: warning: statement has no effect [-Wunused-value]
void setup(void) { 0; }
^
/path/to/arduino_ci/spec/FakeSketch/FakeSketch.ino: In function 'void loop()':
/path/to/arduino_ci/spec/FakeSketch/FakeSketch.ino:2:20: warning: statement has no effect [-Wunused-value]
void loop(void) { 0; }
Would need to
Add new board definitions based on this gist
#if defined(__AVR_ATmega168__)
// Arduino Diecimila and older
LINE("__AVR_ATmega168__", __AVR_ATmega168__);
#endif
#if defined(__AVR_ATmega328P__)
// Arduino Duemilanove and Uno
LINE("__AVR_ATmega328P__", __AVR_ATmega328P__);
#endif
#if defined(__AVR_ATmega2560__)
// Arduino Mega 2560
LINE("__AVR_ATmega2560__", __AVR_ATmega2560__);
#endif
#if defined(__AVR_ATmega1280__)
// Arduino Mega
LINE("__AVR_ATmega1280__", __AVR_ATmega1280__);
#endif
#if defined(__AVR_ATmega32U4__)
// Arduino Leonardo
LINE("__AVR_ATmega32U4__", __AVR_ATmega32U4__);
#endif
#if defined(__SAM3X8E__)
// Arduino Due
LINE("__SAM3X8E__", __SAM3X8E__);
#endif
// Determine board type
#if defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__)
Serial.println("Regular Arduino");
#elif defined(__AVR_ATmega2560__) || defined(__AVR_ATmega1280__)
Serial.println("Arduino Mega");
#elif defined(__AVR_ATmega32U4__)
Serial.println("Arduino Leonardo");
#elif defined(__SAM3X8E__)
Serial.println("Arduino Due");
#else
Serial.println("Unknown");
#endif
This looks like a good resource for what #define
s might be available
https://arduino.stackexchange.com/questions/21137/arduino-how-to-get-the-board-type-in-code
#if defined(TEENSYDUINO)
// --------------- Teensy -----------------
#if defined(__AVR_ATmega32U4__)
#define BOARD "Teensy 2.0"
#elif defined(__AVR_AT90USB1286__)
#define BOARD "Teensy++ 2.0"
#elif defined(__MK20DX128__)
#define BOARD "Teensy 3.0"
#elif defined(__MK20DX256__)
#define BOARD "Teensy 3.2" // and Teensy 3.1 (obsolete)
#elif defined(__MKL26Z64__)
#define BOARD "Teensy LC"
#elif defined(__MK64FX512__)
#define BOARD "Teensy 3.5"
#elif defined(__MK66FX1M0__)
#define BOARD "Teensy 3.6"
#else
#error "Unknown board"
#endif
#else // --------------- Arduino ------------------
#if defined(ARDUINO_AVR_ADK)
#define BOARD "Mega Adk"
#elif defined(ARDUINO_AVR_BT) // Bluetooth
#define BOARD "Bt"
#elif defined(ARDUINO_AVR_DUEMILANOVE)
#define BOARD "Duemilanove"
#elif defined(ARDUINO_AVR_ESPLORA)
#define BOARD "Esplora"
#elif defined(ARDUINO_AVR_ETHERNET)
#define BOARD "Ethernet"
#elif defined(ARDUINO_AVR_FIO)
#define BOARD "Fio"
#elif defined(ARDUINO_AVR_GEMMA)
#define BOARD "Gemma"
#elif defined(ARDUINO_AVR_LEONARDO)
#define BOARD "Leonardo"
#elif defined(ARDUINO_AVR_LILYPAD)
#define BOARD "Lilypad"
#elif defined(ARDUINO_AVR_LILYPAD_USB)
#define BOARD "Lilypad Usb"
#elif defined(ARDUINO_AVR_MEGA)
#define BOARD "Mega"
#elif defined(ARDUINO_AVR_MEGA2560)
#define BOARD "Mega 2560"
#elif defined(ARDUINO_AVR_MICRO)
#define BOARD "Micro"
#elif defined(ARDUINO_AVR_MINI)
#define BOARD "Mini"
#elif defined(ARDUINO_AVR_NANO)
#define BOARD "Nano"
#elif defined(ARDUINO_AVR_NG)
#define BOARD "NG"
#elif defined(ARDUINO_AVR_PRO)
#define BOARD "Pro"
#elif defined(ARDUINO_AVR_ROBOT_CONTROL)
#define BOARD "Robot Ctrl"
#elif defined(ARDUINO_AVR_ROBOT_MOTOR)
#define BOARD "Robot Motor"
#elif defined(ARDUINO_AVR_UNO)
#define BOARD "Uno"
#elif defined(ARDUINO_AVR_YUN)
#define BOARD "Yun"
// These boards must be installed separately:
#elif defined(ARDUINO_SAM_DUE)
#define BOARD "Due"
#elif defined(ARDUINO_SAMD_ZERO)
#define BOARD "Zero"
#elif defined(ARDUINO_ARC32_TOOLS)
#define BOARD "101"
#else
#error "Unknown board"
#endif
#endif
The source file is in Java/hardware/arduino/avr/libraries/
Should save some time if we don't needlessly switch boards. E.g. when running the unit tests phase and there are no unit tests.
According to adafruit/arduino script, some changes to platforms:
[zero]="arduino:samd:arduino_zero_native"
[esp8266]="esp8266:esp8266:huzzah:FlashSize=4M3M,CpuFrequency=80
ruby -v
:bundle -v
:bundle info arduino_ci
:
g++ -v
:Hi Ian, thanks for sharing this work, I've been trying to find a way to unit test my Arduino code and this looks very promising.
I've followed the README steps but am getting an error when executing the gem. I've tried running the example from the TestSomething folder here and got the exact same error. Tried looking for this error but got nowhere.
It would be very helpful if you can point me to where to look for finding a solution. Thanks in advance.
Here's the output:
TestSomething ❯❯❯ bundle exec arduino_ci_remote.rb master ✱ ◼
Installing library under test... ✓
Library installed at /Users/mdlima/Documents/Arduino/libraries/TestSomething... ✓
The set of compilers (1) isn't empty... ✓
Checking g++ version...
Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 9.1.0 (clang-902.0.39.1)
Target: x86_64-apple-darwin17.5.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
...Checking g++ version ✓
Installing board package arduino:sam... ✗
This may indicate a problem with ArduinoCI!
Failures: 1
Last message: $ java -cp /Applications/Arduino.app/Contents/Java/* -DAPP_DIR=/Applications/Arduino.app/Contents/Java -Dfile.encoding=UTF-8 -Dapple.awt.UIElement=true -Xms128M -Xmx512M processing.app.Base --install-boards arduino:sam
========== Stdout:
========== Stderr:
Exception in thread "main" java.lang.NoSuchMethodError: com.apple.eawt.Application.isAboutMenuItemPresent()Z
at processing.app.Base.main(Base.java:138)
The jar files are in the expected /Applications/Arduino.app/Contents/Java/
folder.
Error returned when running bundle exec arduino_ci_remote.rb
from the TestSomething example.
Uno, all?
Hello,
I think it should be useful to provide information in doc to test libraries / sketches with dependencies.
I see 2 kind of dependencies:
registered Arduino libraries
unregistered libraries
available from a HTTP server
(like https://github.com/itead/ITEADLIB_Arduino_Nextion/archive/v0.7.0.zip or https://github.com/itead/ITEADLIB_Arduino_Nextion/archive/master.zip )
git repository
My opinion is that arduino-cli should manage this... (instead of everyone doing its own script)
I opened several issues related to this problem.
arduino-cli
A more general issue (that I didn't opened)
Library manager: Library dependencies arduino/Arduino#5795
The concept of environments could help to have several versions of a same library installed without hassle arduino/arduino-cli#108 ... but that's an other story.
What's you opinion about this @ianfixes?
What actions can be done?
Kind regards
Hello,
I'm trying to use arduino_ci for test driven development.
Unfortunately I haven't seen a way to run a given test file.
I was expecting to run (only) one test file using for example:
bundle exec arduino_ci_remote.rb test/test_application.cpp
or just one unit test
bundle exec arduino_ci_remote.rb test/test_application.cpp::unittest_name
(it may be harder)
But being at least a test file could speedup development process.
Kind regards
ruby -v
: ruby 2.5.3p105 (2018-10-18 revision 65156) [x86_64-linux]bundle -v
: Bundler version 1.17.3bundle info arduino_ci
: * arduino_ci (0.1.14)
Summary: Tools for building and unit testing Arduino libraries
Homepage: http://github.com/ianfixes/arduino_ci
Path: /tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14
g++ -v
:Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/8/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-redhat-linux
Configured with: ../configure --enable-bootstrap --enable-languages=c,c++,fortran,objc,obj-c++,ada,go,lto --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only --with-linker-hash-style=gnu --enable-plugin --enable-initfini-array --with-isl --enable-libmpx --enable-offload-targets=nvptx-none --without-cuda-driver --enable-gnu-indirect-function --enable-cet --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux
Thread model: posix
gcc version 8.2.1 20181215 (Red Hat 8.2.1-6) (GCC)
java -version
:openjdk version "1.8.0_191"
OpenJDK Runtime Environment (build 1.8.0_191-b12)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)
I try to use arduino_ci as a unit test tool for local development, e.g. only on my machine, not in a github repo.
Something triggers arduino_ci to include some files twice, causing the compiler to fail because of duplicate definitions.
I have created a minimal example to trigger this. Steps to reproduce:
$ mkdir /tmp/dummy
$ cd /tmp/dummy
$ cat > dummy.ino
void setup() {
}
void loop() {
}
$ mkdir test
$ cat > test/dummy.cpp
#include <ArduinoUnitTests.h>
unittest(dummy_test)
{
assertEqual(4, 4);
}
unittest_main()
$ cat > Gemfile
source 'https://rubygems.org'
gem 'arduino_ci'
$ cat > .arduino-ci.yaml
compile:
libraries: ~
platforms:
- uno
unittest:
libraries: ~
platforms:
- uno
$ bundle install --path bundle_install
Fetching gem metadata from https://rubygems.org/............
Resolving dependencies...
Fetching os 1.0.0
Installing os 1.0.0
Fetching rubyzip 1.2.2
Installing rubyzip 1.2.2
Fetching arduino_ci 0.1.14
Installing arduino_ci 0.1.14
Using bundler 1.17.3
Bundle complete! 1 Gemfile dependency, 4 gems now installed.
Bundled gems are installed into `./bundle_install`
$
Then running arduino_ci fails:
$ bundle exec arduino_ci_remote.rb
Located Arduino binary... /home/download/arduino_ci_ide/arduino
Indexing libraries... ✓
Installing library under test... ✓
Library installed at... /home/download/Arduino/libraries/dummy
The set of compilers (1) isn't empty... ✓
Checking g++ version...
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/8/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-redhat-linux
Configured with: ../configure --enable-bootstrap --enable-languages=c,c++,fortran,objc,obj-c++,ada,go,lto --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only --with-linker-hash-style=gnu --enable-plugin --enable-initfini-array --with-isl --enable-libmpx --enable-offload-targets=nvptx-none --without-cuda-driver --enable-gnu-indirect-function --enable-cet --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux
Thread model: posix
gcc version 8.2.1 20181215 (Red Hat 8.2.1-6) (GCC)
...Checking g++ version ✓
libasan availability for g++... false
Requested unittest platform 'uno' is defined in 'platforms' YML... ✓
Using built-in board package... arduino:avr
Installing board package arduino:avr... ✓
Switching to board for uno (arduino:avr:uno)... ✓
Unit testing dummy.cpp with g++...
Last command: $ g++ -std=c++0x -o /tmp/dummy/unittest_dummy.cpp.bin -DARDUINO=100 -D__AVR_ATmega328P__ -I/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino -I/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/unittest -I/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino -I/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr -I/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/ci -I/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/unittest /tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/Arduino.cpp /tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/Godmode.cpp /tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/unittest/ArduinoUnitTests.cpp /tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/Arduino.cpp /tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/Godmode.cpp /tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/unittest/ArduinoUnitTests.cpp /tmp/dummy/test/dummy.cpp
/usr/bin/ld: /tmp/ccgeE0Cz.o: in function `delayMicroseconds(unsigned long)':
Godmode.cpp:(.text+0x8b): multiple definition of `delayMicroseconds(unsigned long)'; /tmp/ccwmzxNZ.o:Godmode.cpp:(.text+0x8b): first defined here
/usr/bin/ld: /tmp/ccgeE0Cz.o:(.bss+0x0): multiple definition of `godmode'; /tmp/ccwmzxNZ.o:(.bss+0x0): first defined here
/usr/bin/ld: /tmp/ccgeE0Cz.o: in function `GODMODE()':
Godmode.cpp:(.text+0x0): multiple definition of `GODMODE()'; /tmp/ccwmzxNZ.o:Godmode.cpp:(.text+0x0): first defined here
/usr/bin/ld: /tmp/ccgeE0Cz.o: in function `millis()':
Godmode.cpp:(.text+0xb): multiple definition of `millis()'; /tmp/ccwmzxNZ.o:Godmode.cpp:(.text+0xb): first defined here
/usr/bin/ld: /tmp/ccgeE0Cz.o: in function `micros()':
Godmode.cpp:(.text+0x3d): multiple definition of `micros()'; /tmp/ccwmzxNZ.o:Godmode.cpp:(.text+0x3d): first defined here
/usr/bin/ld: /tmp/ccgeE0Cz.o: in function `delay(unsigned long)':
Godmode.cpp:(.text+0x57): multiple definition of `delay(unsigned long)'; /tmp/ccwmzxNZ.o:Godmode.cpp:(.text+0x57): first defined here
/usr/bin/ld: /tmp/ccgeE0Cz.o: in function `randomSeed(unsigned long)':
Godmode.cpp:(.text+0xb8): multiple definition of `randomSeed(unsigned long)'; /tmp/ccwmzxNZ.o:Godmode.cpp:(.text+0xb8): first defined here
/usr/bin/ld: /tmp/ccgeE0Cz.o: in function `random(long)':
Godmode.cpp:(.text+0xdc): multiple definition of `random(long)'; /tmp/ccwmzxNZ.o:Godmode.cpp:(.text+0xdc): first defined here
/usr/bin/ld: /tmp/ccgeE0Cz.o: in function `random(long, long)':
Godmode.cpp:(.text+0x134): multiple definition of `random(long, long)'; /tmp/ccwmzxNZ.o:Godmode.cpp:(.text+0x134): first defined here
/usr/bin/ld: /tmp/ccgeE0Cz.o: in function `digitalWrite(unsigned char, unsigned char)':
Godmode.cpp:(.text+0x170): multiple definition of `digitalWrite(unsigned char, unsigned char)'; /tmp/ccwmzxNZ.o:Godmode.cpp:(.text+0x170): first defined here
/usr/bin/ld: /tmp/ccgeE0Cz.o: in function `digitalRead(unsigned char)':
Godmode.cpp:(.text+0x1c9): multiple definition of `digitalRead(unsigned char)'; /tmp/ccwmzxNZ.o:Godmode.cpp:(.text+0x1c9): first defined here
/usr/bin/ld: /tmp/ccgeE0Cz.o: in function `analogWrite(unsigned char, int)':
Godmode.cpp:(.text+0x20c): multiple definition of `analogWrite(unsigned char, int)'; /tmp/ccwmzxNZ.o:Godmode.cpp:(.text+0x20c): first defined here
/usr/bin/ld: /tmp/ccgeE0Cz.o: in function `analogRead(unsigned char)':
Godmode.cpp:(.text+0x25a): multiple definition of `analogRead(unsigned char)'; /tmp/ccwmzxNZ.o:Godmode.cpp:(.text+0x25a): first defined here
/usr/bin/ld: /tmp/ccgeE0Cz.o: in function `attachInterrupt(unsigned char, void (*)(), unsigned char)':
Godmode.cpp:(.text+0x29d): multiple definition of `attachInterrupt(unsigned char, void (*)(), unsigned char)'; /tmp/ccwmzxNZ.o:Godmode.cpp:(.text+0x29d): first defined here
/usr/bin/ld: /tmp/ccgeE0Cz.o: in function `detachInterrupt(unsigned char)':
Godmode.cpp:(.text+0x2f0): multiple definition of `detachInterrupt(unsigned char)'; /tmp/ccwmzxNZ.o:Godmode.cpp:(.text+0x2f0): first defined here
/usr/bin/ld: /tmp/ccgeE0Cz.o:(.bss+0x122a0): multiple definition of `Serial'; /tmp/ccwmzxNZ.o:(.bss+0x122a0): first defined here
/usr/bin/ld: /tmp/ccgeE0Cz.o:(.bss+0x12320): multiple definition of `SPI'; /tmp/ccwmzxNZ.o:(.bss+0x12320): first defined here
/usr/bin/ld: /tmp/ccogA35M.o:(.bss+0x0): multiple definition of `Test::sRoot'; /tmp/ccoeb2Za.o:(.bss+0x0): first defined here
collect2: error: ld returned 1 exit status
...Unit testing dummy.cpp with g++ ✗
Skipping libraries; no examples found in /home/download/Arduino/libraries/dummy...
/tmp/dummy/Gemfile
/tmp/dummy/Gemfile.lock
/tmp/dummy/bundle_install/ruby/2.5.0/bin/arduino_ci_remote.rb
/tmp/dummy/bundle_install/ruby/2.5.0/bin/arduino_ci_remote.rb.orig
/tmp/dummy/bundle_install/ruby/2.5.0/bin/ensure_arduino_installation.rb
/tmp/dummy/bundle_install/ruby/2.5.0/bin/libasan.rb
/tmp/dummy/bundle_install/ruby/2.5.0/cache/arduino_ci-0.1.14.gem
/tmp/dummy/bundle_install/ruby/2.5.0/cache/os-1.0.0.gem
/tmp/dummy/bundle_install/ruby/2.5.0/cache/rubyzip-1.2.2.gem
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/README.md
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/Arduino.cpp
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/Arduino.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/ArduinoDefines.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/AvrMath.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/Godmode.cpp
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/Godmode.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/HardwareSerial.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/PinHistory.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/Print.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/SPI.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/SoftwareSerial.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/Stream.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/WCharacter.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/WString.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/README.md
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/common.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/fuse.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/io.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/io1200.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/io2313.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/io2323.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/io2333.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/io2343.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/io43u32x.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/io43u35x.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/io4414.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/io4433.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/io4434.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/io76c711.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/io8515.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/io8534.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/io8535.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/io86r401.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/io90pwm1.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/io90pwm161.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/io90pwm216.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/io90pwm2b.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/io90pwm316.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/io90pwm3b.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/io90pwm81.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/io90pwmx.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/io90scr100.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/ioa5272.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/ioa5505.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/ioa5702m322.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/ioa5782.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/ioa5790.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/ioa5790n.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/ioa5791.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/ioa5795.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/ioa5831.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/ioa6285.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/ioa6286.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/ioa6289.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/ioa6612c.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/ioa6613c.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/ioa6614q.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/ioa6616c.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/ioa6617c.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/ioa664251.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/ioa8210.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/ioa8510.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/ioat94k.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iocan128.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iocan32.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iocan64.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iocanxx.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom103.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom128.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom1280.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom1281.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom1284.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom1284p.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom1284rfr2.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom128a.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom128rfa1.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom128rfr2.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom16.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom161.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom162.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom163.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom164.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom164a.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom164p.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom164pa.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom165.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom165a.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom165p.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom165pa.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom168.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom168a.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom168p.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom168pa.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom168pb.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom169.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom169a.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom169p.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom169pa.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom16a.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom16hva.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom16hva2.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom16hvb.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom16hvbrevb.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom16m1.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom16u2.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom16u4.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom2560.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom2561.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom2564rfr2.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom256rfr2.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom3000.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom32.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom323.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom324a.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom324p.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom324pa.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom325.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom3250.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom3250a.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom3250p.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom3250pa.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom325a.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom325p.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom325pa.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom328.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom328p.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom329.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom3290.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom3290a.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom3290pa.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom329a.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom329p.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom329pa.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom32a.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom32c1.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom32hvb.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom32hvbrevb.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom32m1.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom32u2.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom32u4.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom32u6.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom406.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom48.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom48a.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom48p.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom48pa.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom48pb.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom64.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom640.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom644.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom644a.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom644p.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom644pa.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom644rfr2.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom645.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom6450.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom6450a.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom6450p.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom645a.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom645p.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom649.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom6490.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom6490a.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom6490p.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom649a.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom649p.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom64a.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom64c1.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom64hve.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom64hve2.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom64m1.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom64rfr2.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom8.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom8515.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom8535.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom88.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom88a.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom88p.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom88pa.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom88pb.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom8a.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom8hva.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iom8u2.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iomx8.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iomxx0_1.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iomxx4.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iomxxhva.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iotn10.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iotn11.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iotn12.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iotn13.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iotn13a.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iotn15.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iotn1634.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iotn167.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iotn20.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iotn22.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iotn2313.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iotn2313a.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iotn24.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iotn24a.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iotn25.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iotn26.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iotn261.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iotn261a.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iotn28.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iotn4.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iotn40.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iotn4313.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iotn43u.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iotn44.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iotn441.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iotn44a.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iotn45.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iotn461.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iotn461a.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iotn48.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iotn5.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iotn828.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iotn84.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iotn841.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iotn84a.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iotn85.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iotn861.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iotn861a.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iotn87.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iotn88.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iotn9.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iotnx4.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iotnx5.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iotnx61.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iousb1286.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iousb1287.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iousb162.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iousb646.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iousb647.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iousb82.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iousbxx2.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iousbxx6_7.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iox128a1.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iox128a1u.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iox128a3.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iox128a3u.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iox128a4u.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iox128b1.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iox128b3.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iox128c3.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iox128d3.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iox128d4.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iox16a4.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iox16a4u.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iox16c4.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iox16d4.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iox16e5.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iox192a3.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iox192a3u.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iox192c3.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iox192d3.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iox256a3.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iox256a3b.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iox256a3bu.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iox256a3u.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iox256c3.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iox256d3.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iox32a4.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iox32a4u.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iox32c3.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iox32c4.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iox32d3.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iox32d4.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iox32e5.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iox384c3.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iox384d3.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iox64a1.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iox64a1u.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iox64a3.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iox64a3u.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iox64a4u.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iox64b1.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iox64b3.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iox64c3.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iox64d3.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iox64d4.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/iox8e5.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/lock.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/pgmspace.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/portpins.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/version.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr/xmega.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/binary.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/ci/DeviceUsingBytes.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/ci/ObservableDataStream.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/ci/Queue.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/ci/README.md
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/ci/Table.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/unittest/ArduinoUnitTests.cpp
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/unittest/ArduinoUnitTests.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/unittest/Assertion.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/unittest/Compare.h
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/exe/arduino_ci_remote.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/exe/arduino_ci_remote.rb.orig
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/exe/ensure_arduino_installation.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/exe/libasan.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/lib/arduino_ci/arduino_cmd.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/lib/arduino_ci/arduino_cmd_linux.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/lib/arduino_ci/arduino_cmd_linux_builder.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/lib/arduino_ci/arduino_cmd_osx.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/lib/arduino_ci/arduino_cmd_windows.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/lib/arduino_ci/arduino_downloader.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/lib/arduino_ci/arduino_downloader_linux.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/lib/arduino_ci/arduino_downloader_osx.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/lib/arduino_ci/arduino_downloader_windows.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/lib/arduino_ci/arduino_installation.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/lib/arduino_ci/ci_config.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/lib/arduino_ci/cpp_library.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/lib/arduino_ci/host.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/lib/arduino_ci/version.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/lib/arduino_ci.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/misc/default.yml
/tmp/dummy/bundle_install/ruby/2.5.0/gems/os-1.0.0/ChangeLog
/tmp/dummy/bundle_install/ruby/2.5.0/gems/os-1.0.0/Gemfile
/tmp/dummy/bundle_install/ruby/2.5.0/gems/os-1.0.0/Gemfile.lock
/tmp/dummy/bundle_install/ruby/2.5.0/gems/os-1.0.0/LICENSE
/tmp/dummy/bundle_install/ruby/2.5.0/gems/os-1.0.0/README.rdoc
/tmp/dummy/bundle_install/ruby/2.5.0/gems/os-1.0.0/Rakefile
/tmp/dummy/bundle_install/ruby/2.5.0/gems/os-1.0.0/VERSION
/tmp/dummy/bundle_install/ruby/2.5.0/gems/os-1.0.0/autotest/discover.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/os-1.0.0/lib/os.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/os-1.0.0/os.gemspec
/tmp/dummy/bundle_install/ruby/2.5.0/gems/os-1.0.0/spec/linux_spec.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/os-1.0.0/spec/os_spec.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/os-1.0.0/spec/osx_spec.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/os-1.0.0/spec/spec_helper.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/README.md
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/Rakefile
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/TODO
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/lib/zip/central_directory.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/lib/zip/compressor.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/lib/zip/constants.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/lib/zip/crypto/encryption.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/lib/zip/crypto/null_encryption.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/lib/zip/crypto/traditional_encryption.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/lib/zip/decompressor.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/lib/zip/deflater.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/lib/zip/dos_time.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/lib/zip/entry.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/lib/zip/entry_set.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/lib/zip/errors.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/lib/zip/extra_field/generic.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/lib/zip/extra_field/ntfs.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/lib/zip/extra_field/old_unix.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/lib/zip/extra_field/universal_time.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/lib/zip/extra_field/unix.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/lib/zip/extra_field/zip64.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/lib/zip/extra_field/zip64_placeholder.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/lib/zip/extra_field.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/lib/zip/file.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/lib/zip/filesystem.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/lib/zip/inflater.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/lib/zip/input_stream.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/lib/zip/ioextras/abstract_input_stream.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/lib/zip/ioextras/abstract_output_stream.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/lib/zip/ioextras.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/lib/zip/null_compressor.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/lib/zip/null_decompressor.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/lib/zip/null_input_stream.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/lib/zip/output_stream.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/lib/zip/pass_thru_compressor.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/lib/zip/pass_thru_decompressor.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/lib/zip/streamable_directory.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/lib/zip/streamable_stream.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/lib/zip/version.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/lib/zip.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/samples/example.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/samples/example_filesystem.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/samples/example_recursive.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/samples/gtk_ruby_zip.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/samples/qtzip.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/samples/write_simple.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/samples/zipfind.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/basic_zip_file_test.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/case_sensitivity_test.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/central_directory_entry_test.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/central_directory_test.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/crypto/null_encryption_test.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/crypto/traditional_encryption_test.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/data/WarnInvalidDate.zip
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/data/file1.txt
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/data/file1.txt.deflatedData
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/data/file2.txt
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/data/globTest/foo/bar/baz/foo.txt
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/data/globTest/foo.txt
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/data/globTest/food.txt
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/data/globTest.zip
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/data/gpbit3stored.zip
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/data/mimetype
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/data/notzippedruby.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/data/ntfs.zip
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/data/oddExtraField.zip
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/data/path_traversal/Makefile
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/data/path_traversal/jwilk/README.md
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/data/path_traversal/jwilk/absolute1.zip
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/data/path_traversal/jwilk/absolute2.zip
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/data/path_traversal/jwilk/dirsymlink.zip
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/data/path_traversal/jwilk/dirsymlink2a.zip
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/data/path_traversal/jwilk/dirsymlink2b.zip
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/data/path_traversal/jwilk/relative0.zip
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/data/path_traversal/jwilk/relative2.zip
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/data/path_traversal/jwilk/symlink.zip
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/data/path_traversal/relative1.zip
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/data/path_traversal/tuzovakaoff/README.md
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/data/path_traversal/tuzovakaoff/absolutepath.zip
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/data/path_traversal/tuzovakaoff/symlink.zip
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/data/rubycode.zip
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/data/rubycode2.zip
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/data/test.xls
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/data/testDirectory.bin
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/data/zip64-sample.zip
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/data/zipWithDirs.zip
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/data/zipWithEncryption.zip
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/deflater_test.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/encryption_test.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/entry_set_test.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/entry_test.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/errors_test.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/extra_field_test.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/file_extract_directory_test.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/file_extract_test.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/file_permissions_test.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/file_split_test.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/file_test.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/filesystem/dir_iterator_test.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/filesystem/directory_test.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/filesystem/file_mutating_test.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/filesystem/file_nonmutating_test.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/filesystem/file_stat_test.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/gentestfiles.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/inflater_test.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/input_stream_test.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/ioextras/abstract_input_stream_test.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/ioextras/abstract_output_stream_test.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/ioextras/fake_io_test.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/local_entry_test.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/output_stream_test.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/pass_thru_compressor_test.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/pass_thru_decompressor_test.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/path_traversal_test.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/samples/example_recursive_test.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/settings_test.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/test_helper.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/unicode_file_names_and_comments_test.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/zip64_full_test.rb
/tmp/dummy/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2/test/zip64_support_test.rb
/tmp/dummy/bundle_install/ruby/2.5.0/specifications/arduino_ci-0.1.14.gemspec
/tmp/dummy/bundle_install/ruby/2.5.0/specifications/os-1.0.0.gemspec
/tmp/dummy/bundle_install/ruby/2.5.0/specifications/rubyzip-1.2.2.gemspec
/tmp/dummy/dummy.ino
/tmp/dummy/test/dummy.cpp
...Skipping libraries; no examples found in /home/download/Arduino/libraries/dummy
Failures: 1
$
Breaking up the last command on separate lines makes it easy to see the duplicated files:
g++
-std=c++0x
-o
/tmp/dummy/unittest_dummy.cpp.bin
-DARDUINO=100
-D__AVR_ATmega328P__
-I/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino
-I/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/unittest
-I/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino
-I/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/avr
-I/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/ci
-I/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/unittest
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/Arduino.cpp
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/Godmode.cpp
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/unittest/ArduinoUnitTests.cpp
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/Arduino.cpp
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/arduino/Godmode.cpp
/tmp/dummy/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.14/cpp/unittest/ArduinoUnitTests.cpp
/tmp/dummy/test/dummy.cpp
Only tested for Uno, but I assume this is generic.
lib/arduino_ci/arduino_downloader_windows.rb:89:5: C: Style/RescueStandardError: Avoid rescuing without specifying an error class.
rescue
^^^^^^
Locally (in OSX) and remotely the following error is displayed when running unit tests:
/home/travis/.rvm/gems/ruby-2.4.1/gems/arduino_ci-0.1.8/lib/arduino_ci/cpp_library.rb:185:in
`build_for_test_with_configuration': wrong number of arguments (given 3, expected 4) (ArgumentError)
The broken code seems to be in arduino_ci_remote.rb
This line is missing a parameter:
exe = cpp_library.build_for_test_with_configuration(
unittest_path,
config.aux_libraries_for_unittest,
config.gcc_config(p)
)
It should be
exe = cpp_library.build_for_test_with_configuration(
unittest_path,
config.aux_libraries_for_unittest,
gcc_binary,
config.gcc_config(p)
)
Feel free to delete this section if you're submitting a feature request
There's an obscene amount of CLIXML
text in the output.
#< CLIXML
System.Management.Automation.PSCustomObjectSystem.Object1Preparing modules for first use.0-1-1Completed-1 2Preparing modules for first use.0-1-1Completed-1 3Preparing modules for first use.0-1-1Completed-1 0Expand-Archive0-11Processing-1The archive file 'arduino-1.8.5' expansion is in progress...0Expand-Archive0-10Processing-1The archive file 'C:\projects\arduino-ci\arduino-1.8.5-windows.zip' expansion is in progress...0Expand-Archive0-10Processing-1The archive file 'C:\projects\arduino-ci\arduino-1.8.5-windows.zip' expansion is in progress...0Expand-Archive0-10Processing-1The archive file 'C:\projects\arduino-ci\arduino-1.8.5-windows.zip' expansion is in progress...0Expand-Archive0-10Processing-1The archive file 'C:\projects\arduino-ci\arduino-1.8.5-windows.zip' expansion
We should suppress it.
Hello,
$ bundle exec arduino_ci_remote.rb --testfile-select=test/test_*.cpp
shouldn't compile examples
or we should have a flag to disable compiling examples such as
$ bundle exec arduino_ci_remote.rb --testfile-select=test/test_*.cpp --examples-reject=*
Kind regards
Mock this library:
https://www.arduino.cc/en/reference/wire
Compilation mocks now exist due to #72
It appears this will need to be implemented as an array of HardwareSerial
objects within GODMODE.
This project will be cross-platform as of #39. Update Travis CI to test both OSX and Linux:
os:
- linux
- osx
https://docs.travis-ci.com/user/multi-os/
The, update the build status in the README.md to be a table like in manticore-native
Platform | Version | Native | Distro | Version | CI Status |
-------- | ------- | ------ | ------ | ------- |:------ |
iOS | 7.0+ | Obj C | CocoaPods | none | [![Build Status](https://badges.herokuapp.com/travis/paypal/manticore-native?env=BUILD_ITEM=objc&label=build&branch=master)](https://travis-ci.org/paypal/manticore-native)
MacOS | 10.9+ | Obj C | CocoaPods | none | [![Build Status](https://badges.herokuapp.com/travis/paypal/manticore-native?env=BUILD_ITEM=objc&label=build&branch=master)](https://travis-ci.org/paypal/manticore-native)
Android | API 19+ | Java | JCenter | none | [![Build Status](https://badges.herokuapp.com/travis/paypal/manticore-native?env=BUILD_ITEM=java&label=build&branch=master)](https://travis-ci.org/paypal/manticore-native)
Windows | XP (.Net4) | C# | NuGet | none | [![Build status](https://ci.appveyor.com/api/projects/status/sm23ige74y836v48?svg=true)](https://ci.appveyor.com/project/ifreecarve/manticore-native/branch/master)
Windows | 7,8,Vista (v8 ) | C# | NuGet | none | [![Build status](https://ci.appveyor.com/api/projects/status/sm23ige74y836v48?svg=true)](https://ci.appveyor.com/project/ifreecarve/manticore-native/branch/master)
Windows | 8.1, 8.1 Phone, 10 (jint) | C# | NuGet | none | [CI not running](https://github.com/paypal/manticore-native/issues/14)
_codegen_| 0.12 | JS | npm | none | [![Build Status](https://badges.herokuapp.com/travis/paypal/manticore-native?env=BUILD_ITEM=node&label=build&branch=master)](https://travis-ci.org/paypal/manticore-native)
Time is expected to pass in the real world. In the mocked unit test environment, it doesn't. This means that otherwise-normal code will infinitely loop in tests
while((millis() < wait_timer) && (!FLAG_ABORT_PENDING)) {
// waiting for random wait to finish
}
Add a configurable delay (0 by default) to all system calls: millis()
most importantly, but also things like analogRead
and analogWrite
.
...Unit testing wstring.cpp with g++ ✓
Indexing libraries... ✗
Installing library under test... ✓
fatal error: 'SPI.h' file not found
#include <SPI.h>
^~~~~~~
The source file is Java/hardware/arduino/avr/libraries/SPI/src/SPI.h
For tests that intend to verify timing of output signals, include a timestamp in the output queue for PinHistory
.
Downloading Arduino binary with wget
should be followed by a trail of dots for a successful download (as a progress indicator). If that doesn't happen, the rest of the failure is very cryptic.
[tom@instance-2 DoSomething]$ bundle exec arduino_ci_remote.rb
Downloading Arduino binary with wget
Extracting archive with tar
tar: arduino-1.8.5-linux64.tar.xz: Cannot open: No such file or directory
tar: Error is not recoverable: exiting now
mv: cannot stat ‘arduino-1.8.5’: No such file or directory
Installing library under test... /home/tom/github/arduino_ci/exe/arduino_ci_remote.rb:66:in `block in <top (required)>': undefined method `install_local_library' for nil:NilClass (NoMethodError)
from /home/tom/github/arduino_ci/exe/arduino_ci_remote.rb:32:in `perform_action'
from /home/tom/github/arduino_ci/exe/arduino_ci_remote.rb:58:in `assure'
from /home/tom/github/arduino_ci/exe/arduino_ci_remote.rb:66:in `<top (required)>'
from /home/tom/.rvm/gems/ruby-2.4.2/bin/arduino_ci_remote.rb:23:in `load'
from /home/tom/.rvm/gems/ruby-2.4.2/bin/arduino_ci_remote.rb:23:in `<main>'
from /home/tom/.rvm/gems/ruby-2.4.2/bin/ruby_executable_hooks:15:in `eval'
from /home/tom/.rvm/gems/ruby-2.4.2/bin/ruby_executable_hooks:15:in `<main>'
Floating point functions aren't done yet. Fix it.
Add CircleCI to this project and report its status in the README
.circleci/config.yml
via @TomohiroHayashi
version: 2
jobs:
build:
machine: true
steps:
- checkout
- run:
name: install and execute
command: |
bundle install
bundle exec arduino_ci_remote.rb
Platform | Travis CI | AppVeyor | CircleCI |
---|---|---|---|
OSX | NEW BADGE HERE | ||
Linux | NEW BADGE HERE | ||
Windows |
We'll need to be able to handle library / header files that are both in the root project directory (Arduino 1.0) and in the src/
directory (Arduino 1.5).
https://github.com/arduino/arduino/wiki/arduino-ide-1.5:-library-specification
g++
: builtinGenerally, shore up the differences between OSX's g++
(really clang
), g++-4.8
(on Travis), and g++-7
(tried it because it was available).
Reported in #24:
Fix for g++ compile errors under OSX.
/Library/Ruby/Gems/2.3.0/gems/arduino_ci-0.1.7/cpp/arduino/Print.h:57:86: error: unknown type name 'PGM_P'
/Library/Ruby/Gems/2.3.0/gems/arduino_ci-0.1.7/cpp/arduino/WString.h:39:16: error: no member named 'isnan' in namespace 'std'
I'm clearly not quite there with the following
#include <limits>
template <typename A = std::enable_if<std::is_integral<AA>::value, AA>::type, typename B = std::enable_if<std::is_integral<BB>::value, BB>::type> struct Compare<A, B>
{
inline static int between(const A &a,const B &b)
{
if (a<b) return -1;
if (b<a) return 1;
return 0;
} // between
inline static bool equal(const A &a,const B &b)
{
if (std::numeric_limits<A>::is_exact && std::numeric_limits<B>::is_exact) return (!(a<b)) && (!(b<a));
if (std::numeric_limits<A>::epsilon() > std::numeric_limits<B>::epsilon()) {
return std::numeric_limits<A>::epsilon() > (a > b ? (a - b) : (b - a));
} else {
return std::numeric_limits<B>::epsilon() > (a > b ? (a - b) : (b - a));
}
} // equal
/* etc
First reported in #24
The tone
functions should create some sort of testable history in the GODMODE struct.
Appveyor builds are "passing" by not actually running the unit tests. This is likely due to a failure to handle windows paths, thus making a "no cases failed" false positive when in fact "no cases were actually found even though we expected many"
0.1.16
Despite the config allowing selection/rejection of test files by glob pattern:
unittest:
testfiles:
select:
- "*-*.*"
reject:
- "sam-squamsh.*"
The test runner is ignoring these settings.
Hello,
Here is a minimal (non) working example
https://github.com/scls19fr/mwe_arduino_ci
to show problem I was facing (see https://github.com/ianfixes/arduino_ci/issues/78#issuecomment-453776168 ) with Arduino Mega 2560.
Kind regards
PS : arduino_ci log finish with Failures: 1
It may be interesting to show how many tests / examples are being run...
because showing only Failures: 0 can be quite misleading... it can simply be because tests / examples haven't been found
Bundle an install.sh script (e.g. https://github.com/adafruit/travis-ci-arduino/blob/master/install.sh) such that Gemfile doesn't need to be added to a project.
Add a sample project called TrustSomething
to verify that it works.
before_install:
- source <(curl -SLs https://raw.githubusercontent.com/${TRAVIS_REPO_SLUG}/${TRAVIS_BRANCH}/install.sh)
script:
- something_something_defined_in_install_sh
Related to errors like this one
error: invalid operands to binary expression ('const uint8_t *' (aka 'const unsigned char *') and 'const uint8_t *')
crc = pgm_read_byte(dscrc2x16_table + (crc & 0x0f)) ^
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
The code in pgmspace.h
that needs to change is this:
// this is the one I updated
#define pgm_read_byte(addr) (*(const uint8_t *)(addr))
// these ones need to be updated in similar fashion
#define pgm_read_word(x) (x)
#define pgm_read_dword(x) (x)
#define pgm_read_float(x) (x)
#define pgm_read_ptr(x) (x)
#define pgm_get_far_address(x) (x)
The problem is that at the moment I haven't dug into what these signatures should be.
Windows
OS
: Windows 10ruby -v
: ruby 2.5.1p57 (2018-03-29 revision 63029) [x64-mingw32]bundle -v
: Bundler version 1.16.1bundle info arduino_ci
: arduino_ci (0.1.9)g++ -v
: gcc version 7.3.0 (GCC)Arduino IDE version
: 1.8.5Linux
OS
: Centos 7ruby -v
: ruby 2.4.2p198 (2017-09-14 revision 59899) [x86_64-linux]bundle -v
: Bundler version 1.16.1bundle info arduino_ci
: arduino_ci (0.1.9)g++ -v
: gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16)Arduino IDE version
: 1.8.5The unittest compiler list is not inherited from the base file resulting in the following error:
The set of compilers (0) isn't empty... ✗
Currently an explicit entry is required in .arduino-ci.yaml:
# .arduino-ci.yaml
unittest:
platforms:
- uno
- due
compilers:
- g++
A configuration parameter to exclude folders from compilation.
Consider a case where all libraries are in ./lib
so they can all be in a single git hub repo (using git submodules). arduino_ci
walks the tree to find all the header files - irrespective of any compiler directives to use mock headers/classes instead, the libraries get pulled in too (which may break compilation).
The source file is in Java/hardware/arduino/avr/libraries/
This might be tricky, but PinHistory
(with the help of #23) should be able to support pulseIn and pulseOut interactions
Currently CppLibrary
is using the "base name" of the directory, not the full path. Need to figure out a way to get the full library installation dir from ArduinoCmd
.
Further, we are not yet following #include
statements for any files that might come in from subdirectories.
There are at least 6 cases that need to be tested, each as its own subdir of SampleProjects
.
src/
find . | grep Gemfile.lock | xargs -I% echo "git log %" | sh
Hello,
When facing a very long test log it's can be hard to find what test files are failling
(especially when errors are very long such as in this build https://travis-ci.com/scls19fr/mwe_arduino_ci/builds/97293666 )
Providing a more readable end of log will be great (such as this one)
Unit testing test_mwe_00.cpp with g++ ✗
Unit testing test_mwe_01.cpp with g++ ✗
Unit testing test_mwe_02.cpp with g++ ✗
Unit testing test_mwe_03.cpp with g++ ✗
Unit testing test_mwe_04.cpp with g++ ✗
Unit testing test_mwe_05.cpp with g++ ✗
Indexing libraries... ✓
Installing library under test... ✓
Library installed at... /home/travis/Arduino/libraries/mwe_arduino_ci
Requested library example platform 'mega2560' is defined in 'platforms' YML... ✓
Using built-in board package... arduino:avr
Installing board package arduino:avr... ✓
Setting compiler warning level... ✓
Switching to board for mega2560 (arduino:avr:mega:cpu=atmega2560)... ✓
Verifying mwe_arduino_ci_01.ino... ✓
Verifying mwe_arduino_ci_00.ino... ✓
Found: 6 test files - 5 examples
Failures: 6
Kind regards
PS... that's odd to see only 2 examples here... when there was 5 in previous build
https://travis-ci.com/scls19fr/mwe_arduino_ci/builds/97292804#L748-L752
It seems that it was a delay in Travis log display
ruby -v
: ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-darwin16]bundle -v
: Bundler version 1.16.4bundle info arduino_ci
: * arduino_ci (0.1.16)
Summary: Tools for building and unit testing Arduino libraries
Homepage: http://github.com/ianfixes/arduino_ci
Path: /Users/scls/.rvm/gems/ruby-2.3.0/gems/arduino_ci-0.1.16
g++ -v
:Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 10.0.0 (clang-1000.11.45.5)
Target: x86_64-apple-darwin17.7.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
Arduino IDE version: 1.8.6
java -version
:
java version "1.8.0_192"
Java(TM) SE Runtime Environment (build 1.8.0_192-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.192-b12, mixed mode)
I'm just trying to run unit test locally on my Mac...
(I'm not trying CI for now)
$ bundle exec arduino_ci_remote.rb
Arduino package seems to have been downloaded already
Extracting archive with Zip.....................................................................................................
Arduino package seems to have been installed already
Located Arduino binary... /Users/scls/.rvm/gems/ruby-2.3.0/gems/arduino_ci-0.1.16/exe/arduino_ci_remote.rb:311:in `block in <top (required)>': undefined method `binary_path' for nil:NilClass (NoMethodError)
from /Users/scls/.rvm/gems/ruby-2.3.0/gems/arduino_ci-0.1.16/exe/arduino_ci_remote.rb:40:in `perform_action'
from /Users/scls/.rvm/gems/ruby-2.3.0/gems/arduino_ci-0.1.16/exe/arduino_ci_remote.rb:75:in `inform'
from /Users/scls/.rvm/gems/ruby-2.3.0/gems/arduino_ci-0.1.16/exe/arduino_ci_remote.rb:311:in `<top (required)>'
from /Users/scls/.rvm/gems/ruby-2.3.0/bin/arduino_ci_remote.rb:23:in `load'
from /Users/scls/.rvm/gems/ruby-2.3.0/bin/arduino_ci_remote.rb:23:in `<main>'
from /Users/scls/.rvm/gems/ruby-2.3.0/bin/ruby_executable_hooks:15:in `eval'
from /Users/scls/.rvm/gems/ruby-2.3.0/bin/ruby_executable_hooks:15:in `<main>'
Any idea?
When developing tests it would be useful not to have to run all tests in a project, only those under development or of particular interest.
Options could include:
bundle exec arduino_ci_remote.rb -test interesting-test
bundle exec arduino_ci_remote.rb -file interesting-tests-file
bundle exec arduino_ci_remote.rb -file test-file -test some-test -test some-other-test
I'm not sure how args are handled by ruby/bundle exec so the above command lines are just for illustration of the concept
Seems like I should have a macro to replace
int main(int argc, char *argv[]) {
return Test::run_and_report(argc, argv);
}
But I don't know what it should be, or if I should do it at all
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.