diff --git a/docker/organic_test/Dockerfile b/docker/organic_test/Dockerfile index a9c39f0f..11541588 100644 --- a/docker/organic_test/Dockerfile +++ b/docker/organic_test/Dockerfile @@ -38,8 +38,13 @@ ENTRYPOINT ["cargo", "test"] FROM build as foreign-document-gather ARG HOWARD_ABRAMS_DOT_FILES_VERSION=1b54fe75d74670dc7bcbb6b01ea560c45528c628 ARG HOWARD_ABRAMS_DOT_FILES_PATH=/foreign_documents/howardabrams/dot-files +ARG HOWARD_ABRAMS_DOT_FILES_REPO=https://github.com/howardabrams/dot-files.git RUN mkdir /foreign_documents -RUN mkdir -p $HOWARD_ABRAMS_DOT_FILES_PATH && git -C $HOWARD_ABRAMS_DOT_FILES_PATH init --initial-branch=main && git -C $HOWARD_ABRAMS_DOT_FILES_PATH remote add origin https://github.com/howardabrams/dot-files.git && git -C $HOWARD_ABRAMS_DOT_FILES_PATH fetch origin $HOWARD_ABRAMS_DOT_FILES_VERSION && git -C $HOWARD_ABRAMS_DOT_FILES_PATH checkout FETCH_HEAD +RUN mkdir -p $HOWARD_ABRAMS_DOT_FILES_PATH && git -C $HOWARD_ABRAMS_DOT_FILES_PATH init --initial-branch=main && git -C $HOWARD_ABRAMS_DOT_FILES_PATH remote add origin $HOWARD_ABRAMS_DOT_FILES_REPO && git -C $HOWARD_ABRAMS_DOT_FILES_PATH fetch origin $HOWARD_ABRAMS_DOT_FILES_VERSION && git -C $HOWARD_ABRAMS_DOT_FILES_PATH checkout FETCH_HEAD +ARG HOWARD_ABRAMS_HAMACS_VERSION=da51188cc195d41882175d412fe40a8bc5730c5c +ARG HOWARD_ABRAMS_HAMACS_PATH=/foreign_documents/howardabrams/hamacs +ARG HOWARD_ABRAMS_HAMACS_REPO=https://github.com/howardabrams/hamacs.git +RUN mkdir -p $HOWARD_ABRAMS_HAMACS_PATH && git -C $HOWARD_ABRAMS_HAMACS_PATH init --initial-branch=main && git -C $HOWARD_ABRAMS_HAMACS_PATH remote add origin $HOWARD_ABRAMS_HAMACS_REPO && git -C $HOWARD_ABRAMS_HAMACS_PATH fetch origin $HOWARD_ABRAMS_HAMACS_VERSION && git -C $HOWARD_ABRAMS_HAMACS_PATH checkout FETCH_HEAD FROM tester as foreign-document-test @@ -47,7 +52,7 @@ RUN apk add --no-cache bash coreutils RUN mkdir /foreign_documents COPY --from=build-org-mode /root/org-mode /foreign_documents/org-mode COPY --from=build-emacs /root/emacs /foreign_documents/emacs -COPY --from=foreign-document-gather /foreign_documents/howardabrams/dot-files /foreign_documents/howardabrams/dot-files +COPY --from=foreign-document-gather /foreign_documents/howardabrams /foreign_documents/howardabrams COPY foreign_document_test_entrypoint.sh /entrypoint.sh RUN chmod +x /entrypoint.sh ENTRYPOINT ["/entrypoint.sh"] diff --git a/docker/organic_test/foreign_document_test_entrypoint.sh b/docker/organic_test/foreign_document_test_entrypoint.sh index b6ba9b12..8e561973 100644 --- a/docker/organic_test/foreign_document_test_entrypoint.sh +++ b/docker/organic_test/foreign_document_test_entrypoint.sh @@ -25,9 +25,23 @@ function main { fi PARSE="${CARGO_TARGET_DIR}/release-lto/parse" - run_compare_function "org-mode" compare_all_org_document "/foreign_documents/org-mode" - run_compare_function "emacs" compare_all_org_document "/foreign_documents/emacs" - run_compare_function "howard_abrams_dot_files" compare_all_org_document "/foreign_documents/howardabrams/dot-files" + local all_status=0 + set +e + + (run_compare_function "org-mode" compare_all_org_document "/foreign_documents/org-mode") + if [ "$?" -ne 0 ]; then all_status=1; fi + (run_compare_function "emacs" compare_all_org_document "/foreign_documents/emacs") + if [ "$?" -ne 0 ]; then all_status=1; fi + (run_compare_function "howard_abrams" compare_howard_abrams) + if [ "$?" -ne 0 ]; then all_status=1; fi + + set -e + if [ "$all_status" -ne 0 ]; then + echo "$(red_text "Some tests failed.")" + else + echo "$(green_text "All tests passed.")" + fi + return "$all_status" } function green_text { @@ -73,17 +87,22 @@ function run_compare_function { function compare_all_org_document { local root_dir="$1" local target_document - find "$root_dir" -type f -iname '*.org' | while read target_document; do + local all_status=0 + while read target_document; do local relative_path=$($REALPATH --relative-to "$root_dir" "$target_document") + set +e (run_compare "$relative_path" "$target_document") - done + if [ "$?" -ne 0 ]; then all_status=1; fi + set -e + done<<<$(find "$root_dir" -type f -iname '*.org') + return "$all_status" } function run_compare { local name="$1" local target_document="$2" set +e - $PARSE "$target_document" &> /dev/null + ($PARSE "$target_document" &> /dev/null) local status=$? set -e if [ "$status" -eq 0 ]; then @@ -94,4 +113,17 @@ function run_compare { fi } +function compare_howard_abrams { + local all_status=0 + set +e + + (run_compare_function "dot_files" compare_all_org_document "/foreign_documents/howardabrams/dot-files") + if [ "$?" -ne 0 ]; then all_status=1; fi + (run_compare_function "hamacs" compare_all_org_document "/foreign_documents/howardabrams/hamacs") + if [ "$?" -ne 0 ]; then all_status=1; fi + + set -e + return "$all_status" +} + main "${@}"