Skip to content

Commit

Permalink
Merge pull request #45 from rust-bitcoin/github-ci
Browse files Browse the repository at this point in the history
Add github actions files for CI
  • Loading branch information
stevenroose authored Feb 28, 2023
2 parents e7155f1 + 893a777 commit 8f43d91
Show file tree
Hide file tree
Showing 6 changed files with 160 additions and 31 deletions.
100 changes: 100 additions & 0 deletions .github/workflows/rust.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
on: [push, pull_request]

name: Continuous integration

jobs:
Stable:
name: Test - stable toolchain
runs-on: ubuntu-latest
strategy:
fail-fast: false
steps:
- name: Checkout Crate
uses: actions/checkout@v3
- name: Checkout Toolchain
# https://github.com/dtolnay/rust-toolchain
uses: dtolnay/rust-toolchain@stable
- name: Running test script
env:
DO_NO_STD: true
DO_FEATURE_MATRIX: true
run: ./contrib/test.sh

Beta:
name: Test - beta toolchain
runs-on: ubuntu-latest
strategy:
fail-fast: false
steps:
- name: Checkout Crate
uses: actions/checkout@v3
- name: Checkout Toolchain
uses: dtolnay/rust-toolchain@beta
- name: Running test script
env:
DO_NO_STD: true
run: ./contrib/test.sh

Nightly:
name: Test - nightly toolchain
runs-on: ubuntu-latest
strategy:
fail-fast: false
steps:
- name: Checkout Crate
uses: actions/checkout@v3
- name: Checkout Toolchain
uses: dtolnay/rust-toolchain@nightly
- name: Running test script
env:
DO_NO_STD: true
run: ./contrib/test.sh

MSRV:
name: Test - 1.41.1 toolchain
runs-on: ubuntu-latest
strategy:
fail-fast: false
steps:
- name: Checkout Crate
uses: actions/checkout@v3
- name: Checkout Toolchain
uses: dtolnay/rust-toolchain@1.41.1
- name: Running test script
env:
DO_NO_STD: true
DO_FEATURE_MATRIX: true
run: ./contrib/test.sh

Arch32bit:
name: Test 32-bit version
runs-on: ubuntu-latest
steps:
- name: Checkout Crate
uses: actions/checkout@v3
- name: Checkout Toolchain
uses: dtolnay/rust-toolchain@stable
- name: Add architecture i386
run: sudo dpkg --add-architecture i386
- name: Install i686 gcc
run: sudo apt-get update -y && sudo apt-get install -y gcc-multilib
- name: Install target
run: rustup target add i686-unknown-linux-gnu
- name: Run test on i686
run: cargo test --target i686-unknown-linux-gnu

Cross:
name: Cross test
if: ${{ !github.event.act }}
runs-on: ubuntu-latest
steps:
- name: Checkout Crate
uses: actions/checkout@v3
- name: Checkout Toolchain
uses: dtolnay/rust-toolchain@stable
- name: Install target
run: rustup target add s390x-unknown-linux-gnu
- name: install cross
run: cargo install cross --locked
- name: run cross test
run: cross test --target s390x-unknown-linux-gnu
28 changes: 0 additions & 28 deletions .travis.yml

This file was deleted.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ rand_core = "0.4.0"

unicode-normalization = { version = "=0.1.9", optional = true }
rand = { version = "0.6.0", optional = true }
serde = { version = "1.0", default-features = false, optional = true }
serde = { version = "1.0", default-features = false, features = [ "alloc" ], optional = true }
# Enabling this feature raises the MSRV to 1.51
zeroize = {version = "1.5", features = ["zeroize_derive"], optional = true}

Expand Down
54 changes: 54 additions & 0 deletions contrib/test.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
#!/bin/sh

set -ex

FEATURES="serde rand all-languages"

cargo --version
rustc --version

# Work out if we are using a nightly toolchain.
NIGHTLY=false
if cargo --version | grep nightly; then
NIGHTLY=true
fi

# Pin dependencies as required if we are using MSRV toolchain.
# if cargo --version | grep "1\.41"; then
# fi

echo "********* Testing std *************"
# Test without any features other than std first
cargo test --verbose --no-default-features --features="std"

echo "********* Testing default *************"
# Then test with the default features
cargo test --verbose

if [ "$DO_NO_STD" = true ]
then
echo "********* Testing no-std build *************"
# Build no_std, to make sure that cfg(test) doesn't hide any issues
cargo build --verbose --no-default-features

# Build std + no_std, to make sure they are not incompatible
cargo build --verbose
# Test no_std
cargo test --verbose --no-default-features

# Build all features
cargo build --verbose --features="$FEATURES" --no-default-features

# Build specific features
for feature in ${FEATURES}
do
cargo build --verbose --features="$feature" --no-default-features
done
fi

# Test each feature
for feature in ${FEATURES}
do
echo "********* Testing $feature *************"
cargo test --verbose --features="$feature"
done
5 changes: 3 additions & 2 deletions src/internal_macros.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,9 @@ macro_rules! serde_string_impl {
where
D: $crate::serde::de::Deserializer<'de>,
{
use std::fmt::{self, Formatter};
use std::str::FromStr;
use core::fmt::{self, Formatter};
use core::str::FromStr;
use alloc::string::String;

struct Visitor;
impl<'de> $crate::serde::de::Visitor<'de> for Visitor {
Expand Down
2 changes: 2 additions & 0 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@
#[cfg(any(test, feature = "std"))]
pub extern crate core;

extern crate alloc;

extern crate bitcoin_hashes;
extern crate rand_core;

Expand Down

0 comments on commit 8f43d91

Please sign in to comment.