summaryrefslogtreecommitdiffstats
path: root/.travis.yml
blob: 21548c0b7e59b583c217bf44bbe7af0952e027c6 (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
dist: xenial
language: python

# Used: travis encrypt "chat.freenode.net#scons" --add notifications.irc
notifications:
  irc:
    secure: TTb+41Bj1qIUc6vj+kDqBME8H3lqXdAe1RWAjjz5hL7bzFah6qCBHNJn4DwzqYs6+Pwuwp+6wFy8hgmQttJnXve4h6GtjtvlWprDqxaC7RkFqMWFDBzDalgbB54Bi4+TTZmSJ1K/duI3LrDaN873nyn+2GBnj+3TiNtgURp1fsJMpPxXJzAsoC8UthEsbx0Zkoal/WF+IfsT2q1yQRmAwB9r/drbahx/FfL16r1QjDbI9y1fKvN5J3PirLUvxtHfuH1r8zq1vlLew2fvldgVRtFv7+Lsk2waG/eiRpMf94V5JWP1rNreV/i4AUbZaTLb3bkrhtvTjSKhvx69Ydm+ygXdRgWOD/KRgqpLNAfA+t/a2J1R++89svQI4dPBpQjlfua1elcDCFddeIslgnjDUPO23Y0o7tHAy8sWkwhTcZH1Wm42uJP6Z6tHTH6+dMLvvZpkq4RUKUcrXvoUvCsVlWMGjcsBX+AEQSFGDJnLtLehO9x0QbgVga/IRKjgpDWgQDZgro3AkGg/zzVj5uFRUoU+rbmEXq9feh5i3HfExAvA3UoEtnQ6uadDyWqtQcLRFmPSWDU82CO+sanGdFL0jBjigE8ubPObzxEAz3Fg1xk56OYBkAdEd+2KEzeO1nqJmrhsnc3c/3+b1cBvaL5ozW4XB4XcWsOi268SoiBrcBo=

addons:
  apt:
    update: true

os:
  - linux

install:
  # needed for Docbook tests, must be in virtualenv context
  - pip install -r requirements.txt
  # do the rest of the image setup
  - ./.travis/install.sh

# Note: Travis does not provide a way to specify the order of
# jobs within a Stage, which are "run in parallel", but with
# limitations: from observation four or five are kicked
# off, then additional jobs as initial ones complete.
# We want the slowest jobs in the first batch since the
# faster ones are less than half the time of the slowest,
# we should be able to finish the Test task in the time of the
# slowest job rather than (a fast job + the slowest job).
# Putting the pypy jobs first may help with this, though it's
# apparently not guaranteed.

jobs:

  # pypy is not passing atm, but still report build success for now
  # allow coverage to fail, so we can still do testing for all platforms
  allow_failures:
    - python: pypy3
    
  include:
    - &test_job
      script: python runtest.py -a -t -j 2 || if [[ $? == 2 ]]; then true; else false; fi
      before_script: skip
      after_success: skip
      python: pypy3

    - <<: *test_job
      python: 3.5

    - <<: *test_job
      python: 3.6
      
    - <<: *test_job
      python: 3.7
      dist: xenial  # required for Python >= 3.7

    - <<: *test_job
      python: 3.8
      dist: bionic  # required for Python >= 3.8

    - <<: *test_job
      python: 3.9-dev
      dist: bionic  # required for Python >= 3.8

    - &coverage_jobs
      dist: bionic
      python: 3.7
      name: coverage
      before_script:
        - ./.travis/coverage_setup.sh

      script:
        - coverage run -p --rcfile="$PWD/.coveragerc" runtest.py -a -j 2 || if [[ $? == 2 ]]; then true; else false; fi

      after_script:
        - coverage combine
        - coverage report
        - coverage xml -i -o coverage_xml.xml
        - codecov -X gcov --file coverage_xml.xml

    - &scons_build_job
      name: SCons Build
      python: 3.7
      install:
        - sudo apt-get -y install docbook-xml docbook-xsl xsltproc libxml2-dev libxslt-dev fop docbook-xsl-doc-pdf
        - sudo apt-get -y --no-install-recommends install texlive texlive-latex3 biber texmaker ghostscript texlive-bibtex-extra texlive-latex-extra texlive-font-utils latexmk
        - pip install -r requirements.txt
      script:
        - python bin/docs-update-generated.py
        - python bin/docs-validate.py
        - python bin/docs-create-example-outputs.py
        - python scripts/scons.py
        - ls -l build/dist