name: Escaping characters in Makefile on: [push, pull_request] jobs: quoting_arguments: name: Quoting arguments runs-on: ubuntu-18.04 steps: - name: Checkout uses: actions/checkout@v2 - name: make test run: | cd makefile_escaping diff <( echo "$expected" ) <( make -f quoting_args.mk test ) env: expected: |- printf '%s\n' Same line? Same line? printf '%s\n' 'Same line?' Same line? printf '%s\n' $test_var Same line? printf '%s\n' "$test_var" Same line? escaping_quotes: name: Escaping quotes runs-on: ubuntu-18.04 steps: - name: Checkout uses: actions/checkout@v2 - name: make test run: | cd makefile_escaping diff <( echo "$expected" ) <( make -f escaping_quotes.mk test ) env: expected: |- printf '%s\n' 'Includes '\'' quote' Includes ' quote bash -c 'printf '\''%s\n'\'' '\''Includes '\''\'\'''\'' quote'\''' Includes ' quote bash -c 'bash -c '\''printf '\''\'\'''\''%s\n'\''\'\'''\'' '\''\'\'''\''Includes '\''\'\'''\''\'\''\'\'''\'''\''\'\'''\'' quote'\''\'\'''\'''\''' Includes ' quote shell_output: name: Shell output runs-on: ubuntu-18.04 steps: - name: Checkout uses: actions/checkout@v2 - name: make test run: | cd makefile_escaping diff <( echo "$expected_includes_quote" ) <( mkdir -p -- "Includes ' quote" && cd -- "Includes ' quote" && make -f ../escaping_shell.mk test ) diff <( echo "$expected_maybe_comment" ) <( mkdir -p -- 'Maybe a comment #' && cd -- 'Maybe a comment #' && make -f ../escaping_shell.mk test ) diff <( echo "$expected_variable_reference" ) <( mkdir -p -- 'Variable ${reference}' && cd -- 'Variable ${reference}' && make -f ../escaping_shell.mk test ) env: expected_includes_quote: |- Includes ' quote Includes ' quote Includes ' quote Includes ' quote Outer variable - Inner variable - Includes ' quote Outer variable - Inner variable - Includes ' quote expected_maybe_comment: |- Maybe a comment # Maybe a comment # Maybe a comment # Maybe a comment # Outer variable - Inner variable - Maybe a comment # Outer variable - Inner variable - Maybe a comment # expected_variable_reference: |- Variable ${reference} Variable ${reference} Variable ${reference} Variable ${reference} Outer variable - Inner variable - Variable ${reference} Outer variable - Inner variable - Variable ${reference} env_variables: name: Environment variables runs-on: ubuntu-18.04 steps: - name: Checkout uses: actions/checkout@v2 - name: make test run: | cd makefile_escaping diff <( echo "$expected" ) <( test_var="Quote ' "'and variable ${reference}' make -f escaping_env_vars.mk test ) env: expected: |- Quote ' and variable ${reference} Quote ' and variable ${reference} Quote ' and variable ${reference} Quote ' and variable ${reference} Outer variable - Inner variable - Quote ' and variable ${reference} Outer variable - Inner variable - Quote ' and variable ${reference}