Skip to content

Commit bf54eaa

Browse files
authored
Deny warnings in CI tests (#82)
1 parent f94b44a commit bf54eaa

File tree

6 files changed

+82
-65
lines changed

6 files changed

+82
-65
lines changed

.travis.yml

Lines changed: 64 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,19 @@ sudo: false
33

44
matrix:
55
include:
6-
- rust: 1.32.0
7-
env: DESCRIPTION="Linux, 1.32.0"
6+
- name: "Linux, 1.32.0"
7+
rust: 1.32.0
88
os: linux
99

10-
- rust: 1.32.0
11-
env: DESCRIPTION="OSX, 1.32.0"
10+
- name: "OSX, 1.32.0"
11+
rust: 1.32.0
1212
os: osx
1313

14-
- rust: stable
15-
env: DESCRIPTION="Linux, stable"
14+
- name: "Linux, stable"
15+
rust: stable
1616

17-
- rust: stable
18-
env: DESCRIPTION="OSX+iOS, stable"
17+
- name: "OSX+iOS, stable"
18+
rust: stable
1919
os: osx
2020
install:
2121
- rustup target add aarch64-apple-ios
@@ -24,19 +24,42 @@ matrix:
2424
- cargo test --examples
2525
- cargo build --target aarch64-apple-ios
2626

27-
- rust: beta
28-
env: DESCRIPTION="Linux, beta"
27+
- name: "Linux, beta"
28+
rust: beta
2929

30-
- rust: stable
31-
env: DESCRIPTION="Rustfmt"
30+
- name: "WASM via emscripten, stdweb, wasm-bindgen and WASI"
31+
rust: nightly
3232
install:
33-
- rustup component add rustfmt
33+
- rustup target add wasm32-unknown-unknown
34+
- rustup target add wasm32-unknown-emscripten
35+
- rustup target add wasm32-wasi
36+
- nvm install 9
37+
- ./utils/ci/install_cargo_web.sh
38+
- cargo web prepare-emscripten
39+
- cargo web -V
40+
- cargo list | grep install-update || cargo install -f cargo-update
41+
- cargo install-update -i cargo-update wasm-bindgen-cli wasm-pack
42+
addons:
43+
chrome: stable
3444
script:
35-
- cargo fmt --all -- */*.rs --check
45+
# Testing wasm32-unknown-emscripten fails because of rust-lang/rust#49877
46+
# However, we can still build and link all tests to make sure that works.
47+
# This is actually useful as it finds stuff such as rust-random/rand#669
48+
- EMCC_CFLAGS="-s ERROR_ON_UNDEFINED_SYMBOLS=0" cargo web test --target wasm32-unknown-emscripten --no-run
49+
#- cargo web test --target wasm32-unknown-emscripten
50+
#- cargo web test --nodejs --target wasm32-unknown-emscripten
51+
#- cargo build --target wasm32-unknown-unknown # without any features
52+
- cargo build --target wasm32-wasi
53+
- cargo build --target wasm32-unknown-unknown --features=wasm-bindgen
54+
- cargo web test --target wasm32-unknown-unknown --features=stdweb
55+
- cargo build --manifest-path tests/wasm_bindgen/Cargo.toml --target wasm32-unknown-unknown
56+
- wasm-bindgen --nodejs target/wasm32-unknown-unknown/debug/getrandom_wasm_bindgen_test.wasm --out-dir tests/wasm_bindgen/js
57+
- node tests/wasm_bindgen/js/index.js
58+
- wasm-pack test --node tests/wasm_bindgen
3659

37-
- rust: nightly
60+
- name: "Linux, nightly, docs"
61+
rust: nightly
3862
os: linux
39-
env: DESCRIPTION="Linux, nightly, docs"
4063
install:
4164
- cargo --list | egrep "^\s*deadlinks$" -q || cargo install cargo-deadlinks
4265
- cargo deadlinks -V
@@ -52,9 +75,9 @@ matrix:
5275
- cargo generate-lockfile -Z minimal-versions
5376
- cargo test
5477

55-
- rust: nightly
78+
- name: "OSX, nightly, docs"
79+
rust: nightly
5680
os: osx
57-
env: DESCRIPTION="OSX, nightly, docs"
5881
install:
5982
- cargo --list | egrep "^\s*deadlinks$" -q || cargo install cargo-deadlinks
6083
- cargo deadlinks -V
@@ -70,38 +93,8 @@ matrix:
7093
- cargo generate-lockfile -Z minimal-versions
7194
- cargo test
7295

73-
- rust: nightly
74-
env: DESCRIPTION="WASM via emscripten, stdweb, wasm-bindgen and WASI"
75-
install:
76-
- rustup target add wasm32-unknown-unknown
77-
- rustup target add wasm32-unknown-emscripten
78-
- rustup target add wasm32-wasi
79-
- nvm install 9
80-
- ./utils/ci/install_cargo_web.sh
81-
- cargo web prepare-emscripten
82-
- cargo web -V
83-
- cargo list | grep install-update || cargo install -f cargo-update
84-
- cargo install-update -i cargo-update wasm-bindgen-cli wasm-pack
85-
addons:
86-
chrome: stable
87-
script:
88-
# Testing wasm32-unknown-emscripten fails because of rust-lang/rust#49877
89-
# However, we can still build and link all tests to make sure that works.
90-
# This is actually useful as it finds stuff such as rust-random/rand#669
91-
- EMCC_CFLAGS="-s ERROR_ON_UNDEFINED_SYMBOLS=0" cargo web test --target wasm32-unknown-emscripten --no-run
92-
#- cargo web test --target wasm32-unknown-emscripten
93-
#- cargo web test --nodejs --target wasm32-unknown-emscripten
94-
#- cargo build --target wasm32-unknown-unknown # without any features
95-
- cargo build --target wasm32-wasi
96-
- cargo build --target wasm32-unknown-unknown --features=wasm-bindgen
97-
- cargo web test --target wasm32-unknown-unknown --features=stdweb
98-
- cargo build --manifest-path tests/wasm_bindgen/Cargo.toml --target wasm32-unknown-unknown
99-
- wasm-bindgen --nodejs target/wasm32-unknown-unknown/debug/getrandom_wasm_bindgen_test.wasm --out-dir tests/wasm_bindgen/js
100-
- node tests/wasm_bindgen/js/index.js
101-
- wasm-pack test --node tests/wasm_bindgen
102-
103-
- rust: nightly
104-
env: DESCRIPTION="cross-platform build only"
96+
- name: "cross-platform build only"
97+
rust: nightly
10598
# libc on Redox is broken: see https://github.com/rust-lang/libc/pull/1450
10699
install:
107100
- rustup target add x86_64-sun-solaris
@@ -140,36 +133,48 @@ matrix:
140133
- cargo xbuild --target=x86_64-uwp-windows-gnu
141134

142135
# Trust cross-built/emulated targets. We must repeat all non-default values.
143-
- rust: stable
136+
- name: "Linux (MIPS, big-endian)"
137+
env: TARGET=mips-unknown-linux-gnu
138+
rust: stable
144139
sudo: required
145140
dist: trusty
146141
services: docker
147-
env: DESCRIPTION="Linux (MIPS, big-endian)" TARGET=mips-unknown-linux-gnu
148142
install:
149143
- sh utils/ci/install.sh
150144
- source ~/.cargo/env || true
151145
script:
152146
- bash utils/ci/script.sh
153147

154-
- rust: stable
148+
- name: "Android (ARMv7)"
149+
env: TARGET=armv7-linux-androideabi
150+
rust: stable
155151
sudo: required
156152
dist: trusty
157153
services: docker
158-
env: DESCRIPTION="Android (ARMv7)" TARGET=armv7-linux-androideabi
159154
install:
160155
- sh utils/ci/install.sh
161156
- source ~/.cargo/env || true
162157
script:
163158
- bash utils/ci/script.sh
164159

160+
- name: "rustfmt"
161+
rust: stable
162+
install:
163+
- rustup component add rustfmt
164+
script:
165+
- cargo fmt --all -- */*.rs --check
166+
165167
allow_failures:
166168
# Formatting errors should appear in Travis, but not break the build.
167-
- env: DESCRIPTION="Rustfmt"
169+
- name: "rustfmt"
168170

169171
before_install:
170172
- set -e
171173
- rustup self update
172174

175+
before_script:
176+
- export RUSTFLAGS="-D warnings"
177+
173178
script:
174179
- cargo test
175180
- cargo test --examples
@@ -188,3 +193,7 @@ before_cache:
188193
notifications:
189194
email:
190195
on_success: never
196+
197+
branches:
198+
only:
199+
- master

appveyor.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,5 +43,10 @@ install:
4343
build: false
4444

4545
test_script:
46+
- set RUSTFLAGS=-D warnings
4647
- cargo test
4748
- cargo test --examples
49+
50+
branches:
51+
only:
52+
- master

src/error.rs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,10 @@ pub struct Error(NonZeroU32);
2121

2222
impl Error {
2323
#[deprecated(since = "0.1.7")]
24+
/// Unknown error.
2425
pub const UNKNOWN: Error = UNSUPPORTED;
2526
#[deprecated(since = "0.1.7")]
27+
/// System entropy source is unavailable.
2628
pub const UNAVAILABLE: Error = UNSUPPORTED;
2729

2830
/// Codes below this point represent OS Errors (i.e. positive i32 values).
@@ -40,7 +42,7 @@ impl Error {
4042
/// that it works in `no_std` contexts. If this method returns `None`, the
4143
/// error value can still be formatted via the `Diplay` implementation.
4244
#[inline]
43-
pub fn raw_os_error(&self) -> Option<i32> {
45+
pub fn raw_os_error(self) -> Option<i32> {
4446
if self.0.get() < Self::INTERNAL_START {
4547
Some(self.0.get() as i32)
4648
} else {
@@ -53,7 +55,7 @@ impl Error {
5355
/// This code can either come from the underlying OS, or be a custom error.
5456
/// Use [`Error::raw_os_error()`] to disambiguate.
5557
#[inline]
56-
pub fn code(&self) -> NonZeroU32 {
58+
pub fn code(self) -> NonZeroU32 {
5759
self.0
5860
}
5961
}
@@ -66,7 +68,8 @@ fn os_err_desc(errno: i32, buf: &mut [u8]) -> Option<&str> {
6668
}
6769

6870
// Take up to trailing null byte
69-
let idx = buf.iter().position(|&b| b == 0).unwrap_or(buf.len());
71+
let n = buf.len();
72+
let idx = buf.iter().position(|&b| b == 0).unwrap_or(n);
7073
core::str::from_utf8(&buf[..idx]).ok()
7174
}
7275

src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@
126126
)]
127127
#![no_std]
128128
#![cfg_attr(feature = "stdweb", recursion_limit = "128")]
129-
#![warn(rust_2018_idioms, unused_lifetimes)]
129+
#![warn(rust_2018_idioms, unused_lifetimes, missing_docs)]
130130

131131
#[macro_use]
132132
extern crate cfg_if;

src/use_file.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ const FILE_PATH: &str = "/dev/random\0";
2424

2525
pub fn getrandom_inner(dest: &mut [u8]) -> Result<(), Error> {
2626
static FD: LazyFd = LazyFd::new();
27-
let fd = FD.init(init_file).ok_or(last_os_error())?;
27+
let fd = FD.init(init_file).ok_or_else(last_os_error)?;
2828
let read = |buf: &mut [u8]| unsafe { libc::read(fd, buf.as_mut_ptr() as *mut _, buf.len()) };
2929

3030
if cfg!(target_os = "emscripten") {

src/wasm32_stdweb.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ extern crate std;
1111

1212
use core::mem;
1313

14+
use stdweb::js;
1415
use stdweb::unstable::TryInto;
1516
use stdweb::web::error::Error as WebError;
16-
use stdweb::{_js_impl, js};
1717

1818
use crate::error::{STDWEB_NO_RNG, STDWEB_RNG_FAILED};
1919
use crate::Error;
@@ -69,8 +69,8 @@ fn getrandom_init() -> Result<RngSource, Error> {
6969
unreachable!()
7070
}
7171
} else {
72-
let err: WebError = js! { return @{ result }.error }.try_into().unwrap();
73-
error!("getrandom unavailable: {}", err);
72+
let _err: WebError = js! { return @{ result }.error }.try_into().unwrap();
73+
error!("getrandom unavailable: {}", _err);
7474
Err(STDWEB_NO_RNG)
7575
}
7676
}
@@ -105,8 +105,8 @@ fn getrandom_fill(source: RngSource, dest: &mut [u8]) -> Result<(), Error> {
105105
};
106106

107107
if js! { return @{ result.as_ref() }.success } != true {
108-
let err: WebError = js! { return @{ result }.error }.try_into().unwrap();
109-
error!("getrandom failed: {}", err);
108+
let _err: WebError = js! { return @{ result }.error }.try_into().unwrap();
109+
error!("getrandom failed: {}", _err);
110110
return Err(STDWEB_RNG_FAILED);
111111
}
112112
}

0 commit comments

Comments
 (0)