From 4a80337318a1cd70b7f1c998aa388b68458502ef Mon Sep 17 00:00:00 2001 From: Victor Koenders Date: Fri, 1 Apr 2022 12:27:57 +0200 Subject: [PATCH 1/7] Added cross platform tests --- .github/workflows/cross_platform.yml | 63 ++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 .github/workflows/cross_platform.yml diff --git a/.github/workflows/cross_platform.yml b/.github/workflows/cross_platform.yml new file mode 100644 index 00000000..90af7061 --- /dev/null +++ b/.github/workflows/cross_platform.yml @@ -0,0 +1,63 @@ +{ + "name": "Cross platform tests", + "on": { + "push": { + "branches": [ + "trunk", + "v*.x", + "ci/*" + ] + }, + "pull_request": { + "branches": [ + "trunk", + "v*.x" + ] + } + }, + "jobs": { + "check": { + "name": "Check", + "runs-on": "ubuntu-latest", + "strategy": { + "fail-fast": false, + "matrix": { + "platforms": [ + "riscv32imac-unknown-none-elf", + "wasm32-unknown-unknown", + "i686-unknown-linux-gnu" + ] + } + }, + "steps": [ + { + "uses": "actions/checkout@v2", + "name": "Checkout" + }, + { + "uses": "actions-rs/toolchain@v1", + "with": { + "profile": "minimal", + "toolchain": "stable", + "override": true + }, + "name": "Install Rust stable" + }, + { + "uses": "actions-rs/install@v0.1", + "with": { + "crate": "cross" + }, + "name": "Install cargo cross" + }, + { + "run": "cargo test", + "name": "Run tests", + "env": { + "RUSTFLAGS": "-D warnings" + } + } + ] + } + } +} From 68e7dde031dd6589c7a8a291d4009fd54daa5642 Mon Sep 17 00:00:00 2001 From: Victor Koenders Date: Fri, 1 Apr 2022 12:40:49 +0200 Subject: [PATCH 2/7] Added all cross platforms --- .github/workflows/cross_platform.yml | 34 ++++++++++++++++++++++++---- 1 file changed, 30 insertions(+), 4 deletions(-) diff --git a/.github/workflows/cross_platform.yml b/.github/workflows/cross_platform.yml index 90af7061..ebfefaf1 100644 --- a/.github/workflows/cross_platform.yml +++ b/.github/workflows/cross_platform.yml @@ -17,15 +17,41 @@ }, "jobs": { "check": { - "name": "Check", + "name": "Test", "runs-on": "ubuntu-latest", "strategy": { "fail-fast": false, "matrix": { "platforms": [ - "riscv32imac-unknown-none-elf", - "wasm32-unknown-unknown", - "i686-unknown-linux-gnu" + "aarch64-unknown-linux-gnu", + "aarch64-unknown-linux-musl", + "arm-unknown-linux-gnueabi", + "arm-unknown-linux-gnueabihf", + "arm-unknown-linux-musleabi", + "arm-unknown-linux-musleabihf", + "armv5te-unknown-linux-gnueabi", + "armv5te-unknown-linux-musleabi", + "armv7-unknown-linux-gnueabihf", + "armv7-unknown-linux-musleabihf", + "i586-unknown-linux-gnu", + "i586-unknown-linux-musl", + "i686-pc-windows-gnu", + "i686-unknown-linux-gnu", + "i686-unknown-linux-musl", + "mips-unknown-linux-gnu", + "mips-unknown-linux-musl", + "mips64-unknown-linux-gnuabi64", + "mips64el-unknown-linux-gnuabi64", + "mipsel-unknown-linux-gnu", + "mipsel-unknown-linux-musl", + "powerpc-unknown-linux-gnu", + "powerpc64-unknown-linux-gnu", + "powerpc64le-unknown-linux-gnu", + "riscv64gc-unknown-linux-gnu", + "sparc64-unknown-linux-gnu", + "x86_64-pc-windows-gnu", + "x86_64-unknown-linux-gnu", + "x86_64-unknown-linux-musl", ] } }, From 3e80ae993ccb221d09aa96e4d4eb2ed204c88cea Mon Sep 17 00:00:00 2001 From: Victor Koenders Date: Fri, 1 Apr 2022 12:42:09 +0200 Subject: [PATCH 3/7] Fixed an issue where `usize` and `isize` would be encoded wrong on 32 bit platforms --- src/enc/impls.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/enc/impls.rs b/src/enc/impls.rs index 0269a1b6..0f061acd 100644 --- a/src/enc/impls.rs +++ b/src/enc/impls.rs @@ -134,8 +134,8 @@ impl Encode for usize { crate::varint::varint_encode_usize(encoder.writer(), E::C::ENDIAN, *self) } IntEncoding::Fixed => match E::C::ENDIAN { - Endian::Big => encoder.writer().write(&self.to_be_bytes()), - Endian::Little => encoder.writer().write(&self.to_le_bytes()), + Endian::Big => encoder.writer().write(&(*self as u64).to_be_bytes()), + Endian::Little => encoder.writer().write(&(*self as u64).to_le_bytes()), }, } } @@ -246,8 +246,8 @@ impl Encode for isize { crate::varint::varint_encode_isize(encoder.writer(), E::C::ENDIAN, *self) } IntEncoding::Fixed => match E::C::ENDIAN { - Endian::Big => encoder.writer().write(&self.to_be_bytes()), - Endian::Little => encoder.writer().write(&self.to_le_bytes()), + Endian::Big => encoder.writer().write(&(*self as i64).to_be_bytes()), + Endian::Little => encoder.writer().write(&(*self as i64).to_le_bytes()), }, } } From 0dc9d0116f1a432a04d08b506306dfcb3e68d874 Mon Sep 17 00:00:00 2001 From: Victor Koenders Date: Fri, 1 Apr 2022 12:48:47 +0200 Subject: [PATCH 4/7] Made the cross platform tests actually run on the platforms --- .github/workflows/cross_platform.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/cross_platform.yml b/.github/workflows/cross_platform.yml index ebfefaf1..51cc1fea 100644 --- a/.github/workflows/cross_platform.yml +++ b/.github/workflows/cross_platform.yml @@ -22,7 +22,7 @@ "strategy": { "fail-fast": false, "matrix": { - "platforms": [ + "platform": [ "aarch64-unknown-linux-gnu", "aarch64-unknown-linux-musl", "arm-unknown-linux-gnueabi", @@ -77,7 +77,7 @@ "name": "Install cargo cross" }, { - "run": "cargo test", + "run": "cross test --target ${{ matrix.platform }}", "name": "Run tests", "env": { "RUSTFLAGS": "-D warnings" From 168c78cb95a1e30f88ae6c84c0633812cebdf8fc Mon Sep 17 00:00:00 2001 From: Victor Koenders Date: Fri, 1 Apr 2022 12:57:43 +0200 Subject: [PATCH 5/7] Disabled cross targets that don't build right now --- .github/workflows/cross_platform.yml | 44 +++++++++++----------------- 1 file changed, 17 insertions(+), 27 deletions(-) diff --git a/.github/workflows/cross_platform.yml b/.github/workflows/cross_platform.yml index 51cc1fea..daffea48 100644 --- a/.github/workflows/cross_platform.yml +++ b/.github/workflows/cross_platform.yml @@ -24,34 +24,24 @@ "matrix": { "platform": [ "aarch64-unknown-linux-gnu", - "aarch64-unknown-linux-musl", - "arm-unknown-linux-gnueabi", - "arm-unknown-linux-gnueabihf", - "arm-unknown-linux-musleabi", - "arm-unknown-linux-musleabihf", - "armv5te-unknown-linux-gnueabi", - "armv5te-unknown-linux-musleabi", - "armv7-unknown-linux-gnueabihf", - "armv7-unknown-linux-musleabihf", - "i586-unknown-linux-gnu", - "i586-unknown-linux-musl", - "i686-pc-windows-gnu", - "i686-unknown-linux-gnu", - "i686-unknown-linux-musl", - "mips-unknown-linux-gnu", - "mips-unknown-linux-musl", + # "arm-unknown-linux-gnueabi", + # "arm-unknown-linux-gnueabihf", + # "armv5te-unknown-linux-gnueabi", + # "armv7-unknown-linux-gnueabihf", + # "i586-unknown-linux-gnu", + # "i686-pc-windows-gnu", + # "i686-unknown-linux-gnu", + # "mips-unknown-linux-gnu", "mips64-unknown-linux-gnuabi64", - "mips64el-unknown-linux-gnuabi64", - "mipsel-unknown-linux-gnu", - "mipsel-unknown-linux-musl", - "powerpc-unknown-linux-gnu", - "powerpc64-unknown-linux-gnu", - "powerpc64le-unknown-linux-gnu", - "riscv64gc-unknown-linux-gnu", - "sparc64-unknown-linux-gnu", - "x86_64-pc-windows-gnu", - "x86_64-unknown-linux-gnu", - "x86_64-unknown-linux-musl", + "mips64el-unknown-linux-gnuabi64" + # "mipsel-unknown-linux-gnu", + # "powerpc-unknown-linux-gnu", + # "powerpc64-unknown-linux-gnu", + # "powerpc64le-unknown-linux-gnu", + # "riscv64gc-unknown-linux-gnu", + # "sparc64-unknown-linux-gnu", + # "x86_64-pc-windows-gnu", + # "x86_64-unknown-linux-gnu" ] } }, From 0d2fac789050e1dfef78e9552f3b1a37c7c1e7f2 Mon Sep 17 00:00:00 2001 From: Victor Koenders Date: Fri, 1 Apr 2022 13:20:08 +0200 Subject: [PATCH 6/7] Fixed a failing test on 32 bit platforms, re-enabled all platforms for testing --- .github/workflows/cross_platform.yml | 34 ++++++++++++++-------------- tests/alloc.rs | 8 ++++++- 2 files changed, 24 insertions(+), 18 deletions(-) diff --git a/.github/workflows/cross_platform.yml b/.github/workflows/cross_platform.yml index daffea48..f29a1e2f 100644 --- a/.github/workflows/cross_platform.yml +++ b/.github/workflows/cross_platform.yml @@ -24,24 +24,24 @@ "matrix": { "platform": [ "aarch64-unknown-linux-gnu", - # "arm-unknown-linux-gnueabi", - # "arm-unknown-linux-gnueabihf", - # "armv5te-unknown-linux-gnueabi", - # "armv7-unknown-linux-gnueabihf", - # "i586-unknown-linux-gnu", - # "i686-pc-windows-gnu", - # "i686-unknown-linux-gnu", - # "mips-unknown-linux-gnu", + "arm-unknown-linux-gnueabi", + "arm-unknown-linux-gnueabihf", + "armv5te-unknown-linux-gnueabi", + "armv7-unknown-linux-gnueabihf", + "i586-unknown-linux-gnu", + "i686-pc-windows-gnu", + "i686-unknown-linux-gnu", + "mips-unknown-linux-gnu", "mips64-unknown-linux-gnuabi64", - "mips64el-unknown-linux-gnuabi64" - # "mipsel-unknown-linux-gnu", - # "powerpc-unknown-linux-gnu", - # "powerpc64-unknown-linux-gnu", - # "powerpc64le-unknown-linux-gnu", - # "riscv64gc-unknown-linux-gnu", - # "sparc64-unknown-linux-gnu", - # "x86_64-pc-windows-gnu", - # "x86_64-unknown-linux-gnu" + "mips64el-unknown-linux-gnuabi64", + "mipsel-unknown-linux-gnu", + "powerpc-unknown-linux-gnu", + "powerpc64-unknown-linux-gnu", + "powerpc64le-unknown-linux-gnu", + "riscv64gc-unknown-linux-gnu", + "sparc64-unknown-linux-gnu", + "x86_64-pc-windows-gnu", + "x86_64-unknown-linux-gnu" ] } }, diff --git a/tests/alloc.rs b/tests/alloc.rs index 84bffe09..3173ed74 100644 --- a/tests/alloc.rs +++ b/tests/alloc.rs @@ -115,7 +115,13 @@ fn test_container_limits() { bincode::config::standard().with_limit::(), ); - assert_eq!(result.unwrap_err(), DecodeError::LimitExceeded); + let name = core::any::type_name::(); + match result { + Ok(_) => panic!("Decoding {} should fail, it instead succeeded", name), + Err(DecodeError::OutsideUsizeRange(_)) if cfg!(target_pointer_width = "32") => {}, + Err(DecodeError::LimitExceeded) => {}, + Err(e) => panic!("Expected OutsideUsizeRange (on 32 bit platforms) or LimitExceeded whilst decoding {}, got {:?}", name, e), + } } for slice in test_cases { From 18169d7891e4f44c8736c45338996dca6f613a0a Mon Sep 17 00:00:00 2001 From: Victor Koenders Date: Fri, 1 Apr 2022 13:29:25 +0200 Subject: [PATCH 7/7] Disabled failing platforms --- .github/workflows/cross_platform.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/cross_platform.yml b/.github/workflows/cross_platform.yml index f29a1e2f..3125393d 100644 --- a/.github/workflows/cross_platform.yml +++ b/.github/workflows/cross_platform.yml @@ -26,20 +26,20 @@ "aarch64-unknown-linux-gnu", "arm-unknown-linux-gnueabi", "arm-unknown-linux-gnueabihf", - "armv5te-unknown-linux-gnueabi", + # "armv5te-unknown-linux-gnueabi", "armv7-unknown-linux-gnueabihf", "i586-unknown-linux-gnu", - "i686-pc-windows-gnu", + # "i686-pc-windows-gnu", "i686-unknown-linux-gnu", - "mips-unknown-linux-gnu", + # "mips-unknown-linux-gnu", "mips64-unknown-linux-gnuabi64", "mips64el-unknown-linux-gnuabi64", - "mipsel-unknown-linux-gnu", - "powerpc-unknown-linux-gnu", - "powerpc64-unknown-linux-gnu", - "powerpc64le-unknown-linux-gnu", + # "mipsel-unknown-linux-gnu", + # "powerpc-unknown-linux-gnu", + # "powerpc64-unknown-linux-gnu", + # "powerpc64le-unknown-linux-gnu", "riscv64gc-unknown-linux-gnu", - "sparc64-unknown-linux-gnu", + # "sparc64-unknown-linux-gnu", "x86_64-pc-windows-gnu", "x86_64-unknown-linux-gnu" ]