summaryrefslogtreecommitdiff
path: root/getrandom/.travis.yml
blob: bdd9e72f27059de1eb47845ddf6a12998077c8e4 (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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
language: rust
sudo: false

matrix:
  include:
    - name: "Linux, 1.32.0"
      rust: 1.32.0
      os: linux

    - name: "OSX, 1.32.0"
      rust: 1.32.0
      os: osx

    - name: "Linux, stable"
      rust: stable

    - name: "OSX+iOS, stable"
      rust: stable
      os: osx
      install:
        - rustup target add aarch64-apple-ios
      script:
        - cargo test
        - cargo test --examples
        - cargo build --target aarch64-apple-ios

    - name: "Linux, beta"
      rust: beta

    - name: "WASM via emscripten, stdweb, wasm-bindgen and WASI"
      rust: nightly
      addons:
        firefox: latest
        chrome: stable
      install:
        - rustup target add wasm32-unknown-unknown
        - rustup target add wasm32-unknown-emscripten
        - rustup target add asmjs-unknown-emscripten
        - rustup target add wasm32-wasi
        # Get latest geckodriver
        - export VERSION=$(curl -s https://api.github.com/repos/mozilla/geckodriver/releases/latest | jq -r ".tag_name")
        - wget -O geckodriver.tar.gz https://github.com/mozilla/geckodriver/releases/download/$VERSION/geckodriver-$VERSION-linux64.tar.gz
        - tar -xzf geckodriver.tar.gz
        # Get latest chromedirver
        - export VERSION=$(wget -q -O - https://chromedriver.storage.googleapis.com/LATEST_RELEASE)
        - wget -O chromedriver.zip https://chromedriver.storage.googleapis.com/$VERSION/chromedriver_linux64.zip
        - unzip chromedriver.zip
        # Get cargo-web
        - export VERSION=0.6.26 # Pin version for stability
        - wget -O cargo-web.gz https://github.com/koute/cargo-web/releases/download/$VERSION/cargo-web-x86_64-unknown-linux-gnu.gz
        - gunzip cargo-web.gz
        - chmod +x cargo-web
        # Get wasmtime
        - export VERSION=v0.3.0 # Pin version for stability
        - wget -O wasmtime.tar.xz https://github.com/CraneStation/wasmtime/releases/download/$VERSION/wasmtime-$VERSION-x86_64-linux.tar.xz
        - tar -xf wasmtime.tar.xz --strip-components=1
        # Get wasm-bindgen-test-runner which matches our wasm-bindgen version
        - export VERSION=$(cargo metadata --format-version=1 | jq -r '.packages[] | select ( .name == "wasm-bindgen" ) | .version')
        - wget -O wasm-bindgen.tar.gz https://github.com/rustwasm/wasm-bindgen/releases/download/$VERSION/wasm-bindgen-$VERSION-x86_64-unknown-linux-musl.tar.gz
        - tar -xzf wasm-bindgen.tar.gz --strip-components=1
        # Place the runner binaries in our PATH
        - mv cargo-web wasmtime wasm-bindgen-test-runner $HOME/.cargo/bin
        # Download and setup emscripten
        - cargo web prepare-emscripten
      env: EMCC_CFLAGS="-s ERROR_ON_UNDEFINED_SYMBOLS=0"
      script:
        # We cannot run emscripten test binaries (see rust-lang/rust#63649).
        # However, we can still build and link all tests to make sure that works.
        # This is actually useful as it finds stuff such as rust-random/rand#669
        - cargo web test --target wasm32-unknown-emscripten --no-run
        - cargo web test --target asmjs-unknown-emscripten --no-run
        # wasi tests
        - cargo test --target wasm32-wasi
        # stdweb tests (Node, Chrome)
        - cargo web test --nodejs --target=wasm32-unknown-unknown --features=stdweb
        - cargo web test --target=wasm32-unknown-unknown --features=stdweb
        # wasm-bindgen tests (Node, Firefox, Chrome)
        - cargo test --target wasm32-unknown-unknown --features=wasm-bindgen
        - GECKODRIVER=$PWD/geckodriver cargo test --target wasm32-unknown-unknown --features=test-in-browser
        - CHROMEDRIVER=$PWD/chromedriver cargo test --target wasm32-unknown-unknown --features=test-in-browser

    - name: "Linux, nightly, docs"
      rust: nightly
      os: linux
      install:
        - cargo --list | egrep "^\s*deadlinks$" -q || cargo install cargo-deadlinks
        - cargo deadlinks -V
      script:
        - cargo test
        - cargo test --benches
        - cargo test --examples
        # remove cached documentation, otherwise files from previous PRs can get included
        - rm -rf target/doc
        - cargo doc --no-deps --all --features=std,log
        - cargo deadlinks --dir target/doc
        # also test minimum dependency versions are usable
        - cargo generate-lockfile -Z minimal-versions
        - cargo test

    - name: "OSX, nightly, docs"
      rust: nightly
      os: osx
      install:
        - cargo --list | egrep "^\s*deadlinks$" -q || cargo install cargo-deadlinks
        - cargo deadlinks -V
      script:
        - cargo test
        - cargo test --benches
        - cargo test --examples
        # remove cached documentation, otherwise files from previous PRs can get included
        - rm -rf target/doc
        - cargo doc --no-deps --all --features=std,log
        - cargo deadlinks --dir target/doc
        # also test minimum dependency versions are usable
        - cargo generate-lockfile -Z minimal-versions
        - cargo test

    - name: "cross-platform build only"
      rust: nightly
      install:
        - rustup target add x86_64-sun-solaris
        - rustup target add x86_64-unknown-cloudabi
        - rustup target add x86_64-unknown-freebsd
        - rustup target add x86_64-fuchsia
        - rustup target add x86_64-unknown-netbsd
        - rustup target add x86_64-unknown-redox
        - rustup target add x86_64-fortanix-unknown-sgx
        # For no_std targets
        - rustup component add rust-src
        - cargo install cargo-xbuild || true
      script:
        - cargo build --target=x86_64-sun-solaris
        - cargo build --target=x86_64-unknown-cloudabi
        - cargo build --target=x86_64-unknown-freebsd
        - cargo build --target=x86_64-fuchsia
        - cargo build --target=x86_64-unknown-netbsd
        - cargo build --target=x86_64-unknown-redox
        - cargo build --target=x86_64-fortanix-unknown-sgx
        - cargo xbuild --target=x86_64-unknown-uefi
        - cargo xbuild --target=x86_64-unknown-hermit
        - cargo xbuild --target=x86_64-unknown-l4re-uclibc
        - cargo xbuild --target=x86_64-wrs-vxworks
        # also test minimum dependency versions are usable
        - cargo generate-lockfile -Z minimal-versions
        - cargo build --target=x86_64-sun-solaris
        - cargo build --target=x86_64-unknown-cloudabi
        - cargo build --target=x86_64-unknown-freebsd
        - cargo build --target=x86_64-fuchsia
        - cargo build --target=x86_64-unknown-netbsd
        - cargo build --target=x86_64-unknown-redox
        - cargo build --target=x86_64-fortanix-unknown-sgx
        - cargo xbuild --target=x86_64-unknown-uefi
        - cargo xbuild --target=x86_64-unknown-hermit
        - cargo xbuild --target=x86_64-unknown-l4re-uclibc
        - cargo xbuild --target=x86_64-uwp-windows-gnu

    # Trust cross-built/emulated targets. We must repeat all non-default values.
    - name: "Linux (MIPS, big-endian)"
      env: TARGET=mips-unknown-linux-gnu
      rust: stable
      sudo: required
      dist: trusty
      services: docker
      install:
        - sh utils/ci/install.sh
        - source ~/.cargo/env || true
      script:
        - bash utils/ci/script.sh

    - name: "Android (ARMv7)"
      env: TARGET=armv7-linux-androideabi
      rust: stable
      sudo: required
      dist: trusty
      services: docker
      install:
        - sh utils/ci/install.sh
        - source ~/.cargo/env || true
      script:
        - bash utils/ci/script.sh

    - name: "rustfmt"
      rust: stable
      install:
        - rustup component add rustfmt
      script:
        - cargo fmt --all -- */*.rs --check

  allow_failures:
    # Formatting errors should appear in Travis, but not break the build.
    - name: "rustfmt"

before_install:
  - set -e
  - rustup self update

before_script:
  - export RUSTFLAGS="-D warnings"

script:
  - cargo test
  - cargo test --examples

after_script: set +e

cache:
  cargo: true
  directories:
    - .local/share/cargo-web

before_cache:
  # Travis can't cache files that are not readable by "others"
  - chmod -R a+r $HOME/.cargo

notifications:
  email:
    on_success: never

branches:
  only:
    - master