diff options
Diffstat (limited to '.ci/local/test.sh')
-rwxr-xr-x | .ci/local/test.sh | 229 |
1 files changed, 0 insertions, 229 deletions
diff --git a/.ci/local/test.sh b/.ci/local/test.sh deleted file mode 100755 index 088539b..0000000 --- a/.ci/local/test.sh +++ /dev/null @@ -1,229 +0,0 @@ -#!/usr/bin/env bash - -set -o errexit -o nounset -o pipefail - -script_dir="$( dirname -- "${BASH_SOURCE[0]}" )" -script_dir="$( cd -- "$script_dir" && pwd )" -readonly script_dir - -upstream_repo_dir= -readonly etc_dir="$script_dir/etc" -readonly cgitize_toml_path="$etc_dir/cgitize.toml" -readonly output_dir="$script_dir/output" - -cleanup() { - echo - echo ---------------------------------------------------------------------- - echo Cleaning up - echo ---------------------------------------------------------------------- - - echo "Removing upstream repository directory: $upstream_repo_dir" - rm -rf -- "$upstream_repo_dir" - echo "Removing etc directory: $etc_dir" - rm -rf -- "$etc_dir" - echo "Removing output directory: $output_dir" - rm -rf -- "$output_dir" -} - -setup_upstream_repo() { - echo - echo ---------------------------------------------------------------------- - echo Setting up upstream repository - echo ---------------------------------------------------------------------- - - upstream_repo_dir="$( mktemp -d )" - pushd -- "$upstream_repo_dir" > /dev/null - - git init - echo '1' > 1.txt - git add . - git commit -m 'first commit' - echo '2' > 2.txt - git add . - git commit -m 'second commit' - - popd > /dev/null -} - -add_commits() { - echo - echo ---------------------------------------------------------------------- - echo Adding new commits - echo ---------------------------------------------------------------------- - - pushd -- "$upstream_repo_dir" > /dev/null - - echo '3' > 3.txt - git add . - git commit -m 'third commit' - - popd > /dev/null -} - -setup_cgitize_toml() { - echo - echo ---------------------------------------------------------------------- - echo cgitize.toml - echo ---------------------------------------------------------------------- - - local conf_dir - conf_dir="$( dirname -- "$cgitize_toml_path" )" - mkdir -p -- "$conf_dir" - - cat <<EOF | tee "$cgitize_toml_path" -output_dir = "$output_dir" - -[repositories.test_repo] -name = "test_repo" -clone_url = "$upstream_repo_dir" -EOF -} - -setup_cgitize() { - setup_cgitize_toml -} - -setup_bare() { - setup_upstream_repo - setup_cgitize -} - -setup_workdir() { - setup_bare - - echo - echo ---------------------------------------------------------------------- - echo Setting up local repository clone - echo ---------------------------------------------------------------------- - - mkdir -p -- "$output_dir" - git clone --quiet -- "$upstream_repo_dir" "$output_dir/test_repo" -} - -cgitize() { - echo - echo ---------------------------------------------------------------------- - echo Running cgitize - echo ---------------------------------------------------------------------- - - python3 -m cgitize.main --config "$cgitize_toml_path" --verbose -} - -check_contains() { - if [ "$#" -lt 1 ]; then - echo "usage: ${FUNCNAME[0]} TEST_STRING [PATTERN...]" >&2 - return 1 - fi - - local test_string="$1" - shift - - local pattern - for pattern; do - # Be careful to _not_ use grep -q, since this fucks stuff up: - # https://mywiki.wooledge.org/BashPitfalls#pipefail. - if ! echo "$test_string" | grep --fixed-strings -- "$pattern" > /dev/null; then - echo "${FUNCNAME[0]}: couldn't find the following pattern: $pattern" >&2 - return 1 - fi - done -} - -verify_commits() { - # This is fucking stupid, but otherwise stuff like `if verify_commits;` - # doesn't work: https://stackoverflow.com/q/4072984/514684 - # TODO: figure this out? - pushd -- "$output_dir" > /dev/null && - cd -- test_repo && - local output && - output="$( git log --oneline )" && - echo "$output" && - check_contains "$output" "$@" && - popd > /dev/null -} - -verify_initial_commits() { - echo - echo ---------------------------------------------------------------------- - echo Checking the initial commits - echo ---------------------------------------------------------------------- - - verify_commits 'first commit' 'second commit' -} - -verify_added_commits() { - echo - echo ---------------------------------------------------------------------- - echo Checking the added commits - echo ---------------------------------------------------------------------- - - verify_commits 'first commit' 'second commit' 'third commit' -} - -test_bare() { - echo - echo ====================================================================== - echo "${FUNCNAME[0]}" - echo ====================================================================== - - setup_bare - cgitize - verify_initial_commits - add_commits - cgitize - verify_added_commits - cleanup -} - -test_workdir() { - echo - echo ====================================================================== - echo "${FUNCNAME[0]}" - echo ====================================================================== - - setup_workdir - cgitize - verify_initial_commits - add_commits - cgitize - verify_added_commits - cleanup -} - -test_failure() { - echo - echo ====================================================================== - echo "${FUNCNAME[0]}" - echo ====================================================================== - - setup_bare - cgitize - verify_initial_commits - add_commits - - echo - echo ---------------------------------------------------------------------- - echo Removing upstream repository - echo ---------------------------------------------------------------------- - rm -rf -- "$upstream_repo_dir" - - if cgitize; then - echo "cgitize should have failed to pull the upstream repository." >&2 - return 1 - fi - verify_initial_commits - if verify_added_commits; then - echo "The added commits should not have been pulled." >&2 - return 1 - fi - cleanup -} - -main() { - trap cleanup EXIT - test_bare - test_workdir - test_failure -} - -main |