Skip to content

Commit 62c77ea

Browse files
Nenad MisićNenad
Nenad Misić
and
Nenad
authored
Refactor (#6)
* Refactor Dockerfile * Refactor run.sh error branch * Refactor run.sh fail branch * Double new lines in failed tests * Reintroduce multi-stage builds in docker * init cairo cache (slight increase in speed) * Merge RUN commands * remove module name from test output --------- Co-authored-by: Nenad <[email protected]>
1 parent 918e5e0 commit 62c77ea

File tree

5 files changed

+27
-20
lines changed

5 files changed

+27
-20
lines changed

Dockerfile

+18-12
Original file line numberDiff line numberDiff line change
@@ -2,29 +2,35 @@ ARG REPO=alpine
22
ARG IMAGE=3.18
33
FROM ${REPO}:${IMAGE} AS builder
44

5+
# set up Scarb
56
ARG VERSION=v2.6.5
67
ARG RELEASE=scarb-${VERSION}-x86_64-unknown-linux-musl
78

8-
RUN apk add --no-cache curl
9-
10-
RUN mkdir opt/test-runner
11-
RUN mkdir opt/test-runner/bin
12-
WORKDIR /tmp
9+
WORKDIR /opt/test-runner/bin/scarb
1310
ADD https://github.com/software-mansion/scarb/releases/download/${VERSION}/${RELEASE}.tar.gz .
14-
RUN tar -xf ${RELEASE}.tar.gz \
15-
&& rm -rf /tmp/${RELEASE}/doc \
16-
&& mv /tmp/${RELEASE} /opt/test-runner/bin/scarb
11+
RUN tar -xf ${RELEASE}.tar.gz --strip-components=1 \
12+
&& rm -rf ./doc \
13+
./bin/scarb-cairo-language-server \
14+
./bin/scarb-cairo-run \
15+
./bin/scarb-snforge-test-collector
1716

1817
FROM ${REPO}:${IMAGE} AS runner
1918

20-
# install packages required to run the tests
21-
# hadolint ignore=DL3018
19+
# install jq package to format test results
2220
RUN apk add --no-cache jq
2321

2422
COPY --from=builder /opt/test-runner/bin/scarb /opt/test-runner/bin/scarb
2523
ENV PATH=$PATH:/opt/test-runner/bin/scarb/bin
2624

2725
WORKDIR /opt/test-runner
28-
COPY . .
29-
# Initialize a scarb cache
26+
27+
COPY bin/run.sh bin/run.sh
28+
29+
# Initialize a Cairo cache
30+
RUN mkdir -p init-cairo-cache/src
31+
COPY Scarb.toml init-cairo-cache/
32+
RUN echo '// dummy file' > init-cairo-cache/src/lib.cairo \
33+
&& scarb --manifest-path init-cairo-cache/Scarb.toml --release build \
34+
&& rm -rf init-cairo-cache/
35+
3036
ENTRYPOINT ["/opt/test-runner/bin/run.sh"]

Scarb.toml

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
[package]
2+
name = "leap"
3+
version = "0.1.0"
4+
edition = "2023_11"

bin/run.sh

+3-6
Original file line numberDiff line numberDiff line change
@@ -46,16 +46,13 @@ cd "${start_dir}" || exit 1
4646
if [ ${exit_code} -eq 0 ]; then
4747
jq -n '{version: 1, status: "pass"}' >"${results_file}"
4848
else
49-
# Sanitize the output
50-
test_output_inline=$(printf '%s' "$test_output")
51-
5249
# Try to distinguish between failing tests and errors
53-
if echo "$test_output_inline" | grep -q "error:"; then
50+
if echo "$test_output" | grep -q "error:"; then
5451
status="error"
55-
sanitized_test_output=$(echo "$test_output_inline" | sed '/Compiling.*$/d' | sed -n -e '/error: could not compile/q;p' | sed "s@$solution_dir@@g")
52+
sanitized_test_output=$(echo "$test_output" | sed -n "/Compiling.*$/d ; s@$solution_dir@@g ; /error: could not compile/q;p")
5653
else
5754
status="fail"
58-
sanitized_test_output=$(echo "$test_output_inline" | awk '/failures:/{y=1;next}y' | sed -n -e '/Error: test result/q;p' | sed -r 's/ //g')
55+
sanitized_test_output=$(echo "$test_output" | sed -n '1,/failures:/d ; /Error: test result/q;p' | sed 's/[[:space:]]\{3\}.\+:://g ; /./G')
5956
fi
6057

6158
jq -n --arg output "${sanitized_test_output}" --arg status "${status}" '{version: 1, status: $status, message: $output}' >"${results_file}"

tests/all-fail/expected_results.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
22
"version": 1,
33
"status": "fail",
4-
"message": "leap_leap::leap::year_divisible_by_400_is_leap_year - Panicked with \"assertion failed: `is_leap_year(2000)`.\".\nleap_leap::leap::year_divisible_by_4_and_5_is_still_a_leap_year - Panicked with \"assertion failed: `is_leap_year(1960)`.\".\nleap_leap::leap::year_divisible_by_4_not_divisible_by_100_in_leap_year - Panicked with \"assertion failed: `is_leap_year(1996)`.\".\nleap_leap::leap::year_divisible_by_2_not_divisible_by_4_in_common_year - Panicked with \"assertion failed: `!is_leap_year(1970)`.\".\nleap_leap::leap::year_divisible_by_400_but_not_by_125_is_still_a_leap_year - Panicked with \"assertion failed: `is_leap_year(2400)`.\".\nleap_leap::leap::year_not_divisible_by_4_in_common_year - Panicked with \"assertion failed: `!is_leap_year(2015)`.\".\nleap_leap::leap::year_divisible_by_200_not_divisible_by_400_in_common_year - Panicked with \"assertion failed: `!is_leap_year(1800)`.\".\nleap_leap::leap::year_divisible_by_100_not_divisible_by_400_in_common_year - Panicked with \"assertion failed: `!is_leap_year(2100)`.\".\nleap_leap::leap::year_divisible_by_100_but_not_by_3_is_still_not_a_leap_year - Panicked with \"assertion failed: `!is_leap_year(1900)`.\"."
4+
"message": "year_divisible_by_400_is_leap_year - Panicked with \"assertion failed: `is_leap_year(2000)`.\".\n\nyear_divisible_by_4_and_5_is_still_a_leap_year - Panicked with \"assertion failed: `is_leap_year(1960)`.\".\n\nyear_divisible_by_4_not_divisible_by_100_in_leap_year - Panicked with \"assertion failed: `is_leap_year(1996)`.\".\n\nyear_divisible_by_2_not_divisible_by_4_in_common_year - Panicked with \"assertion failed: `!is_leap_year(1970)`.\".\n\nyear_divisible_by_400_but_not_by_125_is_still_a_leap_year - Panicked with \"assertion failed: `is_leap_year(2400)`.\".\n\nyear_not_divisible_by_4_in_common_year - Panicked with \"assertion failed: `!is_leap_year(2015)`.\".\n\nyear_divisible_by_200_not_divisible_by_400_in_common_year - Panicked with \"assertion failed: `!is_leap_year(1800)`.\".\n\nyear_divisible_by_100_not_divisible_by_400_in_common_year - Panicked with \"assertion failed: `!is_leap_year(2100)`.\".\n\nyear_divisible_by_100_but_not_by_3_is_still_not_a_leap_year - Panicked with \"assertion failed: `!is_leap_year(1900)`.\"."
55
}
+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
22
"version": 1,
33
"status": "fail",
4-
"message": "leap_leap::leap::year_divisible_by_100_but_not_by_3_is_still_not_a_leap_year - Panicked with \"assertion failed: `!is_leap_year(1900)`.\".\nleap_leap::leap::year_divisible_by_100_not_divisible_by_400_in_common_year - Panicked with \"assertion failed: `!is_leap_year(2100)`.\".\nleap_leap::leap::year_divisible_by_200_not_divisible_by_400_in_common_year - Panicked with \"assertion failed: `!is_leap_year(1800)`.\"."
4+
"message": "year_divisible_by_100_but_not_by_3_is_still_not_a_leap_year - Panicked with \"assertion failed: `!is_leap_year(1900)`.\".\n\nyear_divisible_by_100_not_divisible_by_400_in_common_year - Panicked with \"assertion failed: `!is_leap_year(2100)`.\".\n\nyear_divisible_by_200_not_divisible_by_400_in_common_year - Panicked with \"assertion failed: `!is_leap_year(1800)`.\"."
55
}

0 commit comments

Comments
 (0)