diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml index b2c0d4b8..ba5bd987 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.yml +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -20,7 +20,7 @@ body: id: context attributes: label: Context - description: Tell us how your request is related to DMS, one of its components or another issue / PR. Also **link all conected issues and PRs here**! + description: Tell us how your request is related to DMS, one of its components or another issue / PR. Also **link all connected issues and PRs here**! validations: required: true - type: textarea diff --git a/.github/workflows/docs-production-deploy.yml b/.github/workflows/docs-production-deploy.yml index 2c6c1e2c..603c4100 100644 --- a/.github/workflows/docs-production-deploy.yml +++ b/.github/workflows/docs-production-deploy.yml @@ -109,7 +109,7 @@ jobs: update-latest-symlink: permissions: contents: write - name: 'update `latest` symlink if neccessary' + name: 'update `latest` symlink if necessary' runs-on: ubuntu-22.04 if: startsWith(github.ref, 'refs/tags/') needs: add-version-to-docs diff --git a/CHANGELOG.md b/CHANGELOG.md index e4dd7200..cfab4287 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -29,6 +29,7 @@ All notable changes to this project will be documented in this file. The format - **Internal:** - The DMS _Config Volume_ (`/tmp/docker-mailserver`) will now ensure it's file tree is accessible for services when the volume was created with missing executable bit ([#4487](https://github.com/docker-mailserver/docker-mailserver/pull/4487)) - Removed the build-time hostname workaround for Postfix as Debian has since patched their post-install script ([#4493](https://github.com/docker-mailserver/docker-mailserver/pull/4493)) + - Fixed various typos across codebase ([#4552](https://github.com/docker-mailserver/docker-mailserver/pull/4552)) ### Updates @@ -161,7 +162,7 @@ The most noteworthy change of this release is the update of the container's base - Removed custom installations of Fail2Ban, getmail6 and Rspamd - Updated packages lists and added comments for maintainability - OpenDMARC upgrade: `v1.4.0` => `v1.4.2` ([#3841](https://github.com/docker-mailserver/docker-mailserver/pull/3841)) - - Previous versions of OpenDMARC would place incoming mail from domains announcing `p=quarantaine` (_that fail the DMARC check_) into the [Postfix "hold" queue](https://www.postfix.org/QSHAPE_README.html#hold_queue) until administrative intervention. + - Previous versions of OpenDMARC would place incoming mail from domains announcing `p=quarantine` (_that fail the DMARC check_) into the [Postfix "hold" queue](https://www.postfix.org/QSHAPE_README.html#hold_queue) until administrative intervention. - [OpenDMARC v1.4.2 has disabled that feature by default](https://github.com/trusteddomainproject/OpenDMARC/issues/105), but it can be enabled again by adding the setting `HoldQuarantinedMessages true` to [`/etc/opendmarc.conf`](https://github.com/docker-mailserver/docker-mailserver/blob/v13.3.1/target/opendmarc/opendmarc.conf) (_provided from DMS_). - [Our `user-patches.sh` feature](https://docker-mailserver.github.io/docker-mailserver/latest/config/advanced/override-defaults/user-patches/) provides a convenient approach to updating that config file. - Please let us know if you disagree with the upstream default being carried with DMS, or the value of providing alternative configuration support within DMS. @@ -336,11 +337,11 @@ DMS is now secured against the [recently published spoofing attack "SMTP Smuggli - The test suite now uses `swaks` instead of `nc`, which has multiple benefits ([#3732](https://github.com/docker-mailserver/docker-mailserver/pull/3732)): - `swaks` handles pipelining correctly, hence we can now use `reject_unauth_pipelining` in Postfix's configuration. - - `swaks` provides better CLI options that make many files superflous. + - `swaks` provides better CLI options that make many files superfluous. - `swaks` can also replace `openssl s_client` and handles authentication on submission ports better. - **Postfix:** - We now defer rejection from unauthorized pipelining until the SMTP `DATA` command via `smtpd_data_restrictions` (_i.e. at the end of the mail transfer transaction_) ([#3744](https://github.com/docker-mailserver/docker-mailserver/pull/3744)) - - Prevously our configuration only handled this during the client and recipient restriction stages. Postfix will flag this activity when encountered, but the rejection now is handled at `DATA` where unauthorized pipelining would have been valid from this point. + - Previously our configuration only handled this during the client and recipient restriction stages. Postfix will flag this activity when encountered, but the rejection now is handled at `DATA` where unauthorized pipelining would have been valid from this point. - If you had the Amavis service enabled (default), this restriction was already in place. Otherwise the concerns expressed with `smtpd_data_restrictions = reject_unauth_pipelining` from the security section above apply. We have permitted trusted clients (_`$mynetworks` or authenticated_) to bypass this restriction. ## [v13.1.0](https://github.com/docker-mailserver/docker-mailserver/releases/tag/v13.1.0) @@ -571,7 +572,7 @@ Notable changes are: - Rspamd feature is promoted from preview status - Services no longer use `chroot` - Fail2Ban major version upgrade -- ARMv7 platform is no longer suppoted +- ARMv7 platform is no longer supported - TLS 1.2 is the minimum supported protocol - SMTP authentication on port 25 disabled - The value of `smtpd_sender_restrictions` for Postfix has replaced the value ([#3127](https://github.com/docker-mailserver/docker-mailserver/pull/3127)): diff --git a/demo-setups/relay-compose.yaml b/demo-setups/relay-compose.yaml index 7bbc9f21..7346dd87 100644 --- a/demo-setups/relay-compose.yaml +++ b/demo-setups/relay-compose.yaml @@ -107,7 +107,7 @@ configs: # - Use an ECDSA cert that's been signed by a self-signed CA for TLS cert verification. # - This cert is only valid for mail.example.test, mail.destination.test, smtp.relay-service.test - # `swaks` run in the container will need to reference this CA cert file for successful verficiation (optional). + # `swaks` run in the container will need to reference this CA cert file for successful verification (optional). tls-ca-cert: content: | -----BEGIN CERTIFICATE----- diff --git a/docs/content/config/account-management/overview.md b/docs/content/config/account-management/overview.md index d94104f2..d67eec57 100644 --- a/docs/content/config/account-management/overview.md +++ b/docs/content/config/account-management/overview.md @@ -142,7 +142,7 @@ This page provides a technical reference for account management in DMS. - A subaddress has a tag delimiter (_default: `+`_), followed by the tag: `+@` - The subaddress `user+github@example.com` would deliver mail to the same mailbox as `user@example.com`. - Tags are dynamic. Anything between the `+` and `@` is understood as the tag, no additional configuration required. - - Only the first occurence of the tag delimiter is recognized. Any additional occurences become part of the tag value itself. + - Only the first occurrence of the tag delimiter is recognized. Any additional occurrences become part of the tag value itself. ??? tip "When is subaddressing useful?" diff --git a/docs/content/config/advanced/full-text-search.md b/docs/content/config/advanced/full-text-search.md index 01af04e4..2fa6eb64 100644 --- a/docs/content/config/advanced/full-text-search.md +++ b/docs/content/config/advanced/full-text-search.md @@ -35,7 +35,7 @@ While indexing is memory intensive, you can configure the plugin to limit the am # disable indexing of folders # fts_autoindex_exclude = \Trash - # Index attachements + # Index attachments # fts_decoder = decode2text } diff --git a/docs/content/config/environment.md b/docs/content/config/environment.md index 6796f3a2..5a7016f1 100644 --- a/docs/content/config/environment.md +++ b/docs/content/config/environment.md @@ -733,7 +733,7 @@ Controls the spam score threshold for triggering an action on mail that has a hi - **1** => will activate SpamAssassin short circuiting for bayes spam detection. -This will uncomment the respective line in `/etc/spamassasin/local.cf` +This will uncomment the respective line in `/etc/spamassassin/local.cf` !!! warning @@ -743,7 +743,7 @@ This will uncomment the respective line in `/etc/spamassasin/local.cf` - **1** => will activate SpamAssassin short circuiting for bayes ham detection -This will uncomment the respective line in `/etc/spamassasin/local.cf` +This will uncomment the respective line in `/etc/spamassassin/local.cf` !!! warning diff --git a/docs/content/config/security/fail2ban.md b/docs/content/config/security/fail2ban.md index 54bde243..a2df0937 100644 --- a/docs/content/config/security/fail2ban.md +++ b/docs/content/config/security/fail2ban.md @@ -37,7 +37,7 @@ Enabling Fail2Ban support can be done via ENV, but also requires granting at lea --env ENABLE_FAIL2BAN=1 ``` -!!! warning "Security risk of adding non-default capabilties" +!!! warning "Security risk of adding non-default capabilities" DMS bundles F2B into the image for convenience to simplify integration and deployment. diff --git a/docs/content/faq.md b/docs/content/faq.md index a350f937..aef43057 100644 --- a/docs/content/faq.md +++ b/docs/content/faq.md @@ -374,7 +374,7 @@ DMS does not manage those concerns, verify they are not causing your delivery pr - [mail-tester](https://www.mail-tester.com/) can test your deliverability. - [helloinbox](https://www.helloinbox.email/) provides a checklist of things to improve your deliverability. -### SpamAssasin +### SpamAssassin #### How can I manage my custom SpamAssassin rules? diff --git a/target/bin/listmailuser b/target/bin/listmailuser index 226bc1af..b6f64310 100755 --- a/target/bin/listmailuser +++ b/target/bin/listmailuser @@ -73,7 +73,7 @@ function _bytes_to_human_readable_size() { echo '~' # Otherwise a value in KibiBytes (1024 bytes == 1k) is expected (Dovecots internal representation): elif [[ ${1:-} =~ ^[0-9]+$ ]]; then - # kibibytes to bytes, converted to approproate IEC unit (eg: MiB): + # kibibytes to bytes, converted to appropriate IEC unit (eg: MiB): echo $(( 1024 * ${1} )) | numfmt --to=iec else _exit_with_error "Supplied non-number argument '${1:-}' to '_bytes_to_human_readable_size()'" diff --git a/target/bin/rspamd-dkim b/target/bin/rspamd-dkim index b376271b..a99bae5c 100755 --- a/target/bin/rspamd-dkim +++ b/target/bin/rspamd-dkim @@ -256,7 +256,7 @@ EOF cp "${DEFAULT_CONFIG_FILE}" "${RSPAMD_OVERRIDE_D}/dkim_signing.conf" chown _rspamd:_rspamd "${DEFAULT_CONFIG_FILE}" "${RSPAMD_OVERRIDE_D}/dkim_signing.conf" - _log 'debug' 'Restarting Rspamd as initial DKIM configuration was suppplied' + _log 'debug' 'Restarting Rspamd as initial DKIM configuration was supplied' supervisorctl restart rspamd fi } diff --git a/target/bin/setup b/target/bin/setup index c05f59a7..db6199fb 100755 --- a/target/bin/setup +++ b/target/bin/setup @@ -74,7 +74,7 @@ ${ORANGE}EXAMPLES${RESET} to input a password afterwards since no password was supplied. ${LWHITE}setup config dkim keysize 2048 domain 'example.com,not-example.com'${RESET} - Creates keys of length 2048 for the domains in comma-seperated list. + Creates keys of length 2048 for the domains in comma-separated list. This is necessary when using LDAP as the required domains cannot be inferred. ${LWHITE}setup config dkim help${RESET} diff --git a/target/scripts/build/packages.sh b/target/scripts/build/packages.sh index ece78b2c..6fdab42c 100644 --- a/target/scripts/build/packages.sh +++ b/target/scripts/build/packages.sh @@ -83,7 +83,7 @@ function _install_packages() { local ANTI_VIRUS_SPAM_PACKAGES=( clamav clamav-daemon - # spamassassin is used only with amavisd-new, while pyzor + razor are used by spamassasin + # spamassassin is used only with amavisd-new, while pyzor + razor are used by spamassassin amavisd-new spamassassin pyzor razor ) diff --git a/target/scripts/helpers/database/manage/postfix-accounts.sh b/target/scripts/helpers/database/manage/postfix-accounts.sh index e92b2555..94641831 100644 --- a/target/scripts/helpers/database/manage/postfix-accounts.sh +++ b/target/scripts/helpers/database/manage/postfix-accounts.sh @@ -56,7 +56,7 @@ function _manage_accounts_dovecotmaster_delete { _manage_accounts 'delete' "${DA # # These validation helpers rely on: -# - Exteral vars to be declared prior to calling them (MAIL_ACCOUNT, PASSWD, DATABASE). +# - External vars to be declared prior to calling them (MAIL_ACCOUNT, PASSWD, DATABASE). # - Calling external method '__usage' as part of error handling. # Also used by setquota, delquota diff --git a/target/scripts/helpers/dns.sh b/target/scripts/helpers/dns.sh index 688ac508..acb32bc7 100644 --- a/target/scripts/helpers/dns.sh +++ b/target/scripts/helpers/dns.sh @@ -7,7 +7,7 @@ function _get_label_count() { } # Sets HOSTNAME and DOMAINNAME globals used throughout the scripts, -# and any subprocesses called that intereact with it. +# and any subprocesses called that interact with it. function _obtain_hostname_and_domainname() { # Normally this value would match the output of `hostname` which mirrors `/proc/sys/kernel/hostname`, # However for legacy reasons, the system ENV `HOSTNAME` was replaced here with `hostname -f` instead. diff --git a/target/scripts/helpers/error.sh b/target/scripts/helpers/error.sh index bac3630e..99135e1d 100644 --- a/target/scripts/helpers/error.sh +++ b/target/scripts/helpers/error.sh @@ -93,7 +93,7 @@ function _trap_err_signal() { # shellcheck disable=SC2317 function __log_unexpected_error() { - local MESSAGE="Unexpected error occured :: script = ${SCRIPT:-${0}} " + local MESSAGE="Unexpected error occurred :: script = ${SCRIPT:-${0}} " MESSAGE+=" | function = ${1:-none (global)}" MESSAGE+=" | command = ${2:-?}" MESSAGE+=" | line = ${3:-?}" diff --git a/target/scripts/helpers/ssl.sh b/target/scripts/helpers/ssl.sh index 6a7610ad..e3d4e7db 100644 --- a/target/scripts/helpers/ssl.sh +++ b/target/scripts/helpers/ssl.sh @@ -8,7 +8,7 @@ function _setup_dhparam() { _log 'debug' "Setting up ${DH_SERVICE} dhparam" if [[ -f ${DH_CUSTOM} ]]; then # use custom supplied dh params (assumes they're probably insecure) - _log 'trace' "${DH_SERVICE} will use custom provided DH paramters" + _log 'trace' "${DH_SERVICE} will use custom provided DH parameters" _log 'warn' "Using self-generated dhparams is considered insecure - unless you know what you are doing, please remove '${DH_CUSTOM}'" cp -f "${DH_CUSTOM}" "${DH_DEST}" diff --git a/target/scripts/startup/setup-stack.sh b/target/scripts/startup/setup-stack.sh index ad4ba883..a75770c5 100644 --- a/target/scripts/startup/setup-stack.sh +++ b/target/scripts/startup/setup-stack.sh @@ -9,7 +9,7 @@ function _register_setup_function() { function _setup() { # Requires `shopt -s globstar` because of `**` which in - # turn is required as we're decending through directories + # turn is required as we're descending through directories for FILE in /usr/local/bin/setup.d/**/*.sh; do # shellcheck source=/dev/null source "${FILE}" diff --git a/target/scripts/startup/setup.d/security/rspamd.sh b/target/scripts/startup/setup.d/security/rspamd.sh index 085197c2..c3056e39 100644 --- a/target/scripts/startup/setup.d/security/rspamd.sh +++ b/target/scripts/startup/setup.d/security/rspamd.sh @@ -227,7 +227,7 @@ function __rspamd__setup_learning() { sedfile -i -E '/^}/d' /etc/dovecot/conf.d/90-sieve.conf cat >>/etc/dovecot/conf.d/90-sieve.conf << EOF - # From anyhwere to Junk + # From anywhere to Junk imapsieve_mailbox1_name = Junk imapsieve_mailbox1_causes = COPY imapsieve_mailbox1_before = file:${SIEVE_PIPE_BIN_DIR}/learn-spam.sieve diff --git a/test/helper/change-detection.bash b/test/helper/change-detection.bash index c6a0894c..e9dd7020 100644 --- a/test/helper/change-detection.bash +++ b/test/helper/change-detection.bash @@ -30,7 +30,7 @@ function _wait_until_expected_count_is_matched() { } # WARNING: Keep in mind it is a '>=' comparison. - # If you provide an explict count to match, ensure it is not too low to cause a false-positive. + # If you provide an explicit count to match, ensure it is not too low to cause a false-positive. function __has_expected_count() { # shellcheck disable=SC2317 [[ $(__get_count) -ge "${EXPECTED_COUNT}" ]] diff --git a/test/helper/tls.bash b/test/helper/tls.bash index 3e4507c6..74b8ebe6 100644 --- a/test/helper/tls.bash +++ b/test/helper/tls.bash @@ -15,7 +15,7 @@ load "${REPOSITORY_ROOT}/test/helper/common" # For certs actually provisioned from LetsEncrypt the Root CA cert should not need to be provided, # as it would already be available by default in `/etc/ssl/certs`, requiring only the cert chain (fullchain.pem). -function _should_succesfully_negotiate_tls() { +function _should_successfully_negotiate_tls() { local FQDN=${1} # shellcheck disable=SC2031 local CA_CERT=${2:-${TEST_CA_CERT}} diff --git a/test/tests/parallel/set1/spam_virus/disabled_clamav_spamassassin.bats b/test/tests/parallel/set1/spam_virus/disabled_clamav_spamassassin.bats index 0f3a7b5b..16e4f526 100644 --- a/test/tests/parallel/set1/spam_virus/disabled_clamav_spamassassin.bats +++ b/test/tests/parallel/set1/spam_virus/disabled_clamav_spamassassin.bats @@ -2,7 +2,7 @@ load "${REPOSITORY_ROOT}/test/helper/setup" load "${REPOSITORY_ROOT}/test/helper/common" BATS_TEST_NAME_PREFIX='[ClamAV + SA] (disabled) ' -CONTAINER_NAME='dms-test_clamav-spamassasin_disabled' +CONTAINER_NAME='dms-test_clamav-spamassassin_disabled' function setup_file() { _init_with_defaults diff --git a/test/tests/parallel/set1/spam_virus/rspamd_dkim.bats b/test/tests/parallel/set1/spam_virus/rspamd_dkim.bats index 20939f03..a852b060 100644 --- a/test/tests/parallel/set1/spam_virus/rspamd_dkim.bats +++ b/test/tests/parallel/set1/spam_virus/rspamd_dkim.bats @@ -194,7 +194,7 @@ function __create_key() { local KEYSIZE=${4:-2048} local FORCE=${5:-} - # Not quoting is intended here as we would othewise provide + # Not quoting is intended here as we would otherwise provide # the argument "''" (empty string), which would cause errors # shellcheck disable=SC2086 _run_in_container setup config dkim ${FORCE} \ diff --git a/test/tests/parallel/set1/tls/letsencrypt.bats b/test/tests/parallel/set1/tls/letsencrypt.bats index bcdb1758..63bad8a6 100644 --- a/test/tests/parallel/set1/tls/letsencrypt.bats +++ b/test/tests/parallel/set1/tls/letsencrypt.bats @@ -45,7 +45,7 @@ function _initial_setup() { # Test that certificate files exist for the configured `hostname`: _should_have_valid_config "${TARGET_DOMAIN}" 'privkey.pem' 'fullchain.pem' - _should_succesfully_negotiate_tls "${TARGET_DOMAIN}" + _should_successfully_negotiate_tls "${TARGET_DOMAIN}" _should_not_support_fqdn_in_cert 'example.test' } @@ -65,7 +65,7 @@ function _initial_setup() { #test domain has certificate files _should_have_valid_config "${TARGET_DOMAIN}" 'privkey.pem' 'fullchain.pem' - _should_succesfully_negotiate_tls "${TARGET_DOMAIN}" + _should_successfully_negotiate_tls "${TARGET_DOMAIN}" _should_not_support_fqdn_in_cert 'mail.example.test' } @@ -148,7 +148,7 @@ function _initial_setup() { # The difference in support is: # - `example.test` should no longer be valid. # - `mail.example.test` should remain valid, but also allow any other subdomain/hostname. - _should_succesfully_negotiate_tls 'mail.example.test' + _should_successfully_negotiate_tls 'mail.example.test' _should_support_fqdn_in_cert 'fake.example.test' _should_not_support_fqdn_in_cert 'example.test' } diff --git a/test/tests/parallel/set2/tls_cipherlists.bats b/test/tests/parallel/set2/tls_cipherlists.bats index 135f0c6a..a347b90c 100644 --- a/test/tests/parallel/set2/tls_cipherlists.bats +++ b/test/tests/parallel/set2/tls_cipherlists.bats @@ -198,7 +198,7 @@ function get_cipherlist() { local TLS_VERSION=$1 if [[ ${TLS_VERSION} == "TLSv1_3" ]]; then - # TLS v1.3 cipher suites are not user defineable and not unique to the available certificate(s). + # TLS v1.3 cipher suites are not user definable and not unique to the available certificate(s). # They do not support server enforced order either. echo '"TLS_AES_256_GCM_SHA384 TLS_CHACHA20_POLY1305_SHA256 TLS_AES_128_GCM_SHA256"' else diff --git a/test/tests/parallel/set3/container_configuration/process_check_restart.bats b/test/tests/parallel/set3/container_configuration/process_check_restart.bats index cc9cd5b3..c55f59fc 100644 --- a/test/tests/parallel/set3/container_configuration/process_check_restart.bats +++ b/test/tests/parallel/set3/container_configuration/process_check_restart.bats @@ -159,7 +159,7 @@ function _should_restart_when_killed() { # Should kill the process successfully: # (which should then get restarted by supervisord) - # NOTE: The process name from `pkill --echo` does not always match the equivalent processs name from `pgrep --list-full`. + # NOTE: The process name from `pkill --echo` does not always match the equivalent process name from `pgrep --list-full`. # The oldest process returned (if multiple) should be the top-level process launched by supervisord, # the PID will verify the target process was killed correctly: local PID=$(_exec_in_container pgrep --full --oldest "${PROCESS}") diff --git a/test/tests/parallel/set3/scripts/setup_cli.bats b/test/tests/parallel/set3/scripts/setup_cli.bats index 76f16dce..68576c35 100644 --- a/test/tests/parallel/set3/scripts/setup_cli.bats +++ b/test/tests/parallel/set3/scripts/setup_cli.bats @@ -117,7 +117,7 @@ function teardown_file() { _default_teardown ; } assert_success # NOTE: Sometimes the directory still exists, possibly from change detection - # of the previous test (`email udpate`) triggering. Therefore, the function + # of the previous test (`email update`) triggering. Therefore, the function # `wait_until_change_detection_event_completes was added to the # `setup.sh email update` test. _repeat_in_container_until_success_or_timeout 60 "${CONTAINER_NAME}" bash -c '[[ ! -d /var/mail/example.com/user ]]' diff --git a/test/tests/serial/mail_with_ldap.bats b/test/tests/serial/mail_with_ldap.bats index f3ee1cc1..bc709b20 100644 --- a/test/tests/serial/mail_with_ldap.bats +++ b/test/tests/serial/mail_with_ldap.bats @@ -122,7 +122,7 @@ function setup_file() { # Extra ENV needed to support specific test-cases: local ENV_SUPPORT=( - # Required for openssl commands to be successul: + # Required for openssl commands to be successful: # NOTE: snakeoil cert is created (for `docker-mailserver.invalid`) via Debian post-install script for Postfix package. # TODO: Use proper TLS cert --env SSL_TYPE='snakeoil' @@ -404,7 +404,7 @@ function _should_exist_in_ldap_tables() { # Each LDAP config file sets `query_filter` to lookup a key in LDAP (values defined in `.ldif` test files) # `mail` (ldap-users), `mailAlias` (ldap-aliases), `mailGroupMember` (ldap-groups) # `postmap` is queried with the mail account address, and the LDAP service should respond with - # `result_attribute` which is the LDAP `mail` value (should match what we'r'e quering `postmap` with) + # `result_attribute` which is the LDAP `mail` value (should match what we'r'e querying `postmap` with) _run_in_container postmap -q "${MAIL_ACCOUNT}" ldap:/etc/postfix/ldap-users.cf assert_success diff --git a/test/tests/serial/sedfile.bats b/test/tests/serial/sedfile.bats index bef2e6a8..09cfe482 100644 --- a/test/tests/serial/sedfile.bats +++ b/test/tests/serial/sedfile.bats @@ -68,7 +68,7 @@ function setup() { assert_output 'foo bar' } -@test 'checking sedfile substitude failure (strict)' { +@test 'checking sedfile substitute failure (strict)' { # try to change 'baz' to 'something' and fail _run_in_container sedfile --strict -i 's|baz|something|' "${TEST_FILE}" assert_failure