Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enable Travis #3

Open
wants to merge 9 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .codespellignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
PRE_SOM = 0,
GOT_SOM = 1,
receiving_state recv_mode = PRE_SOM;
case PRE_SOM:
recv_mode = GOT_SOM;
case GOT_SOM:
recv_mode = PRE_SOM;
85 changes: 85 additions & 0 deletions .travis-ci.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
#!/bin/bash

# This script is triggered from the script section of .travis.yml
# It runs the appropriate commands depending on the task requested.

set -e

CPP_LINT_URL="https://raw.githubusercontent.com/google/styleguide/gh-pages/cpplint/cpplint.py";

SPELLINGBLACKLIST=$(cat <<-BLACKLIST
-wholename "./.codespellignore" -or \
-wholename "./.git/*"
BLACKLIST
)

if [[ $TASK = 'lint' ]]; then
# run the lint tool only if it is the requested task
# first check we've not got any generic NOLINTs
# count the number of generic NOLINTs
nolints=$(grep -IR NOLINT * | grep -v "NOLINT(" | wc -l)
if [[ $nolints -ne 0 ]]; then
# print the output for info
echo $(grep -IR NOLINT * | grep -v "NOLINT(")
echo "Found $nolints generic NOLINTs"
exit 1;
else
echo "Found $nolints generic NOLINTs"
fi;
# then fetch and run the main cpplint tool
wget -O cpplint.py $CPP_LINT_URL;
chmod u+x cpplint.py;
./cpplint.py \
--filter=-legal/copyright,-readability/streams,-runtime/arrays \
$(find ./ \( -name "*.h" -or -name "*.cpp" \) | xargs)
if [[ $? -ne 0 ]]; then
exit 1;
fi;
elif [[ $TASK = 'spellintian' ]]; then
# run spellintian only if it is the requested task, ignoring duplicate words
spellingfiles=$(eval "find ./ -type f -and ! \( \
$SPELLINGBLACKLIST \
\) | xargs")
# count the number of spellintian errors, ignoring duplicate words
spellingerrors=$(zrun spellintian $spellingfiles 2>&1 | grep -v "\(duplicate word\)" | wc -l)
if [[ $spellingerrors -ne 0 ]]; then
# print the output for info
zrun spellintian $spellingfiles | grep -v "\(duplicate word\)"
echo "Found $spellingerrors spelling errors via spellintian, ignoring duplicates"
exit 1;
else
echo "Found $spellingerrors spelling errors via spellintian, ignoring duplicates"
fi;
elif [[ $TASK = 'spellintian-duplicates' ]]; then
# run spellintian only if it is the requested task
spellingfiles=$(eval "find ./ -type f -and ! \( \
$SPELLINGBLACKLIST \
\) | xargs")
# count the number of spellintian errors
spellingerrors=$(zrun spellintian $spellingfiles 2>&1 | wc -l)
if [[ $spellingerrors -ne 0 ]]; then
# print the output for info
zrun spellintian $spellingfiles
echo "Found $spellingerrors spelling errors via spellintian"
exit 1;
else
echo "Found $spellingerrors spelling errors via spellintian"
fi;
elif [[ $TASK = 'codespell' ]]; then
# run codespell only if it is the requested task
spellingfiles=$(eval "find ./ -type f -and ! \( \
$SPELLINGBLACKLIST \
\) | xargs")
# count the number of codespell errors
spellingerrors=$(zrun codespell --check-filenames --quiet 2 --regex "[a-zA-Z0-9][\\-'a-zA-Z0-9]+[a-zA-Z0-9]" --exclude-file .codespellignore $spellingfiles 2>&1 | wc -l)
if [[ $spellingerrors -ne 0 ]]; then
# print the output for info
zrun codespell --check-filenames --quiet 2 --regex "[a-zA-Z0-9][\\-'a-zA-Z0-9]+[a-zA-Z0-9]" --exclude-file .codespellignore $spellingfiles
echo "Found $spellingerrors spelling errors via codespell"
exit 1;
else
echo "Found $spellingerrors spelling errors via codespell"
fi;
else
platformio ci --lib="." --project-option="lib_ldf_mode=deep" --board=$BOARD
fi
71 changes: 71 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
language: python
python:
- "2.7"

os: linux
dist: trusty
# Short duration job, use the container/without sudo image as it boots faster
sudo: false
# Use the latest Travis images since they are more up to date than the stable release.
group: edge

before_cache:
- rm -f $HOME/.cache/pip/log/debug.log # erase lo

cache:
directories:
- "~/.platformio"
- $HOME/.cache/pip # pip cache

env:
global:
# Warnings are errors
- PLATFORMIO_BUILD_FLAGS="-Werror"

matrix:
fast_finish: true
include:
- env: BOARD=uno PLATFORMIO_CI_SRC=.
- env: BOARD=diecimilaatmega328 PLATFORMIO_CI_SRC=.
- env: BOARD=pro16MHzatmega328 PLATFORMIO_CI_SRC=.

- os: linux
dist: trusty
# Short duration job, would use the container/without sudo image as it boots faster, but we need a backported lintian, so don't
sudo: required
env: TASK='spellintian'
addons:
apt:
packages:
- moreutils
- os: linux
dist: trusty
# Short duration job, would use the container/without sudo image as it boots faster, but we need a backported lintian, so don't
sudo: required
env: TASK='spellintian-duplicates'
addons:
apt:
packages:
- moreutils
- os: linux
dist: trusty
env: TASK='codespell'
addons:
apt:
packages:
- moreutils

allow_failures:
- os: linux
dist: trusty
env: TASK='spellintian-duplicates'

before_install:
- if [ "$TASK" == "spellintian" -o "$TASK" == "spellintian-duplicates" ]; then sudo add-apt-repository ppa:waja/trusty-backports -y; sudo apt-get update -qq; sudo apt-get install lintian -y; fi # Install a late enough lintian

install:
- if [ -z "$TASK" ]; then pip install --upgrade platformio; fi
- if [ "$TASK" = "codespell" ]; then pip install --upgrade git+https://github.com/lucasdemarchi/codespell.git; fi

script:
- bash -ex .travis-ci.sh
2 changes: 1 addition & 1 deletion RDMHandlers.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -716,7 +716,7 @@ void RDMHandler::HandleRDMMessage(const byte *message, int size) {
(expected_esta_id == WidgetSettings.EstaId() &&
(WidgetSettings.MatchesSerialNumber(message + 5) ||
is_broadcast)) ||
(expected_esta_id == 0xffff && is_broadcast));
(expected_esta_id == (int)0xffff && is_broadcast));

if (!to_us) {
if (is_broadcast) {
Expand Down