summaryrefslogtreecommitdiff
path: root/.travis.yml
blob: 9a23a9be779c6dd9fbc0569c1d19d4a1444b245a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
sudo: required
dist: trusty
language: c
compiler:
  - gcc
git:
  depth: 1
env:
  - MAKEOPTS="-j4"
  - TRAVIS_BOARD=feather_huzzah
  - TRAVIS_BOARD=arduino_zero
  - TRAVIS_BOARD=circuitplayground_express
  - TRAVIS_BOARD=circuitplayground_express_crickit
  - TRAVIS_BOARD=feather_m0_basic
  - TRAVIS_BOARD=feather_m0_adalogger
  - TRAVIS_BOARD=feather_m0_rfm69
  - TRAVIS_BOARD=feather_m0_rfm9x
  - TRAVIS_BOARD=feather_m0_express
  - TRAVIS_BOARD=feather_m0_express_crickit
  - TRAVIS_BOARD=feather_m4_express
  - TRAVIS_BOARD=itsybitsy_m0_express
  - TRAVIS_BOARD=itsybitsy_m4_express
  - TRAVIS_BOARD=metro_m0_express
  - TRAVIS_BOARD=metro_m4_express
  - TRAVIS_BOARD=pirkey_m0
  - TRAVIS_BOARD=trinket_m0
  - TRAVIS_BOARD=gemma_m0
  - TRAVIS_BOARD=feather52832
  - TRAVIS_BOARD=pca10056
  - TRAVIS_TEST=qemu
  - TRAVIS_TEST=unix
  - TRAVIS_TEST=docs

