Skip to content

Instantly share code, notes, and snippets.

@hugocf
Created September 17, 2019 12:39

Revisions

  1. hugocf revised this gist Sep 17, 2019. No changes.
  2. hugocf created this gist Sep 17, 2019.
    27 changes: 27 additions & 0 deletions choose-site-to-run-expected.txt
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,27 @@
    ❌ Error for site 'site1' because filter is 'gibberish'
    βœ… Testing site 'site1' because filter is ''
    βœ… Testing site 'site1' because filter is 'site1'
    πŸ™ˆ Skipping site 'site1' because filter is 'site2'
    πŸ™ˆ Skipping site 'site1' because filter is 'site3'
    πŸ™ˆ Skipping site 'site1' because filter is 'site4'

    ❌ Error for site 'site2' because filter is 'gibberish'
    βœ… Testing site 'site2' because filter is ''
    πŸ™ˆ Skipping site 'site2' because filter is 'site1'
    βœ… Testing site 'site2' because filter is 'site2'
    πŸ™ˆ Skipping site 'site2' because filter is 'site3'
    πŸ™ˆ Skipping site 'site2' because filter is 'site4'

    ❌ Error for site 'site3' because filter is 'gibberish'
    βœ… Testing site 'site3' because filter is ''
    πŸ™ˆ Skipping site 'site3' because filter is 'site1'
    πŸ™ˆ Skipping site 'site3' because filter is 'site2'
    βœ… Testing site 'site3' because filter is 'site3'
    πŸ™ˆ Skipping site 'site3' because filter is 'site4'

    ❌ Error for site 'site4' because filter is 'gibberish'
    βœ… Testing site 'site4' because filter is ''
    πŸ™ˆ Skipping site 'site4' because filter is 'site1'
    πŸ™ˆ Skipping site 'site4' because filter is 'site2'
    πŸ™ˆ Skipping site 'site4' because filter is 'site3'
    βœ… Testing site 'site4' because filter is 'site4'
    12 changes: 12 additions & 0 deletions choose-site-to-run-test.sh
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,12 @@
    #!/usr/bin/env bash

    set -u

    ACTION=./choose-site-to-run.sh
    EXPECTED=./choose-site-to-run-expected.txt
    RESULT=$(mktemp)

    $ACTION > $RESULT
    if diff -u $EXPECTED $RESULT; then
    echo "Success: all results match"
    fi
    83 changes: 83 additions & 0 deletions choose-site-to-run.sh
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,83 @@
    #!/usr/bin/env bash

    set -u

    choose_site () {
    # choose_site_with_if ${1:-} ${2:-}
    # choose_site_with_case ${1:-} ${2:-}
    choose_site_with_guard ${1:-} ${2:-}
    }

    choose_site_with_if () {
    local SITE_CODE=${1:-}
    local FILTER=${2:-}

    if [[ "$FILTER" == "" || "$FILTER" == "$SITE_CODE" ]]; then
    echo "βœ… Testing site '$SITE_CODE' because filter is '$FILTER'"
    elif [[ "$FILTER" == "site1" || "$FILTER" == "site2" || "$FILTER" == "site3" || "$FILTER" == "site4" ]]; then
    echo "πŸ™ˆ Skipping site '$SITE_CODE' because filter is '$FILTER'"
    else
    echo "❌ Error for site '$SITE_CODE' because filter is '$FILTER'"
    # exit 1
    fi
    }

    choose_site_with_case () {
    local SITE_CODE=${1:-}
    local FILTER=${2:-}

    case $FILTER in
    "" | $SITE_CODE)
    echo "βœ… Testing site '$SITE_CODE' because filter is '$FILTER'";;
    site1 | site2 | site3 | site4)
    echo "πŸ™ˆ Skipping site '$SITE_CODE' because filter is '$FILTER'";;
    *)
    echo "❌ Error for site '$SITE_CODE' because filter is '$FILTER'"
    # exit 1
    ;;
    esac
    }

    choose_site_with_guard () {
    local SITE_CODE=${1:-}
    local FILTER=${2:-}
    local ALLOWED_SITE_CODES="^(site1|site2|site3|site4)$"

    if ! [[ $FILTER == "" || "$FILTER" =~ $ALLOWED_SITE_CODES ]]; then
    echo "❌ Error for site '$SITE_CODE' because filter is '$FILTER'"
    return # exit 1
    fi

    case $FILTER in
    "" | $SITE_CODE) echo "βœ… Testing site '$SITE_CODE' because filter is '$FILTER'";;
    *) echo "πŸ™ˆ Skipping site '$SITE_CODE' because filter is '$FILTER'";;
    esac
    }

    choose_site site1 gibberish
    choose_site site1
    choose_site site1 site1
    choose_site site1 site2
    choose_site site1 site3
    choose_site site1 site4
    echo
    choose_site site2 gibberish
    choose_site site2
    choose_site site2 site1
    choose_site site2 site2
    choose_site site2 site3
    choose_site site2 site4
    echo
    choose_site site3 gibberish
    choose_site site3
    choose_site site3 site1
    choose_site site3 site2
    choose_site site3 site3
    choose_site site3 site4
    echo
    choose_site site4 gibberish
    choose_site site4
    choose_site site4 site1
    choose_site site4 site2
    choose_site site4 site3
    choose_site site4 site4