#!/bin/sh # # Copyright 2017-2018 Lars Wirzenius # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . set -eu title() { printf "\n" echo "$@" n=77 for i in $(seq $n) do printf "%s" - done printf '\n' } title Remote or local yarns? remote=no unit=yes yarns=yes if [ "$#" -gt 0 ] then case "$1" in https://*) remote=yes unit=no yarns=yes remote_url="$1" shift 1 ;; yarns) remote=no unit=no yarns=yes shift 1 ;; local) remote=no unit=yes yarns=no shift 1 ;; *) echo "Don't understand args: $@" 1>&2 exit 1 ;; esac fi if [ "$unit" = yes ] then title Unit tests python3 -m CoverageTestRunner --ignore-missing-from=without-tests ick2 if [ -e .git ] then sources="$(git ls-files | grep -Fvxf copyright-exceptions)" title Copyright statements copyright-statement-lint $sources title Copyright licences ./is-agpl3+ $sources fi python_sources="ick_controller.py worker_manager ick2 icktool" title pycodestyle pycodestyle ick2 $python_sources title pylint pylint3 --rcfile pylint.conf $python_sources fi if [ "$yarns" = yes ] then title Yarns if [ "$remote" = no ] then impl=yarns/900-local.yarn args="" else impl=yarns/900-remote.yarn args="--env ICK_URL=$remote_url" fi yarn yarns/[^9]*.yarn yarns/900-implements.yarn "$impl" \ --shell python2 \ --shell-arg '' \ --shell-library yarns/lib.py \ --cd-datadir \ $args \ "$@" fi title OK echo "All tests pass"