rust-musl-builder/test-image

52 lines
1.6 KiB
Bash
Executable File

#!/bin/bash
# Make bash fail much more aggressively on errors.
set -euo pipefail
# Make sure we can build our main container.
docker build -t ekidd/rust-musl-builder .
# Make sure we can build our example derived container.
docker build -t rust-musl-zlib examples/adding-a-library
# Make sure we can build a multi-stage container.
docker build -t rust-musl-builder-using-diesel examples/using-diesel
docker run --rm rust-musl-builder-using-diesel
# Make sure we can build a static executable.
docker run --rm ekidd/rust-musl-builder bash -c "
set -euo pipefail
export USER=rust
cargo new --vcs none --bin testme
cd testme
# depending on git2 (and using it) makes the test much better, because git2 links against openssl and libz-sys among others
sed -i 's/\[dependencies\]/\[dependencies\]\ngit2 = \"0.6\"/' Cargo.toml
echo '
extern crate git2;
use git2::Repository;
fn main() {
let _local = Repository::init(\"fkbr\");
println!(\"Hello, world!\");
}' > src/main.rs
cargo build
# ldd will not die if the file does not exist, we need to check that too
if [ ! -f target/x86_64-unknown-linux-musl/debug/testme ]; then
echo 'binary was not created by cargo build or has unexpected name. Heres whats in target:' 1>&2
# no tree in image, but this also works
set -x
ls -l target && ls -l target/x86_64-unknown-linux-musl && ls -l target/x86_64-unknown-linux-musl/debug
exit 1
fi
echo 'Checking to make sure it is not a dynamic executable'
if ldd target/x86_64-unknown-linux-musl/debug/testme; then
echo 'Executable is not static!' 1>&2
echo 'FAIL.' 1>&2
exit 1
fi
"
# We're good.
echo 'OK. Tests passed.' 1>&2