GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — Merge pull request #285 from EngineScript/debug-mode-fixes · EngineScript/EngineScript@e97bee9

File tree

Expand file treeCollapse file tree
Open diff view settings
Filter options
  • .github
    • labeler.yml
    • workflows
      • test-cloudflare-api.yml
      • test-config-review.yml
      • test-debug-pause.yml
  • CHANGELOG.md
  • scripts
    • ci
      • test-cloudflare-api.sh
      • test-config-review.sh
      • test-debug-pause.sh
    • functions
      • alias
        • alias-debug.sh
        • alias-server-info.sh
      • enginescript-cleanup.sh
      • php-clean.sh
      • shared
        • enginescript-common.sh
        • enginescript-shared-vhost.sh
      • vhost
        • vhost-import.sh
        • vhost-install.sh
    • install
      • acme
        • acme-install.sh
      • depends
        • depends-install.sh
      • enginescript-install.sh
      • gcc
        • gcc-install.sh
      • mariadb
        • mariadb-install.sh
      • nginx
        • nginx-cloudflare-ip-updater.sh
        • nginx-compile.sh
        • nginx-tune.sh
      • phpmyadmin
        • phpmyadmin-install.sh
      • php
        • php-install.sh
      • removes
        • remove-preinstalled.sh
      • repositories
        • repositories-install.sh
      • tools
        • security
          • wpscan.sh
        • system
          • amazon-s3-install.sh
      • wp-cli
        • wp-cli-install.sh
    • menu
      • backup-tools-menu.sh
      • database-tools-menu.sh
      • domain-configuration-tools-menu.sh
      • enginescript-menu.sh
      • enginescript-tools-menu.sh
      • site-maintenance-tools-menu.sh
    • update
      • php-update.sh
      • phpmyadmin-update.sh
      • software-update.sh
      • wp-cli-update.sh
  • setup.sh

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Dismiss banner
Expand file treeCollapse file tree
Open diff view settings
Collapse file

‎.github/labeler.yml‎

Copy file name to clipboardExpand all lines: .github/labeler.yml
-1Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@ php:
5858
- any-glob-to-any-file: config/etc/php/**/*
5959
- any-glob-to-any-file: scripts/install/php/**/*
6060
- any-glob-to-any-file: scripts/update/php-*-update.sh
61-
- any-glob-to-any-file: scripts/functions/php-clean.sh
6261

6362
# WordPress plugins
6463
wordpress-plugins:
Collapse file

‎.github/workflows/test-cloudflare-api.yml‎

Copy file name to clipboard
+39Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
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

‎.github/workflows/test-config-review.yml‎

Copy file name to clipboard
+47Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
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

‎.github/workflows/test-debug-pause.yml‎

Copy file name to clipboard
+39Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
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

‎CHANGELOG.md‎

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 numberDiff line numberDiff line change
@@ -4,6 +4,45 @@ All notable changes to EngineScript will be documented in this file.
44

55
Changes are organized by date, with the most recent changes listed first.
66

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+
746
## 2026-10-31
847

948
### 🔒 CRON JOB SECURITY FIXES
Collapse file

‎scripts/ci/test-cloudflare-api.sh‎

Copy file name to clipboard
+111Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
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+
CF_ACCOUNT_EMAIL="[email protected]"
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

‎scripts/ci/test-config-review.sh‎

Copy file name to clipboard
+104Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
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}"

0 commit comments

Comments
0 (0)
You are visitor 01402520 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.