GeezerVison is showing github.com — Merge pull request #285 from EngineScript/debug-mode-fixes · EngineScript/EngineScript@e97bee9
File treeExpand file treeCollapse file tree Open diff view settings Some content is hiddenLarge Commits have some content hidden by default. Use the searchbox below for content that may be hidden. Dismiss bannerExpand file treeCollapse file tree Open diff view settings Collapse file Copy file name to clipboardExpand all lines: .github/labeler.yml -1Lines changed: 0 additions & 1 deletion | Original file line number | Diff line number | Diff line change |
|---|
| 58 | 58 | - any-glob-to-any-file: config/etc/php/**/* | 59 | 59 | - any-glob-to-any-file: scripts/install/php/**/* | 60 | 60 | - any-glob-to-any-file: scripts/update/php-*-update.sh | 61 | | - - any-glob-to-any-file: scripts/functions/php-clean.sh | 62 | 61 |
| 63 | 62 | # WordPress plugins | 64 | 63 | wordpress-plugins: | |
Collapse file Copy file name to clipboard +39Lines changed: 39 additions & 0 deletions | Original file line number | Diff line number | Diff line change |
|---|
| | 1 | +name: Test Cloudflare API Results | | 2 | + | | 3 | +"on": | | 4 | + push: | | 5 | + branches: | | 6 | + - master | | 7 | + paths: | | 8 | + - 'scripts/functions/shared/enginescript-shared-vhost.sh' | | 9 | + - 'scripts/ci/test-cloudflare-api.sh' | | 10 | + - '.github/workflows/test-cloudflare-api.yml' | | 11 | + pull_request: | | 12 | + paths: | | 13 | + - 'scripts/functions/shared/enginescript-shared-vhost.sh' | | 14 | + - 'scripts/ci/test-cloudflare-api.sh' | | 15 | + - '.github/workflows/test-cloudflare-api.yml' | | 16 | + workflow_dispatch: | | 17 | + | | 18 | +permissions: | | 19 | + contents: read | | 20 | + | | 21 | +concurrency: | | 22 | + group: ${{ github.workflow }}-${{ github.ref }} | | 23 | + cancel-in-progress: true | | 24 | + | | 25 | +jobs: | | 26 | + test-cloudflare-api: | | 27 | + runs-on: ubuntu-24.04 | | 28 | + timeout-minutes: 5 | | 29 | + | | 30 | + steps: | | 31 | + - name: Checkout repository | | 32 | + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | | 33 | + with: | | 34 | + persist-credentials: false | | 35 | + | | 36 | + - name: Run Cloudflare API result tests | | 37 | + run: | | | 38 | + bash -n scripts/ci/test-cloudflare-api.sh | | 39 | + bash scripts/ci/test-cloudflare-api.sh |
Collapse file Copy file name to clipboard +47Lines changed: 47 additions & 0 deletions | Original file line number | Diff line number | Diff line change |
|---|
| | 1 | +name: Test Configuration Review | | 2 | + | | 3 | +"on": | | 4 | + push: | | 5 | + branches: | | 6 | + - master | | 7 | + paths: | | 8 | + - 'config/home/enginescript-install-options.txt' | | 9 | + - 'scripts/functions/shared/enginescript-common.sh' | | 10 | + - 'scripts/install/enginescript-install.sh' | | 11 | + - 'scripts/functions/alias/alias-server-info.sh' | | 12 | + - 'scripts/functions/alias/alias-debug.sh' | | 13 | + - 'scripts/ci/test-config-review.sh' | | 14 | + - '.github/workflows/test-config-review.yml' | | 15 | + pull_request: | | 16 | + paths: | | 17 | + - 'config/home/enginescript-install-options.txt' | | 18 | + - 'scripts/functions/shared/enginescript-common.sh' | | 19 | + - 'scripts/install/enginescript-install.sh' | | 20 | + - 'scripts/functions/alias/alias-server-info.sh' | | 21 | + - 'scripts/functions/alias/alias-debug.sh' | | 22 | + - 'scripts/ci/test-config-review.sh' | | 23 | + - '.github/workflows/test-config-review.yml' | | 24 | + workflow_dispatch: | | 25 | + | | 26 | +permissions: | | 27 | + contents: read | | 28 | + | | 29 | +concurrency: | | 30 | + group: ${{ github.workflow }}-${{ github.ref }} | | 31 | + cancel-in-progress: true | | 32 | + | | 33 | +jobs: | | 34 | + test-config-review: | | 35 | + runs-on: ubuntu-24.04 | | 36 | + timeout-minutes: 5 | | 37 | + | | 38 | + steps: | | 39 | + - name: Checkout repository | | 40 | + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | | 41 | + with: | | 42 | + persist-credentials: false | | 43 | + | | 44 | + - name: Run configuration review tests | | 45 | + run: | | | 46 | + bash -n scripts/ci/test-config-review.sh | | 47 | + bash scripts/ci/test-config-review.sh |
Collapse file Copy file name to clipboard +39Lines changed: 39 additions & 0 deletions | Original file line number | Diff line number | Diff line change |
|---|
| | 1 | +name: Test Debug Pause | | 2 | + | | 3 | +"on": | | 4 | + push: | | 5 | + branches: | | 6 | + - master | | 7 | + paths: | | 8 | + - 'scripts/functions/shared/enginescript-common.sh' | | 9 | + - 'scripts/ci/test-debug-pause.sh' | | 10 | + - '.github/workflows/test-debug-pause.yml' | | 11 | + pull_request: | | 12 | + paths: | | 13 | + - 'scripts/functions/shared/enginescript-common.sh' | | 14 | + - 'scripts/ci/test-debug-pause.sh' | | 15 | + - '.github/workflows/test-debug-pause.yml' | | 16 | + workflow_dispatch: | | 17 | + | | 18 | +permissions: | | 19 | + contents: read | | 20 | + | | 21 | +concurrency: | | 22 | + group: ${{ github.workflow }}-${{ github.ref }} | | 23 | + cancel-in-progress: true | | 24 | + | | 25 | +jobs: | | 26 | + test-debug-pause: | | 27 | + runs-on: ubuntu-24.04 | | 28 | + timeout-minutes: 5 | | 29 | + | | 30 | + steps: | | 31 | + - name: Checkout repository | | 32 | + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | | 33 | + with: | | 34 | + persist-credentials: false | | 35 | + | | 36 | + - name: Run debug pause tests | | 37 | + run: | | | 38 | + bash -n scripts/ci/test-debug-pause.sh | | 39 | + bash scripts/ci/test-debug-pause.sh |
Collapse file Copy file name to clipboardExpand all lines: CHANGELOG.md +39Lines changed: 39 additions & 0 deletions - Display the source diff
- Display the rich diff
| Original file line number | Diff line number | Diff line change |
|---|
@@ -4,6 +4,45 @@ All notable changes to EngineScript will be documented in this file. | 4 | 4 |
| 5 | 5 | Changes are organized by date, with the most recent changes listed first. | 6 | 6 |
| | 7 | +## 2026-11-03 | | 8 | + | | 9 | +### 🐛 DEBUG MODE FIXES | | 10 | + | | 11 | +- The debug mode prompt now shows on screen. In every step run from another script (each step of the Nginx, PHP, MariaDB, tools, and control panel installs, and of the updates) it went to the error log instead, so the install waited for Enter with no prompt and looked stuck. | | 12 | +- Typing `exit` at a debug prompt now stops the whole install or update. In a step run from another script it stopped only that script, and the install went on. | | 13 | +- The debug prompt now reads the keyboard, not the script's input, and does not pause when there is no terminal, as in cron. | | 14 | +- Debug mode no longer builds OpenSSL's test programs in the Nginx compile. Nothing ran them, and they made the compile slower. | | 15 | + | | 16 | +### 🐛 INSTALL FIXES | | 17 | + | | 18 | +- Fixed the WP-CLI step failing on new servers. It pinned the `wp-cli/doctor-command` package to 2.3.1, which does not work with the WP-CLI nightly (3.0) that EngineScript installs, and a package that failed stopped the step. Both WP-CLI packages now use `@stable`, the newest release that works with the installed WP-CLI, and a package that cannot be installed or updated is reported without stopping the install or the daily update. The daily update moves servers still pinned to doctor-command 2.3.1 to `@stable`. | | 19 | +- The WP-CLI download is checked before it replaces `/usr/local/bin/wp`, so a failed download no longer leaves a broken `wp` in place. | | 20 | +- `setup.sh` now stops on a server where `es.install` has already completed a step. Running it again deleted and cloned EngineScript, and purged every PHP 8 package, PHP-FPM included. To finish an install, run `es.install`; it continues with the steps not done yet. | | 21 | +- On a virtual machine (any VPS), setup installs the `linux-virtual-hwe-24.04` kernel package instead of `linux-generic-hwe-24.04`. Both install the same kernel and modules; the virtual one leaves out about 1 GB of hardware firmware, the CPU microcode, and the power and USB daemons, which a VM does not use. Physical servers keep the generic package. Existing servers keep the kernel package they have. | | 22 | +- The acme.sh install is tried up to three times when a download fails, and stops with an error instead of going on without acme.sh. | | 23 | +- The AWS CLI install no longer stops to ask about replacing files when it runs again, and updates an existing AWS CLI instead of failing. | | 24 | +- The configuration review at the start of `es.install` now shows every option of the options file. It left out 14 of the 45, among them `HIGH_SECURITY_SSL`, `NGINX_BLOCK_UNSAFE_FILES`, `INSTALL_HTTP3`, `PHP_VERSION_OVERRIDE`, `TEST_MODE`, and `UBUNTU_PRO_TOKEN`, and showed `WORDFENCE_CLI_TOKEN`, which is not an option. `es.info` and `es.debug` now show every setting too (never the credentials). | | 25 | +- The Google Cloud repository key download now fails on an error and uses HTTPS only, and running the step again no longer adds the repository twice. | | 26 | +- The Cloudflare IP updater counted one range too few of each kind (the ranges themselves were all used), and now lists the downloaded ranges only in debug mode. | | 27 | +- The GCC step no longer prints an error on new servers, and the Nginx tuning step shows "not reported" when a virtual CPU reports no L3 cache. | | 28 | +- Setup skips the kernel when it runs in a container, which uses its host's kernel. | | 29 | +- `jq` is now installed with the other dependencies. Several scripts use it, and it was only there because some providers' Ubuntu images include it. | | 30 | + | | 31 | +### 🐛 SITE CREATION FIXES | | 32 | + | | 33 | +- Fixed the Nginx reload failing ("Job for nginx.service failed") when a new or imported site's certificate was installed. The site's log directory was created after its vhost, and Nginx cannot open a log in a missing directory, so the reload was refused until the services were restarted at the end of the setup. | | 34 | +- The Cloudflare step now prints one line per DNS record and setting, marked ✓, or ✗ with Cloudflare's error message, and a summary, instead of the raw API responses. It warns when Authenticated Origin Pulls could not be turned on, since the site then answers every request with a 400 error. | | 35 | +- WordPress rewrite rules are flushed once, after the permalink structure is set, and without `--hard`, which only tries to write an `.htaccess` file that Nginx does not use. The two warnings this printed during site setup are gone. | | 36 | +- Creating a domain now asks you to confirm it (for example, "Is wordpresstesting.com the correct domain?") before anything is changed. Answering no asks for the domain and TLD again, so a typo no longer goes on to Cloudflare, the certificate, and the database. Importing already showed the site's URL for confirmation or correction. | | 37 | +- Importing a domain that is already installed now stops before the Cloudflare step. The check ran after it, so the import could point the existing site's A record at this server and only then stop. | | 38 | +- Creating a domain that is already installed now stops at the pre-installation check. The check looked for the domain without the quotes `sites.sh` stores it in, so it never found it, and the install went ahead over the existing site. | | 39 | +- The main menu describes `es.update` correctly, and the Domain Configuration, Database, EngineScript, and Backup menus no longer show another menu's title or exit option. | | 40 | + | | 41 | +### 🧹 INSTALL CLEANUP | | 42 | + | | 43 | +- The cleanup that ran after many install and update steps is one shared function, `run_enginescript_cleanup`. `php-clean.sh` and `enginescript-cleanup.sh` are removed: the first repeated the second's package removal, and every step that ran it ran both. | | 44 | +- Quieter install log: the package removal no longer lists the thousands of packages it checks, phpMyAdmin and the AWS CLI unzip silently, the AWS CLI and Google key downloads no longer show a progress meter in the error log, and WPScan's gems install without building their documentation, which also makes that step faster. | | 45 | + | 7 | 46 | ## 2026-10-31 | 8 | 47 |
| 9 | 48 | ### 🔒 CRON JOB SECURITY FIXES | |
Collapse file Copy file name to clipboard +111Lines changed: 111 additions & 0 deletions | Original file line number | Diff line number | Diff line change |
|---|
| | 1 | +#!/usr/bin/env bash | | 2 | +#---------------------------------------------------------------------------------- | | 3 | +# EngineScript CI Test: Cloudflare API Results | | 4 | +#---------------------------------------------------------------------------------- | | 5 | +# cf_api must print one line per Cloudflare call: a check mark when the answer says | | 6 | +# "success": true (compact or pretty-printed), and otherwise a cross with Cloudflare's error | | 7 | +# message, counting the failure in CF_FAILED. No settings call may bypass it. The function is | | 8 | +# taken from enginescript-shared-vhost.sh and run against a curl stand-in. | | 9 | + | | 10 | +set -euo pipefail | | 11 | + | | 12 | +REPO_ROOT="$(cd "$(dirname "$0")/../.." && pwd)" | | 13 | +VHOST="${REPO_ROOT}/scripts/functions/shared/enginescript-shared-vhost.sh" | | 14 | +WORK="$(mktemp -d)" | | 15 | +trap 'rm -rf "${WORK}"' EXIT | | 16 | +FAILED=0 | | 17 | + | | 18 | +pass() { echo "PASS $1"; } | | 19 | +fail() { | | 20 | + echo "FAIL $1" | | 21 | + FAILED=1 | | 22 | +} | | 23 | + | | 24 | +sed -n '/^ cf_api() {$/,/^ }$/p' "${VHOST}" > "${WORK}/cf-api.sh" | | 25 | +[[ -s "${WORK}/cf-api.sh" ]] || { | | 26 | + echo "FAIL cf_api was not found in enginescript-shared-vhost.sh" | | 27 | + exit 1 | | 28 | +} | | 29 | +# shellcheck disable=SC1091 | | 30 | +source "${WORK}/cf-api.sh" | | 31 | + | | 32 | +# curl stand-in: prints CF_RESPONSE and keeps its arguments | | 33 | +# shellcheck disable=SC2329 # called by cf_api | | 34 | +curl() { | | 35 | + printf '%s\n' "$@" > "${WORK}/curl-args" | | 36 | + printf '%s' "${CF_RESPONSE}" | | 37 | +} | | 38 | +# Read by cf_api | | 39 | +# shellcheck disable=SC2034 | | 40 | +ZONE_ID="zone123" | | 41 | +# shellcheck disable=SC2034 | | 42 | + | | 43 | +# shellcheck disable=SC2034 | | 44 | +CF_GLOBAL_API_KEY="key" | | 45 | +CF_FAILED=0 | | 46 | + | | 47 | +run() { | | 48 | + CF_RESPONSE="$1" | | 49 | + set +e | | 50 | + OUTPUT="$(cf_api "$2" PATCH "/settings/ssl" '{"value":"strict"}')" | | 51 | + STATUS=$? | | 52 | + set -e | | 53 | +} | | 54 | + | | 55 | +run '{"result":{"id":"ssl","value":"strict"},"success":true,"errors":[],"messages":[]}' "SSL: strict" | | 56 | +if [[ "${STATUS}" -eq 0 && "${OUTPUT}" == " ✓ SSL: strict" ]]; then | | 57 | + pass "a compact success prints one check mark line" | | 58 | +else | | 59 | + fail "compact success: status ${STATUS}, output '${OUTPUT}'" | | 60 | +fi | | 61 | + | | 62 | +run $'{\n "result": {"id": "speed_brain", "value": "on"},\n "success": true,\n "errors": []\n}' "Speed Brain: on" | | 63 | +if [[ "${STATUS}" -eq 0 && "${OUTPUT}" == " ✓ Speed Brain: on" ]]; then | | 64 | + pass "a pretty-printed success prints one check mark line" | | 65 | +else | | 66 | + fail "pretty-printed success: status ${STATUS}, output '${OUTPUT}'" | | 67 | +fi | | 68 | + | | 69 | +run '{"success":false,"errors":[{"code":1015,"message":"This setting is not available on your plan."}],"messages":[],"result":null}' "0-RTT: on" | | 70 | +if [[ "${STATUS}" -eq 1 && "${OUTPUT}" == " ✗ 0-RTT: on: This setting is not available on your plan." ]]; then | | 71 | + pass "a failure prints a cross with Cloudflare's message" | | 72 | +else | | 73 | + fail "failure: status ${STATUS}, output '${OUTPUT}'" | | 74 | +fi | | 75 | + | | 76 | +run '' "IPv6: on" | | 77 | +if [[ "${STATUS}" -eq 1 && "${OUTPUT}" == " ✗ IPv6: on: no answer from Cloudflare" ]]; then | | 78 | + pass "no answer prints a cross" | | 79 | +else | | 80 | + fail "no answer: status ${STATUS}, output '${OUTPUT}'" | | 81 | +fi | | 82 | + | | 83 | +CF_FAILED=0 | | 84 | +CF_RESPONSE='{"success":false,"errors":[{"message":"x"}]}' | | 85 | +cf_api "a" PATCH "/settings/a" '{}' > /dev/null || true | | 86 | +cf_api "b" PATCH "/settings/b" '{}' > /dev/null || true | | 87 | +CF_RESPONSE='{"success":true}' | | 88 | +cf_api "c" PATCH "/settings/c" '{}' > /dev/null | | 89 | +if [[ "${CF_FAILED}" -eq 2 ]]; then | | 90 | + pass "failures are counted in CF_FAILED" | | 91 | +else | | 92 | + fail "CF_FAILED is ${CF_FAILED}, expected 2" | | 93 | +fi | | 94 | + | | 95 | +cf_api "d" PATCH "/settings/ipv6" '{"value":"on"}' > /dev/null | | 96 | +if grep -qx 'https://api.cloudflare.com/client/v4/zones/zone123/settings/ipv6' "${WORK}/curl-args" \ | | 97 | + && grep -qx -- '--data' "${WORK}/curl-args" && grep -qx '{"value":"on"}' "${WORK}/curl-args"; then | | 98 | + pass "the call goes to the zone's path with the body" | | 99 | +else | | 100 | + fail "curl was called with: $(tr '\n' ' ' < "${WORK}/curl-args")" | | 101 | +fi | | 102 | + | | 103 | +# Every settings change goes through cf_api, so none prints raw JSON or fails unseen | | 104 | +raw="$(grep -nE 'curl .*-X (PATCH|PUT|POST)' "${VHOST}" | grep -v 'cf_api' || true)" | | 105 | +if [[ -z "${raw}" ]]; then | | 106 | + pass "no Cloudflare change bypasses cf_api" | | 107 | +else | | 108 | + fail "Cloudflare changes outside cf_api: ${raw}" | | 109 | +fi | | 110 | + | | 111 | +exit "${FAILED}" |
Collapse file Copy file name to clipboard +104Lines changed: 104 additions & 0 deletions | Original file line number | Diff line number | Diff line change |
|---|
| | 1 | +#!/usr/bin/env bash | | 2 | +#---------------------------------------------------------------------------------- | | 3 | +# EngineScript CI Test: Configuration Review | | 4 | +#---------------------------------------------------------------------------------- | | 5 | +# The configuration review at the start of es.install must show every option of the install | | 6 | +# options template. ENGINESCRIPT_SETTING_NAMES and ENGINESCRIPT_CREDENTIAL_NAMES must list each | | 7 | +# option once, in the template's order, with no name the template lacks; es.info and es.debug | | 8 | +# must show the settings and never the credentials. | | 9 | + | | 10 | +set -euo pipefail | | 11 | + | | 12 | +REPO_ROOT="$(cd "$(dirname "$0")/../.." && pwd)" | | 13 | +TEMPLATE="${REPO_ROOT}/config/home/enginescript-install-options.txt" | | 14 | +FAILED=0 | | 15 | + | | 16 | +pass() { echo "PASS $1"; } | | 17 | +fail() { | | 18 | + echo "FAIL $1" | | 19 | + FAILED=1 | | 20 | +} | | 21 | + | | 22 | +# Read by enginescript-common.sh | | 23 | +# shellcheck disable=SC2034 | | 24 | +SUPPORTED_PHP_VERSIONS=( | | 25 | + "8.3" | | 26 | + "8.4" | | 27 | + "8.5" | | 28 | +) | | 29 | +# shellcheck disable=SC1090 | | 30 | +source "${TEMPLATE}" | | 31 | +source "${REPO_ROOT}/scripts/functions/shared/enginescript-common.sh" | | 32 | + | | 33 | +mapfile -t OPTIONS < <(sed -n 's/^\([A-Z][A-Z0-9_]*\)=.*/\1/p' "${TEMPLATE}") | | 34 | +[[ "${#OPTIONS[@]}" -gt 0 ]] || { | | 35 | + echo "FAIL no options were found in the template" | | 36 | + exit 1 | | 37 | +} | | 38 | +REVIEW="$(print_install_settings 2> /dev/null; print_install_credentials)" | | 39 | +SETTINGS_SOURCE="$(declare -f print_install_settings)" | | 40 | + | | 41 | +# Every option is shown, by name or inside one of the backup lines | | 42 | +missing=() | | 43 | +for option in "${OPTIONS[@]}"; do | | 44 | + if ! grep -q "^${option} = " <<< "${REVIEW}" && ! grep -qF "\${${option}" <<< "${SETTINGS_SOURCE}"; then | | 45 | + missing+=("${option}") | | 46 | + fi | | 47 | +done | | 48 | +if [[ "${#missing[@]}" -eq 0 ]]; then | | 49 | + pass "the review shows all ${#OPTIONS[@]} options of the template" | | 50 | +else | | 51 | + fail "the review leaves out: ${missing[*]}" | | 52 | +fi | | 53 | + | | 54 | +# Each listed name is an option of the template, listed once, in the template's order | | 55 | +check_list() { | | 56 | + local label="$1" | | 57 | + shift | | 58 | + local -a listed=("$@") in_template=() stale=() | | 59 | + local name option | | 60 | + for name in "${listed[@]}"; do | | 61 | + printf '%s\n' "${OPTIONS[@]}" | grep -qx "${name}" || stale+=("${name}") | | 62 | + done | | 63 | + for option in "${OPTIONS[@]}"; do | | 64 | + printf '%s\n' "${listed[@]}" | grep -qx "${option}" && in_template+=("${option}") | | 65 | + done | | 66 | + if [[ "${#stale[@]}" -gt 0 ]]; then | | 67 | + fail "${label} has names the template lacks: ${stale[*]}" | | 68 | + elif [[ "${listed[*]}" != "${in_template[*]}" ]]; then | | 69 | + fail "${label} is not in the template's order, or lists a name twice" | | 70 | + else | | 71 | + pass "${label}: ${#listed[@]} options, in the template's order" | | 72 | + fi | | 73 | +} | | 74 | +check_list "ENGINESCRIPT_SETTING_NAMES" "${ENGINESCRIPT_SETTING_NAMES[@]}" | | 75 | +check_list "ENGINESCRIPT_CREDENTIAL_NAMES" "${ENGINESCRIPT_CREDENTIAL_NAMES[@]}" | | 76 | + | | 77 | +overlap="$(printf '%s\n' "${ENGINESCRIPT_SETTING_NAMES[@]}" "${ENGINESCRIPT_CREDENTIAL_NAMES[@]}" | sort | uniq -d)" | | 78 | +if [[ -z "${overlap}" ]]; then | | 79 | + pass "no option is both a setting and a credential" | | 80 | +else | | 81 | + fail "in both lists: ${overlap//$'\n'/ }" | | 82 | +fi | | 83 | + | | 84 | +# The three places that review the options use the lists | | 85 | +INSTALL="${REPO_ROOT}/scripts/install/enginescript-install.sh" | | 86 | +INFO="${REPO_ROOT}/scripts/functions/alias/alias-server-info.sh" | | 87 | +DEBUG="${REPO_ROOT}/scripts/functions/alias/alias-debug.sh" | | 88 | +if grep -q '^print_install_settings$' "${INSTALL}" && grep -q '^print_install_credentials$' "${INSTALL}"; then | | 89 | + pass "es.install shows the settings and the credentials" | | 90 | +else | | 91 | + fail "es.install does not call print_install_settings and print_install_credentials" | | 92 | +fi | | 93 | +if grep -q '^print_install_settings$' "${INFO}" && ! grep -q 'print_install_credentials\|ENGINESCRIPT_CREDENTIAL_NAMES' "${INFO}"; then | | 94 | + pass "es.info shows the settings and no credentials" | | 95 | +else | | 96 | + fail "es.info does not show the settings, or shows credentials" | | 97 | +fi | | 98 | +if grep -q 'ENGINESCRIPT_SETTING_NAMES\[@\]' "${DEBUG}" && ! grep -q 'print_install_credentials\|ENGINESCRIPT_CREDENTIAL_NAMES' "${DEBUG}"; then | | 99 | + pass "es.debug shows the settings and no credentials" | | 100 | +else | | 101 | + fail "es.debug does not show the settings, or shows credentials" | | 102 | +fi | | 103 | + | | 104 | +exit "${FAILED}" |
|