addons:
  artifacts:
    paths:
    - $(ls -d1 bin/*/* | tr "\n" ":")
    target_paths: /

notifications:
  webhooks:
    urls:
      - https://rosie-ci.ngrok.io/travis
    on_success: always
    on_failure: always
    on_start: always
    on_cancel: always
    on_error: always

before_script:
  - sudo dpkg --add-architecture i386

  - ([[ -z "$TRAVIS_TEST" ]] || sudo apt-get install -y qemu-system)
  - ([[ -z "$TRAVIS_BOARD" ]] || (wget https://s3.amazonaws.com/adafruit-circuit-python/gcc-arm-embedded_7-2017q4-1~trusty3_amd64.deb && sudo dpkg -i gcc-arm-embedded*_amd64.deb))
  - ([[ $TRAVIS_TEST != "qemu" ]] || (wget https://s3.amazonaws.com/adafruit-circuit-python/gcc-arm-embedded_7-2017q4-1~trusty3_amd64.deb && sudo dpkg -i gcc-arm-embedded*_amd64.deb))

  # For nrf builds
  - ([[ $TRAVIS_BOARD != "feather52832" && $TRAVIS_BOARD != "pca10056" ]] || sudo ports/nrf/drivers/bluetooth/download_ble_stack.sh)
  # For huzzah builds
  - if [[ $TRAVIS_BOARD = "feather_huzzah" ]]; then wget https://github.com/jepler/esp-open-sdk/releases/download/2018-06-10/xtensa-lx106-elf-standalone.tar.gz && tar xavf xtensa-lx106-elf-standalone.tar.gz; PATH=$(readlink -f xtensa-lx106-elf/bin):$PATH; fi
  - ([[ -z "$TRAVIS_TEST" ]] || sudo pip install --upgrade cpp-coveralls)
  - ([[ $TRAVIS_TEST != "docs" ]] || sudo pip install Sphinx sphinx-rtd-theme recommonmark)
  - gcc --version
  - ([[ -z "$TRAVIS_BOARD" ]] || arm-none-eabi-gcc --version)
  - python3 --version
  
  - sudo apt-get install realpath
  # For coverage testing (a specific urllib3 version is needed for requests and cpp-coveralls to work together)
  - sudo pip install -Iv urllib3==1.22
  - sudo pip install cpp-coveralls


script:
  # Build mpy-cross first because other builds depend on it.
  - echo 'Building mpy-cross' && echo -en 'travis_fold:start:mpy-cross\\r'
  - make -C mpy-cross -j2
  - echo -en 'travis_fold:end:mpy-cross\\r'

  - echo 'Building Adafruit binaries' && echo -en 'travis_fold:start:adafruit-bins\\r'
  - ([[ -z "$TRAVIS_BOARD" ]] || tools/build_adafruit_bins.sh)
  - echo -en 'travis_fold:end:adafruit-bins\\r'

  - echo 'Building unix' && echo -en 'travis_fold:start:unix\\r'
  - ([[ $TRAVIS_TEST != "unix" ]] || make -C ports/unix deplibs -j2)
  - ([[ $TRAVIS_TEST != "unix" ]] || make -C ports/unix -j2)
  - ([[ $TRAVIS_TEST != "unix" ]] || make -C ports/unix coverage -j2)
  - echo -en 'travis_fold:end:unix\\r'

  - echo 'Building qemu' && echo -en 'travis_fold:start:qemu\\r'
  - ([[ $TRAVIS_TEST != "qemu" ]] || make -C ports/qemu-arm test -j2)
  - echo -en 'travis_fold:end:qemu\\r'

  # run tests without coverage info
  #- (cd tests && MICROPY_CPYTHON3=python3.4 ./run-tests -j1)
  #- (cd tests && MICROPY_CPYTHON3=python3.4 ./run-tests -j1 --emit native)

  # run tests with coverage info
  - echo 'Test all' && echo -en 'travis_fold:start:test_all\\r'
  - ([[ $TRAVIS_TEST != "unix" ]] || (cd tests && MICROPY_CPYTHON3=python3.4 MICROPY_MICROPYTHON=../ports/unix/micropython_coverage ./run-tests -j1))
  - echo -en 'travis_fold:end:test_all\\r'

  - echo 'Test threads' && echo -en 'travis_fold:start:test_threads\\r'
  - ([[ $TRAVIS_TEST != "unix" ]] || (cd tests && MICROPY_CPYTHON3=python3.4 MICROPY_MICROPYTHON=../ports/unix/micropython_coverage ./run-tests -j1 -d thread))
  - echo -en 'travis_fold:end:test_threads\\r'

  - echo 'Testing with native' && echo -en 'travis_fold:start:test_native\\r'
  - ([[ $TRAVIS_TEST != "unix" ]] || (cd tests && MICROPY_CPYTHON3=python3.4 MICROPY_MICROPYTHON=../ports/unix/micropython_coverage ./run-tests -j1 --emit native))
  - echo -en 'travis_fold:end:test_native\\r'

  - (echo 'Testing with mpy' && echo -en 'travis_fold:start:test_mpy\\r')
  - ([[ $TRAVIS_TEST != "unix" ]] || (cd tests && MICROPY_CPYTHON3=python3.4 MICROPY_MICROPYTHON=../ports/unix/micropython_coverage ./run-tests -j1 --via-mpy -d basics float))
  - echo -en 'travis_fold:end:test_mpy\\r'

  - (echo 'Building docs' && echo -en 'travis_fold:start:build_docs\\r')
  - ([[ $TRAVIS_TEST != "docs" ]] || sphinx-build -E -W -b html . _build/html)
  - echo -en 'travis_fold:end:build_docs\\r'


  # test when input script comes from stdin
  - cat tests/basics/0prelim.py | ports/unix/micropython_coverage | grep -q 'abc'

  # run coveralls coverage analysis (try to, even if some builds/tests failed)
  #- (cd ports/unix && coveralls --root ../.. --build-root . --gcov $(which gcov) --gcov-options '\-o build-coverage/' --include py --include extmod)

  # run tests on stackless build
  # - rm -rf ports/unix/build-coverage
  # - make ${MAKEOPTS} -C ports/unix coverage CFLAGS_EXTRA="-DMICROPY_STACKLESS=1 -DMICROPY_STACKLESS_STRICT=1"
  # - (cd tests && MICROPY_CPYTHON3=python3.4 MICROPY_MICROPYTHON=../ports/unix/micropython_coverage ./run-tests)

after_failure:
  - (cd tests && for exp in *.exp; do testbase=$(basename $exp .exp); echo -e "\nFAILURE $testbase"; diff -u $testbase.exp $testbase.out; done)
  - (grep "FAIL" ports/qemu-arm/build/console.out)