==> Synchronizing chroot copy [/home/alhp/workspace/chroot/root] -> [build_846e0da8-d537-4a3e-9fc7-306f8f42af72]...done
==> Making package: chezmoi 2.71.1-1.1 (Mon Jul 20 22:39:57 2026)
==> Retrieving sources...
  -> Downloading chezmoi-2.71.1.tar.gz...
  % Total    % Received % Xferd  Average Speed  Time    Time    Time   Current
                                 Dload  Upload  Total   Spent   Left   Speed
  0      0   0      0   0      0      0      0           00:10              0  0      0   0      0   0      0      0      0           00:10              0  0      0   0      0   0      0      0      0           00:10              0
  0      0   0      0   0      0      0      0           00:10              0100 513.3k   0 513.3k   0      0  44250      0           00:11         502.4k100 744.0k   0 744.0k   0      0  57782      0           00:13         319.6k100  1.04M   0  1.04M   0      0  75071      0           00:14         283.7k100  1.47M   0  1.47M   0      0  98232      0           00:15         308.7k100  1.95M   0  1.95M   0      0 119.6k      0           00:16         339.8k100  2.47M   0  2.47M   0      0 144.5k      0           00:17         339.8k100  2.47M   0  2.47M   0      0 144.5k      0           00:17         339.8k100  2.47M   0  2.47M   0      0 144.5k      0           00:17         339.8k
==> Validating source files with sha512sums...
    chezmoi-2.71.1.tar.gz ... Passed
==> Making package: chezmoi 2.71.1-1.1 (Mon Jul 20 20:40:18 2026)
==> Checking runtime dependencies...
==> Checking buildtime dependencies...
==> Installing missing dependencies...
resolving dependencies...
looking for conflicting packages...

Package (7)           New Version  Net Change

extra/perl-error      0.17030-3      0.04 MiB
extra/perl-mailtools  2.22-3         0.10 MiB
extra/perl-timedate   2.35-1         0.15 MiB
extra/zlib-ng         2.3.3-1        0.28 MiB
extra/git             2.55.0-1      31.33 MiB
extra/go              2:1.26.5-1   215.65 MiB
extra/zip             3.0-13         0.57 MiB

Total Installed Size:  248.11 MiB

:: Proceed with installation? [Y/n] 
checking keyring...
checking package integrity...
loading package files...
checking for file conflicts...
:: Processing package changes...
installing go...
installing perl-error...
installing perl-timedate...
installing perl-mailtools...
installing zlib-ng...
installing git...
Optional dependencies for git
    git-zsh-completion: upstream zsh completion
    tk: gitk and git gui
    openssh: ssh transport and crypto
    man: show help with `git command --help`
    perl-libwww: git svn
    perl-term-readkey: git svn and interactive.singlekey setting
    perl-io-socket-ssl: git send-email TLS support
    perl-authen-sasl: git send-email TLS support
    perl-cgi: gitweb (web interface) support
    python: git svn & git p4 [installed]
    subversion: git svn
    org.freedesktop.secrets: keyring credential helper
    libsecret: libsecret credential helper [installed]
    less: the default pager for git
installing zip...
:: Running post-transaction hooks...
(1/3) Creating system user accounts...
Creating group 'git' with GID 969.
Creating user 'git' (git daemon user) with UID 969 and GID 969.
(2/3) Reloading system manager configuration...
  Skipped: Current root is not booted.
(3/3) Arming ConditionNeedsUpdate...
==> Retrieving sources...
  -> Found chezmoi-2.71.1.tar.gz
==> WARNING: Skipping all source file integrity checks.
==> Extracting sources...
  -> Extracting chezmoi-2.71.1.tar.gz with bsdtar
==> Starting prepare()...
==> Starting build()...
==> Starting check()...
=== RUN   TestMain
chezmoi version dev
--- PASS: TestMain (0.00s)
PASS
ok  	chezmoi.io/chezmoi/v2	0.042s
?   	chezmoi.io/chezmoi/v2/assets/chezmoi.io/docs	[no test files]
=== RUN   TestFS
--- PASS: TestFS (0.00s)
PASS
ok  	chezmoi.io/chezmoi/v2/assets/chezmoi.io/docs/reference/commands	0.018s
?   	chezmoi.io/chezmoi/v2/assets/templates	[no test files]
=== RUN   TestNewTar
--- PASS: TestNewTar (0.00s)
=== RUN   TestNewZip
--- PASS: TestNewZip (0.00s)
PASS
ok  	chezmoi.io/chezmoi/v2/internal/archivetest	0.022s
=== RUN   TestNewAbsPathFromExtPath
=== RUN   TestNewAbsPathFromExtPath/empty
=== RUN   TestNewAbsPathFromExtPath/file
=== RUN   TestNewAbsPathFromExtPath/tilde
=== RUN   TestNewAbsPathFromExtPath/tilde_home_file
=== RUN   TestNewAbsPathFromExtPath/tilde_home_file_windows
    abspath_test.go:53: skipping Windows test on UNIX
--- PASS: TestNewAbsPathFromExtPath (0.00s)
    --- PASS: TestNewAbsPathFromExtPath/empty (0.00s)
    --- PASS: TestNewAbsPathFromExtPath/file (0.00s)
    --- PASS: TestNewAbsPathFromExtPath/tilde (0.00s)
    --- PASS: TestNewAbsPathFromExtPath/tilde_home_file (0.00s)
    --- SKIP: TestNewAbsPathFromExtPath/tilde_home_file_windows (0.00s)
=== RUN   TestAbsPathJoin
=== RUN   TestAbsPathJoin/0
    abspath_test.go:82: 
--- PASS: TestAbsPathJoin (0.00s)
    --- SKIP: TestAbsPathJoin/0 (0.00s)
=== RUN   TestAgeEncryption
=== RUN   TestAgeEncryption/age
    ageencryption_test.go:280: age not found in $PATH
=== RUN   TestAgeEncryption/rage
    ageencryption_test.go:280: rage not found in $PATH
--- PASS: TestAgeEncryption (0.00s)
    --- SKIP: TestAgeEncryption/age (0.00s)
    --- SKIP: TestAgeEncryption/rage (0.00s)
=== RUN   TestAgeEncryptionMarshalUnmarshal
=== RUN   TestAgeEncryptionMarshalUnmarshal/json
=== RUN   TestAgeEncryptionMarshalUnmarshal/yaml
--- PASS: TestAgeEncryptionMarshalUnmarshal (0.00s)
    --- PASS: TestAgeEncryptionMarshalUnmarshal/json (0.00s)
    --- PASS: TestAgeEncryptionMarshalUnmarshal/yaml (0.00s)
=== RUN   TestAgeEncryptionMarshalUnmarshalField
=== RUN   TestAgeEncryptionMarshalUnmarshalField/json
=== RUN   TestAgeEncryptionMarshalUnmarshalField/yaml
--- PASS: TestAgeEncryptionMarshalUnmarshalField (0.00s)
    --- PASS: TestAgeEncryptionMarshalUnmarshalField/json (0.00s)
    --- PASS: TestAgeEncryptionMarshalUnmarshalField/yaml (0.00s)
=== RUN   TestAgeEncryptionMarshalUnmarshalFieldEmbedded
=== RUN   TestAgeEncryptionMarshalUnmarshalFieldEmbedded/json
=== RUN   TestAgeEncryptionMarshalUnmarshalFieldEmbedded/yaml
--- PASS: TestAgeEncryptionMarshalUnmarshalFieldEmbedded (0.00s)
    --- PASS: TestAgeEncryptionMarshalUnmarshalFieldEmbedded/json (0.00s)
    --- PASS: TestAgeEncryptionMarshalUnmarshalFieldEmbedded/yaml (0.00s)
=== RUN   TestAgeMultipleIdentitiesAndMultipleRecipients
=== RUN   TestAgeMultipleIdentitiesAndMultipleRecipients/age
    ageencryption_test.go:280: age not found in $PATH
=== RUN   TestAgeMultipleIdentitiesAndMultipleRecipients/rage
    ageencryption_test.go:280: rage not found in $PATH
--- PASS: TestAgeMultipleIdentitiesAndMultipleRecipients (0.00s)
    --- SKIP: TestAgeMultipleIdentitiesAndMultipleRecipients/age (0.00s)
    --- SKIP: TestAgeMultipleIdentitiesAndMultipleRecipients/rage (0.00s)
=== RUN   TestAgeRecipientsFile
=== RUN   TestAgeRecipientsFile/age
    ageencryption_test.go:280: age not found in $PATH
=== RUN   TestAgeRecipientsFile/rage
    ageencryption_test.go:280: rage not found in $PATH
--- PASS: TestAgeRecipientsFile (0.00s)
    --- SKIP: TestAgeRecipientsFile/age (0.00s)
    --- SKIP: TestAgeRecipientsFile/rage (0.00s)
=== RUN   TestBuiltinAgeEncryption
=== RUN   TestBuiltinAgeEncryption/DecryptToFile
=== RUN   TestBuiltinAgeEncryption/EncryptDecrypt
=== RUN   TestBuiltinAgeEncryption/EncryptFile
--- PASS: TestBuiltinAgeEncryption (0.01s)
    --- PASS: TestBuiltinAgeEncryption/DecryptToFile (0.00s)
    --- PASS: TestBuiltinAgeEncryption/EncryptDecrypt (0.00s)
    --- PASS: TestBuiltinAgeEncryption/EncryptFile (0.00s)
=== RUN   TestBuiltinAgeMultipleIdentitiesAndMultipleRecipients
=== RUN   TestBuiltinAgeMultipleIdentitiesAndMultipleRecipients/DecryptToFile
=== RUN   TestBuiltinAgeMultipleIdentitiesAndMultipleRecipients/EncryptDecrypt
=== RUN   TestBuiltinAgeMultipleIdentitiesAndMultipleRecipients/EncryptFile
--- PASS: TestBuiltinAgeMultipleIdentitiesAndMultipleRecipients (0.01s)
    --- PASS: TestBuiltinAgeMultipleIdentitiesAndMultipleRecipients/DecryptToFile (0.00s)
    --- PASS: TestBuiltinAgeMultipleIdentitiesAndMultipleRecipients/EncryptDecrypt (0.00s)
    --- PASS: TestBuiltinAgeMultipleIdentitiesAndMultipleRecipients/EncryptFile (0.01s)
=== RUN   TestBuiltinAgeRecipientsFile
=== RUN   TestBuiltinAgeRecipientsFile/DecryptToFile
=== RUN   TestBuiltinAgeRecipientsFile/EncryptDecrypt
=== RUN   TestBuiltinAgeRecipientsFile/EncryptFile
=== RUN   TestBuiltinAgeRecipientsFile/DecryptToFile#01
=== RUN   TestBuiltinAgeRecipientsFile/EncryptDecrypt#01
=== RUN   TestBuiltinAgeRecipientsFile/EncryptFile#01
--- PASS: TestBuiltinAgeRecipientsFile (0.02s)
    --- PASS: TestBuiltinAgeRecipientsFile/DecryptToFile (0.00s)
    --- PASS: TestBuiltinAgeRecipientsFile/EncryptDecrypt (0.00s)
    --- PASS: TestBuiltinAgeRecipientsFile/EncryptFile (0.00s)
    --- PASS: TestBuiltinAgeRecipientsFile/DecryptToFile#01 (0.01s)
    --- PASS: TestBuiltinAgeRecipientsFile/EncryptDecrypt#01 (0.00s)
    --- PASS: TestBuiltinAgeRecipientsFile/EncryptFile#01 (0.00s)
=== RUN   TestWalkArchive
=== RUN   TestWalkArchive/tar
=== RUN   TestWalkArchive/zip
=== RUN   TestWalkArchive/zip-flat
=== RUN   TestWalkArchive/tar-flat
--- PASS: TestWalkArchive (0.00s)
    --- PASS: TestWalkArchive/tar (0.00s)
    --- PASS: TestWalkArchive/zip (0.00s)
    --- PASS: TestWalkArchive/zip-flat (0.00s)
    --- PASS: TestWalkArchive/tar-flat (0.00s)
=== RUN   TestArchiveReaderSystemTar
--- PASS: TestArchiveReaderSystemTar (0.00s)
=== RUN   TestDirAttr
--- PASS: TestDirAttr (0.01s)
=== RUN   TestDirAttrLiteral
=== RUN   TestDirAttrLiteral/exact_dir
=== RUN   TestDirAttrLiteral/literal_exact_dir
=== RUN   TestDirAttrLiteral/literal_literal_dir
--- PASS: TestDirAttrLiteral (0.00s)
    --- PASS: TestDirAttrLiteral/exact_dir (0.00s)
    --- PASS: TestDirAttrLiteral/literal_exact_dir (0.00s)
    --- PASS: TestDirAttrLiteral/literal_literal_dir (0.00s)
=== RUN   TestFileAttr
=== RUN   TestFileAttr/create_dot_name
=== RUN   TestFileAttr/create_literal_create_name
=== RUN   TestFileAttr/create_literal_dot_name
=== RUN   TestFileAttr/create_exact_name
=== RUN   TestFileAttr/create_literal_literal_name
=== RUN   TestFileAttr/create_literal_literal_name#01
=== RUN   TestFileAttr/create_literal_modify_name
=== RUN   TestFileAttr/create_name.literal.literal
=== RUN   TestFileAttr/create_name
=== RUN   TestFileAttr/create_literal_remove_
=== RUN   TestFileAttr/create_literal_run_name
=== RUN   TestFileAttr/create_literal_symlink_name
=== RUN   TestFileAttr/create_template.tmpl.literal
=== RUN   TestFileAttr/create_empty_dot_name
=== RUN   TestFileAttr/create_empty_literal_create_name
=== RUN   TestFileAttr/create_empty_literal_dot_name
=== RUN   TestFileAttr/create_empty_exact_name
=== RUN   TestFileAttr/create_empty_literal_literal_name
=== RUN   TestFileAttr/create_empty_literal_literal_name#01
=== RUN   TestFileAttr/create_empty_literal_modify_name
=== RUN   TestFileAttr/create_empty_name.literal.literal
=== RUN   TestFileAttr/create_empty_name
=== RUN   TestFileAttr/create_empty_literal_remove_
=== RUN   TestFileAttr/create_empty_literal_run_name
=== RUN   TestFileAttr/create_empty_literal_symlink_name
=== RUN   TestFileAttr/create_empty_template.tmpl.literal
=== RUN   TestFileAttr/create_encrypted_dot_name
=== RUN   TestFileAttr/create_encrypted_literal_create_name
=== RUN   TestFileAttr/create_encrypted_literal_dot_name
=== RUN   TestFileAttr/create_encrypted_exact_name
=== RUN   TestFileAttr/create_encrypted_literal_literal_name
=== RUN   TestFileAttr/create_encrypted_literal_literal_name#01
=== RUN   TestFileAttr/create_encrypted_literal_modify_name
=== RUN   TestFileAttr/create_encrypted_name.literal.literal
=== RUN   TestFileAttr/create_encrypted_name
=== RUN   TestFileAttr/create_encrypted_literal_remove_
=== RUN   TestFileAttr/create_encrypted_literal_run_name
=== RUN   TestFileAttr/create_encrypted_literal_symlink_name
=== RUN   TestFileAttr/create_encrypted_template.tmpl.literal
=== RUN   TestFileAttr/create_encrypted_empty_dot_name
=== RUN   TestFileAttr/create_encrypted_empty_literal_create_name
=== RUN   TestFileAttr/create_encrypted_empty_literal_dot_name
=== RUN   TestFileAttr/create_encrypted_empty_exact_name
=== RUN   TestFileAttr/create_encrypted_empty_literal_literal_name
=== RUN   TestFileAttr/create_encrypted_empty_literal_literal_name#01
=== RUN   TestFileAttr/create_encrypted_empty_literal_modify_name
=== RUN   TestFileAttr/create_encrypted_empty_name.literal.literal
=== RUN   TestFileAttr/create_encrypted_empty_name
=== RUN   TestFileAttr/create_encrypted_empty_literal_remove_
=== RUN   TestFileAttr/create_encrypted_empty_literal_run_name
=== RUN   TestFileAttr/create_encrypted_empty_literal_symlink_name
=== RUN   TestFileAttr/create_encrypted_empty_template.tmpl.literal
=== RUN   TestFileAttr/create_executable_dot_name
=== RUN   TestFileAttr/create_executable_literal_create_name
=== RUN   TestFileAttr/create_executable_literal_dot_name
=== RUN   TestFileAttr/create_executable_exact_name
=== RUN   TestFileAttr/create_executable_literal_literal_name
=== RUN   TestFileAttr/create_executable_literal_literal_name#01
=== RUN   TestFileAttr/create_executable_literal_modify_name
=== RUN   TestFileAttr/create_executable_name.literal.literal
=== RUN   TestFileAttr/create_executable_name
=== RUN   TestFileAttr/create_executable_literal_remove_
=== RUN   TestFileAttr/create_executable_literal_run_name
=== RUN   TestFileAttr/create_executable_literal_symlink_name
=== RUN   TestFileAttr/create_executable_template.tmpl.literal
=== RUN   TestFileAttr/create_empty_executable_dot_name
=== RUN   TestFileAttr/create_empty_executable_literal_create_name
=== RUN   TestFileAttr/create_empty_executable_literal_dot_name
=== RUN   TestFileAttr/create_empty_executable_exact_name
=== RUN   TestFileAttr/create_empty_executable_literal_literal_name
=== RUN   TestFileAttr/create_empty_executable_literal_literal_name#01
=== RUN   TestFileAttr/create_empty_executable_literal_modify_name
=== RUN   TestFileAttr/create_empty_executable_name.literal.literal
=== RUN   TestFileAttr/create_empty_executable_name
=== RUN   TestFileAttr/create_empty_executable_literal_remove_
=== RUN   TestFileAttr/create_empty_executable_literal_run_name
=== RUN   TestFileAttr/create_empty_executable_literal_symlink_name
=== RUN   TestFileAttr/create_empty_executable_template.tmpl.literal
=== RUN   TestFileAttr/create_encrypted_executable_dot_name
=== RUN   TestFileAttr/create_encrypted_executable_literal_create_name
=== RUN   TestFileAttr/create_encrypted_executable_literal_dot_name
=== RUN   TestFileAttr/create_encrypted_executable_exact_name
=== RUN   TestFileAttr/create_encrypted_executable_literal_literal_name
=== RUN   TestFileAttr/create_encrypted_executable_literal_literal_name#01
=== RUN   TestFileAttr/create_encrypted_executable_literal_modify_name
=== RUN   TestFileAttr/create_encrypted_executable_name.literal.literal
=== RUN   TestFileAttr/create_encrypted_executable_name
=== RUN   TestFileAttr/create_encrypted_executable_literal_remove_
=== RUN   TestFileAttr/create_encrypted_executable_literal_run_name
=== RUN   TestFileAttr/create_encrypted_executable_literal_symlink_name
=== RUN   TestFileAttr/create_encrypted_executable_template.tmpl.literal
=== RUN   TestFileAttr/create_encrypted_empty_executable_dot_name
=== RUN   TestFileAttr/create_encrypted_empty_executable_literal_create_name
=== RUN   TestFileAttr/create_encrypted_empty_executable_literal_dot_name
=== RUN   TestFileAttr/create_encrypted_empty_executable_exact_name
=== RUN   TestFileAttr/create_encrypted_empty_executable_literal_literal_name
=== RUN   TestFileAttr/create_encrypted_empty_executable_literal_literal_name#01
=== RUN   TestFileAttr/create_encrypted_empty_executable_literal_modify_name
=== RUN   TestFileAttr/create_encrypted_empty_executable_name.literal.literal
=== RUN   TestFileAttr/create_encrypted_empty_executable_name
=== RUN   TestFileAttr/create_encrypted_empty_executable_literal_remove_
=== RUN   TestFileAttr/create_encrypted_empty_executable_literal_run_name
=== RUN   TestFileAttr/create_encrypted_empty_executable_literal_symlink_name
=== RUN   TestFileAttr/create_encrypted_empty_executable_template.tmpl.literal
=== RUN   TestFileAttr/create_private_dot_name
=== RUN   TestFileAttr/create_private_literal_create_name
=== RUN   TestFileAttr/create_private_literal_dot_name
=== RUN   TestFileAttr/create_private_exact_name
=== RUN   TestFileAttr/create_private_literal_literal_name
=== RUN   TestFileAttr/create_private_literal_literal_name#01
=== RUN   TestFileAttr/create_private_literal_modify_name
=== RUN   TestFileAttr/create_private_name.literal.literal
=== RUN   TestFileAttr/create_private_name
=== RUN   TestFileAttr/create_private_literal_remove_
=== RUN   TestFileAttr/create_private_literal_run_name
=== RUN   TestFileAttr/create_private_literal_symlink_name
=== RUN   TestFileAttr/create_private_template.tmpl.literal
=== RUN   TestFileAttr/create_private_empty_dot_name
=== RUN   TestFileAttr/create_private_empty_literal_create_name
=== RUN   TestFileAttr/create_private_empty_literal_dot_name
=== RUN   TestFileAttr/create_private_empty_exact_name
=== RUN   TestFileAttr/create_private_empty_literal_literal_name
=== RUN   TestFileAttr/create_private_empty_literal_literal_name#01
=== RUN   TestFileAttr/create_private_empty_literal_modify_name
=== RUN   TestFileAttr/create_private_empty_name.literal.literal
=== RUN   TestFileAttr/create_private_empty_name
=== RUN   TestFileAttr/create_private_empty_literal_remove_
=== RUN   TestFileAttr/create_private_empty_literal_run_name
=== RUN   TestFileAttr/create_private_empty_literal_symlink_name
=== RUN   TestFileAttr/create_private_empty_template.tmpl.literal
=== RUN   TestFileAttr/create_encrypted_private_dot_name
=== RUN   TestFileAttr/create_encrypted_private_literal_create_name
=== RUN   TestFileAttr/create_encrypted_private_literal_dot_name
=== RUN   TestFileAttr/create_encrypted_private_exact_name
=== RUN   TestFileAttr/create_encrypted_private_literal_literal_name
=== RUN   TestFileAttr/create_encrypted_private_literal_literal_name#01
=== RUN   TestFileAttr/create_encrypted_private_literal_modify_name
=== RUN   TestFileAttr/create_encrypted_private_name.literal.literal
=== RUN   TestFileAttr/create_encrypted_private_name
=== RUN   TestFileAttr/create_encrypted_private_literal_remove_
=== RUN   TestFileAttr/create_encrypted_private_literal_run_name
=== RUN   TestFileAttr/create_encrypted_private_literal_symlink_name
=== RUN   TestFileAttr/create_encrypted_private_template.tmpl.literal
=== RUN   TestFileAttr/create_encrypted_private_empty_dot_name
=== RUN   TestFileAttr/create_encrypted_private_empty_literal_create_name
=== RUN   TestFileAttr/create_encrypted_private_empty_literal_dot_name
=== RUN   TestFileAttr/create_encrypted_private_empty_exact_name
=== RUN   TestFileAttr/create_encrypted_private_empty_literal_literal_name
=== RUN   TestFileAttr/create_encrypted_private_empty_literal_literal_name#01
=== RUN   TestFileAttr/create_encrypted_private_empty_literal_modify_name
=== RUN   TestFileAttr/create_encrypted_private_empty_name.literal.literal
=== RUN   TestFileAttr/create_encrypted_private_empty_name
=== RUN   TestFileAttr/create_encrypted_private_empty_literal_remove_
=== RUN   TestFileAttr/create_encrypted_private_empty_literal_run_name
=== RUN   TestFileAttr/create_encrypted_private_empty_literal_symlink_name
=== RUN   TestFileAttr/create_encrypted_private_empty_template.tmpl.literal
=== RUN   TestFileAttr/create_private_executable_dot_name
=== RUN   TestFileAttr/create_private_executable_literal_create_name
=== RUN   TestFileAttr/create_private_executable_literal_dot_name
=== RUN   TestFileAttr/create_private_executable_exact_name
=== RUN   TestFileAttr/create_private_executable_literal_literal_name
=== RUN   TestFileAttr/create_private_executable_literal_literal_name#01
=== RUN   TestFileAttr/create_private_executable_literal_modify_name
=== RUN   TestFileAttr/create_private_executable_name.literal.literal
=== RUN   TestFileAttr/create_private_executable_name
=== RUN   TestFileAttr/create_private_executable_literal_remove_
=== RUN   TestFileAttr/create_private_executable_literal_run_name
=== RUN   TestFileAttr/create_private_executable_literal_symlink_name
=== RUN   TestFileAttr/create_private_executable_template.tmpl.literal
=== RUN   TestFileAttr/create_private_empty_executable_dot_name
=== RUN   TestFileAttr/create_private_empty_executable_literal_create_name
=== RUN   TestFileAttr/create_private_empty_executable_literal_dot_name
=== RUN   TestFileAttr/create_private_empty_executable_exact_name
=== RUN   TestFileAttr/create_private_empty_executable_literal_literal_name
=== RUN   TestFileAttr/create_private_empty_executable_literal_literal_name#01
=== RUN   TestFileAttr/create_private_empty_executable_literal_modify_name
=== RUN   TestFileAttr/create_private_empty_executable_name.literal.literal
=== RUN   TestFileAttr/create_private_empty_executable_name
=== RUN   TestFileAttr/create_private_empty_executable_literal_remove_
=== RUN   TestFileAttr/create_private_empty_executable_literal_run_name
=== RUN   TestFileAttr/create_private_empty_executable_literal_symlink_name
=== RUN   TestFileAttr/create_private_empty_executable_template.tmpl.literal
=== RUN   TestFileAttr/create_encrypted_private_executable_dot_name
=== RUN   TestFileAttr/create_encrypted_private_executable_literal_create_name
=== RUN   TestFileAttr/create_encrypted_private_executable_literal_dot_name
=== RUN   TestFileAttr/create_encrypted_private_executable_exact_name
=== RUN   TestFileAttr/create_encrypted_private_executable_literal_literal_name
=== RUN   TestFileAttr/create_encrypted_private_executable_literal_literal_name#01
=== RUN   TestFileAttr/create_encrypted_private_executable_literal_modify_name
=== RUN   TestFileAttr/create_encrypted_private_executable_name.literal.literal
=== RUN   TestFileAttr/create_encrypted_private_executable_name
=== RUN   TestFileAttr/create_encrypted_private_executable_literal_remove_
=== RUN   TestFileAttr/create_encrypted_private_executable_literal_run_name
=== RUN   TestFileAttr/create_encrypted_private_executable_literal_symlink_name
=== RUN   TestFileAttr/create_encrypted_private_executable_template.tmpl.literal
=== RUN   TestFileAttr/create_encrypted_private_empty_executable_dot_name
=== RUN   TestFileAttr/create_encrypted_private_empty_executable_literal_create_name
=== RUN   TestFileAttr/create_encrypted_private_empty_executable_literal_dot_name
=== RUN   TestFileAttr/create_encrypted_private_empty_executable_exact_name
=== RUN   TestFileAttr/create_encrypted_private_empty_executable_literal_literal_name
=== RUN   TestFileAttr/create_encrypted_private_empty_executable_literal_literal_name#01
=== RUN   TestFileAttr/create_encrypted_private_empty_executable_literal_modify_name
=== RUN   TestFileAttr/create_encrypted_private_empty_executable_name.literal.literal
=== RUN   TestFileAttr/create_encrypted_private_empty_executable_name
=== RUN   TestFileAttr/create_encrypted_private_empty_executable_literal_remove_
=== RUN   TestFileAttr/create_encrypted_private_empty_executable_literal_run_name
=== RUN   TestFileAttr/create_encrypted_private_empty_executable_literal_symlink_name
=== RUN   TestFileAttr/create_encrypted_private_empty_executable_template.tmpl.literal
=== RUN   TestFileAttr/create_readonly_dot_name
=== RUN   TestFileAttr/create_readonly_literal_create_name
=== RUN   TestFileAttr/create_readonly_literal_dot_name
=== RUN   TestFileAttr/create_readonly_exact_name
=== RUN   TestFileAttr/create_readonly_literal_literal_name
=== RUN   TestFileAttr/create_readonly_literal_literal_name#01
=== RUN   TestFileAttr/create_readonly_literal_modify_name
=== RUN   TestFileAttr/create_readonly_name.literal.literal
=== RUN   TestFileAttr/create_readonly_name
=== RUN   TestFileAttr/create_readonly_literal_remove_
=== RUN   TestFileAttr/create_readonly_literal_run_name
=== RUN   TestFileAttr/create_readonly_literal_symlink_name
=== RUN   TestFileAttr/create_readonly_template.tmpl.literal
=== RUN   TestFileAttr/create_readonly_empty_dot_name
=== RUN   TestFileAttr/create_readonly_empty_literal_create_name
=== RUN   TestFileAttr/create_readonly_empty_literal_dot_name
=== RUN   TestFileAttr/create_readonly_empty_exact_name
=== RUN   TestFileAttr/create_readonly_empty_literal_literal_name
=== RUN   TestFileAttr/create_readonly_empty_literal_literal_name#01
=== RUN   TestFileAttr/create_readonly_empty_literal_modify_name
=== RUN   TestFileAttr/create_readonly_empty_name.literal.literal
=== RUN   TestFileAttr/create_readonly_empty_name
=== RUN   TestFileAttr/create_readonly_empty_literal_remove_
=== RUN   TestFileAttr/create_readonly_empty_literal_run_name
=== RUN   TestFileAttr/create_readonly_empty_literal_symlink_name
=== RUN   TestFileAttr/create_readonly_empty_template.tmpl.literal
=== RUN   TestFileAttr/create_encrypted_readonly_dot_name
=== RUN   TestFileAttr/create_encrypted_readonly_literal_create_name
=== RUN   TestFileAttr/create_encrypted_readonly_literal_dot_name
=== RUN   TestFileAttr/create_encrypted_readonly_exact_name
=== RUN   TestFileAttr/create_encrypted_readonly_literal_literal_name
=== RUN   TestFileAttr/create_encrypted_readonly_literal_literal_name#01
=== RUN   TestFileAttr/create_encrypted_readonly_literal_modify_name
=== RUN   TestFileAttr/create_encrypted_readonly_name.literal.literal
=== RUN   TestFileAttr/create_encrypted_readonly_name
=== RUN   TestFileAttr/create_encrypted_readonly_literal_remove_
=== RUN   TestFileAttr/create_encrypted_readonly_literal_run_name
=== RUN   TestFileAttr/create_encrypted_readonly_literal_symlink_name
=== RUN   TestFileAttr/create_encrypted_readonly_template.tmpl.literal
=== RUN   TestFileAttr/create_encrypted_readonly_empty_dot_name
=== RUN   TestFileAttr/create_encrypted_readonly_empty_literal_create_name
=== RUN   TestFileAttr/create_encrypted_readonly_empty_literal_dot_name
=== RUN   TestFileAttr/create_encrypted_readonly_empty_exact_name
=== RUN   TestFileAttr/create_encrypted_readonly_empty_literal_literal_name
=== RUN   TestFileAttr/create_encrypted_readonly_empty_literal_literal_name#01
=== RUN   TestFileAttr/create_encrypted_readonly_empty_literal_modify_name
=== RUN   TestFileAttr/create_encrypted_readonly_empty_name.literal.literal
=== RUN   TestFileAttr/create_encrypted_readonly_empty_name
=== RUN   TestFileAttr/create_encrypted_readonly_empty_literal_remove_
=== RUN   TestFileAttr/create_encrypted_readonly_empty_literal_run_name
=== RUN   TestFileAttr/create_encrypted_readonly_empty_literal_symlink_name
=== RUN   TestFileAttr/create_encrypted_readonly_empty_template.tmpl.literal
=== RUN   TestFileAttr/create_readonly_executable_dot_name
=== RUN   TestFileAttr/create_readonly_executable_literal_create_name
=== RUN   TestFileAttr/create_readonly_executable_literal_dot_name
=== RUN   TestFileAttr/create_readonly_executable_exact_name
=== RUN   TestFileAttr/create_readonly_executable_literal_literal_name
=== RUN   TestFileAttr/create_readonly_executable_literal_literal_name#01
=== RUN   TestFileAttr/create_readonly_executable_literal_modify_name
=== RUN   TestFileAttr/create_readonly_executable_name.literal.literal
=== RUN   TestFileAttr/create_readonly_executable_name
=== RUN   TestFileAttr/create_readonly_executable_literal_remove_
=== RUN   TestFileAttr/create_readonly_executable_literal_run_name
=== RUN   TestFileAttr/create_readonly_executable_literal_symlink_name
=== RUN   TestFileAttr/create_readonly_executable_template.tmpl.literal
=== RUN   TestFileAttr/create_readonly_empty_executable_dot_name
=== RUN   TestFileAttr/create_readonly_empty_executable_literal_create_name
=== RUN   TestFileAttr/create_readonly_empty_executable_literal_dot_name
=== RUN   TestFileAttr/create_readonly_empty_executable_exact_name
=== RUN   TestFileAttr/create_readonly_empty_executable_literal_literal_name
=== RUN   TestFileAttr/create_readonly_empty_executable_literal_literal_name#01
=== RUN   TestFileAttr/create_readonly_empty_executable_literal_modify_name
=== RUN   TestFileAttr/create_readonly_empty_executable_name.literal.literal
=== RUN   TestFileAttr/create_readonly_empty_executable_name
=== RUN   TestFileAttr/create_readonly_empty_executable_literal_remove_
=== RUN   TestFileAttr/create_readonly_empty_executable_literal_run_name
=== RUN   TestFileAttr/create_readonly_empty_executable_literal_symlink_name
=== RUN   TestFileAttr/create_readonly_empty_executable_template.tmpl.literal
=== RUN   TestFileAttr/create_encrypted_readonly_executable_dot_name
=== RUN   TestFileAttr/create_encrypted_readonly_executable_literal_create_name
=== RUN   TestFileAttr/create_encrypted_readonly_executable_literal_dot_name
=== RUN   TestFileAttr/create_encrypted_readonly_executable_exact_name
=== RUN   TestFileAttr/create_encrypted_readonly_executable_literal_literal_name
=== RUN   TestFileAttr/create_encrypted_readonly_executable_literal_literal_name#01
=== RUN   TestFileAttr/create_encrypted_readonly_executable_literal_modify_name
=== RUN   TestFileAttr/create_encrypted_readonly_executable_name.literal.literal
=== RUN   TestFileAttr/create_encrypted_readonly_executable_name
=== RUN   TestFileAttr/create_encrypted_readonly_executable_literal_remove_
=== RUN   TestFileAttr/create_encrypted_readonly_executable_literal_run_name
=== RUN   TestFileAttr/create_encrypted_readonly_executable_literal_symlink_name
=== RUN   TestFileAttr/create_encrypted_readonly_executable_template.tmpl.literal
=== RUN   TestFileAttr/create_encrypted_readonly_empty_executable_dot_name
=== RUN   TestFileAttr/create_encrypted_readonly_empty_executable_literal_create_name
=== RUN   TestFileAttr/create_encrypted_readonly_empty_executable_literal_dot_name
=== RUN   TestFileAttr/create_encrypted_readonly_empty_executable_exact_name
=== RUN   TestFileAttr/create_encrypted_readonly_empty_executable_literal_literal_name
=== RUN   TestFileAttr/create_encrypted_readonly_empty_executable_literal_literal_name#01
=== RUN   TestFileAttr/create_encrypted_readonly_empty_executable_literal_modify_name
=== RUN   TestFileAttr/create_encrypted_readonly_empty_executable_name.literal.literal
=== RUN   TestFileAttr/create_encrypted_readonly_empty_executable_name
=== RUN   TestFileAttr/create_encrypted_readonly_empty_executable_literal_remove_
=== RUN   TestFileAttr/create_encrypted_readonly_empty_executable_literal_run_name
=== RUN   TestFileAttr/create_encrypted_readonly_empty_executable_literal_symlink_name
=== RUN   TestFileAttr/create_encrypted_readonly_empty_executable_template.tmpl.literal
=== RUN   TestFileAttr/create_private_readonly_dot_name
=== RUN   TestFileAttr/create_private_readonly_literal_create_name
=== RUN   TestFileAttr/create_private_readonly_literal_dot_name
=== RUN   TestFileAttr/create_private_readonly_exact_name
=== RUN   TestFileAttr/create_private_readonly_literal_literal_name
=== RUN   TestFileAttr/create_private_readonly_literal_literal_name#01
=== RUN   TestFileAttr/create_private_readonly_literal_modify_name
=== RUN   TestFileAttr/create_private_readonly_name.literal.literal
=== RUN   TestFileAttr/create_private_readonly_name
=== RUN   TestFileAttr/create_private_readonly_literal_remove_
=== RUN   TestFileAttr/create_private_readonly_literal_run_name
=== RUN   TestFileAttr/create_private_readonly_literal_symlink_name
=== RUN   TestFileAttr/create_private_readonly_template.tmpl.literal
=== RUN   TestFileAttr/create_private_readonly_empty_dot_name
=== RUN   TestFileAttr/create_private_readonly_empty_literal_create_name
=== RUN   TestFileAttr/create_private_readonly_empty_literal_dot_name
=== RUN   TestFileAttr/create_private_readonly_empty_exact_name
=== RUN   TestFileAttr/create_private_readonly_empty_literal_literal_name
=== RUN   TestFileAttr/create_private_readonly_empty_literal_literal_name#01
=== RUN   TestFileAttr/create_private_readonly_empty_literal_modify_name
=== RUN   TestFileAttr/create_private_readonly_empty_name.literal.literal
=== RUN   TestFileAttr/create_private_readonly_empty_name
=== RUN   TestFileAttr/create_private_readonly_empty_literal_remove_
=== RUN   TestFileAttr/create_private_readonly_empty_literal_run_name
=== RUN   TestFileAttr/create_private_readonly_empty_literal_symlink_name
=== RUN   TestFileAttr/create_private_readonly_empty_template.tmpl.literal
=== RUN   TestFileAttr/create_encrypted_private_readonly_dot_name
=== RUN   TestFileAttr/create_encrypted_private_readonly_literal_create_name
=== RUN   TestFileAttr/create_encrypted_private_readonly_literal_dot_name
=== RUN   TestFileAttr/create_encrypted_private_readonly_exact_name
=== RUN   TestFileAttr/create_encrypted_private_readonly_literal_literal_name
=== RUN   TestFileAttr/create_encrypted_private_readonly_literal_literal_name#01
=== RUN   TestFileAttr/create_encrypted_private_readonly_literal_modify_name
=== RUN   TestFileAttr/create_encrypted_private_readonly_name.literal.literal
=== RUN   TestFileAttr/create_encrypted_private_readonly_name
=== RUN   TestFileAttr/create_encrypted_private_readonly_literal_remove_
=== RUN   TestFileAttr/create_encrypted_private_readonly_literal_run_name
=== RUN   TestFileAttr/create_encrypted_private_readonly_literal_symlink_name
=== RUN   TestFileAttr/create_encrypted_private_readonly_template.tmpl.literal
=== RUN   TestFileAttr/create_encrypted_private_readonly_empty_dot_name
=== RUN   TestFileAttr/create_encrypted_private_readonly_empty_literal_create_name
=== RUN   TestFileAttr/create_encrypted_private_readonly_empty_literal_dot_name
=== RUN   TestFileAttr/create_encrypted_private_readonly_empty_exact_name
=== RUN   TestFileAttr/create_encrypted_private_readonly_empty_literal_literal_name
=== RUN   TestFileAttr/create_encrypted_private_readonly_empty_literal_literal_name#01
=== RUN   TestFileAttr/create_encrypted_private_readonly_empty_literal_modify_name
=== RUN   TestFileAttr/create_encrypted_private_readonly_empty_name.literal.literal
=== RUN   TestFileAttr/create_encrypted_private_readonly_empty_name
=== RUN   TestFileAttr/create_encrypted_private_readonly_empty_literal_remove_
=== RUN   TestFileAttr/create_encrypted_private_readonly_empty_literal_run_name
=== RUN   TestFileAttr/create_encrypted_private_readonly_empty_literal_symlink_name
=== RUN   TestFileAttr/create_encrypted_private_readonly_empty_template.tmpl.literal
=== RUN   TestFileAttr/create_private_readonly_executable_dot_name
=== RUN   TestFileAttr/create_private_readonly_executable_literal_create_name
=== RUN   TestFileAttr/create_private_readonly_executable_literal_dot_name
=== RUN   TestFileAttr/create_private_readonly_executable_exact_name
=== RUN   TestFileAttr/create_private_readonly_executable_literal_literal_name
=== RUN   TestFileAttr/create_private_readonly_executable_literal_literal_name#01
=== RUN   TestFileAttr/create_private_readonly_executable_literal_modify_name
=== RUN   TestFileAttr/create_private_readonly_executable_name.literal.literal
=== RUN   TestFileAttr/create_private_readonly_executable_name
=== RUN   TestFileAttr/create_private_readonly_executable_literal_remove_
=== RUN   TestFileAttr/create_private_readonly_executable_literal_run_name
=== RUN   TestFileAttr/create_private_readonly_executable_literal_symlink_name
=== RUN   TestFileAttr/create_private_readonly_executable_template.tmpl.literal
=== RUN   TestFileAttr/create_private_readonly_empty_executable_dot_name
=== RUN   TestFileAttr/create_private_readonly_empty_executable_literal_create_name
=== RUN   TestFileAttr/create_private_readonly_empty_executable_literal_dot_name
=== RUN   TestFileAttr/create_private_readonly_empty_executable_exact_name
=== RUN   TestFileAttr/create_private_readonly_empty_executable_literal_literal_name
=== RUN   TestFileAttr/create_private_readonly_empty_executable_literal_literal_name#01
=== RUN   TestFileAttr/create_private_readonly_empty_executable_literal_modify_name
=== RUN   TestFileAttr/create_private_readonly_empty_executable_name.literal.literal
=== RUN   TestFileAttr/create_private_readonly_empty_executable_name
=== RUN   TestFileAttr/create_private_readonly_empty_executable_literal_remove_
=== RUN   TestFileAttr/create_private_readonly_empty_executable_literal_run_name
=== RUN   TestFileAttr/create_private_readonly_empty_executable_literal_symlink_name
=== RUN   TestFileAttr/create_private_readonly_empty_executable_template.tmpl.literal
=== RUN   TestFileAttr/create_encrypted_private_readonly_executable_dot_name
=== RUN   TestFileAttr/create_encrypted_private_readonly_executable_literal_create_name
=== RUN   TestFileAttr/create_encrypted_private_readonly_executable_literal_dot_name
=== RUN   TestFileAttr/create_encrypted_private_readonly_executable_exact_name
=== RUN   TestFileAttr/create_encrypted_private_readonly_executable_literal_literal_name
=== RUN   TestFileAttr/create_encrypted_private_readonly_executable_literal_literal_name#01
=== RUN   TestFileAttr/create_encrypted_private_readonly_executable_literal_modify_name
=== RUN   TestFileAttr/create_encrypted_private_readonly_executable_name.literal.literal
=== RUN   TestFileAttr/create_encrypted_private_readonly_executable_name
=== RUN   TestFileAttr/create_encrypted_private_readonly_executable_literal_remove_
=== RUN   TestFileAttr/create_encrypted_private_readonly_executable_literal_run_name
=== RUN   TestFileAttr/create_encrypted_private_readonly_executable_literal_symlink_name
=== RUN   TestFileAttr/create_encrypted_private_readonly_executable_template.tmpl.literal
=== RUN   TestFileAttr/create_encrypted_private_readonly_empty_executable_dot_name
=== RUN   TestFileAttr/create_encrypted_private_readonly_empty_executable_literal_create_name
=== RUN   TestFileAttr/create_encrypted_private_readonly_empty_executable_literal_dot_name
=== RUN   TestFileAttr/create_encrypted_private_readonly_empty_executable_exact_name
=== RUN   TestFileAttr/create_encrypted_private_readonly_empty_executable_literal_literal_name
=== RUN   TestFileAttr/create_encrypted_private_readonly_empty_executable_literal_literal_name#01
=== RUN   TestFileAttr/create_encrypted_private_readonly_empty_executable_literal_modify_name
=== RUN   TestFileAttr/create_encrypted_private_readonly_empty_executable_name.literal.literal
=== RUN   TestFileAttr/create_encrypted_private_readonly_empty_executable_name
=== RUN   TestFileAttr/create_encrypted_private_readonly_empty_executable_literal_remove_
=== RUN   TestFileAttr/create_encrypted_private_readonly_empty_executable_literal_run_name
=== RUN   TestFileAttr/create_encrypted_private_readonly_empty_executable_literal_symlink_name
=== RUN   TestFileAttr/create_encrypted_private_readonly_empty_executable_template.tmpl.literal
=== RUN   TestFileAttr/create_dot_name.tmpl
=== RUN   TestFileAttr/create_literal_create_name.tmpl
=== RUN   TestFileAttr/create_literal_dot_name.tmpl
=== RUN   TestFileAttr/create_exact_name.tmpl
=== RUN   TestFileAttr/create_literal_literal_name.tmpl
=== RUN   TestFileAttr/create_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/create_literal_modify_name.tmpl
=== RUN   TestFileAttr/create_name.literal.literal.tmpl
=== RUN   TestFileAttr/create_name.tmpl
=== RUN   TestFileAttr/create_literal_remove_.tmpl
=== RUN   TestFileAttr/create_literal_run_name.tmpl
=== RUN   TestFileAttr/create_literal_symlink_name.tmpl
=== RUN   TestFileAttr/create_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/create_empty_dot_name.tmpl
=== RUN   TestFileAttr/create_empty_literal_create_name.tmpl
=== RUN   TestFileAttr/create_empty_literal_dot_name.tmpl
=== RUN   TestFileAttr/create_empty_exact_name.tmpl
=== RUN   TestFileAttr/create_empty_literal_literal_name.tmpl
=== RUN   TestFileAttr/create_empty_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/create_empty_literal_modify_name.tmpl
=== RUN   TestFileAttr/create_empty_name.literal.literal.tmpl
=== RUN   TestFileAttr/create_empty_name.tmpl
=== RUN   TestFileAttr/create_empty_literal_remove_.tmpl
=== RUN   TestFileAttr/create_empty_literal_run_name.tmpl
=== RUN   TestFileAttr/create_empty_literal_symlink_name.tmpl
=== RUN   TestFileAttr/create_empty_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/create_encrypted_dot_name.tmpl
=== RUN   TestFileAttr/create_encrypted_literal_create_name.tmpl
=== RUN   TestFileAttr/create_encrypted_literal_dot_name.tmpl
=== RUN   TestFileAttr/create_encrypted_exact_name.tmpl
=== RUN   TestFileAttr/create_encrypted_literal_literal_name.tmpl
=== RUN   TestFileAttr/create_encrypted_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/create_encrypted_literal_modify_name.tmpl
=== RUN   TestFileAttr/create_encrypted_name.literal.literal.tmpl
=== RUN   TestFileAttr/create_encrypted_name.tmpl
=== RUN   TestFileAttr/create_encrypted_literal_remove_.tmpl
=== RUN   TestFileAttr/create_encrypted_literal_run_name.tmpl
=== RUN   TestFileAttr/create_encrypted_literal_symlink_name.tmpl
=== RUN   TestFileAttr/create_encrypted_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/create_encrypted_empty_dot_name.tmpl
=== RUN   TestFileAttr/create_encrypted_empty_literal_create_name.tmpl
=== RUN   TestFileAttr/create_encrypted_empty_literal_dot_name.tmpl
=== RUN   TestFileAttr/create_encrypted_empty_exact_name.tmpl
=== RUN   TestFileAttr/create_encrypted_empty_literal_literal_name.tmpl
=== RUN   TestFileAttr/create_encrypted_empty_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/create_encrypted_empty_literal_modify_name.tmpl
=== RUN   TestFileAttr/create_encrypted_empty_name.literal.literal.tmpl
=== RUN   TestFileAttr/create_encrypted_empty_name.tmpl
=== RUN   TestFileAttr/create_encrypted_empty_literal_remove_.tmpl
=== RUN   TestFileAttr/create_encrypted_empty_literal_run_name.tmpl
=== RUN   TestFileAttr/create_encrypted_empty_literal_symlink_name.tmpl
=== RUN   TestFileAttr/create_encrypted_empty_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/create_executable_dot_name.tmpl
=== RUN   TestFileAttr/create_executable_literal_create_name.tmpl
=== RUN   TestFileAttr/create_executable_literal_dot_name.tmpl
=== RUN   TestFileAttr/create_executable_exact_name.tmpl
=== RUN   TestFileAttr/create_executable_literal_literal_name.tmpl
=== RUN   TestFileAttr/create_executable_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/create_executable_literal_modify_name.tmpl
=== RUN   TestFileAttr/create_executable_name.literal.literal.tmpl
=== RUN   TestFileAttr/create_executable_name.tmpl
=== RUN   TestFileAttr/create_executable_literal_remove_.tmpl
=== RUN   TestFileAttr/create_executable_literal_run_name.tmpl
=== RUN   TestFileAttr/create_executable_literal_symlink_name.tmpl
=== RUN   TestFileAttr/create_executable_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/create_empty_executable_dot_name.tmpl
=== RUN   TestFileAttr/create_empty_executable_literal_create_name.tmpl
=== RUN   TestFileAttr/create_empty_executable_literal_dot_name.tmpl
=== RUN   TestFileAttr/create_empty_executable_exact_name.tmpl
=== RUN   TestFileAttr/create_empty_executable_literal_literal_name.tmpl
=== RUN   TestFileAttr/create_empty_executable_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/create_empty_executable_literal_modify_name.tmpl
=== RUN   TestFileAttr/create_empty_executable_name.literal.literal.tmpl
=== RUN   TestFileAttr/create_empty_executable_name.tmpl
=== RUN   TestFileAttr/create_empty_executable_literal_remove_.tmpl
=== RUN   TestFileAttr/create_empty_executable_literal_run_name.tmpl
=== RUN   TestFileAttr/create_empty_executable_literal_symlink_name.tmpl
=== RUN   TestFileAttr/create_empty_executable_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/create_encrypted_executable_dot_name.tmpl
=== RUN   TestFileAttr/create_encrypted_executable_literal_create_name.tmpl
=== RUN   TestFileAttr/create_encrypted_executable_literal_dot_name.tmpl
=== RUN   TestFileAttr/create_encrypted_executable_exact_name.tmpl
=== RUN   TestFileAttr/create_encrypted_executable_literal_literal_name.tmpl
=== RUN   TestFileAttr/create_encrypted_executable_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/create_encrypted_executable_literal_modify_name.tmpl
=== RUN   TestFileAttr/create_encrypted_executable_name.literal.literal.tmpl
=== RUN   TestFileAttr/create_encrypted_executable_name.tmpl
=== RUN   TestFileAttr/create_encrypted_executable_literal_remove_.tmpl
=== RUN   TestFileAttr/create_encrypted_executable_literal_run_name.tmpl
=== RUN   TestFileAttr/create_encrypted_executable_literal_symlink_name.tmpl
=== RUN   TestFileAttr/create_encrypted_executable_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/create_encrypted_empty_executable_dot_name.tmpl
=== RUN   TestFileAttr/create_encrypted_empty_executable_literal_create_name.tmpl
=== RUN   TestFileAttr/create_encrypted_empty_executable_literal_dot_name.tmpl
=== RUN   TestFileAttr/create_encrypted_empty_executable_exact_name.tmpl
=== RUN   TestFileAttr/create_encrypted_empty_executable_literal_literal_name.tmpl
=== RUN   TestFileAttr/create_encrypted_empty_executable_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/create_encrypted_empty_executable_literal_modify_name.tmpl
=== RUN   TestFileAttr/create_encrypted_empty_executable_name.literal.literal.tmpl
=== RUN   TestFileAttr/create_encrypted_empty_executable_name.tmpl
=== RUN   TestFileAttr/create_encrypted_empty_executable_literal_remove_.tmpl
=== RUN   TestFileAttr/create_encrypted_empty_executable_literal_run_name.tmpl
=== RUN   TestFileAttr/create_encrypted_empty_executable_literal_symlink_name.tmpl
=== RUN   TestFileAttr/create_encrypted_empty_executable_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/create_private_dot_name.tmpl
=== RUN   TestFileAttr/create_private_literal_create_name.tmpl
=== RUN   TestFileAttr/create_private_literal_dot_name.tmpl
=== RUN   TestFileAttr/create_private_exact_name.tmpl
=== RUN   TestFileAttr/create_private_literal_literal_name.tmpl
=== RUN   TestFileAttr/create_private_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/create_private_literal_modify_name.tmpl
=== RUN   TestFileAttr/create_private_name.literal.literal.tmpl
=== RUN   TestFileAttr/create_private_name.tmpl
=== RUN   TestFileAttr/create_private_literal_remove_.tmpl
=== RUN   TestFileAttr/create_private_literal_run_name.tmpl
=== RUN   TestFileAttr/create_private_literal_symlink_name.tmpl
=== RUN   TestFileAttr/create_private_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/create_private_empty_dot_name.tmpl
=== RUN   TestFileAttr/create_private_empty_literal_create_name.tmpl
=== RUN   TestFileAttr/create_private_empty_literal_dot_name.tmpl
=== RUN   TestFileAttr/create_private_empty_exact_name.tmpl
=== RUN   TestFileAttr/create_private_empty_literal_literal_name.tmpl
=== RUN   TestFileAttr/create_private_empty_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/create_private_empty_literal_modify_name.tmpl
=== RUN   TestFileAttr/create_private_empty_name.literal.literal.tmpl
=== RUN   TestFileAttr/create_private_empty_name.tmpl
=== RUN   TestFileAttr/create_private_empty_literal_remove_.tmpl
=== RUN   TestFileAttr/create_private_empty_literal_run_name.tmpl
=== RUN   TestFileAttr/create_private_empty_literal_symlink_name.tmpl
=== RUN   TestFileAttr/create_private_empty_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/create_encrypted_private_dot_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_literal_create_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_literal_dot_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_exact_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_literal_literal_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/create_encrypted_private_literal_modify_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_name.literal.literal.tmpl
=== RUN   TestFileAttr/create_encrypted_private_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_literal_remove_.tmpl
=== RUN   TestFileAttr/create_encrypted_private_literal_run_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_literal_symlink_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/create_encrypted_private_empty_dot_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_empty_literal_create_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_empty_literal_dot_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_empty_exact_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_empty_literal_literal_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_empty_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/create_encrypted_private_empty_literal_modify_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_empty_name.literal.literal.tmpl
=== RUN   TestFileAttr/create_encrypted_private_empty_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_empty_literal_remove_.tmpl
=== RUN   TestFileAttr/create_encrypted_private_empty_literal_run_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_empty_literal_symlink_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_empty_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/create_private_executable_dot_name.tmpl
=== RUN   TestFileAttr/create_private_executable_literal_create_name.tmpl
=== RUN   TestFileAttr/create_private_executable_literal_dot_name.tmpl
=== RUN   TestFileAttr/create_private_executable_exact_name.tmpl
=== RUN   TestFileAttr/create_private_executable_literal_literal_name.tmpl
=== RUN   TestFileAttr/create_private_executable_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/create_private_executable_literal_modify_name.tmpl
=== RUN   TestFileAttr/create_private_executable_name.literal.literal.tmpl
=== RUN   TestFileAttr/create_private_executable_name.tmpl
=== RUN   TestFileAttr/create_private_executable_literal_remove_.tmpl
=== RUN   TestFileAttr/create_private_executable_literal_run_name.tmpl
=== RUN   TestFileAttr/create_private_executable_literal_symlink_name.tmpl
=== RUN   TestFileAttr/create_private_executable_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/create_private_empty_executable_dot_name.tmpl
=== RUN   TestFileAttr/create_private_empty_executable_literal_create_name.tmpl
=== RUN   TestFileAttr/create_private_empty_executable_literal_dot_name.tmpl
=== RUN   TestFileAttr/create_private_empty_executable_exact_name.tmpl
=== RUN   TestFileAttr/create_private_empty_executable_literal_literal_name.tmpl
=== RUN   TestFileAttr/create_private_empty_executable_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/create_private_empty_executable_literal_modify_name.tmpl
=== RUN   TestFileAttr/create_private_empty_executable_name.literal.literal.tmpl
=== RUN   TestFileAttr/create_private_empty_executable_name.tmpl
=== RUN   TestFileAttr/create_private_empty_executable_literal_remove_.tmpl
=== RUN   TestFileAttr/create_private_empty_executable_literal_run_name.tmpl
=== RUN   TestFileAttr/create_private_empty_executable_literal_symlink_name.tmpl
=== RUN   TestFileAttr/create_private_empty_executable_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/create_encrypted_private_executable_dot_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_executable_literal_create_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_executable_literal_dot_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_executable_exact_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_executable_literal_literal_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_executable_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/create_encrypted_private_executable_literal_modify_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_executable_name.literal.literal.tmpl
=== RUN   TestFileAttr/create_encrypted_private_executable_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_executable_literal_remove_.tmpl
=== RUN   TestFileAttr/create_encrypted_private_executable_literal_run_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_executable_literal_symlink_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_executable_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/create_encrypted_private_empty_executable_dot_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_empty_executable_literal_create_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_empty_executable_literal_dot_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_empty_executable_exact_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_empty_executable_literal_literal_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_empty_executable_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/create_encrypted_private_empty_executable_literal_modify_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_empty_executable_name.literal.literal.tmpl
=== RUN   TestFileAttr/create_encrypted_private_empty_executable_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_empty_executable_literal_remove_.tmpl
=== RUN   TestFileAttr/create_encrypted_private_empty_executable_literal_run_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_empty_executable_literal_symlink_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_empty_executable_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/create_readonly_dot_name.tmpl
=== RUN   TestFileAttr/create_readonly_literal_create_name.tmpl
=== RUN   TestFileAttr/create_readonly_literal_dot_name.tmpl
=== RUN   TestFileAttr/create_readonly_exact_name.tmpl
=== RUN   TestFileAttr/create_readonly_literal_literal_name.tmpl
=== RUN   TestFileAttr/create_readonly_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/create_readonly_literal_modify_name.tmpl
=== RUN   TestFileAttr/create_readonly_name.literal.literal.tmpl
=== RUN   TestFileAttr/create_readonly_name.tmpl
=== RUN   TestFileAttr/create_readonly_literal_remove_.tmpl
=== RUN   TestFileAttr/create_readonly_literal_run_name.tmpl
=== RUN   TestFileAttr/create_readonly_literal_symlink_name.tmpl
=== RUN   TestFileAttr/create_readonly_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/create_readonly_empty_dot_name.tmpl
=== RUN   TestFileAttr/create_readonly_empty_literal_create_name.tmpl
=== RUN   TestFileAttr/create_readonly_empty_literal_dot_name.tmpl
=== RUN   TestFileAttr/create_readonly_empty_exact_name.tmpl
=== RUN   TestFileAttr/create_readonly_empty_literal_literal_name.tmpl
=== RUN   TestFileAttr/create_readonly_empty_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/create_readonly_empty_literal_modify_name.tmpl
=== RUN   TestFileAttr/create_readonly_empty_name.literal.literal.tmpl
=== RUN   TestFileAttr/create_readonly_empty_name.tmpl
=== RUN   TestFileAttr/create_readonly_empty_literal_remove_.tmpl
=== RUN   TestFileAttr/create_readonly_empty_literal_run_name.tmpl
=== RUN   TestFileAttr/create_readonly_empty_literal_symlink_name.tmpl
=== RUN   TestFileAttr/create_readonly_empty_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/create_encrypted_readonly_dot_name.tmpl
=== RUN   TestFileAttr/create_encrypted_readonly_literal_create_name.tmpl
=== RUN   TestFileAttr/create_encrypted_readonly_literal_dot_name.tmpl
=== RUN   TestFileAttr/create_encrypted_readonly_exact_name.tmpl
=== RUN   TestFileAttr/create_encrypted_readonly_literal_literal_name.tmpl
=== RUN   TestFileAttr/create_encrypted_readonly_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/create_encrypted_readonly_literal_modify_name.tmpl
=== RUN   TestFileAttr/create_encrypted_readonly_name.literal.literal.tmpl
=== RUN   TestFileAttr/create_encrypted_readonly_name.tmpl
=== RUN   TestFileAttr/create_encrypted_readonly_literal_remove_.tmpl
=== RUN   TestFileAttr/create_encrypted_readonly_literal_run_name.tmpl
=== RUN   TestFileAttr/create_encrypted_readonly_literal_symlink_name.tmpl
=== RUN   TestFileAttr/create_encrypted_readonly_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/create_encrypted_readonly_empty_dot_name.tmpl
=== RUN   TestFileAttr/create_encrypted_readonly_empty_literal_create_name.tmpl
=== RUN   TestFileAttr/create_encrypted_readonly_empty_literal_dot_name.tmpl
=== RUN   TestFileAttr/create_encrypted_readonly_empty_exact_name.tmpl
=== RUN   TestFileAttr/create_encrypted_readonly_empty_literal_literal_name.tmpl
=== RUN   TestFileAttr/create_encrypted_readonly_empty_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/create_encrypted_readonly_empty_literal_modify_name.tmpl
=== RUN   TestFileAttr/create_encrypted_readonly_empty_name.literal.literal.tmpl
=== RUN   TestFileAttr/create_encrypted_readonly_empty_name.tmpl
=== RUN   TestFileAttr/create_encrypted_readonly_empty_literal_remove_.tmpl
=== RUN   TestFileAttr/create_encrypted_readonly_empty_literal_run_name.tmpl
=== RUN   TestFileAttr/create_encrypted_readonly_empty_literal_symlink_name.tmpl
=== RUN   TestFileAttr/create_encrypted_readonly_empty_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/create_readonly_executable_dot_name.tmpl
=== RUN   TestFileAttr/create_readonly_executable_literal_create_name.tmpl
=== RUN   TestFileAttr/create_readonly_executable_literal_dot_name.tmpl
=== RUN   TestFileAttr/create_readonly_executable_exact_name.tmpl
=== RUN   TestFileAttr/create_readonly_executable_literal_literal_name.tmpl
=== RUN   TestFileAttr/create_readonly_executable_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/create_readonly_executable_literal_modify_name.tmpl
=== RUN   TestFileAttr/create_readonly_executable_name.literal.literal.tmpl
=== RUN   TestFileAttr/create_readonly_executable_name.tmpl
=== RUN   TestFileAttr/create_readonly_executable_literal_remove_.tmpl
=== RUN   TestFileAttr/create_readonly_executable_literal_run_name.tmpl
=== RUN   TestFileAttr/create_readonly_executable_literal_symlink_name.tmpl
=== RUN   TestFileAttr/create_readonly_executable_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/create_readonly_empty_executable_dot_name.tmpl
=== RUN   TestFileAttr/create_readonly_empty_executable_literal_create_name.tmpl
=== RUN   TestFileAttr/create_readonly_empty_executable_literal_dot_name.tmpl
=== RUN   TestFileAttr/create_readonly_empty_executable_exact_name.tmpl
=== RUN   TestFileAttr/create_readonly_empty_executable_literal_literal_name.tmpl
=== RUN   TestFileAttr/create_readonly_empty_executable_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/create_readonly_empty_executable_literal_modify_name.tmpl
=== RUN   TestFileAttr/create_readonly_empty_executable_name.literal.literal.tmpl
=== RUN   TestFileAttr/create_readonly_empty_executable_name.tmpl
=== RUN   TestFileAttr/create_readonly_empty_executable_literal_remove_.tmpl
=== RUN   TestFileAttr/create_readonly_empty_executable_literal_run_name.tmpl
=== RUN   TestFileAttr/create_readonly_empty_executable_literal_symlink_name.tmpl
=== RUN   TestFileAttr/create_readonly_empty_executable_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/create_encrypted_readonly_executable_dot_name.tmpl
=== RUN   TestFileAttr/create_encrypted_readonly_executable_literal_create_name.tmpl
=== RUN   TestFileAttr/create_encrypted_readonly_executable_literal_dot_name.tmpl
=== RUN   TestFileAttr/create_encrypted_readonly_executable_exact_name.tmpl
=== RUN   TestFileAttr/create_encrypted_readonly_executable_literal_literal_name.tmpl
=== RUN   TestFileAttr/create_encrypted_readonly_executable_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/create_encrypted_readonly_executable_literal_modify_name.tmpl
=== RUN   TestFileAttr/create_encrypted_readonly_executable_name.literal.literal.tmpl
=== RUN   TestFileAttr/create_encrypted_readonly_executable_name.tmpl
=== RUN   TestFileAttr/create_encrypted_readonly_executable_literal_remove_.tmpl
=== RUN   TestFileAttr/create_encrypted_readonly_executable_literal_run_name.tmpl
=== RUN   TestFileAttr/create_encrypted_readonly_executable_literal_symlink_name.tmpl
=== RUN   TestFileAttr/create_encrypted_readonly_executable_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/create_encrypted_readonly_empty_executable_dot_name.tmpl
=== RUN   TestFileAttr/create_encrypted_readonly_empty_executable_literal_create_name.tmpl
=== RUN   TestFileAttr/create_encrypted_readonly_empty_executable_literal_dot_name.tmpl
=== RUN   TestFileAttr/create_encrypted_readonly_empty_executable_exact_name.tmpl
=== RUN   TestFileAttr/create_encrypted_readonly_empty_executable_literal_literal_name.tmpl
=== RUN   TestFileAttr/create_encrypted_readonly_empty_executable_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/create_encrypted_readonly_empty_executable_literal_modify_name.tmpl
=== RUN   TestFileAttr/create_encrypted_readonly_empty_executable_name.literal.literal.tmpl
=== RUN   TestFileAttr/create_encrypted_readonly_empty_executable_name.tmpl
=== RUN   TestFileAttr/create_encrypted_readonly_empty_executable_literal_remove_.tmpl
=== RUN   TestFileAttr/create_encrypted_readonly_empty_executable_literal_run_name.tmpl
=== RUN   TestFileAttr/create_encrypted_readonly_empty_executable_literal_symlink_name.tmpl
=== RUN   TestFileAttr/create_encrypted_readonly_empty_executable_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/create_private_readonly_dot_name.tmpl
=== RUN   TestFileAttr/create_private_readonly_literal_create_name.tmpl
=== RUN   TestFileAttr/create_private_readonly_literal_dot_name.tmpl
=== RUN   TestFileAttr/create_private_readonly_exact_name.tmpl
=== RUN   TestFileAttr/create_private_readonly_literal_literal_name.tmpl
=== RUN   TestFileAttr/create_private_readonly_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/create_private_readonly_literal_modify_name.tmpl
=== RUN   TestFileAttr/create_private_readonly_name.literal.literal.tmpl
=== RUN   TestFileAttr/create_private_readonly_name.tmpl
=== RUN   TestFileAttr/create_private_readonly_literal_remove_.tmpl
=== RUN   TestFileAttr/create_private_readonly_literal_run_name.tmpl
=== RUN   TestFileAttr/create_private_readonly_literal_symlink_name.tmpl
=== RUN   TestFileAttr/create_private_readonly_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/create_private_readonly_empty_dot_name.tmpl
=== RUN   TestFileAttr/create_private_readonly_empty_literal_create_name.tmpl
=== RUN   TestFileAttr/create_private_readonly_empty_literal_dot_name.tmpl
=== RUN   TestFileAttr/create_private_readonly_empty_exact_name.tmpl
=== RUN   TestFileAttr/create_private_readonly_empty_literal_literal_name.tmpl
=== RUN   TestFileAttr/create_private_readonly_empty_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/create_private_readonly_empty_literal_modify_name.tmpl
=== RUN   TestFileAttr/create_private_readonly_empty_name.literal.literal.tmpl
=== RUN   TestFileAttr/create_private_readonly_empty_name.tmpl
=== RUN   TestFileAttr/create_private_readonly_empty_literal_remove_.tmpl
=== RUN   TestFileAttr/create_private_readonly_empty_literal_run_name.tmpl
=== RUN   TestFileAttr/create_private_readonly_empty_literal_symlink_name.tmpl
=== RUN   TestFileAttr/create_private_readonly_empty_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/create_encrypted_private_readonly_dot_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_readonly_literal_create_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_readonly_literal_dot_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_readonly_exact_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_readonly_literal_literal_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_readonly_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/create_encrypted_private_readonly_literal_modify_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_readonly_name.literal.literal.tmpl
=== RUN   TestFileAttr/create_encrypted_private_readonly_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_readonly_literal_remove_.tmpl
=== RUN   TestFileAttr/create_encrypted_private_readonly_literal_run_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_readonly_literal_symlink_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_readonly_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/create_encrypted_private_readonly_empty_dot_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_readonly_empty_literal_create_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_readonly_empty_literal_dot_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_readonly_empty_exact_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_readonly_empty_literal_literal_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_readonly_empty_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/create_encrypted_private_readonly_empty_literal_modify_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_readonly_empty_name.literal.literal.tmpl
=== RUN   TestFileAttr/create_encrypted_private_readonly_empty_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_readonly_empty_literal_remove_.tmpl
=== RUN   TestFileAttr/create_encrypted_private_readonly_empty_literal_run_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_readonly_empty_literal_symlink_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_readonly_empty_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/create_private_readonly_executable_dot_name.tmpl
=== RUN   TestFileAttr/create_private_readonly_executable_literal_create_name.tmpl
=== RUN   TestFileAttr/create_private_readonly_executable_literal_dot_name.tmpl
=== RUN   TestFileAttr/create_private_readonly_executable_exact_name.tmpl
=== RUN   TestFileAttr/create_private_readonly_executable_literal_literal_name.tmpl
=== RUN   TestFileAttr/create_private_readonly_executable_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/create_private_readonly_executable_literal_modify_name.tmpl
=== RUN   TestFileAttr/create_private_readonly_executable_name.literal.literal.tmpl
=== RUN   TestFileAttr/create_private_readonly_executable_name.tmpl
=== RUN   TestFileAttr/create_private_readonly_executable_literal_remove_.tmpl
=== RUN   TestFileAttr/create_private_readonly_executable_literal_run_name.tmpl
=== RUN   TestFileAttr/create_private_readonly_executable_literal_symlink_name.tmpl
=== RUN   TestFileAttr/create_private_readonly_executable_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/create_private_readonly_empty_executable_dot_name.tmpl
=== RUN   TestFileAttr/create_private_readonly_empty_executable_literal_create_name.tmpl
=== RUN   TestFileAttr/create_private_readonly_empty_executable_literal_dot_name.tmpl
=== RUN   TestFileAttr/create_private_readonly_empty_executable_exact_name.tmpl
=== RUN   TestFileAttr/create_private_readonly_empty_executable_literal_literal_name.tmpl
=== RUN   TestFileAttr/create_private_readonly_empty_executable_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/create_private_readonly_empty_executable_literal_modify_name.tmpl
=== RUN   TestFileAttr/create_private_readonly_empty_executable_name.literal.literal.tmpl
=== RUN   TestFileAttr/create_private_readonly_empty_executable_name.tmpl
=== RUN   TestFileAttr/create_private_readonly_empty_executable_literal_remove_.tmpl
=== RUN   TestFileAttr/create_private_readonly_empty_executable_literal_run_name.tmpl
=== RUN   TestFileAttr/create_private_readonly_empty_executable_literal_symlink_name.tmpl
=== RUN   TestFileAttr/create_private_readonly_empty_executable_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/create_encrypted_private_readonly_executable_dot_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_readonly_executable_literal_create_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_readonly_executable_literal_dot_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_readonly_executable_exact_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_readonly_executable_literal_literal_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_readonly_executable_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/create_encrypted_private_readonly_executable_literal_modify_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_readonly_executable_name.literal.literal.tmpl
=== RUN   TestFileAttr/create_encrypted_private_readonly_executable_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_readonly_executable_literal_remove_.tmpl
=== RUN   TestFileAttr/create_encrypted_private_readonly_executable_literal_run_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_readonly_executable_literal_symlink_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_readonly_executable_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/create_encrypted_private_readonly_empty_executable_dot_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_readonly_empty_executable_literal_create_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_readonly_empty_executable_literal_dot_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_readonly_empty_executable_exact_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_readonly_empty_executable_literal_literal_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_readonly_empty_executable_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/create_encrypted_private_readonly_empty_executable_literal_modify_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_readonly_empty_executable_name.literal.literal.tmpl
=== RUN   TestFileAttr/create_encrypted_private_readonly_empty_executable_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_readonly_empty_executable_literal_remove_.tmpl
=== RUN   TestFileAttr/create_encrypted_private_readonly_empty_executable_literal_run_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_readonly_empty_executable_literal_symlink_name.tmpl
=== RUN   TestFileAttr/create_encrypted_private_readonly_empty_executable_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/dot_name
=== RUN   TestFileAttr/literal_create_name
=== RUN   TestFileAttr/literal_dot_name
=== RUN   TestFileAttr/exact_name
=== RUN   TestFileAttr/literal_literal_name
=== RUN   TestFileAttr/literal_literal_name#01
=== RUN   TestFileAttr/literal_modify_name
=== RUN   TestFileAttr/name.literal.literal
=== RUN   TestFileAttr/name
=== RUN   TestFileAttr/literal_remove_
=== RUN   TestFileAttr/literal_run_name
=== RUN   TestFileAttr/literal_symlink_name
=== RUN   TestFileAttr/template.tmpl.literal
=== RUN   TestFileAttr/empty_dot_name
=== RUN   TestFileAttr/empty_literal_create_name
=== RUN   TestFileAttr/empty_literal_dot_name
=== RUN   TestFileAttr/empty_exact_name
=== RUN   TestFileAttr/empty_literal_literal_name
=== RUN   TestFileAttr/empty_literal_literal_name#01
=== RUN   TestFileAttr/empty_literal_modify_name
=== RUN   TestFileAttr/empty_name.literal.literal
=== RUN   TestFileAttr/empty_name
=== RUN   TestFileAttr/empty_literal_remove_
=== RUN   TestFileAttr/empty_literal_run_name
=== RUN   TestFileAttr/empty_literal_symlink_name
=== RUN   TestFileAttr/empty_template.tmpl.literal
=== RUN   TestFileAttr/encrypted_dot_name
=== RUN   TestFileAttr/encrypted_literal_create_name
=== RUN   TestFileAttr/encrypted_literal_dot_name
=== RUN   TestFileAttr/encrypted_exact_name
=== RUN   TestFileAttr/encrypted_literal_literal_name
=== RUN   TestFileAttr/encrypted_literal_literal_name#01
=== RUN   TestFileAttr/encrypted_literal_modify_name
=== RUN   TestFileAttr/encrypted_name.literal.literal
=== RUN   TestFileAttr/encrypted_name
=== RUN   TestFileAttr/encrypted_literal_remove_
=== RUN   TestFileAttr/encrypted_literal_run_name
=== RUN   TestFileAttr/encrypted_literal_symlink_name
=== RUN   TestFileAttr/encrypted_template.tmpl.literal
=== RUN   TestFileAttr/encrypted_empty_dot_name
=== RUN   TestFileAttr/encrypted_empty_literal_create_name
=== RUN   TestFileAttr/encrypted_empty_literal_dot_name
=== RUN   TestFileAttr/encrypted_empty_exact_name
=== RUN   TestFileAttr/encrypted_empty_literal_literal_name
=== RUN   TestFileAttr/encrypted_empty_literal_literal_name#01
=== RUN   TestFileAttr/encrypted_empty_literal_modify_name
=== RUN   TestFileAttr/encrypted_empty_name.literal.literal
=== RUN   TestFileAttr/encrypted_empty_name
=== RUN   TestFileAttr/encrypted_empty_literal_remove_
=== RUN   TestFileAttr/encrypted_empty_literal_run_name
=== RUN   TestFileAttr/encrypted_empty_literal_symlink_name
=== RUN   TestFileAttr/encrypted_empty_template.tmpl.literal
=== RUN   TestFileAttr/executable_dot_name
=== RUN   TestFileAttr/executable_literal_create_name
=== RUN   TestFileAttr/executable_literal_dot_name
=== RUN   TestFileAttr/executable_exact_name
=== RUN   TestFileAttr/executable_literal_literal_name
=== RUN   TestFileAttr/executable_literal_literal_name#01
=== RUN   TestFileAttr/executable_literal_modify_name
=== RUN   TestFileAttr/executable_name.literal.literal
=== RUN   TestFileAttr/executable_name
=== RUN   TestFileAttr/executable_literal_remove_
=== RUN   TestFileAttr/executable_literal_run_name
=== RUN   TestFileAttr/executable_literal_symlink_name
=== RUN   TestFileAttr/executable_template.tmpl.literal
=== RUN   TestFileAttr/empty_executable_dot_name
=== RUN   TestFileAttr/empty_executable_literal_create_name
=== RUN   TestFileAttr/empty_executable_literal_dot_name
=== RUN   TestFileAttr/empty_executable_exact_name
=== RUN   TestFileAttr/empty_executable_literal_literal_name
=== RUN   TestFileAttr/empty_executable_literal_literal_name#01
=== RUN   TestFileAttr/empty_executable_literal_modify_name
=== RUN   TestFileAttr/empty_executable_name.literal.literal
=== RUN   TestFileAttr/empty_executable_name
=== RUN   TestFileAttr/empty_executable_literal_remove_
=== RUN   TestFileAttr/empty_executable_literal_run_name
=== RUN   TestFileAttr/empty_executable_literal_symlink_name
=== RUN   TestFileAttr/empty_executable_template.tmpl.literal
=== RUN   TestFileAttr/encrypted_executable_dot_name
=== RUN   TestFileAttr/encrypted_executable_literal_create_name
=== RUN   TestFileAttr/encrypted_executable_literal_dot_name
=== RUN   TestFileAttr/encrypted_executable_exact_name
=== RUN   TestFileAttr/encrypted_executable_literal_literal_name
=== RUN   TestFileAttr/encrypted_executable_literal_literal_name#01
=== RUN   TestFileAttr/encrypted_executable_literal_modify_name
=== RUN   TestFileAttr/encrypted_executable_name.literal.literal
=== RUN   TestFileAttr/encrypted_executable_name
=== RUN   TestFileAttr/encrypted_executable_literal_remove_
=== RUN   TestFileAttr/encrypted_executable_literal_run_name
=== RUN   TestFileAttr/encrypted_executable_literal_symlink_name
=== RUN   TestFileAttr/encrypted_executable_template.tmpl.literal
=== RUN   TestFileAttr/encrypted_empty_executable_dot_name
=== RUN   TestFileAttr/encrypted_empty_executable_literal_create_name
=== RUN   TestFileAttr/encrypted_empty_executable_literal_dot_name
=== RUN   TestFileAttr/encrypted_empty_executable_exact_name
=== RUN   TestFileAttr/encrypted_empty_executable_literal_literal_name
=== RUN   TestFileAttr/encrypted_empty_executable_literal_literal_name#01
=== RUN   TestFileAttr/encrypted_empty_executable_literal_modify_name
=== RUN   TestFileAttr/encrypted_empty_executable_name.literal.literal
=== RUN   TestFileAttr/encrypted_empty_executable_name
=== RUN   TestFileAttr/encrypted_empty_executable_literal_remove_
=== RUN   TestFileAttr/encrypted_empty_executable_literal_run_name
=== RUN   TestFileAttr/encrypted_empty_executable_literal_symlink_name
=== RUN   TestFileAttr/encrypted_empty_executable_template.tmpl.literal
=== RUN   TestFileAttr/private_dot_name
=== RUN   TestFileAttr/private_literal_create_name
=== RUN   TestFileAttr/private_literal_dot_name
=== RUN   TestFileAttr/private_exact_name
=== RUN   TestFileAttr/private_literal_literal_name
=== RUN   TestFileAttr/private_literal_literal_name#01
=== RUN   TestFileAttr/private_literal_modify_name
=== RUN   TestFileAttr/private_name.literal.literal
=== RUN   TestFileAttr/private_name
=== RUN   TestFileAttr/private_literal_remove_
=== RUN   TestFileAttr/private_literal_run_name
=== RUN   TestFileAttr/private_literal_symlink_name
=== RUN   TestFileAttr/private_template.tmpl.literal
=== RUN   TestFileAttr/private_empty_dot_name
=== RUN   TestFileAttr/private_empty_literal_create_name
=== RUN   TestFileAttr/private_empty_literal_dot_name
=== RUN   TestFileAttr/private_empty_exact_name
=== RUN   TestFileAttr/private_empty_literal_literal_name
=== RUN   TestFileAttr/private_empty_literal_literal_name#01
=== RUN   TestFileAttr/private_empty_literal_modify_name
=== RUN   TestFileAttr/private_empty_name.literal.literal
=== RUN   TestFileAttr/private_empty_name
=== RUN   TestFileAttr/private_empty_literal_remove_
=== RUN   TestFileAttr/private_empty_literal_run_name
=== RUN   TestFileAttr/private_empty_literal_symlink_name
=== RUN   TestFileAttr/private_empty_template.tmpl.literal
=== RUN   TestFileAttr/encrypted_private_dot_name
=== RUN   TestFileAttr/encrypted_private_literal_create_name
=== RUN   TestFileAttr/encrypted_private_literal_dot_name
=== RUN   TestFileAttr/encrypted_private_exact_name
=== RUN   TestFileAttr/encrypted_private_literal_literal_name
=== RUN   TestFileAttr/encrypted_private_literal_literal_name#01
=== RUN   TestFileAttr/encrypted_private_literal_modify_name
=== RUN   TestFileAttr/encrypted_private_name.literal.literal
=== RUN   TestFileAttr/encrypted_private_name
=== RUN   TestFileAttr/encrypted_private_literal_remove_
=== RUN   TestFileAttr/encrypted_private_literal_run_name
=== RUN   TestFileAttr/encrypted_private_literal_symlink_name
=== RUN   TestFileAttr/encrypted_private_template.tmpl.literal
=== RUN   TestFileAttr/encrypted_private_empty_dot_name
=== RUN   TestFileAttr/encrypted_private_empty_literal_create_name
=== RUN   TestFileAttr/encrypted_private_empty_literal_dot_name
=== RUN   TestFileAttr/encrypted_private_empty_exact_name
=== RUN   TestFileAttr/encrypted_private_empty_literal_literal_name
=== RUN   TestFileAttr/encrypted_private_empty_literal_literal_name#01
=== RUN   TestFileAttr/encrypted_private_empty_literal_modify_name
=== RUN   TestFileAttr/encrypted_private_empty_name.literal.literal
=== RUN   TestFileAttr/encrypted_private_empty_name
=== RUN   TestFileAttr/encrypted_private_empty_literal_remove_
=== RUN   TestFileAttr/encrypted_private_empty_literal_run_name
=== RUN   TestFileAttr/encrypted_private_empty_literal_symlink_name
=== RUN   TestFileAttr/encrypted_private_empty_template.tmpl.literal
=== RUN   TestFileAttr/private_executable_dot_name
=== RUN   TestFileAttr/private_executable_literal_create_name
=== RUN   TestFileAttr/private_executable_literal_dot_name
=== RUN   TestFileAttr/private_executable_exact_name
=== RUN   TestFileAttr/private_executable_literal_literal_name
=== RUN   TestFileAttr/private_executable_literal_literal_name#01
=== RUN   TestFileAttr/private_executable_literal_modify_name
=== RUN   TestFileAttr/private_executable_name.literal.literal
=== RUN   TestFileAttr/private_executable_name
=== RUN   TestFileAttr/private_executable_literal_remove_
=== RUN   TestFileAttr/private_executable_literal_run_name
=== RUN   TestFileAttr/private_executable_literal_symlink_name
=== RUN   TestFileAttr/private_executable_template.tmpl.literal
=== RUN   TestFileAttr/private_empty_executable_dot_name
=== RUN   TestFileAttr/private_empty_executable_literal_create_name
=== RUN   TestFileAttr/private_empty_executable_literal_dot_name
=== RUN   TestFileAttr/private_empty_executable_exact_name
=== RUN   TestFileAttr/private_empty_executable_literal_literal_name
=== RUN   TestFileAttr/private_empty_executable_literal_literal_name#01
=== RUN   TestFileAttr/private_empty_executable_literal_modify_name
=== RUN   TestFileAttr/private_empty_executable_name.literal.literal
=== RUN   TestFileAttr/private_empty_executable_name
=== RUN   TestFileAttr/private_empty_executable_literal_remove_
=== RUN   TestFileAttr/private_empty_executable_literal_run_name
=== RUN   TestFileAttr/private_empty_executable_literal_symlink_name
=== RUN   TestFileAttr/private_empty_executable_template.tmpl.literal
=== RUN   TestFileAttr/encrypted_private_executable_dot_name
=== RUN   TestFileAttr/encrypted_private_executable_literal_create_name
=== RUN   TestFileAttr/encrypted_private_executable_literal_dot_name
=== RUN   TestFileAttr/encrypted_private_executable_exact_name
=== RUN   TestFileAttr/encrypted_private_executable_literal_literal_name
=== RUN   TestFileAttr/encrypted_private_executable_literal_literal_name#01
=== RUN   TestFileAttr/encrypted_private_executable_literal_modify_name
=== RUN   TestFileAttr/encrypted_private_executable_name.literal.literal
=== RUN   TestFileAttr/encrypted_private_executable_name
=== RUN   TestFileAttr/encrypted_private_executable_literal_remove_
=== RUN   TestFileAttr/encrypted_private_executable_literal_run_name
=== RUN   TestFileAttr/encrypted_private_executable_literal_symlink_name
=== RUN   TestFileAttr/encrypted_private_executable_template.tmpl.literal
=== RUN   TestFileAttr/encrypted_private_empty_executable_dot_name
=== RUN   TestFileAttr/encrypted_private_empty_executable_literal_create_name
=== RUN   TestFileAttr/encrypted_private_empty_executable_literal_dot_name
=== RUN   TestFileAttr/encrypted_private_empty_executable_exact_name
=== RUN   TestFileAttr/encrypted_private_empty_executable_literal_literal_name
=== RUN   TestFileAttr/encrypted_private_empty_executable_literal_literal_name#01
=== RUN   TestFileAttr/encrypted_private_empty_executable_literal_modify_name
=== RUN   TestFileAttr/encrypted_private_empty_executable_name.literal.literal
=== RUN   TestFileAttr/encrypted_private_empty_executable_name
=== RUN   TestFileAttr/encrypted_private_empty_executable_literal_remove_
=== RUN   TestFileAttr/encrypted_private_empty_executable_literal_run_name
=== RUN   TestFileAttr/encrypted_private_empty_executable_literal_symlink_name
=== RUN   TestFileAttr/encrypted_private_empty_executable_template.tmpl.literal
=== RUN   TestFileAttr/readonly_dot_name
=== RUN   TestFileAttr/readonly_literal_create_name
=== RUN   TestFileAttr/readonly_literal_dot_name
=== RUN   TestFileAttr/readonly_exact_name
=== RUN   TestFileAttr/readonly_literal_literal_name
=== RUN   TestFileAttr/readonly_literal_literal_name#01
=== RUN   TestFileAttr/readonly_literal_modify_name
=== RUN   TestFileAttr/readonly_name.literal.literal
=== RUN   TestFileAttr/readonly_name
=== RUN   TestFileAttr/readonly_literal_remove_
=== RUN   TestFileAttr/readonly_literal_run_name
=== RUN   TestFileAttr/readonly_literal_symlink_name
=== RUN   TestFileAttr/readonly_template.tmpl.literal
=== RUN   TestFileAttr/readonly_empty_dot_name
=== RUN   TestFileAttr/readonly_empty_literal_create_name
=== RUN   TestFileAttr/readonly_empty_literal_dot_name
=== RUN   TestFileAttr/readonly_empty_exact_name
=== RUN   TestFileAttr/readonly_empty_literal_literal_name
=== RUN   TestFileAttr/readonly_empty_literal_literal_name#01
=== RUN   TestFileAttr/readonly_empty_literal_modify_name
=== RUN   TestFileAttr/readonly_empty_name.literal.literal
=== RUN   TestFileAttr/readonly_empty_name
=== RUN   TestFileAttr/readonly_empty_literal_remove_
=== RUN   TestFileAttr/readonly_empty_literal_run_name
=== RUN   TestFileAttr/readonly_empty_literal_symlink_name
=== RUN   TestFileAttr/readonly_empty_template.tmpl.literal
=== RUN   TestFileAttr/encrypted_readonly_dot_name
=== RUN   TestFileAttr/encrypted_readonly_literal_create_name
=== RUN   TestFileAttr/encrypted_readonly_literal_dot_name
=== RUN   TestFileAttr/encrypted_readonly_exact_name
=== RUN   TestFileAttr/encrypted_readonly_literal_literal_name
=== RUN   TestFileAttr/encrypted_readonly_literal_literal_name#01
=== RUN   TestFileAttr/encrypted_readonly_literal_modify_name
=== RUN   TestFileAttr/encrypted_readonly_name.literal.literal
=== RUN   TestFileAttr/encrypted_readonly_name
=== RUN   TestFileAttr/encrypted_readonly_literal_remove_
=== RUN   TestFileAttr/encrypted_readonly_literal_run_name
=== RUN   TestFileAttr/encrypted_readonly_literal_symlink_name
=== RUN   TestFileAttr/encrypted_readonly_template.tmpl.literal
=== RUN   TestFileAttr/encrypted_readonly_empty_dot_name
=== RUN   TestFileAttr/encrypted_readonly_empty_literal_create_name
=== RUN   TestFileAttr/encrypted_readonly_empty_literal_dot_name
=== RUN   TestFileAttr/encrypted_readonly_empty_exact_name
=== RUN   TestFileAttr/encrypted_readonly_empty_literal_literal_name
=== RUN   TestFileAttr/encrypted_readonly_empty_literal_literal_name#01
=== RUN   TestFileAttr/encrypted_readonly_empty_literal_modify_name
=== RUN   TestFileAttr/encrypted_readonly_empty_name.literal.literal
=== RUN   TestFileAttr/encrypted_readonly_empty_name
=== RUN   TestFileAttr/encrypted_readonly_empty_literal_remove_
=== RUN   TestFileAttr/encrypted_readonly_empty_literal_run_name
=== RUN   TestFileAttr/encrypted_readonly_empty_literal_symlink_name
=== RUN   TestFileAttr/encrypted_readonly_empty_template.tmpl.literal
=== RUN   TestFileAttr/readonly_executable_dot_name
=== RUN   TestFileAttr/readonly_executable_literal_create_name
=== RUN   TestFileAttr/readonly_executable_literal_dot_name
=== RUN   TestFileAttr/readonly_executable_exact_name
=== RUN   TestFileAttr/readonly_executable_literal_literal_name
=== RUN   TestFileAttr/readonly_executable_literal_literal_name#01
=== RUN   TestFileAttr/readonly_executable_literal_modify_name
=== RUN   TestFileAttr/readonly_executable_name.literal.literal
=== RUN   TestFileAttr/readonly_executable_name
=== RUN   TestFileAttr/readonly_executable_literal_remove_
=== RUN   TestFileAttr/readonly_executable_literal_run_name
=== RUN   TestFileAttr/readonly_executable_literal_symlink_name
=== RUN   TestFileAttr/readonly_executable_template.tmpl.literal
=== RUN   TestFileAttr/readonly_empty_executable_dot_name
=== RUN   TestFileAttr/readonly_empty_executable_literal_create_name
=== RUN   TestFileAttr/readonly_empty_executable_literal_dot_name
=== RUN   TestFileAttr/readonly_empty_executable_exact_name
=== RUN   TestFileAttr/readonly_empty_executable_literal_literal_name
=== RUN   TestFileAttr/readonly_empty_executable_literal_literal_name#01
=== RUN   TestFileAttr/readonly_empty_executable_literal_modify_name
=== RUN   TestFileAttr/readonly_empty_executable_name.literal.literal
=== RUN   TestFileAttr/readonly_empty_executable_name
=== RUN   TestFileAttr/readonly_empty_executable_literal_remove_
=== RUN   TestFileAttr/readonly_empty_executable_literal_run_name
=== RUN   TestFileAttr/readonly_empty_executable_literal_symlink_name
=== RUN   TestFileAttr/readonly_empty_executable_template.tmpl.literal
=== RUN   TestFileAttr/encrypted_readonly_executable_dot_name
=== RUN   TestFileAttr/encrypted_readonly_executable_literal_create_name
=== RUN   TestFileAttr/encrypted_readonly_executable_literal_dot_name
=== RUN   TestFileAttr/encrypted_readonly_executable_exact_name
=== RUN   TestFileAttr/encrypted_readonly_executable_literal_literal_name
=== RUN   TestFileAttr/encrypted_readonly_executable_literal_literal_name#01
=== RUN   TestFileAttr/encrypted_readonly_executable_literal_modify_name
=== RUN   TestFileAttr/encrypted_readonly_executable_name.literal.literal
=== RUN   TestFileAttr/encrypted_readonly_executable_name
=== RUN   TestFileAttr/encrypted_readonly_executable_literal_remove_
=== RUN   TestFileAttr/encrypted_readonly_executable_literal_run_name
=== RUN   TestFileAttr/encrypted_readonly_executable_literal_symlink_name
=== RUN   TestFileAttr/encrypted_readonly_executable_template.tmpl.literal
=== RUN   TestFileAttr/encrypted_readonly_empty_executable_dot_name
=== RUN   TestFileAttr/encrypted_readonly_empty_executable_literal_create_name
=== RUN   TestFileAttr/encrypted_readonly_empty_executable_literal_dot_name
=== RUN   TestFileAttr/encrypted_readonly_empty_executable_exact_name
=== RUN   TestFileAttr/encrypted_readonly_empty_executable_literal_literal_name
=== RUN   TestFileAttr/encrypted_readonly_empty_executable_literal_literal_name#01
=== RUN   TestFileAttr/encrypted_readonly_empty_executable_literal_modify_name
=== RUN   TestFileAttr/encrypted_readonly_empty_executable_name.literal.literal
=== RUN   TestFileAttr/encrypted_readonly_empty_executable_name
=== RUN   TestFileAttr/encrypted_readonly_empty_executable_literal_remove_
=== RUN   TestFileAttr/encrypted_readonly_empty_executable_literal_run_name
=== RUN   TestFileAttr/encrypted_readonly_empty_executable_literal_symlink_name
=== RUN   TestFileAttr/encrypted_readonly_empty_executable_template.tmpl.literal
=== RUN   TestFileAttr/private_readonly_dot_name
=== RUN   TestFileAttr/private_readonly_literal_create_name
=== RUN   TestFileAttr/private_readonly_literal_dot_name
=== RUN   TestFileAttr/private_readonly_exact_name
=== RUN   TestFileAttr/private_readonly_literal_literal_name
=== RUN   TestFileAttr/private_readonly_literal_literal_name#01
=== RUN   TestFileAttr/private_readonly_literal_modify_name
=== RUN   TestFileAttr/private_readonly_name.literal.literal
=== RUN   TestFileAttr/private_readonly_name
=== RUN   TestFileAttr/private_readonly_literal_remove_
=== RUN   TestFileAttr/private_readonly_literal_run_name
=== RUN   TestFileAttr/private_readonly_literal_symlink_name
=== RUN   TestFileAttr/private_readonly_template.tmpl.literal
=== RUN   TestFileAttr/private_readonly_empty_dot_name
=== RUN   TestFileAttr/private_readonly_empty_literal_create_name
=== RUN   TestFileAttr/private_readonly_empty_literal_dot_name
=== RUN   TestFileAttr/private_readonly_empty_exact_name
=== RUN   TestFileAttr/private_readonly_empty_literal_literal_name
=== RUN   TestFileAttr/private_readonly_empty_literal_literal_name#01
=== RUN   TestFileAttr/private_readonly_empty_literal_modify_name
=== RUN   TestFileAttr/private_readonly_empty_name.literal.literal
=== RUN   TestFileAttr/private_readonly_empty_name
=== RUN   TestFileAttr/private_readonly_empty_literal_remove_
=== RUN   TestFileAttr/private_readonly_empty_literal_run_name
=== RUN   TestFileAttr/private_readonly_empty_literal_symlink_name
=== RUN   TestFileAttr/private_readonly_empty_template.tmpl.literal
=== RUN   TestFileAttr/encrypted_private_readonly_dot_name
=== RUN   TestFileAttr/encrypted_private_readonly_literal_create_name
=== RUN   TestFileAttr/encrypted_private_readonly_literal_dot_name
=== RUN   TestFileAttr/encrypted_private_readonly_exact_name
=== RUN   TestFileAttr/encrypted_private_readonly_literal_literal_name
=== RUN   TestFileAttr/encrypted_private_readonly_literal_literal_name#01
=== RUN   TestFileAttr/encrypted_private_readonly_literal_modify_name
=== RUN   TestFileAttr/encrypted_private_readonly_name.literal.literal
=== RUN   TestFileAttr/encrypted_private_readonly_name
=== RUN   TestFileAttr/encrypted_private_readonly_literal_remove_
=== RUN   TestFileAttr/encrypted_private_readonly_literal_run_name
=== RUN   TestFileAttr/encrypted_private_readonly_literal_symlink_name
=== RUN   TestFileAttr/encrypted_private_readonly_template.tmpl.literal
=== RUN   TestFileAttr/encrypted_private_readonly_empty_dot_name
=== RUN   TestFileAttr/encrypted_private_readonly_empty_literal_create_name
=== RUN   TestFileAttr/encrypted_private_readonly_empty_literal_dot_name
=== RUN   TestFileAttr/encrypted_private_readonly_empty_exact_name
=== RUN   TestFileAttr/encrypted_private_readonly_empty_literal_literal_name
=== RUN   TestFileAttr/encrypted_private_readonly_empty_literal_literal_name#01
=== RUN   TestFileAttr/encrypted_private_readonly_empty_literal_modify_name
=== RUN   TestFileAttr/encrypted_private_readonly_empty_name.literal.literal
=== RUN   TestFileAttr/encrypted_private_readonly_empty_name
=== RUN   TestFileAttr/encrypted_private_readonly_empty_literal_remove_
=== RUN   TestFileAttr/encrypted_private_readonly_empty_literal_run_name
=== RUN   TestFileAttr/encrypted_private_readonly_empty_literal_symlink_name
=== RUN   TestFileAttr/encrypted_private_readonly_empty_template.tmpl.literal
=== RUN   TestFileAttr/private_readonly_executable_dot_name
=== RUN   TestFileAttr/private_readonly_executable_literal_create_name
=== RUN   TestFileAttr/private_readonly_executable_literal_dot_name
=== RUN   TestFileAttr/private_readonly_executable_exact_name
=== RUN   TestFileAttr/private_readonly_executable_literal_literal_name
=== RUN   TestFileAttr/private_readonly_executable_literal_literal_name#01
=== RUN   TestFileAttr/private_readonly_executable_literal_modify_name
=== RUN   TestFileAttr/private_readonly_executable_name.literal.literal
=== RUN   TestFileAttr/private_readonly_executable_name
=== RUN   TestFileAttr/private_readonly_executable_literal_remove_
=== RUN   TestFileAttr/private_readonly_executable_literal_run_name
=== RUN   TestFileAttr/private_readonly_executable_literal_symlink_name
=== RUN   TestFileAttr/private_readonly_executable_template.tmpl.literal
=== RUN   TestFileAttr/private_readonly_empty_executable_dot_name
=== RUN   TestFileAttr/private_readonly_empty_executable_literal_create_name
=== RUN   TestFileAttr/private_readonly_empty_executable_literal_dot_name
=== RUN   TestFileAttr/private_readonly_empty_executable_exact_name
=== RUN   TestFileAttr/private_readonly_empty_executable_literal_literal_name
=== RUN   TestFileAttr/private_readonly_empty_executable_literal_literal_name#01
=== RUN   TestFileAttr/private_readonly_empty_executable_literal_modify_name
=== RUN   TestFileAttr/private_readonly_empty_executable_name.literal.literal
=== RUN   TestFileAttr/private_readonly_empty_executable_name
=== RUN   TestFileAttr/private_readonly_empty_executable_literal_remove_
=== RUN   TestFileAttr/private_readonly_empty_executable_literal_run_name
=== RUN   TestFileAttr/private_readonly_empty_executable_literal_symlink_name
=== RUN   TestFileAttr/private_readonly_empty_executable_template.tmpl.literal
=== RUN   TestFileAttr/encrypted_private_readonly_executable_dot_name
=== RUN   TestFileAttr/encrypted_private_readonly_executable_literal_create_name
=== RUN   TestFileAttr/encrypted_private_readonly_executable_literal_dot_name
=== RUN   TestFileAttr/encrypted_private_readonly_executable_exact_name
=== RUN   TestFileAttr/encrypted_private_readonly_executable_literal_literal_name
=== RUN   TestFileAttr/encrypted_private_readonly_executable_literal_literal_name#01
=== RUN   TestFileAttr/encrypted_private_readonly_executable_literal_modify_name
=== RUN   TestFileAttr/encrypted_private_readonly_executable_name.literal.literal
=== RUN   TestFileAttr/encrypted_private_readonly_executable_name
=== RUN   TestFileAttr/encrypted_private_readonly_executable_literal_remove_
=== RUN   TestFileAttr/encrypted_private_readonly_executable_literal_run_name
=== RUN   TestFileAttr/encrypted_private_readonly_executable_literal_symlink_name
=== RUN   TestFileAttr/encrypted_private_readonly_executable_template.tmpl.literal
=== RUN   TestFileAttr/encrypted_private_readonly_empty_executable_dot_name
=== RUN   TestFileAttr/encrypted_private_readonly_empty_executable_literal_create_name
=== RUN   TestFileAttr/encrypted_private_readonly_empty_executable_literal_dot_name
=== RUN   TestFileAttr/encrypted_private_readonly_empty_executable_exact_name
=== RUN   TestFileAttr/encrypted_private_readonly_empty_executable_literal_literal_name
=== RUN   TestFileAttr/encrypted_private_readonly_empty_executable_literal_literal_name#01
=== RUN   TestFileAttr/encrypted_private_readonly_empty_executable_literal_modify_name
=== RUN   TestFileAttr/encrypted_private_readonly_empty_executable_name.literal.literal
=== RUN   TestFileAttr/encrypted_private_readonly_empty_executable_name
=== RUN   TestFileAttr/encrypted_private_readonly_empty_executable_literal_remove_
=== RUN   TestFileAttr/encrypted_private_readonly_empty_executable_literal_run_name
=== RUN   TestFileAttr/encrypted_private_readonly_empty_executable_literal_symlink_name
=== RUN   TestFileAttr/encrypted_private_readonly_empty_executable_template.tmpl.literal
=== RUN   TestFileAttr/dot_name.tmpl
=== RUN   TestFileAttr/literal_create_name.tmpl
=== RUN   TestFileAttr/literal_dot_name.tmpl
=== RUN   TestFileAttr/exact_name.tmpl
=== RUN   TestFileAttr/literal_literal_name.tmpl
=== RUN   TestFileAttr/literal_literal_name.tmpl#01
=== RUN   TestFileAttr/literal_modify_name.tmpl
=== RUN   TestFileAttr/name.literal.literal.tmpl
=== RUN   TestFileAttr/name.tmpl
=== RUN   TestFileAttr/literal_remove_.tmpl
=== RUN   TestFileAttr/literal_run_name.tmpl
=== RUN   TestFileAttr/literal_symlink_name.tmpl
=== RUN   TestFileAttr/template.tmpl.literal.tmpl
=== RUN   TestFileAttr/empty_dot_name.tmpl
=== RUN   TestFileAttr/empty_literal_create_name.tmpl
=== RUN   TestFileAttr/empty_literal_dot_name.tmpl
=== RUN   TestFileAttr/empty_exact_name.tmpl
=== RUN   TestFileAttr/empty_literal_literal_name.tmpl
=== RUN   TestFileAttr/empty_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/empty_literal_modify_name.tmpl
=== RUN   TestFileAttr/empty_name.literal.literal.tmpl
=== RUN   TestFileAttr/empty_name.tmpl
=== RUN   TestFileAttr/empty_literal_remove_.tmpl
=== RUN   TestFileAttr/empty_literal_run_name.tmpl
=== RUN   TestFileAttr/empty_literal_symlink_name.tmpl
=== RUN   TestFileAttr/empty_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/encrypted_dot_name.tmpl
=== RUN   TestFileAttr/encrypted_literal_create_name.tmpl
=== RUN   TestFileAttr/encrypted_literal_dot_name.tmpl
=== RUN   TestFileAttr/encrypted_exact_name.tmpl
=== RUN   TestFileAttr/encrypted_literal_literal_name.tmpl
=== RUN   TestFileAttr/encrypted_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/encrypted_literal_modify_name.tmpl
=== RUN   TestFileAttr/encrypted_name.literal.literal.tmpl
=== RUN   TestFileAttr/encrypted_name.tmpl
=== RUN   TestFileAttr/encrypted_literal_remove_.tmpl
=== RUN   TestFileAttr/encrypted_literal_run_name.tmpl
=== RUN   TestFileAttr/encrypted_literal_symlink_name.tmpl
=== RUN   TestFileAttr/encrypted_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/encrypted_empty_dot_name.tmpl
=== RUN   TestFileAttr/encrypted_empty_literal_create_name.tmpl
=== RUN   TestFileAttr/encrypted_empty_literal_dot_name.tmpl
=== RUN   TestFileAttr/encrypted_empty_exact_name.tmpl
=== RUN   TestFileAttr/encrypted_empty_literal_literal_name.tmpl
=== RUN   TestFileAttr/encrypted_empty_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/encrypted_empty_literal_modify_name.tmpl
=== RUN   TestFileAttr/encrypted_empty_name.literal.literal.tmpl
=== RUN   TestFileAttr/encrypted_empty_name.tmpl
=== RUN   TestFileAttr/encrypted_empty_literal_remove_.tmpl
=== RUN   TestFileAttr/encrypted_empty_literal_run_name.tmpl
=== RUN   TestFileAttr/encrypted_empty_literal_symlink_name.tmpl
=== RUN   TestFileAttr/encrypted_empty_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/executable_dot_name.tmpl
=== RUN   TestFileAttr/executable_literal_create_name.tmpl
=== RUN   TestFileAttr/executable_literal_dot_name.tmpl
=== RUN   TestFileAttr/executable_exact_name.tmpl
=== RUN   TestFileAttr/executable_literal_literal_name.tmpl
=== RUN   TestFileAttr/executable_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/executable_literal_modify_name.tmpl
=== RUN   TestFileAttr/executable_name.literal.literal.tmpl
=== RUN   TestFileAttr/executable_name.tmpl
=== RUN   TestFileAttr/executable_literal_remove_.tmpl
=== RUN   TestFileAttr/executable_literal_run_name.tmpl
=== RUN   TestFileAttr/executable_literal_symlink_name.tmpl
=== RUN   TestFileAttr/executable_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/empty_executable_dot_name.tmpl
=== RUN   TestFileAttr/empty_executable_literal_create_name.tmpl
=== RUN   TestFileAttr/empty_executable_literal_dot_name.tmpl
=== RUN   TestFileAttr/empty_executable_exact_name.tmpl
=== RUN   TestFileAttr/empty_executable_literal_literal_name.tmpl
=== RUN   TestFileAttr/empty_executable_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/empty_executable_literal_modify_name.tmpl
=== RUN   TestFileAttr/empty_executable_name.literal.literal.tmpl
=== RUN   TestFileAttr/empty_executable_name.tmpl
=== RUN   TestFileAttr/empty_executable_literal_remove_.tmpl
=== RUN   TestFileAttr/empty_executable_literal_run_name.tmpl
=== RUN   TestFileAttr/empty_executable_literal_symlink_name.tmpl
=== RUN   TestFileAttr/empty_executable_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/encrypted_executable_dot_name.tmpl
=== RUN   TestFileAttr/encrypted_executable_literal_create_name.tmpl
=== RUN   TestFileAttr/encrypted_executable_literal_dot_name.tmpl
=== RUN   TestFileAttr/encrypted_executable_exact_name.tmpl
=== RUN   TestFileAttr/encrypted_executable_literal_literal_name.tmpl
=== RUN   TestFileAttr/encrypted_executable_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/encrypted_executable_literal_modify_name.tmpl
=== RUN   TestFileAttr/encrypted_executable_name.literal.literal.tmpl
=== RUN   TestFileAttr/encrypted_executable_name.tmpl
=== RUN   TestFileAttr/encrypted_executable_literal_remove_.tmpl
=== RUN   TestFileAttr/encrypted_executable_literal_run_name.tmpl
=== RUN   TestFileAttr/encrypted_executable_literal_symlink_name.tmpl
=== RUN   TestFileAttr/encrypted_executable_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/encrypted_empty_executable_dot_name.tmpl
=== RUN   TestFileAttr/encrypted_empty_executable_literal_create_name.tmpl
=== RUN   TestFileAttr/encrypted_empty_executable_literal_dot_name.tmpl
=== RUN   TestFileAttr/encrypted_empty_executable_exact_name.tmpl
=== RUN   TestFileAttr/encrypted_empty_executable_literal_literal_name.tmpl
=== RUN   TestFileAttr/encrypted_empty_executable_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/encrypted_empty_executable_literal_modify_name.tmpl
=== RUN   TestFileAttr/encrypted_empty_executable_name.literal.literal.tmpl
=== RUN   TestFileAttr/encrypted_empty_executable_name.tmpl
=== RUN   TestFileAttr/encrypted_empty_executable_literal_remove_.tmpl
=== RUN   TestFileAttr/encrypted_empty_executable_literal_run_name.tmpl
=== RUN   TestFileAttr/encrypted_empty_executable_literal_symlink_name.tmpl
=== RUN   TestFileAttr/encrypted_empty_executable_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/private_dot_name.tmpl
=== RUN   TestFileAttr/private_literal_create_name.tmpl
=== RUN   TestFileAttr/private_literal_dot_name.tmpl
=== RUN   TestFileAttr/private_exact_name.tmpl
=== RUN   TestFileAttr/private_literal_literal_name.tmpl
=== RUN   TestFileAttr/private_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/private_literal_modify_name.tmpl
=== RUN   TestFileAttr/private_name.literal.literal.tmpl
=== RUN   TestFileAttr/private_name.tmpl
=== RUN   TestFileAttr/private_literal_remove_.tmpl
=== RUN   TestFileAttr/private_literal_run_name.tmpl
=== RUN   TestFileAttr/private_literal_symlink_name.tmpl
=== RUN   TestFileAttr/private_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/private_empty_dot_name.tmpl
=== RUN   TestFileAttr/private_empty_literal_create_name.tmpl
=== RUN   TestFileAttr/private_empty_literal_dot_name.tmpl
=== RUN   TestFileAttr/private_empty_exact_name.tmpl
=== RUN   TestFileAttr/private_empty_literal_literal_name.tmpl
=== RUN   TestFileAttr/private_empty_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/private_empty_literal_modify_name.tmpl
=== RUN   TestFileAttr/private_empty_name.literal.literal.tmpl
=== RUN   TestFileAttr/private_empty_name.tmpl
=== RUN   TestFileAttr/private_empty_literal_remove_.tmpl
=== RUN   TestFileAttr/private_empty_literal_run_name.tmpl
=== RUN   TestFileAttr/private_empty_literal_symlink_name.tmpl
=== RUN   TestFileAttr/private_empty_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/encrypted_private_dot_name.tmpl
=== RUN   TestFileAttr/encrypted_private_literal_create_name.tmpl
=== RUN   TestFileAttr/encrypted_private_literal_dot_name.tmpl
=== RUN   TestFileAttr/encrypted_private_exact_name.tmpl
=== RUN   TestFileAttr/encrypted_private_literal_literal_name.tmpl
=== RUN   TestFileAttr/encrypted_private_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/encrypted_private_literal_modify_name.tmpl
=== RUN   TestFileAttr/encrypted_private_name.literal.literal.tmpl
=== RUN   TestFileAttr/encrypted_private_name.tmpl
=== RUN   TestFileAttr/encrypted_private_literal_remove_.tmpl
=== RUN   TestFileAttr/encrypted_private_literal_run_name.tmpl
=== RUN   TestFileAttr/encrypted_private_literal_symlink_name.tmpl
=== RUN   TestFileAttr/encrypted_private_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/encrypted_private_empty_dot_name.tmpl
=== RUN   TestFileAttr/encrypted_private_empty_literal_create_name.tmpl
=== RUN   TestFileAttr/encrypted_private_empty_literal_dot_name.tmpl
=== RUN   TestFileAttr/encrypted_private_empty_exact_name.tmpl
=== RUN   TestFileAttr/encrypted_private_empty_literal_literal_name.tmpl
=== RUN   TestFileAttr/encrypted_private_empty_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/encrypted_private_empty_literal_modify_name.tmpl
=== RUN   TestFileAttr/encrypted_private_empty_name.literal.literal.tmpl
=== RUN   TestFileAttr/encrypted_private_empty_name.tmpl
=== RUN   TestFileAttr/encrypted_private_empty_literal_remove_.tmpl
=== RUN   TestFileAttr/encrypted_private_empty_literal_run_name.tmpl
=== RUN   TestFileAttr/encrypted_private_empty_literal_symlink_name.tmpl
=== RUN   TestFileAttr/encrypted_private_empty_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/private_executable_dot_name.tmpl
=== RUN   TestFileAttr/private_executable_literal_create_name.tmpl
=== RUN   TestFileAttr/private_executable_literal_dot_name.tmpl
=== RUN   TestFileAttr/private_executable_exact_name.tmpl
=== RUN   TestFileAttr/private_executable_literal_literal_name.tmpl
=== RUN   TestFileAttr/private_executable_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/private_executable_literal_modify_name.tmpl
=== RUN   TestFileAttr/private_executable_name.literal.literal.tmpl
=== RUN   TestFileAttr/private_executable_name.tmpl
=== RUN   TestFileAttr/private_executable_literal_remove_.tmpl
=== RUN   TestFileAttr/private_executable_literal_run_name.tmpl
=== RUN   TestFileAttr/private_executable_literal_symlink_name.tmpl
=== RUN   TestFileAttr/private_executable_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/private_empty_executable_dot_name.tmpl
=== RUN   TestFileAttr/private_empty_executable_literal_create_name.tmpl
=== RUN   TestFileAttr/private_empty_executable_literal_dot_name.tmpl
=== RUN   TestFileAttr/private_empty_executable_exact_name.tmpl
=== RUN   TestFileAttr/private_empty_executable_literal_literal_name.tmpl
=== RUN   TestFileAttr/private_empty_executable_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/private_empty_executable_literal_modify_name.tmpl
=== RUN   TestFileAttr/private_empty_executable_name.literal.literal.tmpl
=== RUN   TestFileAttr/private_empty_executable_name.tmpl
=== RUN   TestFileAttr/private_empty_executable_literal_remove_.tmpl
=== RUN   TestFileAttr/private_empty_executable_literal_run_name.tmpl
=== RUN   TestFileAttr/private_empty_executable_literal_symlink_name.tmpl
=== RUN   TestFileAttr/private_empty_executable_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/encrypted_private_executable_dot_name.tmpl
=== RUN   TestFileAttr/encrypted_private_executable_literal_create_name.tmpl
=== RUN   TestFileAttr/encrypted_private_executable_literal_dot_name.tmpl
=== RUN   TestFileAttr/encrypted_private_executable_exact_name.tmpl
=== RUN   TestFileAttr/encrypted_private_executable_literal_literal_name.tmpl
=== RUN   TestFileAttr/encrypted_private_executable_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/encrypted_private_executable_literal_modify_name.tmpl
=== RUN   TestFileAttr/encrypted_private_executable_name.literal.literal.tmpl
=== RUN   TestFileAttr/encrypted_private_executable_name.tmpl
=== RUN   TestFileAttr/encrypted_private_executable_literal_remove_.tmpl
=== RUN   TestFileAttr/encrypted_private_executable_literal_run_name.tmpl
=== RUN   TestFileAttr/encrypted_private_executable_literal_symlink_name.tmpl
=== RUN   TestFileAttr/encrypted_private_executable_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/encrypted_private_empty_executable_dot_name.tmpl
=== RUN   TestFileAttr/encrypted_private_empty_executable_literal_create_name.tmpl
=== RUN   TestFileAttr/encrypted_private_empty_executable_literal_dot_name.tmpl
=== RUN   TestFileAttr/encrypted_private_empty_executable_exact_name.tmpl
=== RUN   TestFileAttr/encrypted_private_empty_executable_literal_literal_name.tmpl
=== RUN   TestFileAttr/encrypted_private_empty_executable_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/encrypted_private_empty_executable_literal_modify_name.tmpl
=== RUN   TestFileAttr/encrypted_private_empty_executable_name.literal.literal.tmpl
=== RUN   TestFileAttr/encrypted_private_empty_executable_name.tmpl
=== RUN   TestFileAttr/encrypted_private_empty_executable_literal_remove_.tmpl
=== RUN   TestFileAttr/encrypted_private_empty_executable_literal_run_name.tmpl
=== RUN   TestFileAttr/encrypted_private_empty_executable_literal_symlink_name.tmpl
=== RUN   TestFileAttr/encrypted_private_empty_executable_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/readonly_dot_name.tmpl
=== RUN   TestFileAttr/readonly_literal_create_name.tmpl
=== RUN   TestFileAttr/readonly_literal_dot_name.tmpl
=== RUN   TestFileAttr/readonly_exact_name.tmpl
=== RUN   TestFileAttr/readonly_literal_literal_name.tmpl
=== RUN   TestFileAttr/readonly_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/readonly_literal_modify_name.tmpl
=== RUN   TestFileAttr/readonly_name.literal.literal.tmpl
=== RUN   TestFileAttr/readonly_name.tmpl
=== RUN   TestFileAttr/readonly_literal_remove_.tmpl
=== RUN   TestFileAttr/readonly_literal_run_name.tmpl
=== RUN   TestFileAttr/readonly_literal_symlink_name.tmpl
=== RUN   TestFileAttr/readonly_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/readonly_empty_dot_name.tmpl
=== RUN   TestFileAttr/readonly_empty_literal_create_name.tmpl
=== RUN   TestFileAttr/readonly_empty_literal_dot_name.tmpl
=== RUN   TestFileAttr/readonly_empty_exact_name.tmpl
=== RUN   TestFileAttr/readonly_empty_literal_literal_name.tmpl
=== RUN   TestFileAttr/readonly_empty_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/readonly_empty_literal_modify_name.tmpl
=== RUN   TestFileAttr/readonly_empty_name.literal.literal.tmpl
=== RUN   TestFileAttr/readonly_empty_name.tmpl
=== RUN   TestFileAttr/readonly_empty_literal_remove_.tmpl
=== RUN   TestFileAttr/readonly_empty_literal_run_name.tmpl
=== RUN   TestFileAttr/readonly_empty_literal_symlink_name.tmpl
=== RUN   TestFileAttr/readonly_empty_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/encrypted_readonly_dot_name.tmpl
=== RUN   TestFileAttr/encrypted_readonly_literal_create_name.tmpl
=== RUN   TestFileAttr/encrypted_readonly_literal_dot_name.tmpl
=== RUN   TestFileAttr/encrypted_readonly_exact_name.tmpl
=== RUN   TestFileAttr/encrypted_readonly_literal_literal_name.tmpl
=== RUN   TestFileAttr/encrypted_readonly_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/encrypted_readonly_literal_modify_name.tmpl
=== RUN   TestFileAttr/encrypted_readonly_name.literal.literal.tmpl
=== RUN   TestFileAttr/encrypted_readonly_name.tmpl
=== RUN   TestFileAttr/encrypted_readonly_literal_remove_.tmpl
=== RUN   TestFileAttr/encrypted_readonly_literal_run_name.tmpl
=== RUN   TestFileAttr/encrypted_readonly_literal_symlink_name.tmpl
=== RUN   TestFileAttr/encrypted_readonly_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/encrypted_readonly_empty_dot_name.tmpl
=== RUN   TestFileAttr/encrypted_readonly_empty_literal_create_name.tmpl
=== RUN   TestFileAttr/encrypted_readonly_empty_literal_dot_name.tmpl
=== RUN   TestFileAttr/encrypted_readonly_empty_exact_name.tmpl
=== RUN   TestFileAttr/encrypted_readonly_empty_literal_literal_name.tmpl
=== RUN   TestFileAttr/encrypted_readonly_empty_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/encrypted_readonly_empty_literal_modify_name.tmpl
=== RUN   TestFileAttr/encrypted_readonly_empty_name.literal.literal.tmpl
=== RUN   TestFileAttr/encrypted_readonly_empty_name.tmpl
=== RUN   TestFileAttr/encrypted_readonly_empty_literal_remove_.tmpl
=== RUN   TestFileAttr/encrypted_readonly_empty_literal_run_name.tmpl
=== RUN   TestFileAttr/encrypted_readonly_empty_literal_symlink_name.tmpl
=== RUN   TestFileAttr/encrypted_readonly_empty_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/readonly_executable_dot_name.tmpl
=== RUN   TestFileAttr/readonly_executable_literal_create_name.tmpl
=== RUN   TestFileAttr/readonly_executable_literal_dot_name.tmpl
=== RUN   TestFileAttr/readonly_executable_exact_name.tmpl
=== RUN   TestFileAttr/readonly_executable_literal_literal_name.tmpl
=== RUN   TestFileAttr/readonly_executable_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/readonly_executable_literal_modify_name.tmpl
=== RUN   TestFileAttr/readonly_executable_name.literal.literal.tmpl
=== RUN   TestFileAttr/readonly_executable_name.tmpl
=== RUN   TestFileAttr/readonly_executable_literal_remove_.tmpl
=== RUN   TestFileAttr/readonly_executable_literal_run_name.tmpl
=== RUN   TestFileAttr/readonly_executable_literal_symlink_name.tmpl
=== RUN   TestFileAttr/readonly_executable_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/readonly_empty_executable_dot_name.tmpl
=== RUN   TestFileAttr/readonly_empty_executable_literal_create_name.tmpl
=== RUN   TestFileAttr/readonly_empty_executable_literal_dot_name.tmpl
=== RUN   TestFileAttr/readonly_empty_executable_exact_name.tmpl
=== RUN   TestFileAttr/readonly_empty_executable_literal_literal_name.tmpl
=== RUN   TestFileAttr/readonly_empty_executable_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/readonly_empty_executable_literal_modify_name.tmpl
=== RUN   TestFileAttr/readonly_empty_executable_name.literal.literal.tmpl
=== RUN   TestFileAttr/readonly_empty_executable_name.tmpl
=== RUN   TestFileAttr/readonly_empty_executable_literal_remove_.tmpl
=== RUN   TestFileAttr/readonly_empty_executable_literal_run_name.tmpl
=== RUN   TestFileAttr/readonly_empty_executable_literal_symlink_name.tmpl
=== RUN   TestFileAttr/readonly_empty_executable_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/encrypted_readonly_executable_dot_name.tmpl
=== RUN   TestFileAttr/encrypted_readonly_executable_literal_create_name.tmpl
=== RUN   TestFileAttr/encrypted_readonly_executable_literal_dot_name.tmpl
=== RUN   TestFileAttr/encrypted_readonly_executable_exact_name.tmpl
=== RUN   TestFileAttr/encrypted_readonly_executable_literal_literal_name.tmpl
=== RUN   TestFileAttr/encrypted_readonly_executable_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/encrypted_readonly_executable_literal_modify_name.tmpl
=== RUN   TestFileAttr/encrypted_readonly_executable_name.literal.literal.tmpl
=== RUN   TestFileAttr/encrypted_readonly_executable_name.tmpl
=== RUN   TestFileAttr/encrypted_readonly_executable_literal_remove_.tmpl
=== RUN   TestFileAttr/encrypted_readonly_executable_literal_run_name.tmpl
=== RUN   TestFileAttr/encrypted_readonly_executable_literal_symlink_name.tmpl
=== RUN   TestFileAttr/encrypted_readonly_executable_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/encrypted_readonly_empty_executable_dot_name.tmpl
=== RUN   TestFileAttr/encrypted_readonly_empty_executable_literal_create_name.tmpl
=== RUN   TestFileAttr/encrypted_readonly_empty_executable_literal_dot_name.tmpl
=== RUN   TestFileAttr/encrypted_readonly_empty_executable_exact_name.tmpl
=== RUN   TestFileAttr/encrypted_readonly_empty_executable_literal_literal_name.tmpl
=== RUN   TestFileAttr/encrypted_readonly_empty_executable_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/encrypted_readonly_empty_executable_literal_modify_name.tmpl
=== RUN   TestFileAttr/encrypted_readonly_empty_executable_name.literal.literal.tmpl
=== RUN   TestFileAttr/encrypted_readonly_empty_executable_name.tmpl
=== RUN   TestFileAttr/encrypted_readonly_empty_executable_literal_remove_.tmpl
=== RUN   TestFileAttr/encrypted_readonly_empty_executable_literal_run_name.tmpl
=== RUN   TestFileAttr/encrypted_readonly_empty_executable_literal_symlink_name.tmpl
=== RUN   TestFileAttr/encrypted_readonly_empty_executable_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/private_readonly_dot_name.tmpl
=== RUN   TestFileAttr/private_readonly_literal_create_name.tmpl
=== RUN   TestFileAttr/private_readonly_literal_dot_name.tmpl
=== RUN   TestFileAttr/private_readonly_exact_name.tmpl
=== RUN   TestFileAttr/private_readonly_literal_literal_name.tmpl
=== RUN   TestFileAttr/private_readonly_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/private_readonly_literal_modify_name.tmpl
=== RUN   TestFileAttr/private_readonly_name.literal.literal.tmpl
=== RUN   TestFileAttr/private_readonly_name.tmpl
=== RUN   TestFileAttr/private_readonly_literal_remove_.tmpl
=== RUN   TestFileAttr/private_readonly_literal_run_name.tmpl
=== RUN   TestFileAttr/private_readonly_literal_symlink_name.tmpl
=== RUN   TestFileAttr/private_readonly_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/private_readonly_empty_dot_name.tmpl
=== RUN   TestFileAttr/private_readonly_empty_literal_create_name.tmpl
=== RUN   TestFileAttr/private_readonly_empty_literal_dot_name.tmpl
=== RUN   TestFileAttr/private_readonly_empty_exact_name.tmpl
=== RUN   TestFileAttr/private_readonly_empty_literal_literal_name.tmpl
=== RUN   TestFileAttr/private_readonly_empty_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/private_readonly_empty_literal_modify_name.tmpl
=== RUN   TestFileAttr/private_readonly_empty_name.literal.literal.tmpl
=== RUN   TestFileAttr/private_readonly_empty_name.tmpl
=== RUN   TestFileAttr/private_readonly_empty_literal_remove_.tmpl
=== RUN   TestFileAttr/private_readonly_empty_literal_run_name.tmpl
=== RUN   TestFileAttr/private_readonly_empty_literal_symlink_name.tmpl
=== RUN   TestFileAttr/private_readonly_empty_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/encrypted_private_readonly_dot_name.tmpl
=== RUN   TestFileAttr/encrypted_private_readonly_literal_create_name.tmpl
=== RUN   TestFileAttr/encrypted_private_readonly_literal_dot_name.tmpl
=== RUN   TestFileAttr/encrypted_private_readonly_exact_name.tmpl
=== RUN   TestFileAttr/encrypted_private_readonly_literal_literal_name.tmpl
=== RUN   TestFileAttr/encrypted_private_readonly_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/encrypted_private_readonly_literal_modify_name.tmpl
=== RUN   TestFileAttr/encrypted_private_readonly_name.literal.literal.tmpl
=== RUN   TestFileAttr/encrypted_private_readonly_name.tmpl
=== RUN   TestFileAttr/encrypted_private_readonly_literal_remove_.tmpl
=== RUN   TestFileAttr/encrypted_private_readonly_literal_run_name.tmpl
=== RUN   TestFileAttr/encrypted_private_readonly_literal_symlink_name.tmpl
=== RUN   TestFileAttr/encrypted_private_readonly_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/encrypted_private_readonly_empty_dot_name.tmpl
=== RUN   TestFileAttr/encrypted_private_readonly_empty_literal_create_name.tmpl
=== RUN   TestFileAttr/encrypted_private_readonly_empty_literal_dot_name.tmpl
=== RUN   TestFileAttr/encrypted_private_readonly_empty_exact_name.tmpl
=== RUN   TestFileAttr/encrypted_private_readonly_empty_literal_literal_name.tmpl
=== RUN   TestFileAttr/encrypted_private_readonly_empty_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/encrypted_private_readonly_empty_literal_modify_name.tmpl
=== RUN   TestFileAttr/encrypted_private_readonly_empty_name.literal.literal.tmpl
=== RUN   TestFileAttr/encrypted_private_readonly_empty_name.tmpl
=== RUN   TestFileAttr/encrypted_private_readonly_empty_literal_remove_.tmpl
=== RUN   TestFileAttr/encrypted_private_readonly_empty_literal_run_name.tmpl
=== RUN   TestFileAttr/encrypted_private_readonly_empty_literal_symlink_name.tmpl
=== RUN   TestFileAttr/encrypted_private_readonly_empty_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/private_readonly_executable_dot_name.tmpl
=== RUN   TestFileAttr/private_readonly_executable_literal_create_name.tmpl
=== RUN   TestFileAttr/private_readonly_executable_literal_dot_name.tmpl
=== RUN   TestFileAttr/private_readonly_executable_exact_name.tmpl
=== RUN   TestFileAttr/private_readonly_executable_literal_literal_name.tmpl
=== RUN   TestFileAttr/private_readonly_executable_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/private_readonly_executable_literal_modify_name.tmpl
=== RUN   TestFileAttr/private_readonly_executable_name.literal.literal.tmpl
=== RUN   TestFileAttr/private_readonly_executable_name.tmpl
=== RUN   TestFileAttr/private_readonly_executable_literal_remove_.tmpl
=== RUN   TestFileAttr/private_readonly_executable_literal_run_name.tmpl
=== RUN   TestFileAttr/private_readonly_executable_literal_symlink_name.tmpl
=== RUN   TestFileAttr/private_readonly_executable_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/private_readonly_empty_executable_dot_name.tmpl
=== RUN   TestFileAttr/private_readonly_empty_executable_literal_create_name.tmpl
=== RUN   TestFileAttr/private_readonly_empty_executable_literal_dot_name.tmpl
=== RUN   TestFileAttr/private_readonly_empty_executable_exact_name.tmpl
=== RUN   TestFileAttr/private_readonly_empty_executable_literal_literal_name.tmpl
=== RUN   TestFileAttr/private_readonly_empty_executable_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/private_readonly_empty_executable_literal_modify_name.tmpl
=== RUN   TestFileAttr/private_readonly_empty_executable_name.literal.literal.tmpl
=== RUN   TestFileAttr/private_readonly_empty_executable_name.tmpl
=== RUN   TestFileAttr/private_readonly_empty_executable_literal_remove_.tmpl
=== RUN   TestFileAttr/private_readonly_empty_executable_literal_run_name.tmpl
=== RUN   TestFileAttr/private_readonly_empty_executable_literal_symlink_name.tmpl
=== RUN   TestFileAttr/private_readonly_empty_executable_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/encrypted_private_readonly_executable_dot_name.tmpl
=== RUN   TestFileAttr/encrypted_private_readonly_executable_literal_create_name.tmpl
=== RUN   TestFileAttr/encrypted_private_readonly_executable_literal_dot_name.tmpl
=== RUN   TestFileAttr/encrypted_private_readonly_executable_exact_name.tmpl
=== RUN   TestFileAttr/encrypted_private_readonly_executable_literal_literal_name.tmpl
=== RUN   TestFileAttr/encrypted_private_readonly_executable_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/encrypted_private_readonly_executable_literal_modify_name.tmpl
=== RUN   TestFileAttr/encrypted_private_readonly_executable_name.literal.literal.tmpl
=== RUN   TestFileAttr/encrypted_private_readonly_executable_name.tmpl
=== RUN   TestFileAttr/encrypted_private_readonly_executable_literal_remove_.tmpl
=== RUN   TestFileAttr/encrypted_private_readonly_executable_literal_run_name.tmpl
=== RUN   TestFileAttr/encrypted_private_readonly_executable_literal_symlink_name.tmpl
=== RUN   TestFileAttr/encrypted_private_readonly_executable_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/encrypted_private_readonly_empty_executable_dot_name.tmpl
=== RUN   TestFileAttr/encrypted_private_readonly_empty_executable_literal_create_name.tmpl
=== RUN   TestFileAttr/encrypted_private_readonly_empty_executable_literal_dot_name.tmpl
=== RUN   TestFileAttr/encrypted_private_readonly_empty_executable_exact_name.tmpl
=== RUN   TestFileAttr/encrypted_private_readonly_empty_executable_literal_literal_name.tmpl
=== RUN   TestFileAttr/encrypted_private_readonly_empty_executable_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/encrypted_private_readonly_empty_executable_literal_modify_name.tmpl
=== RUN   TestFileAttr/encrypted_private_readonly_empty_executable_name.literal.literal.tmpl
=== RUN   TestFileAttr/encrypted_private_readonly_empty_executable_name.tmpl
=== RUN   TestFileAttr/encrypted_private_readonly_empty_executable_literal_remove_.tmpl
=== RUN   TestFileAttr/encrypted_private_readonly_empty_executable_literal_run_name.tmpl
=== RUN   TestFileAttr/encrypted_private_readonly_empty_executable_literal_symlink_name.tmpl
=== RUN   TestFileAttr/encrypted_private_readonly_empty_executable_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/modify_dot_name
=== RUN   TestFileAttr/modify_literal_create_name
=== RUN   TestFileAttr/modify_literal_dot_name
=== RUN   TestFileAttr/modify_exact_name
=== RUN   TestFileAttr/modify_literal_literal_name
=== RUN   TestFileAttr/modify_literal_literal_name#01
=== RUN   TestFileAttr/modify_literal_modify_name
=== RUN   TestFileAttr/modify_name.literal.literal
=== RUN   TestFileAttr/modify_name
=== RUN   TestFileAttr/modify_literal_remove_
=== RUN   TestFileAttr/modify_literal_run_name
=== RUN   TestFileAttr/modify_literal_symlink_name
=== RUN   TestFileAttr/modify_template.tmpl.literal
=== RUN   TestFileAttr/modify_encrypted_dot_name
=== RUN   TestFileAttr/modify_encrypted_literal_create_name
=== RUN   TestFileAttr/modify_encrypted_literal_dot_name
=== RUN   TestFileAttr/modify_encrypted_exact_name
=== RUN   TestFileAttr/modify_encrypted_literal_literal_name
=== RUN   TestFileAttr/modify_encrypted_literal_literal_name#01
=== RUN   TestFileAttr/modify_encrypted_literal_modify_name
=== RUN   TestFileAttr/modify_encrypted_name.literal.literal
=== RUN   TestFileAttr/modify_encrypted_name
=== RUN   TestFileAttr/modify_encrypted_literal_remove_
=== RUN   TestFileAttr/modify_encrypted_literal_run_name
=== RUN   TestFileAttr/modify_encrypted_literal_symlink_name
=== RUN   TestFileAttr/modify_encrypted_template.tmpl.literal
=== RUN   TestFileAttr/modify_executable_dot_name
=== RUN   TestFileAttr/modify_executable_literal_create_name
=== RUN   TestFileAttr/modify_executable_literal_dot_name
=== RUN   TestFileAttr/modify_executable_exact_name
=== RUN   TestFileAttr/modify_executable_literal_literal_name
=== RUN   TestFileAttr/modify_executable_literal_literal_name#01
=== RUN   TestFileAttr/modify_executable_literal_modify_name
=== RUN   TestFileAttr/modify_executable_name.literal.literal
=== RUN   TestFileAttr/modify_executable_name
=== RUN   TestFileAttr/modify_executable_literal_remove_
=== RUN   TestFileAttr/modify_executable_literal_run_name
=== RUN   TestFileAttr/modify_executable_literal_symlink_name
=== RUN   TestFileAttr/modify_executable_template.tmpl.literal
=== RUN   TestFileAttr/modify_encrypted_executable_dot_name
=== RUN   TestFileAttr/modify_encrypted_executable_literal_create_name
=== RUN   TestFileAttr/modify_encrypted_executable_literal_dot_name
=== RUN   TestFileAttr/modify_encrypted_executable_exact_name
=== RUN   TestFileAttr/modify_encrypted_executable_literal_literal_name
=== RUN   TestFileAttr/modify_encrypted_executable_literal_literal_name#01
=== RUN   TestFileAttr/modify_encrypted_executable_literal_modify_name
=== RUN   TestFileAttr/modify_encrypted_executable_name.literal.literal
=== RUN   TestFileAttr/modify_encrypted_executable_name
=== RUN   TestFileAttr/modify_encrypted_executable_literal_remove_
=== RUN   TestFileAttr/modify_encrypted_executable_literal_run_name
=== RUN   TestFileAttr/modify_encrypted_executable_literal_symlink_name
=== RUN   TestFileAttr/modify_encrypted_executable_template.tmpl.literal
=== RUN   TestFileAttr/modify_private_dot_name
=== RUN   TestFileAttr/modify_private_literal_create_name
=== RUN   TestFileAttr/modify_private_literal_dot_name
=== RUN   TestFileAttr/modify_private_exact_name
=== RUN   TestFileAttr/modify_private_literal_literal_name
=== RUN   TestFileAttr/modify_private_literal_literal_name#01
=== RUN   TestFileAttr/modify_private_literal_modify_name
=== RUN   TestFileAttr/modify_private_name.literal.literal
=== RUN   TestFileAttr/modify_private_name
=== RUN   TestFileAttr/modify_private_literal_remove_
=== RUN   TestFileAttr/modify_private_literal_run_name
=== RUN   TestFileAttr/modify_private_literal_symlink_name
=== RUN   TestFileAttr/modify_private_template.tmpl.literal
=== RUN   TestFileAttr/modify_encrypted_private_dot_name
=== RUN   TestFileAttr/modify_encrypted_private_literal_create_name
=== RUN   TestFileAttr/modify_encrypted_private_literal_dot_name
=== RUN   TestFileAttr/modify_encrypted_private_exact_name
=== RUN   TestFileAttr/modify_encrypted_private_literal_literal_name
=== RUN   TestFileAttr/modify_encrypted_private_literal_literal_name#01
=== RUN   TestFileAttr/modify_encrypted_private_literal_modify_name
=== RUN   TestFileAttr/modify_encrypted_private_name.literal.literal
=== RUN   TestFileAttr/modify_encrypted_private_name
=== RUN   TestFileAttr/modify_encrypted_private_literal_remove_
=== RUN   TestFileAttr/modify_encrypted_private_literal_run_name
=== RUN   TestFileAttr/modify_encrypted_private_literal_symlink_name
=== RUN   TestFileAttr/modify_encrypted_private_template.tmpl.literal
=== RUN   TestFileAttr/modify_private_executable_dot_name
=== RUN   TestFileAttr/modify_private_executable_literal_create_name
=== RUN   TestFileAttr/modify_private_executable_literal_dot_name
=== RUN   TestFileAttr/modify_private_executable_exact_name
=== RUN   TestFileAttr/modify_private_executable_literal_literal_name
=== RUN   TestFileAttr/modify_private_executable_literal_literal_name#01
=== RUN   TestFileAttr/modify_private_executable_literal_modify_name
=== RUN   TestFileAttr/modify_private_executable_name.literal.literal
=== RUN   TestFileAttr/modify_private_executable_name
=== RUN   TestFileAttr/modify_private_executable_literal_remove_
=== RUN   TestFileAttr/modify_private_executable_literal_run_name
=== RUN   TestFileAttr/modify_private_executable_literal_symlink_name
=== RUN   TestFileAttr/modify_private_executable_template.tmpl.literal
=== RUN   TestFileAttr/modify_encrypted_private_executable_dot_name
=== RUN   TestFileAttr/modify_encrypted_private_executable_literal_create_name
=== RUN   TestFileAttr/modify_encrypted_private_executable_literal_dot_name
=== RUN   TestFileAttr/modify_encrypted_private_executable_exact_name
=== RUN   TestFileAttr/modify_encrypted_private_executable_literal_literal_name
=== RUN   TestFileAttr/modify_encrypted_private_executable_literal_literal_name#01
=== RUN   TestFileAttr/modify_encrypted_private_executable_literal_modify_name
=== RUN   TestFileAttr/modify_encrypted_private_executable_name.literal.literal
=== RUN   TestFileAttr/modify_encrypted_private_executable_name
=== RUN   TestFileAttr/modify_encrypted_private_executable_literal_remove_
=== RUN   TestFileAttr/modify_encrypted_private_executable_literal_run_name
=== RUN   TestFileAttr/modify_encrypted_private_executable_literal_symlink_name
=== RUN   TestFileAttr/modify_encrypted_private_executable_template.tmpl.literal
=== RUN   TestFileAttr/modify_readonly_dot_name
=== RUN   TestFileAttr/modify_readonly_literal_create_name
=== RUN   TestFileAttr/modify_readonly_literal_dot_name
=== RUN   TestFileAttr/modify_readonly_exact_name
=== RUN   TestFileAttr/modify_readonly_literal_literal_name
=== RUN   TestFileAttr/modify_readonly_literal_literal_name#01
=== RUN   TestFileAttr/modify_readonly_literal_modify_name
=== RUN   TestFileAttr/modify_readonly_name.literal.literal
=== RUN   TestFileAttr/modify_readonly_name
=== RUN   TestFileAttr/modify_readonly_literal_remove_
=== RUN   TestFileAttr/modify_readonly_literal_run_name
=== RUN   TestFileAttr/modify_readonly_literal_symlink_name
=== RUN   TestFileAttr/modify_readonly_template.tmpl.literal
=== RUN   TestFileAttr/modify_encrypted_readonly_dot_name
=== RUN   TestFileAttr/modify_encrypted_readonly_literal_create_name
=== RUN   TestFileAttr/modify_encrypted_readonly_literal_dot_name
=== RUN   TestFileAttr/modify_encrypted_readonly_exact_name
=== RUN   TestFileAttr/modify_encrypted_readonly_literal_literal_name
=== RUN   TestFileAttr/modify_encrypted_readonly_literal_literal_name#01
=== RUN   TestFileAttr/modify_encrypted_readonly_literal_modify_name
=== RUN   TestFileAttr/modify_encrypted_readonly_name.literal.literal
=== RUN   TestFileAttr/modify_encrypted_readonly_name
=== RUN   TestFileAttr/modify_encrypted_readonly_literal_remove_
=== RUN   TestFileAttr/modify_encrypted_readonly_literal_run_name
=== RUN   TestFileAttr/modify_encrypted_readonly_literal_symlink_name
=== RUN   TestFileAttr/modify_encrypted_readonly_template.tmpl.literal
=== RUN   TestFileAttr/modify_readonly_executable_dot_name
=== RUN   TestFileAttr/modify_readonly_executable_literal_create_name
=== RUN   TestFileAttr/modify_readonly_executable_literal_dot_name
=== RUN   TestFileAttr/modify_readonly_executable_exact_name
=== RUN   TestFileAttr/modify_readonly_executable_literal_literal_name
=== RUN   TestFileAttr/modify_readonly_executable_literal_literal_name#01
=== RUN   TestFileAttr/modify_readonly_executable_literal_modify_name
=== RUN   TestFileAttr/modify_readonly_executable_name.literal.literal
=== RUN   TestFileAttr/modify_readonly_executable_name
=== RUN   TestFileAttr/modify_readonly_executable_literal_remove_
=== RUN   TestFileAttr/modify_readonly_executable_literal_run_name
=== RUN   TestFileAttr/modify_readonly_executable_literal_symlink_name
=== RUN   TestFileAttr/modify_readonly_executable_template.tmpl.literal
=== RUN   TestFileAttr/modify_encrypted_readonly_executable_dot_name
=== RUN   TestFileAttr/modify_encrypted_readonly_executable_literal_create_name
=== RUN   TestFileAttr/modify_encrypted_readonly_executable_literal_dot_name
=== RUN   TestFileAttr/modify_encrypted_readonly_executable_exact_name
=== RUN   TestFileAttr/modify_encrypted_readonly_executable_literal_literal_name
=== RUN   TestFileAttr/modify_encrypted_readonly_executable_literal_literal_name#01
=== RUN   TestFileAttr/modify_encrypted_readonly_executable_literal_modify_name
=== RUN   TestFileAttr/modify_encrypted_readonly_executable_name.literal.literal
=== RUN   TestFileAttr/modify_encrypted_readonly_executable_name
=== RUN   TestFileAttr/modify_encrypted_readonly_executable_literal_remove_
=== RUN   TestFileAttr/modify_encrypted_readonly_executable_literal_run_name
=== RUN   TestFileAttr/modify_encrypted_readonly_executable_literal_symlink_name
=== RUN   TestFileAttr/modify_encrypted_readonly_executable_template.tmpl.literal
=== RUN   TestFileAttr/modify_private_readonly_dot_name
=== RUN   TestFileAttr/modify_private_readonly_literal_create_name
=== RUN   TestFileAttr/modify_private_readonly_literal_dot_name
=== RUN   TestFileAttr/modify_private_readonly_exact_name
=== RUN   TestFileAttr/modify_private_readonly_literal_literal_name
=== RUN   TestFileAttr/modify_private_readonly_literal_literal_name#01
=== RUN   TestFileAttr/modify_private_readonly_literal_modify_name
=== RUN   TestFileAttr/modify_private_readonly_name.literal.literal
=== RUN   TestFileAttr/modify_private_readonly_name
=== RUN   TestFileAttr/modify_private_readonly_literal_remove_
=== RUN   TestFileAttr/modify_private_readonly_literal_run_name
=== RUN   TestFileAttr/modify_private_readonly_literal_symlink_name
=== RUN   TestFileAttr/modify_private_readonly_template.tmpl.literal
=== RUN   TestFileAttr/modify_encrypted_private_readonly_dot_name
=== RUN   TestFileAttr/modify_encrypted_private_readonly_literal_create_name
=== RUN   TestFileAttr/modify_encrypted_private_readonly_literal_dot_name
=== RUN   TestFileAttr/modify_encrypted_private_readonly_exact_name
=== RUN   TestFileAttr/modify_encrypted_private_readonly_literal_literal_name
=== RUN   TestFileAttr/modify_encrypted_private_readonly_literal_literal_name#01
=== RUN   TestFileAttr/modify_encrypted_private_readonly_literal_modify_name
=== RUN   TestFileAttr/modify_encrypted_private_readonly_name.literal.literal
=== RUN   TestFileAttr/modify_encrypted_private_readonly_name
=== RUN   TestFileAttr/modify_encrypted_private_readonly_literal_remove_
=== RUN   TestFileAttr/modify_encrypted_private_readonly_literal_run_name
=== RUN   TestFileAttr/modify_encrypted_private_readonly_literal_symlink_name
=== RUN   TestFileAttr/modify_encrypted_private_readonly_template.tmpl.literal
=== RUN   TestFileAttr/modify_private_readonly_executable_dot_name
=== RUN   TestFileAttr/modify_private_readonly_executable_literal_create_name
=== RUN   TestFileAttr/modify_private_readonly_executable_literal_dot_name
=== RUN   TestFileAttr/modify_private_readonly_executable_exact_name
=== RUN   TestFileAttr/modify_private_readonly_executable_literal_literal_name
=== RUN   TestFileAttr/modify_private_readonly_executable_literal_literal_name#01
=== RUN   TestFileAttr/modify_private_readonly_executable_literal_modify_name
=== RUN   TestFileAttr/modify_private_readonly_executable_name.literal.literal
=== RUN   TestFileAttr/modify_private_readonly_executable_name
=== RUN   TestFileAttr/modify_private_readonly_executable_literal_remove_
=== RUN   TestFileAttr/modify_private_readonly_executable_literal_run_name
=== RUN   TestFileAttr/modify_private_readonly_executable_literal_symlink_name
=== RUN   TestFileAttr/modify_private_readonly_executable_template.tmpl.literal
=== RUN   TestFileAttr/modify_encrypted_private_readonly_executable_dot_name
=== RUN   TestFileAttr/modify_encrypted_private_readonly_executable_literal_create_name
=== RUN   TestFileAttr/modify_encrypted_private_readonly_executable_literal_dot_name
=== RUN   TestFileAttr/modify_encrypted_private_readonly_executable_exact_name
=== RUN   TestFileAttr/modify_encrypted_private_readonly_executable_literal_literal_name
=== RUN   TestFileAttr/modify_encrypted_private_readonly_executable_literal_literal_name#01
=== RUN   TestFileAttr/modify_encrypted_private_readonly_executable_literal_modify_name
=== RUN   TestFileAttr/modify_encrypted_private_readonly_executable_name.literal.literal
=== RUN   TestFileAttr/modify_encrypted_private_readonly_executable_name
=== RUN   TestFileAttr/modify_encrypted_private_readonly_executable_literal_remove_
=== RUN   TestFileAttr/modify_encrypted_private_readonly_executable_literal_run_name
=== RUN   TestFileAttr/modify_encrypted_private_readonly_executable_literal_symlink_name
=== RUN   TestFileAttr/modify_encrypted_private_readonly_executable_template.tmpl.literal
=== RUN   TestFileAttr/modify_dot_name.tmpl
=== RUN   TestFileAttr/modify_literal_create_name.tmpl
=== RUN   TestFileAttr/modify_literal_dot_name.tmpl
=== RUN   TestFileAttr/modify_exact_name.tmpl
=== RUN   TestFileAttr/modify_literal_literal_name.tmpl
=== RUN   TestFileAttr/modify_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/modify_literal_modify_name.tmpl
=== RUN   TestFileAttr/modify_name.literal.literal.tmpl
=== RUN   TestFileAttr/modify_name.tmpl
=== RUN   TestFileAttr/modify_literal_remove_.tmpl
=== RUN   TestFileAttr/modify_literal_run_name.tmpl
=== RUN   TestFileAttr/modify_literal_symlink_name.tmpl
=== RUN   TestFileAttr/modify_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/modify_encrypted_dot_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_literal_create_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_literal_dot_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_exact_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_literal_literal_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/modify_encrypted_literal_modify_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_name.literal.literal.tmpl
=== RUN   TestFileAttr/modify_encrypted_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_literal_remove_.tmpl
=== RUN   TestFileAttr/modify_encrypted_literal_run_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_literal_symlink_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/modify_executable_dot_name.tmpl
=== RUN   TestFileAttr/modify_executable_literal_create_name.tmpl
=== RUN   TestFileAttr/modify_executable_literal_dot_name.tmpl
=== RUN   TestFileAttr/modify_executable_exact_name.tmpl
=== RUN   TestFileAttr/modify_executable_literal_literal_name.tmpl
=== RUN   TestFileAttr/modify_executable_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/modify_executable_literal_modify_name.tmpl
=== RUN   TestFileAttr/modify_executable_name.literal.literal.tmpl
=== RUN   TestFileAttr/modify_executable_name.tmpl
=== RUN   TestFileAttr/modify_executable_literal_remove_.tmpl
=== RUN   TestFileAttr/modify_executable_literal_run_name.tmpl
=== RUN   TestFileAttr/modify_executable_literal_symlink_name.tmpl
=== RUN   TestFileAttr/modify_executable_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/modify_encrypted_executable_dot_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_executable_literal_create_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_executable_literal_dot_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_executable_exact_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_executable_literal_literal_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_executable_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/modify_encrypted_executable_literal_modify_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_executable_name.literal.literal.tmpl
=== RUN   TestFileAttr/modify_encrypted_executable_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_executable_literal_remove_.tmpl
=== RUN   TestFileAttr/modify_encrypted_executable_literal_run_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_executable_literal_symlink_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_executable_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/modify_private_dot_name.tmpl
=== RUN   TestFileAttr/modify_private_literal_create_name.tmpl
=== RUN   TestFileAttr/modify_private_literal_dot_name.tmpl
=== RUN   TestFileAttr/modify_private_exact_name.tmpl
=== RUN   TestFileAttr/modify_private_literal_literal_name.tmpl
=== RUN   TestFileAttr/modify_private_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/modify_private_literal_modify_name.tmpl
=== RUN   TestFileAttr/modify_private_name.literal.literal.tmpl
=== RUN   TestFileAttr/modify_private_name.tmpl
=== RUN   TestFileAttr/modify_private_literal_remove_.tmpl
=== RUN   TestFileAttr/modify_private_literal_run_name.tmpl
=== RUN   TestFileAttr/modify_private_literal_symlink_name.tmpl
=== RUN   TestFileAttr/modify_private_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/modify_encrypted_private_dot_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_private_literal_create_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_private_literal_dot_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_private_exact_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_private_literal_literal_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_private_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/modify_encrypted_private_literal_modify_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_private_name.literal.literal.tmpl
=== RUN   TestFileAttr/modify_encrypted_private_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_private_literal_remove_.tmpl
=== RUN   TestFileAttr/modify_encrypted_private_literal_run_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_private_literal_symlink_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_private_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/modify_private_executable_dot_name.tmpl
=== RUN   TestFileAttr/modify_private_executable_literal_create_name.tmpl
=== RUN   TestFileAttr/modify_private_executable_literal_dot_name.tmpl
=== RUN   TestFileAttr/modify_private_executable_exact_name.tmpl
=== RUN   TestFileAttr/modify_private_executable_literal_literal_name.tmpl
=== RUN   TestFileAttr/modify_private_executable_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/modify_private_executable_literal_modify_name.tmpl
=== RUN   TestFileAttr/modify_private_executable_name.literal.literal.tmpl
=== RUN   TestFileAttr/modify_private_executable_name.tmpl
=== RUN   TestFileAttr/modify_private_executable_literal_remove_.tmpl
=== RUN   TestFileAttr/modify_private_executable_literal_run_name.tmpl
=== RUN   TestFileAttr/modify_private_executable_literal_symlink_name.tmpl
=== RUN   TestFileAttr/modify_private_executable_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/modify_encrypted_private_executable_dot_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_private_executable_literal_create_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_private_executable_literal_dot_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_private_executable_exact_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_private_executable_literal_literal_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_private_executable_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/modify_encrypted_private_executable_literal_modify_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_private_executable_name.literal.literal.tmpl
=== RUN   TestFileAttr/modify_encrypted_private_executable_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_private_executable_literal_remove_.tmpl
=== RUN   TestFileAttr/modify_encrypted_private_executable_literal_run_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_private_executable_literal_symlink_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_private_executable_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/modify_readonly_dot_name.tmpl
=== RUN   TestFileAttr/modify_readonly_literal_create_name.tmpl
=== RUN   TestFileAttr/modify_readonly_literal_dot_name.tmpl
=== RUN   TestFileAttr/modify_readonly_exact_name.tmpl
=== RUN   TestFileAttr/modify_readonly_literal_literal_name.tmpl
=== RUN   TestFileAttr/modify_readonly_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/modify_readonly_literal_modify_name.tmpl
=== RUN   TestFileAttr/modify_readonly_name.literal.literal.tmpl
=== RUN   TestFileAttr/modify_readonly_name.tmpl
=== RUN   TestFileAttr/modify_readonly_literal_remove_.tmpl
=== RUN   TestFileAttr/modify_readonly_literal_run_name.tmpl
=== RUN   TestFileAttr/modify_readonly_literal_symlink_name.tmpl
=== RUN   TestFileAttr/modify_readonly_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/modify_encrypted_readonly_dot_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_readonly_literal_create_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_readonly_literal_dot_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_readonly_exact_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_readonly_literal_literal_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_readonly_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/modify_encrypted_readonly_literal_modify_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_readonly_name.literal.literal.tmpl
=== RUN   TestFileAttr/modify_encrypted_readonly_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_readonly_literal_remove_.tmpl
=== RUN   TestFileAttr/modify_encrypted_readonly_literal_run_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_readonly_literal_symlink_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_readonly_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/modify_readonly_executable_dot_name.tmpl
=== RUN   TestFileAttr/modify_readonly_executable_literal_create_name.tmpl
=== RUN   TestFileAttr/modify_readonly_executable_literal_dot_name.tmpl
=== RUN   TestFileAttr/modify_readonly_executable_exact_name.tmpl
=== RUN   TestFileAttr/modify_readonly_executable_literal_literal_name.tmpl
=== RUN   TestFileAttr/modify_readonly_executable_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/modify_readonly_executable_literal_modify_name.tmpl
=== RUN   TestFileAttr/modify_readonly_executable_name.literal.literal.tmpl
=== RUN   TestFileAttr/modify_readonly_executable_name.tmpl
=== RUN   TestFileAttr/modify_readonly_executable_literal_remove_.tmpl
=== RUN   TestFileAttr/modify_readonly_executable_literal_run_name.tmpl
=== RUN   TestFileAttr/modify_readonly_executable_literal_symlink_name.tmpl
=== RUN   TestFileAttr/modify_readonly_executable_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/modify_encrypted_readonly_executable_dot_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_readonly_executable_literal_create_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_readonly_executable_literal_dot_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_readonly_executable_exact_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_readonly_executable_literal_literal_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_readonly_executable_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/modify_encrypted_readonly_executable_literal_modify_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_readonly_executable_name.literal.literal.tmpl
=== RUN   TestFileAttr/modify_encrypted_readonly_executable_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_readonly_executable_literal_remove_.tmpl
=== RUN   TestFileAttr/modify_encrypted_readonly_executable_literal_run_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_readonly_executable_literal_symlink_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_readonly_executable_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/modify_private_readonly_dot_name.tmpl
=== RUN   TestFileAttr/modify_private_readonly_literal_create_name.tmpl
=== RUN   TestFileAttr/modify_private_readonly_literal_dot_name.tmpl
=== RUN   TestFileAttr/modify_private_readonly_exact_name.tmpl
=== RUN   TestFileAttr/modify_private_readonly_literal_literal_name.tmpl
=== RUN   TestFileAttr/modify_private_readonly_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/modify_private_readonly_literal_modify_name.tmpl
=== RUN   TestFileAttr/modify_private_readonly_name.literal.literal.tmpl
=== RUN   TestFileAttr/modify_private_readonly_name.tmpl
=== RUN   TestFileAttr/modify_private_readonly_literal_remove_.tmpl
=== RUN   TestFileAttr/modify_private_readonly_literal_run_name.tmpl
=== RUN   TestFileAttr/modify_private_readonly_literal_symlink_name.tmpl
=== RUN   TestFileAttr/modify_private_readonly_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/modify_encrypted_private_readonly_dot_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_private_readonly_literal_create_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_private_readonly_literal_dot_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_private_readonly_exact_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_private_readonly_literal_literal_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_private_readonly_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/modify_encrypted_private_readonly_literal_modify_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_private_readonly_name.literal.literal.tmpl
=== RUN   TestFileAttr/modify_encrypted_private_readonly_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_private_readonly_literal_remove_.tmpl
=== RUN   TestFileAttr/modify_encrypted_private_readonly_literal_run_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_private_readonly_literal_symlink_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_private_readonly_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/modify_private_readonly_executable_dot_name.tmpl
=== RUN   TestFileAttr/modify_private_readonly_executable_literal_create_name.tmpl
=== RUN   TestFileAttr/modify_private_readonly_executable_literal_dot_name.tmpl
=== RUN   TestFileAttr/modify_private_readonly_executable_exact_name.tmpl
=== RUN   TestFileAttr/modify_private_readonly_executable_literal_literal_name.tmpl
=== RUN   TestFileAttr/modify_private_readonly_executable_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/modify_private_readonly_executable_literal_modify_name.tmpl
=== RUN   TestFileAttr/modify_private_readonly_executable_name.literal.literal.tmpl
=== RUN   TestFileAttr/modify_private_readonly_executable_name.tmpl
=== RUN   TestFileAttr/modify_private_readonly_executable_literal_remove_.tmpl
=== RUN   TestFileAttr/modify_private_readonly_executable_literal_run_name.tmpl
=== RUN   TestFileAttr/modify_private_readonly_executable_literal_symlink_name.tmpl
=== RUN   TestFileAttr/modify_private_readonly_executable_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/modify_encrypted_private_readonly_executable_dot_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_private_readonly_executable_literal_create_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_private_readonly_executable_literal_dot_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_private_readonly_executable_exact_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_private_readonly_executable_literal_literal_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_private_readonly_executable_literal_literal_name.tmpl#01
=== RUN   TestFileAttr/modify_encrypted_private_readonly_executable_literal_modify_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_private_readonly_executable_name.literal.literal.tmpl
=== RUN   TestFileAttr/modify_encrypted_private_readonly_executable_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_private_readonly_executable_literal_remove_.tmpl
=== RUN   TestFileAttr/modify_encrypted_private_readonly_executable_literal_run_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_private_readonly_executable_literal_symlink_name.tmpl
=== RUN   TestFileAttr/modify_encrypted_private_readonly_executable_template.tmpl.literal.tmpl
=== RUN   TestFileAttr/remove_dot_name
=== RUN   TestFileAttr/remove_literal_create_name
=== RUN   TestFileAttr/remove_literal_dot_name
=== RUN   TestFileAttr/remove_exact_name
=== RUN   TestFileAttr/remove_literal_literal_name
=== RUN   TestFileAttr/remove_literal_literal_name#01
=== RUN   TestFileAttr/remove_literal_modify_name
=== RUN   TestFileAttr/remove_name.literal.literal
=== RUN   TestFileAttr/remove_name
=== RUN   TestFileAttr/remove_literal_remove_
=== RUN   TestFileAttr/remove_literal_run_name
=== RUN   TestFileAttr/remove_literal_symlink_name
=== RUN   TestFileAttr/remove_template.tmpl.literal
=== RUN   TestFileAttr/run_before_dot_name
=== RUN   TestFileAttr/run_once_before_dot_name
=== RUN   TestFileAttr/run_onchange_before_dot_name
=== RUN   TestFileAttr/run_before_literal_create_name
=== RUN   TestFileAttr/run_once_before_literal_create_name
=== RUN   TestFileAttr/run_onchange_before_literal_create_name
=== RUN   TestFileAttr/run_before_literal_dot_name
=== RUN   TestFileAttr/run_once_before_literal_dot_name
=== RUN   TestFileAttr/run_onchange_before_literal_dot_name
=== RUN   TestFileAttr/run_before_exact_name
=== RUN   TestFileAttr/run_once_before_exact_name
=== RUN   TestFileAttr/run_onchange_before_exact_name
=== RUN   TestFileAttr/run_before_literal_literal_name
=== RUN   TestFileAttr/run_once_before_literal_literal_name
=== RUN   TestFileAttr/run_onchange_before_literal_literal_name
=== RUN   TestFileAttr/run_before_literal_literal_name#01
=== RUN   TestFileAttr/run_once_before_literal_literal_name#01
=== RUN   TestFileAttr/run_onchange_before_literal_literal_name#01
=== RUN   TestFileAttr/run_before_literal_modify_name
=== RUN   TestFileAttr/run_once_before_literal_modify_name
=== RUN   TestFileAttr/run_onchange_before_literal_modify_name
=== RUN   TestFileAttr/run_before_name.literal.literal
=== RUN   TestFileAttr/run_once_before_name.literal.literal
=== RUN   TestFileAttr/run_onchange_before_name.literal.literal
=== RUN   TestFileAttr/run_before_name
=== RUN   TestFileAttr/run_once_before_name
=== RUN   TestFileAttr/run_onchange_before_name
=== RUN   TestFileAttr/run_before_literal_remove_
=== RUN   TestFileAttr/run_once_before_literal_remove_
=== RUN   TestFileAttr/run_onchange_before_literal_remove_
=== RUN   TestFileAttr/run_before_literal_run_name
=== RUN   TestFileAttr/run_once_before_literal_run_name
=== RUN   TestFileAttr/run_onchange_before_literal_run_name
=== RUN   TestFileAttr/run_before_literal_symlink_name
=== RUN   TestFileAttr/run_once_before_literal_symlink_name
=== RUN   TestFileAttr/run_onchange_before_literal_symlink_name
=== RUN   TestFileAttr/run_before_template.tmpl.literal
=== RUN   TestFileAttr/run_once_before_template.tmpl.literal
=== RUN   TestFileAttr/run_onchange_before_template.tmpl.literal
=== RUN   TestFileAttr/run_dot_name
=== RUN   TestFileAttr/run_once_dot_name
=== RUN   TestFileAttr/run_onchange_dot_name
=== RUN   TestFileAttr/run_literal_create_name
=== RUN   TestFileAttr/run_once_literal_create_name
=== RUN   TestFileAttr/run_onchange_literal_create_name
=== RUN   TestFileAttr/run_literal_dot_name
=== RUN   TestFileAttr/run_once_literal_dot_name
=== RUN   TestFileAttr/run_onchange_literal_dot_name
=== RUN   TestFileAttr/run_exact_name
=== RUN   TestFileAttr/run_once_exact_name
=== RUN   TestFileAttr/run_onchange_exact_name
=== RUN   TestFileAttr/run_literal_literal_name
=== RUN   TestFileAttr/run_once_literal_literal_name
=== RUN   TestFileAttr/run_onchange_literal_literal_name
=== RUN   TestFileAttr/run_literal_literal_name#01
=== RUN   TestFileAttr/run_once_literal_literal_name#01
=== RUN   TestFileAttr/run_onchange_literal_literal_name#01
=== RUN   TestFileAttr/run_literal_modify_name
=== RUN   TestFileAttr/run_once_literal_modify_name
=== RUN   TestFileAttr/run_onchange_literal_modify_name
=== RUN   TestFileAttr/run_name.literal.literal
=== RUN   TestFileAttr/run_once_name.literal.literal
=== RUN   TestFileAttr/run_onchange_name.literal.literal
=== RUN   TestFileAttr/run_name
=== RUN   TestFileAttr/run_once_name
=== RUN   TestFileAttr/run_onchange_name
=== RUN   TestFileAttr/run_literal_remove_
=== RUN   TestFileAttr/run_once_literal_remove_
=== RUN   TestFileAttr/run_onchange_literal_remove_
=== RUN   TestFileAttr/run_literal_run_name
=== RUN   TestFileAttr/run_once_literal_run_name
=== RUN   TestFileAttr/run_onchange_literal_run_name
=== RUN   TestFileAttr/run_literal_symlink_name
=== RUN   TestFileAttr/run_once_literal_symlink_name
=== RUN   TestFileAttr/run_onchange_literal_symlink_name
=== RUN   TestFileAttr/run_template.tmpl.literal
=== RUN   TestFileAttr/run_once_template.tmpl.literal
=== RUN   TestFileAttr/run_onchange_template.tmpl.literal
=== RUN   TestFileAttr/run_after_dot_name
=== RUN   TestFileAttr/run_once_after_dot_name
=== RUN   TestFileAttr/run_onchange_after_dot_name
=== RUN   TestFileAttr/run_after_literal_create_name
=== RUN   TestFileAttr/run_once_after_literal_create_name
=== RUN   TestFileAttr/run_onchange_after_literal_create_name
=== RUN   TestFileAttr/run_after_literal_dot_name
=== RUN   TestFileAttr/run_once_after_literal_dot_name
=== RUN   TestFileAttr/run_onchange_after_literal_dot_name
=== RUN   TestFileAttr/run_after_exact_name
=== RUN   TestFileAttr/run_once_after_exact_name
=== RUN   TestFileAttr/run_onchange_after_exact_name
=== RUN   TestFileAttr/run_after_literal_literal_name
=== RUN   TestFileAttr/run_once_after_literal_literal_name
=== RUN   TestFileAttr/run_onchange_after_literal_literal_name
=== RUN   TestFileAttr/run_after_literal_literal_name#01
=== RUN   TestFileAttr/run_once_after_literal_literal_name#01
=== RUN   TestFileAttr/run_onchange_after_literal_literal_name#01
=== RUN   TestFileAttr/run_after_literal_modify_name
=== RUN   TestFileAttr/run_once_after_literal_modify_name
=== RUN   TestFileAttr/run_onchange_after_literal_modify_name
=== RUN   TestFileAttr/run_after_name.literal.literal
=== RUN   TestFileAttr/run_once_after_name.literal.literal
=== RUN   TestFileAttr/run_onchange_after_name.literal.literal
=== RUN   TestFileAttr/run_after_name
=== RUN   TestFileAttr/run_once_after_name
=== RUN   TestFileAttr/run_onchange_after_name
=== RUN   TestFileAttr/run_after_literal_remove_
=== RUN   TestFileAttr/run_once_after_literal_remove_
=== RUN   TestFileAttr/run_onchange_after_literal_remove_
=== RUN   TestFileAttr/run_after_literal_run_name
=== RUN   TestFileAttr/run_once_after_literal_run_name
=== RUN   TestFileAttr/run_onchange_after_literal_run_name
=== RUN   TestFileAttr/run_after_literal_symlink_name
=== RUN   TestFileAttr/run_once_after_literal_symlink_name
=== RUN   TestFileAttr/run_onchange_after_literal_symlink_name
=== RUN   TestFileAttr/run_after_template.tmpl.literal
=== RUN   TestFileAttr/run_once_after_template.tmpl.literal
=== RUN   TestFileAttr/run_onchange_after_template.tmpl.literal
=== RUN   TestFileAttr/symlink_dot_name
=== RUN   TestFileAttr/symlink_literal_create_name
=== RUN   TestFileAttr/symlink_literal_dot_name
=== RUN   TestFileAttr/symlink_exact_name
=== RUN   TestFileAttr/symlink_literal_literal_name
=== RUN   TestFileAttr/symlink_literal_literal_name#01
=== RUN   TestFileAttr/symlink_literal_modify_name
=== RUN   TestFileAttr/symlink_name.literal.literal
=== RUN   TestFileAttr/symlink_name
=== RUN   TestFileAttr/symlink_literal_remove_
=== RUN   TestFileAttr/symlink_literal_run_name
=== RUN   TestFileAttr/symlink_literal_symlink_name
=== RUN   TestFileAttr/symlink_template.tmpl.literal
--- PASS: TestFileAttr (0.15s)
    --- PASS: TestFileAttr/create_dot_name (0.00s)
    --- PASS: TestFileAttr/create_literal_create_name (0.00s)
    --- PASS: TestFileAttr/create_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/create_exact_name (0.00s)
    --- PASS: TestFileAttr/create_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/create_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/create_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/create_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/create_name (0.00s)
    --- PASS: TestFileAttr/create_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/create_literal_run_name (0.00s)
    --- PASS: TestFileAttr/create_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/create_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/create_empty_dot_name (0.00s)
    --- PASS: TestFileAttr/create_empty_literal_create_name (0.00s)
    --- PASS: TestFileAttr/create_empty_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/create_empty_exact_name (0.00s)
    --- PASS: TestFileAttr/create_empty_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/create_empty_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/create_empty_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/create_empty_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/create_empty_name (0.00s)
    --- PASS: TestFileAttr/create_empty_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/create_empty_literal_run_name (0.00s)
    --- PASS: TestFileAttr/create_empty_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/create_empty_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/create_encrypted_dot_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_literal_create_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_exact_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/create_encrypted_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/create_encrypted_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/create_encrypted_literal_run_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/create_encrypted_empty_dot_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_empty_literal_create_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_empty_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_empty_exact_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_empty_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_empty_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/create_encrypted_empty_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_empty_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/create_encrypted_empty_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_empty_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/create_encrypted_empty_literal_run_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_empty_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_empty_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/create_executable_dot_name (0.00s)
    --- PASS: TestFileAttr/create_executable_literal_create_name (0.00s)
    --- PASS: TestFileAttr/create_executable_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/create_executable_exact_name (0.00s)
    --- PASS: TestFileAttr/create_executable_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/create_executable_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/create_executable_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/create_executable_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/create_executable_name (0.00s)
    --- PASS: TestFileAttr/create_executable_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/create_executable_literal_run_name (0.00s)
    --- PASS: TestFileAttr/create_executable_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/create_executable_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/create_empty_executable_dot_name (0.00s)
    --- PASS: TestFileAttr/create_empty_executable_literal_create_name (0.00s)
    --- PASS: TestFileAttr/create_empty_executable_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/create_empty_executable_exact_name (0.00s)
    --- PASS: TestFileAttr/create_empty_executable_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/create_empty_executable_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/create_empty_executable_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/create_empty_executable_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/create_empty_executable_name (0.00s)
    --- PASS: TestFileAttr/create_empty_executable_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/create_empty_executable_literal_run_name (0.00s)
    --- PASS: TestFileAttr/create_empty_executable_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/create_empty_executable_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/create_encrypted_executable_dot_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_executable_literal_create_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_executable_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_executable_exact_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_executable_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_executable_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/create_encrypted_executable_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_executable_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/create_encrypted_executable_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_executable_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/create_encrypted_executable_literal_run_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_executable_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_executable_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/create_encrypted_empty_executable_dot_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_empty_executable_literal_create_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_empty_executable_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_empty_executable_exact_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_empty_executable_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_empty_executable_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/create_encrypted_empty_executable_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_empty_executable_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/create_encrypted_empty_executable_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_empty_executable_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/create_encrypted_empty_executable_literal_run_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_empty_executable_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_empty_executable_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/create_private_dot_name (0.00s)
    --- PASS: TestFileAttr/create_private_literal_create_name (0.00s)
    --- PASS: TestFileAttr/create_private_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/create_private_exact_name (0.00s)
    --- PASS: TestFileAttr/create_private_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/create_private_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/create_private_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/create_private_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/create_private_name (0.00s)
    --- PASS: TestFileAttr/create_private_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/create_private_literal_run_name (0.00s)
    --- PASS: TestFileAttr/create_private_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/create_private_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/create_private_empty_dot_name (0.00s)
    --- PASS: TestFileAttr/create_private_empty_literal_create_name (0.00s)
    --- PASS: TestFileAttr/create_private_empty_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/create_private_empty_exact_name (0.00s)
    --- PASS: TestFileAttr/create_private_empty_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/create_private_empty_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/create_private_empty_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/create_private_empty_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/create_private_empty_name (0.00s)
    --- PASS: TestFileAttr/create_private_empty_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/create_private_empty_literal_run_name (0.00s)
    --- PASS: TestFileAttr/create_private_empty_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/create_private_empty_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_dot_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_literal_create_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_exact_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_literal_run_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_empty_dot_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_empty_literal_create_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_empty_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_empty_exact_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_empty_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_empty_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_empty_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_empty_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_empty_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_empty_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_empty_literal_run_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_empty_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_empty_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/create_private_executable_dot_name (0.00s)
    --- PASS: TestFileAttr/create_private_executable_literal_create_name (0.00s)
    --- PASS: TestFileAttr/create_private_executable_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/create_private_executable_exact_name (0.00s)
    --- PASS: TestFileAttr/create_private_executable_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/create_private_executable_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/create_private_executable_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/create_private_executable_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/create_private_executable_name (0.00s)
    --- PASS: TestFileAttr/create_private_executable_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/create_private_executable_literal_run_name (0.00s)
    --- PASS: TestFileAttr/create_private_executable_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/create_private_executable_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/create_private_empty_executable_dot_name (0.00s)
    --- PASS: TestFileAttr/create_private_empty_executable_literal_create_name (0.00s)
    --- PASS: TestFileAttr/create_private_empty_executable_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/create_private_empty_executable_exact_name (0.00s)
    --- PASS: TestFileAttr/create_private_empty_executable_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/create_private_empty_executable_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/create_private_empty_executable_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/create_private_empty_executable_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/create_private_empty_executable_name (0.00s)
    --- PASS: TestFileAttr/create_private_empty_executable_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/create_private_empty_executable_literal_run_name (0.00s)
    --- PASS: TestFileAttr/create_private_empty_executable_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/create_private_empty_executable_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_executable_dot_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_executable_literal_create_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_executable_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_executable_exact_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_executable_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_executable_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_executable_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_executable_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_executable_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_executable_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_executable_literal_run_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_executable_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_executable_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_empty_executable_dot_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_empty_executable_literal_create_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_empty_executable_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_empty_executable_exact_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_empty_executable_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_empty_executable_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_empty_executable_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_empty_executable_name.literal.literal (0.01s)
    --- PASS: TestFileAttr/create_encrypted_private_empty_executable_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_empty_executable_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_empty_executable_literal_run_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_empty_executable_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_empty_executable_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/create_readonly_dot_name (0.00s)
    --- PASS: TestFileAttr/create_readonly_literal_create_name (0.00s)
    --- PASS: TestFileAttr/create_readonly_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/create_readonly_exact_name (0.00s)
    --- PASS: TestFileAttr/create_readonly_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/create_readonly_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/create_readonly_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/create_readonly_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/create_readonly_name (0.00s)
    --- PASS: TestFileAttr/create_readonly_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/create_readonly_literal_run_name (0.00s)
    --- PASS: TestFileAttr/create_readonly_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/create_readonly_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/create_readonly_empty_dot_name (0.00s)
    --- PASS: TestFileAttr/create_readonly_empty_literal_create_name (0.00s)
    --- PASS: TestFileAttr/create_readonly_empty_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/create_readonly_empty_exact_name (0.00s)
    --- PASS: TestFileAttr/create_readonly_empty_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/create_readonly_empty_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/create_readonly_empty_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/create_readonly_empty_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/create_readonly_empty_name (0.00s)
    --- PASS: TestFileAttr/create_readonly_empty_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/create_readonly_empty_literal_run_name (0.00s)
    --- PASS: TestFileAttr/create_readonly_empty_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/create_readonly_empty_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_dot_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_literal_create_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_exact_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_literal_run_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_empty_dot_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_empty_literal_create_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_empty_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_empty_exact_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_empty_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_empty_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_empty_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_empty_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_empty_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_empty_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_empty_literal_run_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_empty_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_empty_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/create_readonly_executable_dot_name (0.00s)
    --- PASS: TestFileAttr/create_readonly_executable_literal_create_name (0.00s)
    --- PASS: TestFileAttr/create_readonly_executable_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/create_readonly_executable_exact_name (0.00s)
    --- PASS: TestFileAttr/create_readonly_executable_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/create_readonly_executable_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/create_readonly_executable_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/create_readonly_executable_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/create_readonly_executable_name (0.00s)
    --- PASS: TestFileAttr/create_readonly_executable_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/create_readonly_executable_literal_run_name (0.00s)
    --- PASS: TestFileAttr/create_readonly_executable_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/create_readonly_executable_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/create_readonly_empty_executable_dot_name (0.00s)
    --- PASS: TestFileAttr/create_readonly_empty_executable_literal_create_name (0.00s)
    --- PASS: TestFileAttr/create_readonly_empty_executable_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/create_readonly_empty_executable_exact_name (0.00s)
    --- PASS: TestFileAttr/create_readonly_empty_executable_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/create_readonly_empty_executable_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/create_readonly_empty_executable_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/create_readonly_empty_executable_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/create_readonly_empty_executable_name (0.00s)
    --- PASS: TestFileAttr/create_readonly_empty_executable_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/create_readonly_empty_executable_literal_run_name (0.00s)
    --- PASS: TestFileAttr/create_readonly_empty_executable_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/create_readonly_empty_executable_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_executable_dot_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_executable_literal_create_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_executable_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_executable_exact_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_executable_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_executable_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_executable_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_executable_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_executable_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_executable_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_executable_literal_run_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_executable_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_executable_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_empty_executable_dot_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_empty_executable_literal_create_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_empty_executable_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_empty_executable_exact_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_empty_executable_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_empty_executable_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_empty_executable_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_empty_executable_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_empty_executable_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_empty_executable_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_empty_executable_literal_run_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_empty_executable_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_empty_executable_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_dot_name (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_literal_create_name (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_exact_name (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_name (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_literal_run_name (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_empty_dot_name (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_empty_literal_create_name (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_empty_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_empty_exact_name (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_empty_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_empty_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_empty_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_empty_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_empty_name (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_empty_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_empty_literal_run_name (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_empty_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_empty_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_dot_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_literal_create_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_exact_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_literal_run_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_empty_dot_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_empty_literal_create_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_empty_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_empty_exact_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_empty_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_empty_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_empty_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_empty_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_empty_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_empty_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_empty_literal_run_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_empty_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_empty_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_executable_dot_name (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_executable_literal_create_name (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_executable_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_executable_exact_name (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_executable_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_executable_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_executable_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_executable_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_executable_name (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_executable_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_executable_literal_run_name (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_executable_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_executable_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_empty_executable_dot_name (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_empty_executable_literal_create_name (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_empty_executable_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_empty_executable_exact_name (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_empty_executable_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_empty_executable_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_empty_executable_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_empty_executable_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_empty_executable_name (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_empty_executable_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_empty_executable_literal_run_name (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_empty_executable_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_empty_executable_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_executable_dot_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_executable_literal_create_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_executable_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_executable_exact_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_executable_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_executable_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_executable_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_executable_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_executable_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_executable_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_executable_literal_run_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_executable_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_executable_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_empty_executable_dot_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_empty_executable_literal_create_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_empty_executable_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_empty_executable_exact_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_empty_executable_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_empty_executable_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_empty_executable_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_empty_executable_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_empty_executable_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_empty_executable_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_empty_executable_literal_run_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_empty_executable_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_empty_executable_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/create_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/create_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/create_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_empty_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_empty_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_empty_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_empty_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_empty_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_empty_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/create_empty_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_empty_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_empty_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_empty_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/create_empty_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_empty_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_empty_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/create_encrypted_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_literal_symlink_name.tmpl (0.01s)
    --- PASS: TestFileAttr/create_encrypted_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_empty_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_empty_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_empty_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_empty_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_empty_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_empty_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/create_encrypted_empty_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_empty_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_empty_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_empty_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_empty_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_empty_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_empty_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_executable_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_executable_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_executable_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_executable_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_executable_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_executable_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/create_executable_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_executable_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_executable_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_executable_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/create_executable_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_executable_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_executable_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_empty_executable_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_empty_executable_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_empty_executable_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_empty_executable_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_empty_executable_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_empty_executable_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/create_empty_executable_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_empty_executable_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_empty_executable_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_empty_executable_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/create_empty_executable_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_empty_executable_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_empty_executable_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_executable_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_executable_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_executable_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_executable_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_executable_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_executable_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/create_encrypted_executable_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_executable_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_executable_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_executable_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_executable_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_executable_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_executable_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_empty_executable_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_empty_executable_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_empty_executable_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_empty_executable_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_empty_executable_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_empty_executable_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/create_encrypted_empty_executable_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_empty_executable_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_empty_executable_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_empty_executable_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_empty_executable_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_empty_executable_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_empty_executable_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/create_private_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_empty_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_empty_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_empty_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_empty_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_empty_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_empty_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/create_private_empty_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_empty_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_empty_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_empty_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_empty_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_empty_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_empty_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_empty_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_empty_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_empty_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_empty_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_empty_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_empty_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_empty_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_empty_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_empty_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_empty_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_empty_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_empty_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_empty_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_executable_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_executable_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_executable_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_executable_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_executable_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_executable_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/create_private_executable_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_executable_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_executable_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_executable_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_executable_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_executable_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_executable_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_empty_executable_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_empty_executable_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_empty_executable_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_empty_executable_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_empty_executable_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_empty_executable_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/create_private_empty_executable_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_empty_executable_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_empty_executable_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_empty_executable_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_empty_executable_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_empty_executable_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_empty_executable_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_executable_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_executable_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_executable_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_executable_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_executable_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_executable_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_executable_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_executable_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_executable_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_executable_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_executable_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_executable_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_executable_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_empty_executable_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_empty_executable_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_empty_executable_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_empty_executable_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_empty_executable_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_empty_executable_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_empty_executable_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_empty_executable_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_empty_executable_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_empty_executable_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_empty_executable_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_empty_executable_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_empty_executable_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_readonly_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_readonly_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_readonly_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_readonly_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_readonly_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_readonly_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/create_readonly_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_readonly_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_readonly_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_readonly_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/create_readonly_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_readonly_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_readonly_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_readonly_empty_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_readonly_empty_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_readonly_empty_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_readonly_empty_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_readonly_empty_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_readonly_empty_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/create_readonly_empty_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_readonly_empty_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_readonly_empty_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_readonly_empty_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/create_readonly_empty_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_readonly_empty_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_readonly_empty_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_empty_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_empty_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_empty_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_empty_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_empty_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_empty_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_empty_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_empty_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_empty_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_empty_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_empty_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_empty_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_empty_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_readonly_executable_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_readonly_executable_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_readonly_executable_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_readonly_executable_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_readonly_executable_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_readonly_executable_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/create_readonly_executable_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_readonly_executable_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_readonly_executable_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_readonly_executable_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/create_readonly_executable_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_readonly_executable_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_readonly_executable_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_readonly_empty_executable_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_readonly_empty_executable_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_readonly_empty_executable_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_readonly_empty_executable_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_readonly_empty_executable_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_readonly_empty_executable_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/create_readonly_empty_executable_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_readonly_empty_executable_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_readonly_empty_executable_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_readonly_empty_executable_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/create_readonly_empty_executable_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_readonly_empty_executable_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_readonly_empty_executable_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_executable_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_executable_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_executable_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_executable_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_executable_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_executable_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_executable_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_executable_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_executable_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_executable_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_executable_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_executable_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_executable_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_empty_executable_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_empty_executable_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_empty_executable_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_empty_executable_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_empty_executable_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_empty_executable_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_empty_executable_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_empty_executable_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_empty_executable_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_empty_executable_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_empty_executable_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_empty_executable_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_readonly_empty_executable_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_empty_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_empty_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_empty_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_empty_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_empty_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_empty_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_empty_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_empty_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_empty_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_empty_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_empty_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_empty_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_empty_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_empty_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_empty_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_empty_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_empty_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_empty_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_empty_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_empty_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_empty_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_empty_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_empty_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_empty_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_empty_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_empty_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_executable_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_executable_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_executable_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_executable_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_executable_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_executable_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_executable_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_executable_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_executable_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_executable_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_executable_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_executable_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_executable_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_empty_executable_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_empty_executable_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_empty_executable_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_empty_executable_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_empty_executable_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_empty_executable_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_empty_executable_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_empty_executable_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_empty_executable_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_empty_executable_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_empty_executable_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_empty_executable_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_private_readonly_empty_executable_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_executable_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_executable_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_executable_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_executable_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_executable_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_executable_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_executable_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_executable_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_executable_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_executable_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_executable_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_executable_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_executable_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_empty_executable_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_empty_executable_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_empty_executable_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_empty_executable_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_empty_executable_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_empty_executable_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_empty_executable_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_empty_executable_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_empty_executable_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_empty_executable_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_empty_executable_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_empty_executable_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/create_encrypted_private_readonly_empty_executable_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/dot_name (0.00s)
    --- PASS: TestFileAttr/literal_create_name (0.00s)
    --- PASS: TestFileAttr/literal_dot_name (0.00s)
    --- PASS: TestFileAttr/exact_name (0.00s)
    --- PASS: TestFileAttr/literal_literal_name (0.00s)
    --- PASS: TestFileAttr/literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/literal_modify_name (0.00s)
    --- PASS: TestFileAttr/name.literal.literal (0.00s)
    --- PASS: TestFileAttr/name (0.00s)
    --- PASS: TestFileAttr/literal_remove_ (0.00s)
    --- PASS: TestFileAttr/literal_run_name (0.00s)
    --- PASS: TestFileAttr/literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/empty_dot_name (0.00s)
    --- PASS: TestFileAttr/empty_literal_create_name (0.00s)
    --- PASS: TestFileAttr/empty_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/empty_exact_name (0.00s)
    --- PASS: TestFileAttr/empty_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/empty_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/empty_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/empty_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/empty_name (0.00s)
    --- PASS: TestFileAttr/empty_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/empty_literal_run_name (0.00s)
    --- PASS: TestFileAttr/empty_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/empty_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/encrypted_dot_name (0.00s)
    --- PASS: TestFileAttr/encrypted_literal_create_name (0.00s)
    --- PASS: TestFileAttr/encrypted_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/encrypted_exact_name (0.00s)
    --- PASS: TestFileAttr/encrypted_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/encrypted_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/encrypted_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/encrypted_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/encrypted_name (0.00s)
    --- PASS: TestFileAttr/encrypted_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/encrypted_literal_run_name (0.00s)
    --- PASS: TestFileAttr/encrypted_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/encrypted_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/encrypted_empty_dot_name (0.00s)
    --- PASS: TestFileAttr/encrypted_empty_literal_create_name (0.00s)
    --- PASS: TestFileAttr/encrypted_empty_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/encrypted_empty_exact_name (0.00s)
    --- PASS: TestFileAttr/encrypted_empty_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/encrypted_empty_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/encrypted_empty_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/encrypted_empty_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/encrypted_empty_name (0.00s)
    --- PASS: TestFileAttr/encrypted_empty_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/encrypted_empty_literal_run_name (0.00s)
    --- PASS: TestFileAttr/encrypted_empty_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/encrypted_empty_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/executable_dot_name (0.00s)
    --- PASS: TestFileAttr/executable_literal_create_name (0.00s)
    --- PASS: TestFileAttr/executable_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/executable_exact_name (0.00s)
    --- PASS: TestFileAttr/executable_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/executable_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/executable_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/executable_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/executable_name (0.00s)
    --- PASS: TestFileAttr/executable_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/executable_literal_run_name (0.00s)
    --- PASS: TestFileAttr/executable_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/executable_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/empty_executable_dot_name (0.00s)
    --- PASS: TestFileAttr/empty_executable_literal_create_name (0.00s)
    --- PASS: TestFileAttr/empty_executable_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/empty_executable_exact_name (0.00s)
    --- PASS: TestFileAttr/empty_executable_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/empty_executable_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/empty_executable_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/empty_executable_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/empty_executable_name (0.00s)
    --- PASS: TestFileAttr/empty_executable_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/empty_executable_literal_run_name (0.00s)
    --- PASS: TestFileAttr/empty_executable_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/empty_executable_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/encrypted_executable_dot_name (0.00s)
    --- PASS: TestFileAttr/encrypted_executable_literal_create_name (0.00s)
    --- PASS: TestFileAttr/encrypted_executable_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/encrypted_executable_exact_name (0.00s)
    --- PASS: TestFileAttr/encrypted_executable_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/encrypted_executable_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/encrypted_executable_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/encrypted_executable_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/encrypted_executable_name (0.00s)
    --- PASS: TestFileAttr/encrypted_executable_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/encrypted_executable_literal_run_name (0.00s)
    --- PASS: TestFileAttr/encrypted_executable_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/encrypted_executable_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/encrypted_empty_executable_dot_name (0.00s)
    --- PASS: TestFileAttr/encrypted_empty_executable_literal_create_name (0.00s)
    --- PASS: TestFileAttr/encrypted_empty_executable_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/encrypted_empty_executable_exact_name (0.00s)
    --- PASS: TestFileAttr/encrypted_empty_executable_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/encrypted_empty_executable_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/encrypted_empty_executable_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/encrypted_empty_executable_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/encrypted_empty_executable_name (0.00s)
    --- PASS: TestFileAttr/encrypted_empty_executable_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/encrypted_empty_executable_literal_run_name (0.00s)
    --- PASS: TestFileAttr/encrypted_empty_executable_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/encrypted_empty_executable_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/private_dot_name (0.00s)
    --- PASS: TestFileAttr/private_literal_create_name (0.00s)
    --- PASS: TestFileAttr/private_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/private_exact_name (0.00s)
    --- PASS: TestFileAttr/private_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/private_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/private_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/private_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/private_name (0.00s)
    --- PASS: TestFileAttr/private_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/private_literal_run_name (0.00s)
    --- PASS: TestFileAttr/private_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/private_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/private_empty_dot_name (0.00s)
    --- PASS: TestFileAttr/private_empty_literal_create_name (0.00s)
    --- PASS: TestFileAttr/private_empty_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/private_empty_exact_name (0.00s)
    --- PASS: TestFileAttr/private_empty_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/private_empty_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/private_empty_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/private_empty_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/private_empty_name (0.00s)
    --- PASS: TestFileAttr/private_empty_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/private_empty_literal_run_name (0.00s)
    --- PASS: TestFileAttr/private_empty_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/private_empty_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/encrypted_private_dot_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_literal_create_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_exact_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/encrypted_private_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/encrypted_private_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/encrypted_private_literal_run_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/encrypted_private_empty_dot_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_empty_literal_create_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_empty_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_empty_exact_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_empty_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_empty_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/encrypted_private_empty_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_empty_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/encrypted_private_empty_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_empty_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/encrypted_private_empty_literal_run_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_empty_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_empty_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/private_executable_dot_name (0.00s)
    --- PASS: TestFileAttr/private_executable_literal_create_name (0.00s)
    --- PASS: TestFileAttr/private_executable_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/private_executable_exact_name (0.00s)
    --- PASS: TestFileAttr/private_executable_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/private_executable_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/private_executable_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/private_executable_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/private_executable_name (0.00s)
    --- PASS: TestFileAttr/private_executable_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/private_executable_literal_run_name (0.00s)
    --- PASS: TestFileAttr/private_executable_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/private_executable_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/private_empty_executable_dot_name (0.00s)
    --- PASS: TestFileAttr/private_empty_executable_literal_create_name (0.00s)
    --- PASS: TestFileAttr/private_empty_executable_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/private_empty_executable_exact_name (0.00s)
    --- PASS: TestFileAttr/private_empty_executable_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/private_empty_executable_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/private_empty_executable_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/private_empty_executable_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/private_empty_executable_name (0.00s)
    --- PASS: TestFileAttr/private_empty_executable_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/private_empty_executable_literal_run_name (0.00s)
    --- PASS: TestFileAttr/private_empty_executable_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/private_empty_executable_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/encrypted_private_executable_dot_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_executable_literal_create_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_executable_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_executable_exact_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_executable_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_executable_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/encrypted_private_executable_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_executable_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/encrypted_private_executable_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_executable_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/encrypted_private_executable_literal_run_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_executable_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_executable_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/encrypted_private_empty_executable_dot_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_empty_executable_literal_create_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_empty_executable_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_empty_executable_exact_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_empty_executable_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_empty_executable_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/encrypted_private_empty_executable_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_empty_executable_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/encrypted_private_empty_executable_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_empty_executable_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/encrypted_private_empty_executable_literal_run_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_empty_executable_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_empty_executable_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/readonly_dot_name (0.00s)
    --- PASS: TestFileAttr/readonly_literal_create_name (0.00s)
    --- PASS: TestFileAttr/readonly_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/readonly_exact_name (0.00s)
    --- PASS: TestFileAttr/readonly_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/readonly_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/readonly_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/readonly_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/readonly_name (0.00s)
    --- PASS: TestFileAttr/readonly_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/readonly_literal_run_name (0.00s)
    --- PASS: TestFileAttr/readonly_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/readonly_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/readonly_empty_dot_name (0.00s)
    --- PASS: TestFileAttr/readonly_empty_literal_create_name (0.00s)
    --- PASS: TestFileAttr/readonly_empty_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/readonly_empty_exact_name (0.00s)
    --- PASS: TestFileAttr/readonly_empty_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/readonly_empty_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/readonly_empty_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/readonly_empty_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/readonly_empty_name (0.00s)
    --- PASS: TestFileAttr/readonly_empty_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/readonly_empty_literal_run_name (0.00s)
    --- PASS: TestFileAttr/readonly_empty_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/readonly_empty_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_dot_name (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_literal_create_name (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_exact_name (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_name (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_literal_run_name (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_empty_dot_name (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_empty_literal_create_name (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_empty_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_empty_exact_name (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_empty_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_empty_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_empty_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_empty_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_empty_name (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_empty_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_empty_literal_run_name (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_empty_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_empty_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/readonly_executable_dot_name (0.00s)
    --- PASS: TestFileAttr/readonly_executable_literal_create_name (0.00s)
    --- PASS: TestFileAttr/readonly_executable_literal_dot_name (0.01s)
    --- PASS: TestFileAttr/readonly_executable_exact_name (0.00s)
    --- PASS: TestFileAttr/readonly_executable_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/readonly_executable_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/readonly_executable_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/readonly_executable_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/readonly_executable_name (0.00s)
    --- PASS: TestFileAttr/readonly_executable_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/readonly_executable_literal_run_name (0.00s)
    --- PASS: TestFileAttr/readonly_executable_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/readonly_executable_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/readonly_empty_executable_dot_name (0.00s)
    --- PASS: TestFileAttr/readonly_empty_executable_literal_create_name (0.00s)
    --- PASS: TestFileAttr/readonly_empty_executable_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/readonly_empty_executable_exact_name (0.00s)
    --- PASS: TestFileAttr/readonly_empty_executable_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/readonly_empty_executable_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/readonly_empty_executable_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/readonly_empty_executable_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/readonly_empty_executable_name (0.00s)
    --- PASS: TestFileAttr/readonly_empty_executable_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/readonly_empty_executable_literal_run_name (0.00s)
    --- PASS: TestFileAttr/readonly_empty_executable_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/readonly_empty_executable_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_executable_dot_name (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_executable_literal_create_name (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_executable_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_executable_exact_name (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_executable_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_executable_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_executable_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_executable_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_executable_name (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_executable_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_executable_literal_run_name (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_executable_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_executable_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_empty_executable_dot_name (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_empty_executable_literal_create_name (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_empty_executable_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_empty_executable_exact_name (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_empty_executable_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_empty_executable_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_empty_executable_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_empty_executable_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_empty_executable_name (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_empty_executable_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_empty_executable_literal_run_name (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_empty_executable_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_empty_executable_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/private_readonly_dot_name (0.00s)
    --- PASS: TestFileAttr/private_readonly_literal_create_name (0.00s)
    --- PASS: TestFileAttr/private_readonly_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/private_readonly_exact_name (0.00s)
    --- PASS: TestFileAttr/private_readonly_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/private_readonly_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/private_readonly_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/private_readonly_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/private_readonly_name (0.00s)
    --- PASS: TestFileAttr/private_readonly_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/private_readonly_literal_run_name (0.00s)
    --- PASS: TestFileAttr/private_readonly_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/private_readonly_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/private_readonly_empty_dot_name (0.00s)
    --- PASS: TestFileAttr/private_readonly_empty_literal_create_name (0.00s)
    --- PASS: TestFileAttr/private_readonly_empty_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/private_readonly_empty_exact_name (0.00s)
    --- PASS: TestFileAttr/private_readonly_empty_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/private_readonly_empty_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/private_readonly_empty_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/private_readonly_empty_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/private_readonly_empty_name (0.00s)
    --- PASS: TestFileAttr/private_readonly_empty_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/private_readonly_empty_literal_run_name (0.00s)
    --- PASS: TestFileAttr/private_readonly_empty_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/private_readonly_empty_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_dot_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_literal_create_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_exact_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_literal_run_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_empty_dot_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_empty_literal_create_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_empty_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_empty_exact_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_empty_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_empty_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_empty_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_empty_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_empty_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_empty_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_empty_literal_run_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_empty_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_empty_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/private_readonly_executable_dot_name (0.00s)
    --- PASS: TestFileAttr/private_readonly_executable_literal_create_name (0.00s)
    --- PASS: TestFileAttr/private_readonly_executable_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/private_readonly_executable_exact_name (0.00s)
    --- PASS: TestFileAttr/private_readonly_executable_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/private_readonly_executable_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/private_readonly_executable_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/private_readonly_executable_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/private_readonly_executable_name (0.00s)
    --- PASS: TestFileAttr/private_readonly_executable_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/private_readonly_executable_literal_run_name (0.00s)
    --- PASS: TestFileAttr/private_readonly_executable_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/private_readonly_executable_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/private_readonly_empty_executable_dot_name (0.00s)
    --- PASS: TestFileAttr/private_readonly_empty_executable_literal_create_name (0.00s)
    --- PASS: TestFileAttr/private_readonly_empty_executable_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/private_readonly_empty_executable_exact_name (0.00s)
    --- PASS: TestFileAttr/private_readonly_empty_executable_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/private_readonly_empty_executable_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/private_readonly_empty_executable_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/private_readonly_empty_executable_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/private_readonly_empty_executable_name (0.00s)
    --- PASS: TestFileAttr/private_readonly_empty_executable_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/private_readonly_empty_executable_literal_run_name (0.00s)
    --- PASS: TestFileAttr/private_readonly_empty_executable_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/private_readonly_empty_executable_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_executable_dot_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_executable_literal_create_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_executable_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_executable_exact_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_executable_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_executable_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_executable_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_executable_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_executable_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_executable_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_executable_literal_run_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_executable_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_executable_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_empty_executable_dot_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_empty_executable_literal_create_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_empty_executable_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_empty_executable_exact_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_empty_executable_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_empty_executable_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_empty_executable_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_empty_executable_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_empty_executable_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_empty_executable_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_empty_executable_literal_run_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_empty_executable_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_empty_executable_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/name.tmpl (0.00s)
    --- PASS: TestFileAttr/literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/empty_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/empty_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/empty_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/empty_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/empty_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/empty_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/empty_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/empty_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/empty_name.tmpl (0.00s)
    --- PASS: TestFileAttr/empty_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/empty_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/empty_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/empty_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/encrypted_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_empty_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_empty_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_empty_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_empty_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_empty_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_empty_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/encrypted_empty_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_empty_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_empty_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_empty_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_empty_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_empty_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_empty_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/executable_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/executable_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/executable_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/executable_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/executable_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/executable_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/executable_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/executable_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/executable_name.tmpl (0.00s)
    --- PASS: TestFileAttr/executable_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/executable_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/executable_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/executable_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/empty_executable_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/empty_executable_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/empty_executable_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/empty_executable_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/empty_executable_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/empty_executable_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/empty_executable_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/empty_executable_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/empty_executable_name.tmpl (0.00s)
    --- PASS: TestFileAttr/empty_executable_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/empty_executable_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/empty_executable_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/empty_executable_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_executable_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_executable_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_executable_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_executable_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_executable_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_executable_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/encrypted_executable_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_executable_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_executable_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_executable_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_executable_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_executable_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_executable_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_empty_executable_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_empty_executable_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_empty_executable_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_empty_executable_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_empty_executable_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_empty_executable_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/encrypted_empty_executable_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_empty_executable_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_empty_executable_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_empty_executable_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_empty_executable_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_empty_executable_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_empty_executable_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/private_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/private_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/private_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/private_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/private_empty_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_empty_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_empty_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_empty_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_empty_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_empty_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/private_empty_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_empty_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/private_empty_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_empty_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/private_empty_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_empty_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_empty_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_dot_name.tmpl (0.01s)
    --- PASS: TestFileAttr/encrypted_private_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/encrypted_private_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_empty_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_empty_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_empty_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_empty_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_empty_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_empty_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/encrypted_private_empty_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_empty_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_empty_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_empty_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_empty_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_empty_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_empty_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/private_executable_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_executable_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_executable_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_executable_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_executable_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_executable_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/private_executable_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_executable_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/private_executable_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_executable_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/private_executable_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_executable_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_executable_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/private_empty_executable_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_empty_executable_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_empty_executable_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_empty_executable_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_empty_executable_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_empty_executable_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/private_empty_executable_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_empty_executable_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/private_empty_executable_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_empty_executable_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/private_empty_executable_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_empty_executable_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_empty_executable_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_executable_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_executable_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_executable_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_executable_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_executable_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_executable_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/encrypted_private_executable_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_executable_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_executable_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_executable_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_executable_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_executable_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_executable_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_empty_executable_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_empty_executable_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_empty_executable_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_empty_executable_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_empty_executable_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_empty_executable_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/encrypted_private_empty_executable_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_empty_executable_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_empty_executable_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_empty_executable_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_empty_executable_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_empty_executable_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_empty_executable_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/readonly_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/readonly_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/readonly_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/readonly_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/readonly_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/readonly_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/readonly_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/readonly_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/readonly_name.tmpl (0.00s)
    --- PASS: TestFileAttr/readonly_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/readonly_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/readonly_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/readonly_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/readonly_empty_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/readonly_empty_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/readonly_empty_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/readonly_empty_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/readonly_empty_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/readonly_empty_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/readonly_empty_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/readonly_empty_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/readonly_empty_name.tmpl (0.00s)
    --- PASS: TestFileAttr/readonly_empty_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/readonly_empty_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/readonly_empty_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/readonly_empty_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_empty_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_empty_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_empty_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_empty_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_empty_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_empty_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_empty_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_empty_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_empty_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_empty_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_empty_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_empty_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_empty_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/readonly_executable_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/readonly_executable_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/readonly_executable_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/readonly_executable_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/readonly_executable_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/readonly_executable_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/readonly_executable_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/readonly_executable_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/readonly_executable_name.tmpl (0.00s)
    --- PASS: TestFileAttr/readonly_executable_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/readonly_executable_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/readonly_executable_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/readonly_executable_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/readonly_empty_executable_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/readonly_empty_executable_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/readonly_empty_executable_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/readonly_empty_executable_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/readonly_empty_executable_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/readonly_empty_executable_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/readonly_empty_executable_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/readonly_empty_executable_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/readonly_empty_executable_name.tmpl (0.00s)
    --- PASS: TestFileAttr/readonly_empty_executable_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/readonly_empty_executable_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/readonly_empty_executable_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/readonly_empty_executable_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_executable_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_executable_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_executable_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_executable_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_executable_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_executable_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_executable_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_executable_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_executable_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_executable_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_executable_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_executable_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_executable_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_empty_executable_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_empty_executable_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_empty_executable_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_empty_executable_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_empty_executable_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_empty_executable_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_empty_executable_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_empty_executable_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_empty_executable_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_empty_executable_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_empty_executable_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_empty_executable_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_readonly_empty_executable_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/private_readonly_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_readonly_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_readonly_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_readonly_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_readonly_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_readonly_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/private_readonly_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_readonly_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/private_readonly_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_readonly_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/private_readonly_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_readonly_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_readonly_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/private_readonly_empty_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_readonly_empty_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_readonly_empty_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_readonly_empty_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_readonly_empty_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_readonly_empty_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/private_readonly_empty_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_readonly_empty_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/private_readonly_empty_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_readonly_empty_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/private_readonly_empty_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_readonly_empty_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_readonly_empty_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_empty_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_empty_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_empty_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_empty_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_empty_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_empty_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_empty_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_empty_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_empty_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_empty_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_empty_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_empty_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_empty_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/private_readonly_executable_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_readonly_executable_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_readonly_executable_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_readonly_executable_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_readonly_executable_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_readonly_executable_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/private_readonly_executable_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_readonly_executable_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/private_readonly_executable_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_readonly_executable_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/private_readonly_executable_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_readonly_executable_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_readonly_executable_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/private_readonly_empty_executable_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_readonly_empty_executable_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_readonly_empty_executable_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_readonly_empty_executable_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_readonly_empty_executable_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_readonly_empty_executable_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/private_readonly_empty_executable_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_readonly_empty_executable_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/private_readonly_empty_executable_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_readonly_empty_executable_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/private_readonly_empty_executable_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_readonly_empty_executable_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/private_readonly_empty_executable_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_executable_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_executable_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_executable_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_executable_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_executable_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_executable_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_executable_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_executable_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_executable_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_executable_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_executable_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_executable_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_executable_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_empty_executable_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_empty_executable_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_empty_executable_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_empty_executable_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_empty_executable_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_empty_executable_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_empty_executable_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_empty_executable_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_empty_executable_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_empty_executable_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_empty_executable_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_empty_executable_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/encrypted_private_readonly_empty_executable_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_dot_name (0.00s)
    --- PASS: TestFileAttr/modify_literal_create_name (0.00s)
    --- PASS: TestFileAttr/modify_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/modify_exact_name (0.00s)
    --- PASS: TestFileAttr/modify_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/modify_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/modify_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/modify_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/modify_name (0.00s)
    --- PASS: TestFileAttr/modify_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/modify_literal_run_name (0.00s)
    --- PASS: TestFileAttr/modify_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/modify_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_dot_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_literal_create_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_exact_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_literal_run_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/modify_executable_dot_name (0.00s)
    --- PASS: TestFileAttr/modify_executable_literal_create_name (0.00s)
    --- PASS: TestFileAttr/modify_executable_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/modify_executable_exact_name (0.00s)
    --- PASS: TestFileAttr/modify_executable_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/modify_executable_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/modify_executable_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/modify_executable_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/modify_executable_name (0.00s)
    --- PASS: TestFileAttr/modify_executable_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/modify_executable_literal_run_name (0.00s)
    --- PASS: TestFileAttr/modify_executable_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/modify_executable_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_executable_dot_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_executable_literal_create_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_executable_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_executable_exact_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_executable_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_executable_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_executable_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_executable_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_executable_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_executable_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_executable_literal_run_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_executable_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_executable_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/modify_private_dot_name (0.00s)
    --- PASS: TestFileAttr/modify_private_literal_create_name (0.00s)
    --- PASS: TestFileAttr/modify_private_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/modify_private_exact_name (0.00s)
    --- PASS: TestFileAttr/modify_private_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/modify_private_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/modify_private_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/modify_private_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/modify_private_name (0.00s)
    --- PASS: TestFileAttr/modify_private_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/modify_private_literal_run_name (0.00s)
    --- PASS: TestFileAttr/modify_private_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/modify_private_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_dot_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_literal_create_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_exact_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_literal_run_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/modify_private_executable_dot_name (0.00s)
    --- PASS: TestFileAttr/modify_private_executable_literal_create_name (0.00s)
    --- PASS: TestFileAttr/modify_private_executable_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/modify_private_executable_exact_name (0.00s)
    --- PASS: TestFileAttr/modify_private_executable_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/modify_private_executable_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/modify_private_executable_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/modify_private_executable_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/modify_private_executable_name (0.00s)
    --- PASS: TestFileAttr/modify_private_executable_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/modify_private_executable_literal_run_name (0.00s)
    --- PASS: TestFileAttr/modify_private_executable_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/modify_private_executable_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_executable_dot_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_executable_literal_create_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_executable_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_executable_exact_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_executable_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_executable_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_executable_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_executable_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_executable_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_executable_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_executable_literal_run_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_executable_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_executable_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/modify_readonly_dot_name (0.00s)
    --- PASS: TestFileAttr/modify_readonly_literal_create_name (0.00s)
    --- PASS: TestFileAttr/modify_readonly_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/modify_readonly_exact_name (0.00s)
    --- PASS: TestFileAttr/modify_readonly_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/modify_readonly_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/modify_readonly_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/modify_readonly_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/modify_readonly_name (0.00s)
    --- PASS: TestFileAttr/modify_readonly_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/modify_readonly_literal_run_name (0.00s)
    --- PASS: TestFileAttr/modify_readonly_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/modify_readonly_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_readonly_dot_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_readonly_literal_create_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_readonly_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_readonly_exact_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_readonly_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_readonly_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_readonly_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_readonly_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_readonly_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_readonly_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_readonly_literal_run_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_readonly_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_readonly_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/modify_readonly_executable_dot_name (0.00s)
    --- PASS: TestFileAttr/modify_readonly_executable_literal_create_name (0.00s)
    --- PASS: TestFileAttr/modify_readonly_executable_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/modify_readonly_executable_exact_name (0.00s)
    --- PASS: TestFileAttr/modify_readonly_executable_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/modify_readonly_executable_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/modify_readonly_executable_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/modify_readonly_executable_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/modify_readonly_executable_name (0.00s)
    --- PASS: TestFileAttr/modify_readonly_executable_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/modify_readonly_executable_literal_run_name (0.00s)
    --- PASS: TestFileAttr/modify_readonly_executable_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/modify_readonly_executable_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_readonly_executable_dot_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_readonly_executable_literal_create_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_readonly_executable_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_readonly_executable_exact_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_readonly_executable_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_readonly_executable_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_readonly_executable_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_readonly_executable_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_readonly_executable_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_readonly_executable_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_readonly_executable_literal_run_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_readonly_executable_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_readonly_executable_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/modify_private_readonly_dot_name (0.00s)
    --- PASS: TestFileAttr/modify_private_readonly_literal_create_name (0.00s)
    --- PASS: TestFileAttr/modify_private_readonly_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/modify_private_readonly_exact_name (0.00s)
    --- PASS: TestFileAttr/modify_private_readonly_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/modify_private_readonly_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/modify_private_readonly_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/modify_private_readonly_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/modify_private_readonly_name (0.00s)
    --- PASS: TestFileAttr/modify_private_readonly_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/modify_private_readonly_literal_run_name (0.00s)
    --- PASS: TestFileAttr/modify_private_readonly_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/modify_private_readonly_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_readonly_dot_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_readonly_literal_create_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_readonly_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_readonly_exact_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_readonly_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_readonly_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_readonly_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_readonly_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_readonly_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_readonly_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_readonly_literal_run_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_readonly_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_readonly_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/modify_private_readonly_executable_dot_name (0.00s)
    --- PASS: TestFileAttr/modify_private_readonly_executable_literal_create_name (0.00s)
    --- PASS: TestFileAttr/modify_private_readonly_executable_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/modify_private_readonly_executable_exact_name (0.00s)
    --- PASS: TestFileAttr/modify_private_readonly_executable_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/modify_private_readonly_executable_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/modify_private_readonly_executable_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/modify_private_readonly_executable_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/modify_private_readonly_executable_name (0.00s)
    --- PASS: TestFileAttr/modify_private_readonly_executable_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/modify_private_readonly_executable_literal_run_name (0.00s)
    --- PASS: TestFileAttr/modify_private_readonly_executable_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/modify_private_readonly_executable_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_readonly_executable_dot_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_readonly_executable_literal_create_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_readonly_executable_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_readonly_executable_exact_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_readonly_executable_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_readonly_executable_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_readonly_executable_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_readonly_executable_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_readonly_executable_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_readonly_executable_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_readonly_executable_literal_run_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_readonly_executable_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_readonly_executable_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/modify_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/modify_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_executable_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_executable_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_executable_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_executable_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_executable_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_executable_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/modify_executable_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_executable_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_executable_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_executable_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_executable_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_executable_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_executable_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_executable_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_executable_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_executable_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_executable_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_executable_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_executable_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_executable_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_executable_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_executable_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_executable_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_executable_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_executable_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_executable_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_private_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_private_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_private_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_private_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_private_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_private_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/modify_private_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_private_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_private_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_private_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_private_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_private_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_private_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_private_executable_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_private_executable_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_private_executable_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_private_executable_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_private_executable_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_private_executable_literal_literal_name.tmpl#01 (0.01s)
    --- PASS: TestFileAttr/modify_private_executable_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_private_executable_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_private_executable_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_private_executable_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_private_executable_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_private_executable_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_private_executable_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_executable_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_executable_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_executable_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_executable_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_executable_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_executable_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_executable_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_executable_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_executable_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_executable_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_executable_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_executable_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_executable_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_readonly_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_readonly_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_readonly_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_readonly_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_readonly_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_readonly_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/modify_readonly_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_readonly_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_readonly_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_readonly_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_readonly_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_readonly_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_readonly_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_readonly_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_readonly_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_readonly_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_readonly_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_readonly_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_readonly_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_readonly_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_readonly_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_readonly_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_readonly_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_readonly_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_readonly_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_readonly_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_readonly_executable_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_readonly_executable_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_readonly_executable_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_readonly_executable_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_readonly_executable_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_readonly_executable_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/modify_readonly_executable_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_readonly_executable_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_readonly_executable_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_readonly_executable_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_readonly_executable_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_readonly_executable_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_readonly_executable_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_readonly_executable_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_readonly_executable_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_readonly_executable_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_readonly_executable_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_readonly_executable_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_readonly_executable_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_readonly_executable_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_readonly_executable_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_readonly_executable_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_readonly_executable_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_readonly_executable_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_readonly_executable_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_readonly_executable_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_private_readonly_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_private_readonly_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_private_readonly_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_private_readonly_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_private_readonly_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_private_readonly_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/modify_private_readonly_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_private_readonly_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_private_readonly_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_private_readonly_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_private_readonly_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_private_readonly_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_private_readonly_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_readonly_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_readonly_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_readonly_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_readonly_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_readonly_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_readonly_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_readonly_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_readonly_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_readonly_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_readonly_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_readonly_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_readonly_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_readonly_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_private_readonly_executable_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_private_readonly_executable_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_private_readonly_executable_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_private_readonly_executable_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_private_readonly_executable_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_private_readonly_executable_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/modify_private_readonly_executable_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_private_readonly_executable_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_private_readonly_executable_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_private_readonly_executable_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_private_readonly_executable_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_private_readonly_executable_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_private_readonly_executable_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_readonly_executable_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_readonly_executable_literal_create_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_readonly_executable_literal_dot_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_readonly_executable_exact_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_readonly_executable_literal_literal_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_readonly_executable_literal_literal_name.tmpl#01 (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_readonly_executable_literal_modify_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_readonly_executable_name.literal.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_readonly_executable_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_readonly_executable_literal_remove_.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_readonly_executable_literal_run_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_readonly_executable_literal_symlink_name.tmpl (0.00s)
    --- PASS: TestFileAttr/modify_encrypted_private_readonly_executable_template.tmpl.literal.tmpl (0.00s)
    --- PASS: TestFileAttr/remove_dot_name (0.00s)
    --- PASS: TestFileAttr/remove_literal_create_name (0.00s)
    --- PASS: TestFileAttr/remove_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/remove_exact_name (0.00s)
    --- PASS: TestFileAttr/remove_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/remove_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/remove_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/remove_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/remove_name (0.00s)
    --- PASS: TestFileAttr/remove_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/remove_literal_run_name (0.00s)
    --- PASS: TestFileAttr/remove_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/remove_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/run_before_dot_name (0.00s)
    --- PASS: TestFileAttr/run_once_before_dot_name (0.00s)
    --- PASS: TestFileAttr/run_onchange_before_dot_name (0.00s)
    --- PASS: TestFileAttr/run_before_literal_create_name (0.00s)
    --- PASS: TestFileAttr/run_once_before_literal_create_name (0.00s)
    --- PASS: TestFileAttr/run_onchange_before_literal_create_name (0.00s)
    --- PASS: TestFileAttr/run_before_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/run_once_before_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/run_onchange_before_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/run_before_exact_name (0.00s)
    --- PASS: TestFileAttr/run_once_before_exact_name (0.00s)
    --- PASS: TestFileAttr/run_onchange_before_exact_name (0.00s)
    --- PASS: TestFileAttr/run_before_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/run_once_before_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/run_onchange_before_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/run_before_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/run_once_before_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/run_onchange_before_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/run_before_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/run_once_before_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/run_onchange_before_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/run_before_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/run_once_before_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/run_onchange_before_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/run_before_name (0.00s)
    --- PASS: TestFileAttr/run_once_before_name (0.00s)
    --- PASS: TestFileAttr/run_onchange_before_name (0.00s)
    --- PASS: TestFileAttr/run_before_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/run_once_before_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/run_onchange_before_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/run_before_literal_run_name (0.00s)
    --- PASS: TestFileAttr/run_once_before_literal_run_name (0.00s)
    --- PASS: TestFileAttr/run_onchange_before_literal_run_name (0.00s)
    --- PASS: TestFileAttr/run_before_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/run_once_before_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/run_onchange_before_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/run_before_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/run_once_before_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/run_onchange_before_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/run_dot_name (0.00s)
    --- PASS: TestFileAttr/run_once_dot_name (0.00s)
    --- PASS: TestFileAttr/run_onchange_dot_name (0.00s)
    --- PASS: TestFileAttr/run_literal_create_name (0.00s)
    --- PASS: TestFileAttr/run_once_literal_create_name (0.00s)
    --- PASS: TestFileAttr/run_onchange_literal_create_name (0.00s)
    --- PASS: TestFileAttr/run_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/run_once_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/run_onchange_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/run_exact_name (0.00s)
    --- PASS: TestFileAttr/run_once_exact_name (0.00s)
    --- PASS: TestFileAttr/run_onchange_exact_name (0.00s)
    --- PASS: TestFileAttr/run_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/run_once_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/run_onchange_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/run_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/run_once_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/run_onchange_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/run_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/run_once_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/run_onchange_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/run_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/run_once_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/run_onchange_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/run_name (0.00s)
    --- PASS: TestFileAttr/run_once_name (0.00s)
    --- PASS: TestFileAttr/run_onchange_name (0.00s)
    --- PASS: TestFileAttr/run_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/run_once_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/run_onchange_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/run_literal_run_name (0.00s)
    --- PASS: TestFileAttr/run_once_literal_run_name (0.00s)
    --- PASS: TestFileAttr/run_onchange_literal_run_name (0.00s)
    --- PASS: TestFileAttr/run_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/run_once_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/run_onchange_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/run_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/run_once_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/run_onchange_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/run_after_dot_name (0.00s)
    --- PASS: TestFileAttr/run_once_after_dot_name (0.00s)
    --- PASS: TestFileAttr/run_onchange_after_dot_name (0.00s)
    --- PASS: TestFileAttr/run_after_literal_create_name (0.00s)
    --- PASS: TestFileAttr/run_once_after_literal_create_name (0.00s)
    --- PASS: TestFileAttr/run_onchange_after_literal_create_name (0.00s)
    --- PASS: TestFileAttr/run_after_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/run_once_after_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/run_onchange_after_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/run_after_exact_name (0.00s)
    --- PASS: TestFileAttr/run_once_after_exact_name (0.00s)
    --- PASS: TestFileAttr/run_onchange_after_exact_name (0.00s)
    --- PASS: TestFileAttr/run_after_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/run_once_after_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/run_onchange_after_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/run_after_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/run_once_after_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/run_onchange_after_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/run_after_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/run_once_after_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/run_onchange_after_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/run_after_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/run_once_after_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/run_onchange_after_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/run_after_name (0.00s)
    --- PASS: TestFileAttr/run_once_after_name (0.00s)
    --- PASS: TestFileAttr/run_onchange_after_name (0.00s)
    --- PASS: TestFileAttr/run_after_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/run_once_after_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/run_onchange_after_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/run_after_literal_run_name (0.00s)
    --- PASS: TestFileAttr/run_once_after_literal_run_name (0.00s)
    --- PASS: TestFileAttr/run_onchange_after_literal_run_name (0.00s)
    --- PASS: TestFileAttr/run_after_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/run_once_after_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/run_onchange_after_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/run_after_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/run_once_after_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/run_onchange_after_template.tmpl.literal (0.00s)
    --- PASS: TestFileAttr/symlink_dot_name (0.00s)
    --- PASS: TestFileAttr/symlink_literal_create_name (0.00s)
    --- PASS: TestFileAttr/symlink_literal_dot_name (0.00s)
    --- PASS: TestFileAttr/symlink_exact_name (0.00s)
    --- PASS: TestFileAttr/symlink_literal_literal_name (0.00s)
    --- PASS: TestFileAttr/symlink_literal_literal_name#01 (0.00s)
    --- PASS: TestFileAttr/symlink_literal_modify_name (0.00s)
    --- PASS: TestFileAttr/symlink_name.literal.literal (0.00s)
    --- PASS: TestFileAttr/symlink_name (0.00s)
    --- PASS: TestFileAttr/symlink_literal_remove_ (0.00s)
    --- PASS: TestFileAttr/symlink_literal_run_name (0.00s)
    --- PASS: TestFileAttr/symlink_literal_symlink_name (0.00s)
    --- PASS: TestFileAttr/symlink_template.tmpl.literal (0.00s)
=== RUN   TestFileAttrEncryptedSuffix
--- PASS: TestFileAttrEncryptedSuffix (0.00s)
=== RUN   TestFileAttrLiteral
=== RUN   TestFileAttrLiteral/dot_file
=== RUN   TestFileAttrLiteral/literal_dot_file
=== RUN   TestFileAttrLiteral/literal_literal_file
=== RUN   TestFileAttrLiteral/run_once_script
=== RUN   TestFileAttrLiteral/run_literal_once_script
=== RUN   TestFileAttrLiteral/file.literal
=== RUN   TestFileAttrLiteral/file.literal.literal
=== RUN   TestFileAttrLiteral/file.tmpl
=== RUN   TestFileAttrLiteral/file.tmpl.literal
=== RUN   TestFileAttrLiteral/file.tmpl.literal.tmpl
--- PASS: TestFileAttrLiteral (0.00s)
    --- PASS: TestFileAttrLiteral/dot_file (0.00s)
    --- PASS: TestFileAttrLiteral/literal_dot_file (0.00s)
    --- PASS: TestFileAttrLiteral/literal_literal_file (0.00s)
    --- PASS: TestFileAttrLiteral/run_once_script (0.00s)
    --- PASS: TestFileAttrLiteral/run_literal_once_script (0.00s)
    --- PASS: TestFileAttrLiteral/file.literal (0.00s)
    --- PASS: TestFileAttrLiteral/file.literal.literal (0.00s)
    --- PASS: TestFileAttrLiteral/file.tmpl (0.00s)
    --- PASS: TestFileAttrLiteral/file.tmpl.literal (0.00s)
    --- PASS: TestFileAttrLiteral/file.tmpl.literal.tmpl (0.00s)
=== RUN   TestFileAttrPerm
--- PASS: TestFileAttrPerm (0.00s)
=== RUN   TestInvalidDirAttr
=== RUN   TestInvalidDirAttr/dot_
=== RUN   TestInvalidDirAttr/literal_
--- PASS: TestInvalidDirAttr (0.00s)
    --- PASS: TestInvalidDirAttr/dot_ (0.00s)
    --- PASS: TestInvalidDirAttr/literal_ (0.00s)
=== RUN   TestInvalidFileAttr
=== RUN   TestInvalidFileAttr/dot_
=== RUN   TestInvalidFileAttr/literal_
=== RUN   TestInvalidFileAttr/.tmpl
=== RUN   TestInvalidFileAttr/encrypted_.age
--- PASS: TestInvalidFileAttr (0.00s)
    --- PASS: TestInvalidFileAttr/dot_ (0.00s)
    --- PASS: TestInvalidFileAttr/literal_ (0.00s)
    --- PASS: TestInvalidFileAttr/.tmpl (0.00s)
    --- PASS: TestInvalidFileAttr/encrypted_.age (0.00s)
=== RUN   TestAutoTemplate
=== RUN   TestAutoTemplate/simple
=== RUN   TestAutoTemplate/longest_first
=== RUN   TestAutoTemplate/alphabetical_first
=== RUN   TestAutoTemplate/nested_values
=== RUN   TestAutoTemplate/only_replace_words
=== RUN   TestAutoTemplate/longest_match_first
=== RUN   TestAutoTemplate/longest_match_first_prefix
=== RUN   TestAutoTemplate/longest_match_first_suffix
=== RUN   TestAutoTemplate/longest_match_first_prefix_and_suffix
=== RUN   TestAutoTemplate/depth_first
=== RUN   TestAutoTemplate/alphabetical_first#01
=== RUN   TestAutoTemplate/words_only
=== RUN   TestAutoTemplate/words_only_2
=== RUN   TestAutoTemplate/words_only_3
=== RUN   TestAutoTemplate/skip_empty
=== RUN   TestAutoTemplate/markers
--- PASS: TestAutoTemplate (0.01s)
    --- PASS: TestAutoTemplate/simple (0.00s)
    --- PASS: TestAutoTemplate/longest_first (0.00s)
    --- PASS: TestAutoTemplate/alphabetical_first (0.00s)
    --- PASS: TestAutoTemplate/nested_values (0.00s)
    --- PASS: TestAutoTemplate/only_replace_words (0.00s)
    --- PASS: TestAutoTemplate/longest_match_first (0.00s)
    --- PASS: TestAutoTemplate/longest_match_first_prefix (0.00s)
    --- PASS: TestAutoTemplate/longest_match_first_suffix (0.00s)
    --- PASS: TestAutoTemplate/longest_match_first_prefix_and_suffix (0.00s)
    --- PASS: TestAutoTemplate/depth_first (0.00s)
    --- PASS: TestAutoTemplate/alphabetical_first#01 (0.00s)
    --- PASS: TestAutoTemplate/words_only (0.00s)
    --- PASS: TestAutoTemplate/words_only_2 (0.00s)
    --- PASS: TestAutoTemplate/words_only_3 (0.00s)
    --- PASS: TestAutoTemplate/skip_empty (0.00s)
    --- PASS: TestAutoTemplate/markers (0.00s)
=== RUN   TestInWord
--- PASS: TestInWord (0.00s)
=== RUN   TestBoltPersistentState
=== RUN   TestBoltPersistentState/0
=== RUN   TestBoltPersistentState/0#01
=== RUN   TestBoltPersistentState/0#02
--- PASS: TestBoltPersistentState (0.00s)
    --- PASS: TestBoltPersistentState/0 (0.00s)
    --- PASS: TestBoltPersistentState/0#01 (0.00s)
    --- PASS: TestBoltPersistentState/0#02 (0.00s)
=== RUN   TestBoltPersistentStateMock
--- PASS: TestBoltPersistentStateMock (0.00s)
=== RUN   TestBoltPersistentStateGeneric
--- PASS: TestBoltPersistentStateGeneric (0.01s)
=== RUN   TestBoltPersistentStateReadOnly
--- PASS: TestBoltPersistentStateReadOnly (0.00s)
=== RUN   TestEtcHostsFQDNHostname
=== RUN   TestEtcHostsFQDNHostname/etc_hosts
=== RUN   TestEtcHostsFQDNHostname/etc_hosts_loopback_ipv4
=== RUN   TestEtcHostsFQDNHostname/etc_hosts_loopback_ipv4_localhost_dot_localdomain
=== RUN   TestEtcHostsFQDNHostname/etc_hosts_loopback_ipv6
=== RUN   TestEtcHostsFQDNHostname/etc_hosts_whitespace_and_comments
=== RUN   TestEtcHostsFQDNHostname/etc_hosts_missing_canonical_hostname
=== RUN   TestEtcHostsFQDNHostname/etc_hosts_kubernetes_docker_internal
=== RUN   TestEtcHostsFQDNHostname/etc_hostname
=== RUN   TestEtcHostsFQDNHostname/etc_myname
--- PASS: TestEtcHostsFQDNHostname (0.00s)
    --- PASS: TestEtcHostsFQDNHostname/etc_hosts (0.00s)
    --- PASS: TestEtcHostsFQDNHostname/etc_hosts_loopback_ipv4 (0.00s)
    --- PASS: TestEtcHostsFQDNHostname/etc_hosts_loopback_ipv4_localhost_dot_localdomain (0.00s)
    --- PASS: TestEtcHostsFQDNHostname/etc_hosts_loopback_ipv6 (0.00s)
    --- PASS: TestEtcHostsFQDNHostname/etc_hosts_whitespace_and_comments (0.00s)
    --- PASS: TestEtcHostsFQDNHostname/etc_hosts_missing_canonical_hostname (0.00s)
    --- PASS: TestEtcHostsFQDNHostname/etc_hosts_kubernetes_docker_internal (0.00s)
    --- PASS: TestEtcHostsFQDNHostname/etc_hostname (0.00s)
    --- PASS: TestEtcHostsFQDNHostname/etc_myname (0.00s)
=== RUN   TestUniqueAbbreviations
=== RUN   TestUniqueAbbreviations/#00
=== RUN   TestUniqueAbbreviations/yes_no_all_quit
=== RUN   TestUniqueAbbreviations/ale_all_abort
=== RUN   TestUniqueAbbreviations/no_now_nope
--- PASS: TestUniqueAbbreviations (0.00s)
    --- PASS: TestUniqueAbbreviations/#00 (0.00s)
    --- PASS: TestUniqueAbbreviations/yes_no_all_quit (0.00s)
    --- PASS: TestUniqueAbbreviations/ale_all_abort (0.00s)
    --- PASS: TestUniqueAbbreviations/no_now_nope (0.00s)
=== RUN   TestUmask
--- PASS: TestUmask (0.00s)
=== RUN   TestKernel
=== RUN   TestKernel/windows_services_for_linux
=== RUN   TestKernel/debian_version_only
=== RUN   TestKernel/proc_sys_kernel_missing
--- PASS: TestKernel (0.00s)
    --- PASS: TestKernel/windows_services_for_linux (0.00s)
    --- PASS: TestKernel/debian_version_only (0.00s)
    --- PASS: TestKernel/proc_sys_kernel_missing (0.00s)
=== RUN   TestOSRelease
=== RUN   TestOSRelease/archlinux
=== RUN   TestOSRelease/fedora
=== RUN   TestOSRelease/ubuntu
=== RUN   TestOSRelease/gentoo
--- PASS: TestOSRelease (0.00s)
    --- PASS: TestOSRelease/archlinux (0.00s)
    --- PASS: TestOSRelease/fedora (0.00s)
    --- PASS: TestOSRelease/ubuntu (0.00s)
    --- PASS: TestOSRelease/gentoo (0.00s)
=== RUN   TestParseOSRelease
=== RUN   TestParseOSRelease/fedora
=== RUN   TestParseOSRelease/ubuntu_with_comments
--- PASS: TestParseOSRelease (0.00s)
    --- PASS: TestParseOSRelease/fedora (0.00s)
    --- PASS: TestParseOSRelease/ubuntu_with_comments (0.00s)
=== RUN   TestUnquote
=== RUN   TestUnquote/empty
=== RUN   TestUnquote/single_double
=== RUN   TestUnquote/single_single
=== RUN   TestUnquote/mismatched
=== RUN   TestUnquote/empty_double
=== RUN   TestUnquote/empty_single
=== RUN   TestUnquote/no_escape
=== RUN   TestUnquote/escaped_quote
=== RUN   TestUnquote/escaped_chars
=== RUN   TestUnquote/invalid_escape
=== RUN   TestUnquote/incomplete_escape
--- PASS: TestUnquote (0.00s)
    --- PASS: TestUnquote/empty (0.00s)
    --- PASS: TestUnquote/single_double (0.00s)
    --- PASS: TestUnquote/single_single (0.00s)
    --- PASS: TestUnquote/mismatched (0.00s)
    --- PASS: TestUnquote/empty_double (0.00s)
    --- PASS: TestUnquote/empty_single (0.00s)
    --- PASS: TestUnquote/no_escape (0.00s)
    --- PASS: TestUnquote/escaped_quote (0.00s)
    --- PASS: TestUnquote/escaped_chars (0.00s)
    --- PASS: TestUnquote/invalid_escape (0.00s)
    --- PASS: TestUnquote/incomplete_escape (0.00s)
=== RUN   TestDumpSystem
--- PASS: TestDumpSystem (0.00s)
=== RUN   TestXOREncryption
=== RUN   TestXOREncryption/DecryptToFile
=== RUN   TestXOREncryption/EncryptDecrypt
=== RUN   TestXOREncryption/EncryptFile
--- PASS: TestXOREncryption (0.00s)
    --- PASS: TestXOREncryption/DecryptToFile (0.00s)
    --- PASS: TestXOREncryption/EncryptDecrypt (0.00s)
    --- PASS: TestXOREncryption/EncryptFile (0.00s)
=== RUN   TestEntryStateEquivalent
=== RUN   TestEntryStateEquivalent/dir1_dir1
=== RUN   TestEntryStateEquivalent/dir1_copy_dir1
=== RUN   TestEntryStateEquivalent/dir_private_dir1
=== RUN   TestEntryStateEquivalent/file1_dir1
=== RUN   TestEntryStateEquivalent/file1_copy_dir1
=== RUN   TestEntryStateEquivalent/file2_dir1
=== RUN   TestEntryStateEquivalent/nil1_dir1
=== RUN   TestEntryStateEquivalent/nil2_dir1
=== RUN   TestEntryStateEquivalent/remove_dir1
=== RUN   TestEntryStateEquivalent/script_dir1
=== RUN   TestEntryStateEquivalent/symlink_dir1
=== RUN   TestEntryStateEquivalent/symlink_copy_dir1
=== RUN   TestEntryStateEquivalent/dir1_dir1_copy
=== RUN   TestEntryStateEquivalent/dir1_copy_dir1_copy
=== RUN   TestEntryStateEquivalent/dir_private_dir1_copy
=== RUN   TestEntryStateEquivalent/file1_dir1_copy
=== RUN   TestEntryStateEquivalent/file1_copy_dir1_copy
=== RUN   TestEntryStateEquivalent/file2_dir1_copy
=== RUN   TestEntryStateEquivalent/nil1_dir1_copy
=== RUN   TestEntryStateEquivalent/nil2_dir1_copy
=== RUN   TestEntryStateEquivalent/remove_dir1_copy
=== RUN   TestEntryStateEquivalent/script_dir1_copy
=== RUN   TestEntryStateEquivalent/symlink_dir1_copy
=== RUN   TestEntryStateEquivalent/symlink_copy_dir1_copy
=== RUN   TestEntryStateEquivalent/dir1_dir_private
=== RUN   TestEntryStateEquivalent/dir1_copy_dir_private
=== RUN   TestEntryStateEquivalent/dir_private_dir_private
=== RUN   TestEntryStateEquivalent/file1_dir_private
=== RUN   TestEntryStateEquivalent/file1_copy_dir_private
=== RUN   TestEntryStateEquivalent/file2_dir_private
=== RUN   TestEntryStateEquivalent/nil1_dir_private
=== RUN   TestEntryStateEquivalent/nil2_dir_private
=== RUN   TestEntryStateEquivalent/remove_dir_private
=== RUN   TestEntryStateEquivalent/script_dir_private
=== RUN   TestEntryStateEquivalent/symlink_dir_private
=== RUN   TestEntryStateEquivalent/symlink_copy_dir_private
=== RUN   TestEntryStateEquivalent/dir1_file1
=== RUN   TestEntryStateEquivalent/dir1_copy_file1
=== RUN   TestEntryStateEquivalent/dir_private_file1
=== RUN   TestEntryStateEquivalent/file1_file1
=== RUN   TestEntryStateEquivalent/file1_copy_file1
=== RUN   TestEntryStateEquivalent/file2_file1
=== RUN   TestEntryStateEquivalent/nil1_file1
=== RUN   TestEntryStateEquivalent/nil2_file1
=== RUN   TestEntryStateEquivalent/remove_file1
=== RUN   TestEntryStateEquivalent/script_file1
=== RUN   TestEntryStateEquivalent/symlink_file1
=== RUN   TestEntryStateEquivalent/symlink_copy_file1
=== RUN   TestEntryStateEquivalent/dir1_file1_copy
=== RUN   TestEntryStateEquivalent/dir1_copy_file1_copy
=== RUN   TestEntryStateEquivalent/dir_private_file1_copy
=== RUN   TestEntryStateEquivalent/file1_file1_copy
=== RUN   TestEntryStateEquivalent/file1_copy_file1_copy
=== RUN   TestEntryStateEquivalent/file2_file1_copy
=== RUN   TestEntryStateEquivalent/nil1_file1_copy
=== RUN   TestEntryStateEquivalent/nil2_file1_copy
=== RUN   TestEntryStateEquivalent/remove_file1_copy
=== RUN   TestEntryStateEquivalent/script_file1_copy
=== RUN   TestEntryStateEquivalent/symlink_file1_copy
=== RUN   TestEntryStateEquivalent/symlink_copy_file1_copy
=== RUN   TestEntryStateEquivalent/dir1_file2
=== RUN   TestEntryStateEquivalent/dir1_copy_file2
=== RUN   TestEntryStateEquivalent/dir_private_file2
=== RUN   TestEntryStateEquivalent/file1_file2
=== RUN   TestEntryStateEquivalent/file1_copy_file2
=== RUN   TestEntryStateEquivalent/file2_file2
=== RUN   TestEntryStateEquivalent/nil1_file2
=== RUN   TestEntryStateEquivalent/nil2_file2
=== RUN   TestEntryStateEquivalent/remove_file2
=== RUN   TestEntryStateEquivalent/script_file2
=== RUN   TestEntryStateEquivalent/symlink_file2
=== RUN   TestEntryStateEquivalent/symlink_copy_file2
=== RUN   TestEntryStateEquivalent/dir1_nil1
=== RUN   TestEntryStateEquivalent/dir1_copy_nil1
=== RUN   TestEntryStateEquivalent/dir_private_nil1
=== RUN   TestEntryStateEquivalent/file1_nil1
=== RUN   TestEntryStateEquivalent/file1_copy_nil1
=== RUN   TestEntryStateEquivalent/file2_nil1
=== RUN   TestEntryStateEquivalent/nil1_nil1
=== RUN   TestEntryStateEquivalent/nil2_nil1
=== RUN   TestEntryStateEquivalent/remove_nil1
=== RUN   TestEntryStateEquivalent/script_nil1
=== RUN   TestEntryStateEquivalent/symlink_nil1
=== RUN   TestEntryStateEquivalent/symlink_copy_nil1
=== RUN   TestEntryStateEquivalent/dir1_nil2
=== RUN   TestEntryStateEquivalent/dir1_copy_nil2
=== RUN   TestEntryStateEquivalent/dir_private_nil2
=== RUN   TestEntryStateEquivalent/file1_nil2
=== RUN   TestEntryStateEquivalent/file1_copy_nil2
=== RUN   TestEntryStateEquivalent/file2_nil2
=== RUN   TestEntryStateEquivalent/nil1_nil2
=== RUN   TestEntryStateEquivalent/nil2_nil2
=== RUN   TestEntryStateEquivalent/remove_nil2
=== RUN   TestEntryStateEquivalent/script_nil2
=== RUN   TestEntryStateEquivalent/symlink_nil2
=== RUN   TestEntryStateEquivalent/symlink_copy_nil2
=== RUN   TestEntryStateEquivalent/dir1_remove
=== RUN   TestEntryStateEquivalent/dir1_copy_remove
=== RUN   TestEntryStateEquivalent/dir_private_remove
=== RUN   TestEntryStateEquivalent/file1_remove
=== RUN   TestEntryStateEquivalent/file1_copy_remove
=== RUN   TestEntryStateEquivalent/file2_remove
=== RUN   TestEntryStateEquivalent/nil1_remove
=== RUN   TestEntryStateEquivalent/nil2_remove
=== RUN   TestEntryStateEquivalent/remove_remove
=== RUN   TestEntryStateEquivalent/script_remove
=== RUN   TestEntryStateEquivalent/symlink_remove
=== RUN   TestEntryStateEquivalent/symlink_copy_remove
=== RUN   TestEntryStateEquivalent/dir1_script
=== RUN   TestEntryStateEquivalent/dir1_copy_script
=== RUN   TestEntryStateEquivalent/dir_private_script
=== RUN   TestEntryStateEquivalent/file1_script
=== RUN   TestEntryStateEquivalent/file1_copy_script
=== RUN   TestEntryStateEquivalent/file2_script
=== RUN   TestEntryStateEquivalent/nil1_script
=== RUN   TestEntryStateEquivalent/nil2_script
=== RUN   TestEntryStateEquivalent/remove_script
=== RUN   TestEntryStateEquivalent/script_script
=== RUN   TestEntryStateEquivalent/symlink_script
=== RUN   TestEntryStateEquivalent/symlink_copy_script
=== RUN   TestEntryStateEquivalent/dir1_symlink
=== RUN   TestEntryStateEquivalent/dir1_copy_symlink
=== RUN   TestEntryStateEquivalent/dir_private_symlink
=== RUN   TestEntryStateEquivalent/file1_symlink
=== RUN   TestEntryStateEquivalent/file1_copy_symlink
=== RUN   TestEntryStateEquivalent/file2_symlink
=== RUN   TestEntryStateEquivalent/nil1_symlink
=== RUN   TestEntryStateEquivalent/nil2_symlink
=== RUN   TestEntryStateEquivalent/remove_symlink
=== RUN   TestEntryStateEquivalent/script_symlink
=== RUN   TestEntryStateEquivalent/symlink_symlink
=== RUN   TestEntryStateEquivalent/symlink_copy_symlink
=== RUN   TestEntryStateEquivalent/dir1_symlink_copy
=== RUN   TestEntryStateEquivalent/dir1_copy_symlink_copy
=== RUN   TestEntryStateEquivalent/dir_private_symlink_copy
=== RUN   TestEntryStateEquivalent/file1_symlink_copy
=== RUN   TestEntryStateEquivalent/file1_copy_symlink_copy
=== RUN   TestEntryStateEquivalent/file2_symlink_copy
=== RUN   TestEntryStateEquivalent/nil1_symlink_copy
=== RUN   TestEntryStateEquivalent/nil2_symlink_copy
=== RUN   TestEntryStateEquivalent/remove_symlink_copy
=== RUN   TestEntryStateEquivalent/script_symlink_copy
=== RUN   TestEntryStateEquivalent/symlink_symlink_copy
=== RUN   TestEntryStateEquivalent/symlink_copy_symlink_copy
--- PASS: TestEntryStateEquivalent (0.00s)
    --- PASS: TestEntryStateEquivalent/dir1_dir1 (0.00s)
    --- PASS: TestEntryStateEquivalent/dir1_copy_dir1 (0.00s)
    --- PASS: TestEntryStateEquivalent/dir_private_dir1 (0.00s)
    --- PASS: TestEntryStateEquivalent/file1_dir1 (0.00s)
    --- PASS: TestEntryStateEquivalent/file1_copy_dir1 (0.00s)
    --- PASS: TestEntryStateEquivalent/file2_dir1 (0.00s)
    --- PASS: TestEntryStateEquivalent/nil1_dir1 (0.00s)
    --- PASS: TestEntryStateEquivalent/nil2_dir1 (0.00s)
    --- PASS: TestEntryStateEquivalent/remove_dir1 (0.00s)
    --- PASS: TestEntryStateEquivalent/script_dir1 (0.00s)
    --- PASS: TestEntryStateEquivalent/symlink_dir1 (0.00s)
    --- PASS: TestEntryStateEquivalent/symlink_copy_dir1 (0.00s)
    --- PASS: TestEntryStateEquivalent/dir1_dir1_copy (0.00s)
    --- PASS: TestEntryStateEquivalent/dir1_copy_dir1_copy (0.00s)
    --- PASS: TestEntryStateEquivalent/dir_private_dir1_copy (0.00s)
    --- PASS: TestEntryStateEquivalent/file1_dir1_copy (0.00s)
    --- PASS: TestEntryStateEquivalent/file1_copy_dir1_copy (0.00s)
    --- PASS: TestEntryStateEquivalent/file2_dir1_copy (0.00s)
    --- PASS: TestEntryStateEquivalent/nil1_dir1_copy (0.00s)
    --- PASS: TestEntryStateEquivalent/nil2_dir1_copy (0.00s)
    --- PASS: TestEntryStateEquivalent/remove_dir1_copy (0.00s)
    --- PASS: TestEntryStateEquivalent/script_dir1_copy (0.00s)
    --- PASS: TestEntryStateEquivalent/symlink_dir1_copy (0.00s)
    --- PASS: TestEntryStateEquivalent/symlink_copy_dir1_copy (0.00s)
    --- PASS: TestEntryStateEquivalent/dir1_dir_private (0.00s)
    --- PASS: TestEntryStateEquivalent/dir1_copy_dir_private (0.00s)
    --- PASS: TestEntryStateEquivalent/dir_private_dir_private (0.00s)
    --- PASS: TestEntryStateEquivalent/file1_dir_private (0.00s)
    --- PASS: TestEntryStateEquivalent/file1_copy_dir_private (0.00s)
    --- PASS: TestEntryStateEquivalent/file2_dir_private (0.00s)
    --- PASS: TestEntryStateEquivalent/nil1_dir_private (0.00s)
    --- PASS: TestEntryStateEquivalent/nil2_dir_private (0.00s)
    --- PASS: TestEntryStateEquivalent/remove_dir_private (0.00s)
    --- PASS: TestEntryStateEquivalent/script_dir_private (0.00s)
    --- PASS: TestEntryStateEquivalent/symlink_dir_private (0.00s)
    --- PASS: TestEntryStateEquivalent/symlink_copy_dir_private (0.00s)
    --- PASS: TestEntryStateEquivalent/dir1_file1 (0.00s)
    --- PASS: TestEntryStateEquivalent/dir1_copy_file1 (0.00s)
    --- PASS: TestEntryStateEquivalent/dir_private_file1 (0.00s)
    --- PASS: TestEntryStateEquivalent/file1_file1 (0.00s)
    --- PASS: TestEntryStateEquivalent/file1_copy_file1 (0.00s)
    --- PASS: TestEntryStateEquivalent/file2_file1 (0.00s)
    --- PASS: TestEntryStateEquivalent/nil1_file1 (0.00s)
    --- PASS: TestEntryStateEquivalent/nil2_file1 (0.00s)
    --- PASS: TestEntryStateEquivalent/remove_file1 (0.00s)
    --- PASS: TestEntryStateEquivalent/script_file1 (0.00s)
    --- PASS: TestEntryStateEquivalent/symlink_file1 (0.00s)
    --- PASS: TestEntryStateEquivalent/symlink_copy_file1 (0.00s)
    --- PASS: TestEntryStateEquivalent/dir1_file1_copy (0.00s)
    --- PASS: TestEntryStateEquivalent/dir1_copy_file1_copy (0.00s)
    --- PASS: TestEntryStateEquivalent/dir_private_file1_copy (0.00s)
    --- PASS: TestEntryStateEquivalent/file1_file1_copy (0.00s)
    --- PASS: TestEntryStateEquivalent/file1_copy_file1_copy (0.00s)
    --- PASS: TestEntryStateEquivalent/file2_file1_copy (0.00s)
    --- PASS: TestEntryStateEquivalent/nil1_file1_copy (0.00s)
    --- PASS: TestEntryStateEquivalent/nil2_file1_copy (0.00s)
    --- PASS: TestEntryStateEquivalent/remove_file1_copy (0.00s)
    --- PASS: TestEntryStateEquivalent/script_file1_copy (0.00s)
    --- PASS: TestEntryStateEquivalent/symlink_file1_copy (0.00s)
    --- PASS: TestEntryStateEquivalent/symlink_copy_file1_copy (0.00s)
    --- PASS: TestEntryStateEquivalent/dir1_file2 (0.00s)
    --- PASS: TestEntryStateEquivalent/dir1_copy_file2 (0.00s)
    --- PASS: TestEntryStateEquivalent/dir_private_file2 (0.00s)
    --- PASS: TestEntryStateEquivalent/file1_file2 (0.00s)
    --- PASS: TestEntryStateEquivalent/file1_copy_file2 (0.00s)
    --- PASS: TestEntryStateEquivalent/file2_file2 (0.00s)
    --- PASS: TestEntryStateEquivalent/nil1_file2 (0.00s)
    --- PASS: TestEntryStateEquivalent/nil2_file2 (0.00s)
    --- PASS: TestEntryStateEquivalent/remove_file2 (0.00s)
    --- PASS: TestEntryStateEquivalent/script_file2 (0.00s)
    --- PASS: TestEntryStateEquivalent/symlink_file2 (0.00s)
    --- PASS: TestEntryStateEquivalent/symlink_copy_file2 (0.00s)
    --- PASS: TestEntryStateEquivalent/dir1_nil1 (0.00s)
    --- PASS: TestEntryStateEquivalent/dir1_copy_nil1 (0.00s)
    --- PASS: TestEntryStateEquivalent/dir_private_nil1 (0.00s)
    --- PASS: TestEntryStateEquivalent/file1_nil1 (0.00s)
    --- PASS: TestEntryStateEquivalent/file1_copy_nil1 (0.00s)
    --- PASS: TestEntryStateEquivalent/file2_nil1 (0.00s)
    --- PASS: TestEntryStateEquivalent/nil1_nil1 (0.00s)
    --- PASS: TestEntryStateEquivalent/nil2_nil1 (0.00s)
    --- PASS: TestEntryStateEquivalent/remove_nil1 (0.00s)
    --- PASS: TestEntryStateEquivalent/script_nil1 (0.00s)
    --- PASS: TestEntryStateEquivalent/symlink_nil1 (0.00s)
    --- PASS: TestEntryStateEquivalent/symlink_copy_nil1 (0.00s)
    --- PASS: TestEntryStateEquivalent/dir1_nil2 (0.00s)
    --- PASS: TestEntryStateEquivalent/dir1_copy_nil2 (0.00s)
    --- PASS: TestEntryStateEquivalent/dir_private_nil2 (0.00s)
    --- PASS: TestEntryStateEquivalent/file1_nil2 (0.00s)
    --- PASS: TestEntryStateEquivalent/file1_copy_nil2 (0.00s)
    --- PASS: TestEntryStateEquivalent/file2_nil2 (0.00s)
    --- PASS: TestEntryStateEquivalent/nil1_nil2 (0.00s)
    --- PASS: TestEntryStateEquivalent/nil2_nil2 (0.00s)
    --- PASS: TestEntryStateEquivalent/remove_nil2 (0.00s)
    --- PASS: TestEntryStateEquivalent/script_nil2 (0.00s)
    --- PASS: TestEntryStateEquivalent/symlink_nil2 (0.00s)
    --- PASS: TestEntryStateEquivalent/symlink_copy_nil2 (0.00s)
    --- PASS: TestEntryStateEquivalent/dir1_remove (0.00s)
    --- PASS: TestEntryStateEquivalent/dir1_copy_remove (0.00s)
    --- PASS: TestEntryStateEquivalent/dir_private_remove (0.00s)
    --- PASS: TestEntryStateEquivalent/file1_remove (0.00s)
    --- PASS: TestEntryStateEquivalent/file1_copy_remove (0.00s)
    --- PASS: TestEntryStateEquivalent/file2_remove (0.00s)
    --- PASS: TestEntryStateEquivalent/nil1_remove (0.00s)
    --- PASS: TestEntryStateEquivalent/nil2_remove (0.00s)
    --- PASS: TestEntryStateEquivalent/remove_remove (0.00s)
    --- PASS: TestEntryStateEquivalent/script_remove (0.00s)
    --- PASS: TestEntryStateEquivalent/symlink_remove (0.00s)
    --- PASS: TestEntryStateEquivalent/symlink_copy_remove (0.00s)
    --- PASS: TestEntryStateEquivalent/dir1_script (0.00s)
    --- PASS: TestEntryStateEquivalent/dir1_copy_script (0.00s)
    --- PASS: TestEntryStateEquivalent/dir_private_script (0.00s)
    --- PASS: TestEntryStateEquivalent/file1_script (0.00s)
    --- PASS: TestEntryStateEquivalent/file1_copy_script (0.00s)
    --- PASS: TestEntryStateEquivalent/file2_script (0.00s)
    --- PASS: TestEntryStateEquivalent/nil1_script (0.00s)
    --- PASS: TestEntryStateEquivalent/nil2_script (0.00s)
    --- PASS: TestEntryStateEquivalent/remove_script (0.00s)
    --- PASS: TestEntryStateEquivalent/script_script (0.00s)
    --- PASS: TestEntryStateEquivalent/symlink_script (0.00s)
    --- PASS: TestEntryStateEquivalent/symlink_copy_script (0.00s)
    --- PASS: TestEntryStateEquivalent/dir1_symlink (0.00s)
    --- PASS: TestEntryStateEquivalent/dir1_copy_symlink (0.00s)
    --- PASS: TestEntryStateEquivalent/dir_private_symlink (0.00s)
    --- PASS: TestEntryStateEquivalent/file1_symlink (0.00s)
    --- PASS: TestEntryStateEquivalent/file1_copy_symlink (0.00s)
    --- PASS: TestEntryStateEquivalent/file2_symlink (0.00s)
    --- PASS: TestEntryStateEquivalent/nil1_symlink (0.00s)
    --- PASS: TestEntryStateEquivalent/nil2_symlink (0.00s)
    --- PASS: TestEntryStateEquivalent/remove_symlink (0.00s)
    --- PASS: TestEntryStateEquivalent/script_symlink (0.00s)
    --- PASS: TestEntryStateEquivalent/symlink_symlink (0.00s)
    --- PASS: TestEntryStateEquivalent/symlink_copy_symlink (0.00s)
    --- PASS: TestEntryStateEquivalent/dir1_symlink_copy (0.00s)
    --- PASS: TestEntryStateEquivalent/dir1_copy_symlink_copy (0.00s)
    --- PASS: TestEntryStateEquivalent/dir_private_symlink_copy (0.00s)
    --- PASS: TestEntryStateEquivalent/file1_symlink_copy (0.00s)
    --- PASS: TestEntryStateEquivalent/file1_copy_symlink_copy (0.00s)
    --- PASS: TestEntryStateEquivalent/file2_symlink_copy (0.00s)
    --- PASS: TestEntryStateEquivalent/nil1_symlink_copy (0.00s)
    --- PASS: TestEntryStateEquivalent/nil2_symlink_copy (0.00s)
    --- PASS: TestEntryStateEquivalent/remove_symlink_copy (0.00s)
    --- PASS: TestEntryStateEquivalent/script_symlink_copy (0.00s)
    --- PASS: TestEntryStateEquivalent/symlink_symlink_copy (0.00s)
    --- PASS: TestEntryStateEquivalent/symlink_copy_symlink_copy (0.00s)
=== RUN   TestIncludeMaskSet
=== RUN   TestIncludeMaskSet/#00
=== RUN   TestIncludeMaskSet/none
=== RUN   TestIncludeMaskSet/dirs,files
=== RUN   TestIncludeMaskSet/all
=== RUN   TestIncludeMaskSet/all,noscripts
=== RUN   TestIncludeMaskSet/noscripts
=== RUN   TestIncludeMaskSet/noscripts,nosymlinks
=== RUN   TestIncludeMaskSet/symlinks,,
=== RUN   TestIncludeMaskSet/devices
--- PASS: TestIncludeMaskSet (0.00s)
    --- PASS: TestIncludeMaskSet/#00 (0.00s)
    --- PASS: TestIncludeMaskSet/none (0.00s)
    --- PASS: TestIncludeMaskSet/dirs,files (0.00s)
    --- PASS: TestIncludeMaskSet/all (0.00s)
    --- PASS: TestIncludeMaskSet/all,noscripts (0.00s)
    --- PASS: TestIncludeMaskSet/noscripts (0.00s)
    --- PASS: TestIncludeMaskSet/noscripts,nosymlinks (0.00s)
    --- PASS: TestIncludeMaskSet/symlinks,, (0.00s)
    --- PASS: TestIncludeMaskSet/devices (0.00s)
=== RUN   TestIncludeMaskStringSlice
=== RUN   TestIncludeMaskStringSlice/all
=== RUN   TestIncludeMaskStringSlice/dirs
=== RUN   TestIncludeMaskStringSlice/files
=== RUN   TestIncludeMaskStringSlice/remove
=== RUN   TestIncludeMaskStringSlice/scripts
=== RUN   TestIncludeMaskStringSlice/symlinks
=== RUN   TestIncludeMaskStringSlice/encrypted
=== RUN   TestIncludeMaskStringSlice/externals
=== RUN   TestIncludeMaskStringSlice/none
=== RUN   TestIncludeMaskStringSlice/dirs,files
--- PASS: TestIncludeMaskStringSlice (0.00s)
    --- PASS: TestIncludeMaskStringSlice/all (0.00s)
    --- PASS: TestIncludeMaskStringSlice/dirs (0.00s)
    --- PASS: TestIncludeMaskStringSlice/files (0.00s)
    --- PASS: TestIncludeMaskStringSlice/remove (0.00s)
    --- PASS: TestIncludeMaskStringSlice/scripts (0.00s)
    --- PASS: TestIncludeMaskStringSlice/symlinks (0.00s)
    --- PASS: TestIncludeMaskStringSlice/encrypted (0.00s)
    --- PASS: TestIncludeMaskStringSlice/externals (0.00s)
    --- PASS: TestIncludeMaskStringSlice/none (0.00s)
    --- PASS: TestIncludeMaskStringSlice/dirs,files (0.00s)
=== RUN   TestEntryTypeSetFlagCompletionFunc
=== RUN   TestEntryTypeSetFlagCompletionFunc/a
=== RUN   TestEntryTypeSetFlagCompletionFunc/e
=== RUN   TestEntryTypeSetFlagCompletionFunc/t
=== RUN   TestEntryTypeSetFlagCompletionFunc/all,nos
--- PASS: TestEntryTypeSetFlagCompletionFunc (0.00s)
    --- PASS: TestEntryTypeSetFlagCompletionFunc/a (0.00s)
    --- PASS: TestEntryTypeSetFlagCompletionFunc/e (0.00s)
    --- PASS: TestEntryTypeSetFlagCompletionFunc/t (0.00s)
    --- PASS: TestEntryTypeSetFlagCompletionFunc/all,nos (0.00s)
=== RUN   TestFindExecutable
=== RUN   TestFindExecutable/FindExecutable_[]string{"yes"}_in_[]string{"/usr/bin",_"/bin"}_as_"/usr/bin/yes"
=== RUN   TestFindExecutable/FindExecutable_[]string{"sh"}_in_[]string{"/bin",_"/usr/bin"}_as_"/bin/sh"
=== RUN   TestFindExecutable/FindExecutable_[]string{"chezmoish"}_in_[]string{"/bin",_"/usr/bin"}_as_""
=== RUN   TestFindExecutable/FindExecutable_[]string{"chezmoish",_"yes"}_in_[]string{"/usr/bin",_"/bin"}_as_"/usr/bin/yes"
=== RUN   TestFindExecutable/FindExecutable_[]string{"chezmoish",_"sh"}_in_[]string{"/bin",_"/usr/bin"}_as_"/bin/sh"
=== RUN   TestFindExecutable/FindExecutable_[]string{"chezmoish",_"chezvoush"}_in_[]string{"/bin",_"/usr/bin"}_as_""
--- PASS: TestFindExecutable (0.00s)
    --- PASS: TestFindExecutable/FindExecutable_[]string{"yes"}_in_[]string{"/usr/bin",_"/bin"}_as_"/usr/bin/yes" (0.00s)
    --- PASS: TestFindExecutable/FindExecutable_[]string{"sh"}_in_[]string{"/bin",_"/usr/bin"}_as_"/bin/sh" (0.00s)
    --- PASS: TestFindExecutable/FindExecutable_[]string{"chezmoish"}_in_[]string{"/bin",_"/usr/bin"}_as_"" (0.00s)
    --- PASS: TestFindExecutable/FindExecutable_[]string{"chezmoish",_"yes"}_in_[]string{"/usr/bin",_"/bin"}_as_"/usr/bin/yes" (0.00s)
    --- PASS: TestFindExecutable/FindExecutable_[]string{"chezmoish",_"sh"}_in_[]string{"/bin",_"/usr/bin"}_as_"/bin/sh" (0.00s)
    --- PASS: TestFindExecutable/FindExecutable_[]string{"chezmoish",_"chezvoush"}_in_[]string{"/bin",_"/usr/bin"}_as_"" (0.00s)
=== RUN   TestFormatJSONSingleValue
--- PASS: TestFormatJSONSingleValue (0.00s)
=== RUN   TestFormats
--- PASS: TestFormats (0.00s)
=== RUN   TestFormatRoundTrip
=== RUN   TestFormatRoundTrip/jsonc
=== RUN   TestFormatRoundTrip/json
=== RUN   TestFormatRoundTrip/toml
=== RUN   TestFormatRoundTrip/yaml
--- PASS: TestFormatRoundTrip (0.00s)
    --- PASS: TestFormatRoundTrip/jsonc (0.00s)
    --- PASS: TestFormatRoundTrip/json (0.00s)
    --- PASS: TestFormatRoundTrip/toml (0.00s)
    --- PASS: TestFormatRoundTrip/yaml (0.00s)
=== RUN   TestFormatEdgeCases
=== RUN   TestFormatEdgeCases/jsonc
=== RUN   TestFormatEdgeCases/jsonc_empty
=== RUN   TestFormatEdgeCases/jsonc_simple
=== RUN   TestFormatEdgeCases/jsonc_trailing_value
=== RUN   TestFormatEdgeCases/jsonc_unknown_field
=== RUN   TestFormatEdgeCases/jsonc_unexpected_eof
=== RUN   TestFormatEdgeCases/jsonc_whitespace
=== RUN   TestFormatEdgeCases/json
=== RUN   TestFormatEdgeCases/json_empty
=== RUN   TestFormatEdgeCases/json_simple
=== RUN   TestFormatEdgeCases/json_unknown_field
=== RUN   TestFormatEdgeCases/json_unexpected_eof
=== RUN   TestFormatEdgeCases/json_whitespace
=== RUN   TestFormatEdgeCases/toml
=== RUN   TestFormatEdgeCases/toml_1.1
=== RUN   TestFormatEdgeCases/toml_empty
=== RUN   TestFormatEdgeCases/toml_simple
=== RUN   TestFormatEdgeCases/toml_unexpected_eof
=== RUN   TestFormatEdgeCases/toml_whitespace
=== RUN   TestFormatEdgeCases/yaml
=== RUN   TestFormatEdgeCases/yaml_empty
=== RUN   TestFormatEdgeCases/yaml_simple
=== RUN   TestFormatEdgeCases/yaml_unknown_field
=== RUN   TestFormatEdgeCases/yaml_unexpected_eof
=== RUN   TestFormatEdgeCases/yaml_whitespace
--- PASS: TestFormatEdgeCases (0.00s)
    --- PASS: TestFormatEdgeCases/jsonc (0.00s)
    --- PASS: TestFormatEdgeCases/jsonc_empty (0.00s)
    --- PASS: TestFormatEdgeCases/jsonc_simple (0.00s)
    --- PASS: TestFormatEdgeCases/jsonc_trailing_value (0.00s)
    --- PASS: TestFormatEdgeCases/jsonc_unknown_field (0.00s)
    --- PASS: TestFormatEdgeCases/jsonc_unexpected_eof (0.00s)
    --- PASS: TestFormatEdgeCases/jsonc_whitespace (0.00s)
    --- PASS: TestFormatEdgeCases/json (0.00s)
    --- PASS: TestFormatEdgeCases/json_empty (0.00s)
    --- PASS: TestFormatEdgeCases/json_simple (0.00s)
    --- PASS: TestFormatEdgeCases/json_unknown_field (0.00s)
    --- PASS: TestFormatEdgeCases/json_unexpected_eof (0.00s)
    --- PASS: TestFormatEdgeCases/json_whitespace (0.00s)
    --- PASS: TestFormatEdgeCases/toml (0.00s)
    --- PASS: TestFormatEdgeCases/toml_1.1 (0.00s)
    --- PASS: TestFormatEdgeCases/toml_empty (0.00s)
    --- PASS: TestFormatEdgeCases/toml_simple (0.00s)
    --- PASS: TestFormatEdgeCases/toml_unexpected_eof (0.00s)
    --- PASS: TestFormatEdgeCases/toml_whitespace (0.00s)
    --- PASS: TestFormatEdgeCases/yaml (0.00s)
    --- PASS: TestFormatEdgeCases/yaml_empty (0.00s)
    --- PASS: TestFormatEdgeCases/yaml_simple (0.00s)
    --- PASS: TestFormatEdgeCases/yaml_unknown_field (0.00s)
    --- PASS: TestFormatEdgeCases/yaml_unexpected_eof (0.00s)
    --- PASS: TestFormatEdgeCases/yaml_whitespace (0.00s)
=== RUN   TestGPGEncryption
gpg: WARNING: unsafe permissions on homedir '/tmp/TestGPGEncryption4146600771/001'
gpg: Warning: using insecure memory!
gpg: keybox '/tmp/TestGPGEncryption4146600771/001/pubring.kbx' created
gpg: /tmp/TestGPGEncryption4146600771/001/trustdb.gpg: trustdb created
gpg: directory '/tmp/TestGPGEncryption4146600771/001/openpgp-revocs.d' created
gpg: revocation certificate stored as '/tmp/TestGPGEncryption4146600771/001/openpgp-revocs.d/E9558296D718DBF69C68416A811DD2DB9A7D1984.rev'
2026/07/20 20:42:27 INFO Run cmd="/usr/bin/gpg --batch --homedir /tmp/TestGPGEncryption4146600771/001 --no-tty --passphrase chezmoi-test-gpg-passphrase --pinentry-mode loopback --quick-generate-key chezmoi-test-gpg-key" duration=1.088266254s err=<nil>
=== RUN   TestGPGEncryption/asymmetric
=== RUN   TestGPGEncryption/asymmetric/DecryptToFile
gpg: WARNING: unsafe permissions on homedir '/tmp/TestGPGEncryption4146600771/001'
gpg: Warning: using insecure memory!
gpg: checking the trustdb
gpg: marginals needed: 3  completes needed: 1  trust model: pgp
gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
gpg: next trustdb check due at 2029-07-19
2026/07/20 20:42:27 INFO Run cmd="/usr/bin/gpg --armor --output /tmp/chezmoi-encryption1023678092/ciphertext --recipient chezmoi-test-gpg-key --homedir /tmp/TestGPGEncryption4146600771/001 --no-tty --passphrase chezmoi-test-gpg-passphrase --pinentry-mode loopback --encrypt /tmp/chezmoi-encryption1023678092/plaintext" duration=13.255412ms err=<nil>
gpg: WARNING: unsafe permissions on homedir '/tmp/TestGPGEncryption4146600771/001'
gpg: Warning: using insecure memory!
gpg: encrypted with cv25519 key, ID 3DE1793839EC14E8, created 2026-07-20
      "chezmoi-test-gpg-key"
2026/07/20 20:42:27 INFO Run cmd="/usr/bin/gpg --output /tmp/TestGPGEncryptionasymmetricDecryptToFile2165282349/001/plaintext --homedir /tmp/TestGPGEncryption4146600771/001 --no-tty --passphrase chezmoi-test-gpg-passphrase --pinentry-mode loopback --decrypt /tmp/chezmoi-encryption2764050751/ciphertext" duration=126.799626ms err=<nil>
=== RUN   TestGPGEncryption/asymmetric/EncryptDecrypt
gpg: WARNING: unsafe permissions on homedir '/tmp/TestGPGEncryption4146600771/001'
gpg: Warning: using insecure memory!
2026/07/20 20:42:27 INFO Run cmd="/usr/bin/gpg --armor --output /tmp/chezmoi-encryption699380864/ciphertext --recipient chezmoi-test-gpg-key --homedir /tmp/TestGPGEncryption4146600771/001 --no-tty --passphrase chezmoi-test-gpg-passphrase --pinentry-mode loopback --encrypt /tmp/chezmoi-encryption699380864/plaintext" duration=9.708753ms err=<nil>
gpg: WARNING: unsafe permissions on homedir '/tmp/TestGPGEncryption4146600771/001'
gpg: Warning: using insecure memory!
gpg: encrypted with cv25519 key, ID 3DE1793839EC14E8, created 2026-07-20
      "chezmoi-test-gpg-key"
2026/07/20 20:42:27 INFO Run cmd="/usr/bin/gpg --output /tmp/chezmoi-encryption3186730076/plaintext --homedir /tmp/TestGPGEncryption4146600771/001 --no-tty --passphrase chezmoi-test-gpg-passphrase --pinentry-mode loopback --decrypt /tmp/chezmoi-encryption3186730076/ciphertext" duration=215.924378ms err=<nil>
=== RUN   TestGPGEncryption/asymmetric/EncryptFile
gpg: WARNING: unsafe permissions on homedir '/tmp/TestGPGEncryption4146600771/001'
gpg: Warning: using insecure memory!
2026/07/20 20:42:27 INFO Run cmd="/usr/bin/gpg --armor --output /tmp/chezmoi-encryption3450746987/ciphertext --recipient chezmoi-test-gpg-key --homedir /tmp/TestGPGEncryption4146600771/001 --no-tty --passphrase chezmoi-test-gpg-passphrase --pinentry-mode loopback --encrypt /tmp/TestGPGEncryptionasymmetricEncryptFile235299950/001/plaintext" duration=14.194598ms err=<nil>
gpg: WARNING: unsafe permissions on homedir '/tmp/TestGPGEncryption4146600771/001'
gpg: Warning: using insecure memory!
gpg: encrypted with cv25519 key, ID 3DE1793839EC14E8, created 2026-07-20
      "chezmoi-test-gpg-key"
2026/07/20 20:42:27 INFO Run cmd="/usr/bin/gpg --output /tmp/chezmoi-encryption2334741371/plaintext --homedir /tmp/TestGPGEncryption4146600771/001 --no-tty --passphrase chezmoi-test-gpg-passphrase --pinentry-mode loopback --decrypt /tmp/chezmoi-encryption2334741371/ciphertext" duration=103.503426ms err=<nil>
=== RUN   TestGPGEncryption/symmetric
=== RUN   TestGPGEncryption/symmetric/DecryptToFile
gpg: WARNING: unsafe permissions on homedir '/tmp/TestGPGEncryption4146600771/001'
gpg: Warning: using insecure memory!
2026/07/20 20:42:27 INFO Run cmd="/usr/bin/gpg --armor --output /tmp/chezmoi-encryption2736097051/ciphertext --symmetric --homedir /tmp/TestGPGEncryption4146600771/001 --no-tty --passphrase chezmoi-test-gpg-passphrase --pinentry-mode loopback /tmp/chezmoi-encryption2736097051/plaintext" duration=237.72526ms err=<nil>
gpg: WARNING: unsafe permissions on homedir '/tmp/TestGPGEncryption4146600771/001'
gpg: Warning: using insecure memory!
gpg: AES256.CFB encrypted data
gpg: encrypted with 1 passphrase
2026/07/20 20:42:28 INFO Run cmd="/usr/bin/gpg --output /tmp/TestGPGEncryptionsymmetricDecryptToFile455208529/001/plaintext --homedir /tmp/TestGPGEncryption4146600771/001 --no-tty --passphrase chezmoi-test-gpg-passphrase --pinentry-mode loopback --decrypt /tmp/chezmoi-encryption398883692/ciphertext" duration=178.021902ms err=<nil>
=== RUN   TestGPGEncryption/symmetric/EncryptDecrypt
gpg: WARNING: unsafe permissions on homedir '/tmp/TestGPGEncryption4146600771/001'
gpg: Warning: using insecure memory!
2026/07/20 20:42:28 INFO Run cmd="/usr/bin/gpg --armor --output /tmp/chezmoi-encryption1675173516/ciphertext --symmetric --homedir /tmp/TestGPGEncryption4146600771/001 --no-tty --passphrase chezmoi-test-gpg-passphrase --pinentry-mode loopback /tmp/chezmoi-encryption1675173516/plaintext" duration=184.2256ms err=<nil>
gpg: WARNING: unsafe permissions on homedir '/tmp/TestGPGEncryption4146600771/001'
gpg: Warning: using insecure memory!
gpg: AES256.CFB encrypted data
gpg: encrypted with 1 passphrase
2026/07/20 20:42:28 INFO Run cmd="/usr/bin/gpg --output /tmp/chezmoi-encryption4110158744/plaintext --homedir /tmp/TestGPGEncryption4146600771/001 --no-tty --passphrase chezmoi-test-gpg-passphrase --pinentry-mode loopback --decrypt /tmp/chezmoi-encryption4110158744/ciphertext" duration=158.656948ms err=<nil>
=== RUN   TestGPGEncryption/symmetric/EncryptFile
gpg: WARNING: unsafe permissions on homedir '/tmp/TestGPGEncryption4146600771/001'
gpg: Warning: using insecure memory!
2026/07/20 20:42:28 INFO Run cmd="/usr/bin/gpg --armor --output /tmp/chezmoi-encryption1645067824/ciphertext --symmetric --homedir /tmp/TestGPGEncryption4146600771/001 --no-tty --passphrase chezmoi-test-gpg-passphrase --pinentry-mode loopback /tmp/TestGPGEncryptionsymmetricEncryptFile3605597936/001/plaintext" duration=318.630368ms err=<nil>
gpg: WARNING: unsafe permissions on homedir '/tmp/TestGPGEncryption4146600771/001'
gpg: Warning: using insecure memory!
gpg: AES256.CFB encrypted data
gpg: encrypted with 1 passphrase
2026/07/20 20:42:28 INFO Run cmd="/usr/bin/gpg --output /tmp/chezmoi-encryption2764855250/plaintext --homedir /tmp/TestGPGEncryption4146600771/001 --no-tty --passphrase chezmoi-test-gpg-passphrase --pinentry-mode loopback --decrypt /tmp/chezmoi-encryption2764855250/ciphertext" duration=269.682417ms err=<nil>
--- PASS: TestGPGEncryption (2.94s)
    --- PASS: TestGPGEncryption/asymmetric (0.49s)
        --- PASS: TestGPGEncryption/asymmetric/DecryptToFile (0.14s)
        --- PASS: TestGPGEncryption/asymmetric/EncryptDecrypt (0.23s)
        --- PASS: TestGPGEncryption/asymmetric/EncryptFile (0.12s)
    --- PASS: TestGPGEncryption/symmetric (1.35s)
        --- PASS: TestGPGEncryption/symmetric/DecryptToFile (0.42s)
        --- PASS: TestGPGEncryption/symmetric/EncryptDecrypt (0.34s)
        --- PASS: TestGPGEncryption/symmetric/EncryptFile (0.59s)
=== RUN   TestHexBytes
=== RUN   TestHexBytes/0
=== RUN   TestHexBytes/0/json
=== RUN   TestHexBytes/0/yaml
=== RUN   TestHexBytes/1
=== RUN   TestHexBytes/1/json
=== RUN   TestHexBytes/1/yaml
=== RUN   TestHexBytes/2
=== RUN   TestHexBytes/2/json
=== RUN   TestHexBytes/2/yaml
--- PASS: TestHexBytes (0.00s)
    --- PASS: TestHexBytes/0 (0.00s)
        --- PASS: TestHexBytes/0/json (0.00s)
        --- PASS: TestHexBytes/0/yaml (0.00s)
    --- PASS: TestHexBytes/1 (0.00s)
        --- PASS: TestHexBytes/1/json (0.00s)
        --- PASS: TestHexBytes/1/yaml (0.00s)
    --- PASS: TestHexBytes/2 (0.00s)
        --- PASS: TestHexBytes/2/json (0.00s)
        --- PASS: TestHexBytes/2/yaml (0.00s)
=== RUN   TestMockPersistentState
--- PASS: TestMockPersistentState (0.00s)
=== RUN   TestPatternSet
=== RUN   TestPatternSet/empty
=== RUN   TestPatternSet/exact
=== RUN   TestPatternSet/wildcard
=== RUN   TestPatternSet/exclude
=== RUN   TestPatternSet/doublestar
--- PASS: TestPatternSet (0.00s)
    --- PASS: TestPatternSet/empty (0.00s)
    --- PASS: TestPatternSet/exact (0.00s)
    --- PASS: TestPatternSet/wildcard (0.00s)
    --- PASS: TestPatternSet/exclude (0.00s)
    --- PASS: TestPatternSet/doublestar (0.00s)
=== RUN   TestPatternSetGlob
=== RUN   TestPatternSetGlob/empty
=== RUN   TestPatternSetGlob/simple
=== RUN   TestPatternSetGlob/include_exclude
=== RUN   TestPatternSetGlob/doublestar
--- PASS: TestPatternSetGlob (0.00s)
    --- PASS: TestPatternSetGlob/empty (0.00s)
    --- PASS: TestPatternSetGlob/simple (0.00s)
    --- PASS: TestPatternSetGlob/include_exclude (0.00s)
    --- PASS: TestPatternSetGlob/doublestar (0.00s)
=== RUN   TestRealSystemGlob
=== RUN   TestRealSystemGlob//home/user/foo
=== RUN   TestRealSystemGlob//home/user/**/foo
=== RUN   TestRealSystemGlob//home/user/**/ba*
--- PASS: TestRealSystemGlob (0.00s)
    --- PASS: TestRealSystemGlob//home/user/foo (0.00s)
    --- PASS: TestRealSystemGlob//home/user/**/foo (0.00s)
    --- PASS: TestRealSystemGlob//home/user/**/ba* (0.00s)
=== RUN   TestPrepareScriptCmd
=== RUN   TestPrepareScriptCmd/without_working_dir
=== RUN   TestPrepareScriptCmd/with_working_dir
--- PASS: TestPrepareScriptCmd (0.00s)
    --- PASS: TestPrepareScriptCmd/without_working_dir (0.00s)
    --- PASS: TestPrepareScriptCmd/with_working_dir (0.00s)
=== RUN   TestPrepareScriptCmdCleansUpOnError
--- PASS: TestPrepareScriptCmdCleansUpOnError (0.00s)
=== RUN   TestRecursiveMerge
--- PASS: TestRecursiveMerge (0.00s)
=== RUN   TestRecursiveMergeCopies
--- PASS: TestRecursiveMergeCopies (0.00s)
=== RUN   TestSourceRelPath
=== RUN   TestSourceRelPath/dir
=== RUN   TestSourceRelPath/exact_dir
=== RUN   TestSourceRelPath/exact_dir_private_dir
=== RUN   TestSourceRelPath/file
=== RUN   TestSourceRelPath/dot_file
=== RUN   TestSourceRelPath/exact_dir_executable_file
--- PASS: TestSourceRelPath (0.00s)
    --- PASS: TestSourceRelPath/dir (0.00s)
    --- PASS: TestSourceRelPath/exact_dir (0.00s)
    --- PASS: TestSourceRelPath/exact_dir_private_dir (0.00s)
    --- PASS: TestSourceRelPath/file (0.00s)
    --- PASS: TestSourceRelPath/dot_file (0.00s)
    --- PASS: TestSourceRelPath/exact_dir_executable_file (0.00s)
=== RUN   TestSourceStateAdd
=== RUN   TestSourceStateAdd/dir
=== RUN   TestSourceStateAdd/dir/0
=== RUN   TestSourceStateAdd/dir/1
=== RUN   TestSourceStateAdd/dir/0#01
=== RUN   TestSourceStateAdd/dir/0#02
=== RUN   TestSourceStateAdd/dir_change_attributes
=== RUN   TestSourceStateAdd/dir_change_attributes/0
=== RUN   TestSourceStateAdd/dir_change_attributes/0#01
=== RUN   TestSourceStateAdd/dir_change_attributes/1
=== RUN   TestSourceStateAdd/dir_change_attributes/0#02
=== RUN   TestSourceStateAdd/dir_change_attributes/1#01
=== RUN   TestSourceStateAdd/dir_change_attributes/2
=== RUN   TestSourceStateAdd/dir_file
=== RUN   TestSourceStateAdd/dir_file/0
=== RUN   TestSourceStateAdd/dir_file/1
=== RUN   TestSourceStateAdd/dir_file/0#01
=== RUN   TestSourceStateAdd/dir_file/1#01
=== RUN   TestSourceStateAdd/dir_file/2
=== RUN   TestSourceStateAdd/dir_file_existing_dir
=== RUN   TestSourceStateAdd/dir_file_existing_dir/0
=== RUN   TestSourceStateAdd/dir_file_existing_dir/1
=== RUN   TestSourceStateAdd/dir_subdir
=== RUN   TestSourceStateAdd/dir_subdir/0
=== RUN   TestSourceStateAdd/dir_subdir/1
=== RUN   TestSourceStateAdd/dir_subdir/0#01
=== RUN   TestSourceStateAdd/dir_subdir/1#01
=== RUN   TestSourceStateAdd/dir_subdir/0#02
=== RUN   TestSourceStateAdd/dir_subdir_file
=== RUN   TestSourceStateAdd/dir_subdir_file/0
=== RUN   TestSourceStateAdd/dir_subdir_file/1
=== RUN   TestSourceStateAdd/dir_subdir_file/0#01
=== RUN   TestSourceStateAdd/dir_subdir_file/0#02
=== RUN   TestSourceStateAdd/dir_subdir_file/1#01
=== RUN   TestSourceStateAdd/dir_subdir_file/0#03
=== RUN   TestSourceStateAdd/dir_subdir_file/1#02
=== RUN   TestSourceStateAdd/dir_subdir_file/2
=== RUN   TestSourceStateAdd/dir_subdir_file_existing_dir_subdir
=== RUN   TestSourceStateAdd/dir_subdir_file_existing_dir_subdir/0
=== RUN   TestSourceStateAdd/dir_subdir_file_existing_dir_subdir/1
=== RUN   TestSourceStateAdd/dir_readonly_unix
=== RUN   TestSourceStateAdd/dir_readonly_unix/0
=== RUN   TestSourceStateAdd/dir_readonly_unix/1
=== RUN   TestSourceStateAdd/empty
=== RUN   TestSourceStateAdd/empty/0
=== RUN   TestSourceStateAdd/empty_with_empty
=== RUN   TestSourceStateAdd/empty_with_empty/0
=== RUN   TestSourceStateAdd/empty_with_empty/1
=== RUN   TestSourceStateAdd/empty_with_empty/2
=== RUN   TestSourceStateAdd/executable_unix
=== RUN   TestSourceStateAdd/executable_unix/0
=== RUN   TestSourceStateAdd/executable_unix/1
=== RUN   TestSourceStateAdd/executable_unix/2
=== RUN   TestSourceStateAdd/executable_windows
    sourcestate_test.go:516: skipping Windows test on UNIX
=== RUN   TestSourceStateAdd/create
=== RUN   TestSourceStateAdd/create/0
=== RUN   TestSourceStateAdd/create/1
=== RUN   TestSourceStateAdd/create/2
=== RUN   TestSourceStateAdd/file
=== RUN   TestSourceStateAdd/file/0
=== RUN   TestSourceStateAdd/file/1
=== RUN   TestSourceStateAdd/file/2
=== RUN   TestSourceStateAdd/file_change_attributes
=== RUN   TestSourceStateAdd/file_change_attributes/0
=== RUN   TestSourceStateAdd/file_change_attributes/1
=== RUN   TestSourceStateAdd/file_change_attributes/2
=== RUN   TestSourceStateAdd/file_change_attributes/0#01
=== RUN   TestSourceStateAdd/file_replace_contents
=== RUN   TestSourceStateAdd/file_replace_contents/0
=== RUN   TestSourceStateAdd/file_replace_contents/1
=== RUN   TestSourceStateAdd/file_replace_contents/2
=== RUN   TestSourceStateAdd/private_unix
=== RUN   TestSourceStateAdd/private_unix/0
=== RUN   TestSourceStateAdd/private_unix/1
=== RUN   TestSourceStateAdd/private_unix/2
=== RUN   TestSourceStateAdd/private_windows
    sourcestate_test.go:516: skipping Windows test on UNIX
=== RUN   TestSourceStateAdd/file_readonly_unix
=== RUN   TestSourceStateAdd/file_readonly_unix/0
=== RUN   TestSourceStateAdd/file_readonly_unix/1
=== RUN   TestSourceStateAdd/file_readonly_unix/2
=== RUN   TestSourceStateAdd/symlink
=== RUN   TestSourceStateAdd/symlink/0
=== RUN   TestSourceStateAdd/symlink/1
=== RUN   TestSourceStateAdd/symlink_backslash_windows
    sourcestate_test.go:516: skipping Windows test on UNIX
=== RUN   TestSourceStateAdd/template
=== RUN   TestSourceStateAdd/template/0
=== RUN   TestSourceStateAdd/template/1
=== RUN   TestSourceStateAdd/template/2
=== RUN   TestSourceStateAdd/dir_and_dir_file
=== RUN   TestSourceStateAdd/dir_and_dir_file/0
=== RUN   TestSourceStateAdd/dir_and_dir_file/1
=== RUN   TestSourceStateAdd/dir_and_dir_file/0#01
=== RUN   TestSourceStateAdd/dir_and_dir_file/1#01
=== RUN   TestSourceStateAdd/dir_and_dir_file/2
=== RUN   TestSourceStateAdd/file_in_dir_exact_subdir
=== RUN   TestSourceStateAdd/file_in_dir_exact_subdir/0
=== RUN   TestSourceStateAdd/file_in_dir_exact_subdir/1
=== RUN   TestSourceStateAdd/exact_subdir_not_exact_parent
=== RUN   TestSourceStateAdd/exact_subdir_not_exact_parent/0
=== RUN   TestSourceStateAdd/exact_subdir_not_exact_parent/1
=== RUN   TestSourceStateAdd/exact_subdir_not_exact_parent/0#01
=== RUN   TestSourceStateAdd/exact_subdir_not_exact_parent/1#01
=== RUN   TestSourceStateAdd/exact_subdir_not_exact_parent/0#02
--- PASS: TestSourceStateAdd (0.10s)
    --- PASS: TestSourceStateAdd/dir (0.00s)
        --- PASS: TestSourceStateAdd/dir/0 (0.00s)
        --- PASS: TestSourceStateAdd/dir/1 (0.00s)
        --- PASS: TestSourceStateAdd/dir/0#01 (0.00s)
        --- PASS: TestSourceStateAdd/dir/0#02 (0.00s)
    --- PASS: TestSourceStateAdd/dir_change_attributes (0.00s)
        --- PASS: TestSourceStateAdd/dir_change_attributes/0 (0.00s)
        --- PASS: TestSourceStateAdd/dir_change_attributes/0#01 (0.00s)
        --- PASS: TestSourceStateAdd/dir_change_attributes/1 (0.00s)
        --- PASS: TestSourceStateAdd/dir_change_attributes/0#02 (0.00s)
        --- PASS: TestSourceStateAdd/dir_change_attributes/1#01 (0.00s)
        --- PASS: TestSourceStateAdd/dir_change_attributes/2 (0.00s)
    --- PASS: TestSourceStateAdd/dir_file (0.00s)
        --- PASS: TestSourceStateAdd/dir_file/0 (0.00s)
        --- PASS: TestSourceStateAdd/dir_file/1 (0.00s)
        --- PASS: TestSourceStateAdd/dir_file/0#01 (0.00s)
        --- PASS: TestSourceStateAdd/dir_file/1#01 (0.00s)
        --- PASS: TestSourceStateAdd/dir_file/2 (0.00s)
    --- PASS: TestSourceStateAdd/dir_file_existing_dir (0.00s)
        --- PASS: TestSourceStateAdd/dir_file_existing_dir/0 (0.00s)
        --- PASS: TestSourceStateAdd/dir_file_existing_dir/1 (0.00s)
    --- PASS: TestSourceStateAdd/dir_subdir (0.00s)
        --- PASS: TestSourceStateAdd/dir_subdir/0 (0.00s)
        --- PASS: TestSourceStateAdd/dir_subdir/1 (0.00s)
        --- PASS: TestSourceStateAdd/dir_subdir/0#01 (0.00s)
        --- PASS: TestSourceStateAdd/dir_subdir/1#01 (0.00s)
        --- PASS: TestSourceStateAdd/dir_subdir/0#02 (0.00s)
    --- PASS: TestSourceStateAdd/dir_subdir_file (0.00s)
        --- PASS: TestSourceStateAdd/dir_subdir_file/0 (0.00s)
        --- PASS: TestSourceStateAdd/dir_subdir_file/1 (0.00s)
        --- PASS: TestSourceStateAdd/dir_subdir_file/0#01 (0.00s)
        --- PASS: TestSourceStateAdd/dir_subdir_file/0#02 (0.00s)
        --- PASS: TestSourceStateAdd/dir_subdir_file/1#01 (0.00s)
        --- PASS: TestSourceStateAdd/dir_subdir_file/0#03 (0.00s)
        --- PASS: TestSourceStateAdd/dir_subdir_file/1#02 (0.00s)
        --- PASS: TestSourceStateAdd/dir_subdir_file/2 (0.00s)
    --- PASS: TestSourceStateAdd/dir_subdir_file_existing_dir_subdir (0.00s)
        --- PASS: TestSourceStateAdd/dir_subdir_file_existing_dir_subdir/0 (0.00s)
        --- PASS: TestSourceStateAdd/dir_subdir_file_existing_dir_subdir/1 (0.00s)
    --- PASS: TestSourceStateAdd/dir_readonly_unix (0.00s)
        --- PASS: TestSourceStateAdd/dir_readonly_unix/0 (0.00s)
        --- PASS: TestSourceStateAdd/dir_readonly_unix/1 (0.00s)
    --- PASS: TestSourceStateAdd/empty (0.00s)
        --- PASS: TestSourceStateAdd/empty/0 (0.00s)
    --- PASS: TestSourceStateAdd/empty_with_empty (0.00s)
        --- PASS: TestSourceStateAdd/empty_with_empty/0 (0.00s)
        --- PASS: TestSourceStateAdd/empty_with_empty/1 (0.00s)
        --- PASS: TestSourceStateAdd/empty_with_empty/2 (0.00s)
    --- PASS: TestSourceStateAdd/executable_unix (0.00s)
        --- PASS: TestSourceStateAdd/executable_unix/0 (0.00s)
        --- PASS: TestSourceStateAdd/executable_unix/1 (0.00s)
        --- PASS: TestSourceStateAdd/executable_unix/2 (0.00s)
    --- SKIP: TestSourceStateAdd/executable_windows (0.00s)
    --- PASS: TestSourceStateAdd/create (0.00s)
        --- PASS: TestSourceStateAdd/create/0 (0.00s)
        --- PASS: TestSourceStateAdd/create/1 (0.00s)
        --- PASS: TestSourceStateAdd/create/2 (0.00s)
    --- PASS: TestSourceStateAdd/file (0.00s)
        --- PASS: TestSourceStateAdd/file/0 (0.00s)
        --- PASS: TestSourceStateAdd/file/1 (0.00s)
        --- PASS: TestSourceStateAdd/file/2 (0.00s)
    --- PASS: TestSourceStateAdd/file_change_attributes (0.00s)
        --- PASS: TestSourceStateAdd/file_change_attributes/0 (0.00s)
        --- PASS: TestSourceStateAdd/file_change_attributes/1 (0.00s)
        --- PASS: TestSourceStateAdd/file_change_attributes/2 (0.00s)
        --- PASS: TestSourceStateAdd/file_change_attributes/0#01 (0.00s)
    --- PASS: TestSourceStateAdd/file_replace_contents (0.00s)
        --- PASS: TestSourceStateAdd/file_replace_contents/0 (0.00s)
        --- PASS: TestSourceStateAdd/file_replace_contents/1 (0.00s)
        --- PASS: TestSourceStateAdd/file_replace_contents/2 (0.00s)
    --- PASS: TestSourceStateAdd/private_unix (0.00s)
        --- PASS: TestSourceStateAdd/private_unix/0 (0.00s)
        --- PASS: TestSourceStateAdd/private_unix/1 (0.00s)
        --- PASS: TestSourceStateAdd/private_unix/2 (0.00s)
    --- SKIP: TestSourceStateAdd/private_windows (0.00s)
    --- PASS: TestSourceStateAdd/file_readonly_unix (0.08s)
        --- PASS: TestSourceStateAdd/file_readonly_unix/0 (0.00s)
        --- PASS: TestSourceStateAdd/file_readonly_unix/1 (0.00s)
        --- PASS: TestSourceStateAdd/file_readonly_unix/2 (0.00s)
    --- PASS: TestSourceStateAdd/symlink (0.00s)
        --- PASS: TestSourceStateAdd/symlink/0 (0.00s)
        --- PASS: TestSourceStateAdd/symlink/1 (0.00s)
    --- SKIP: TestSourceStateAdd/symlink_backslash_windows (0.00s)
    --- PASS: TestSourceStateAdd/template (0.00s)
        --- PASS: TestSourceStateAdd/template/0 (0.00s)
        --- PASS: TestSourceStateAdd/template/1 (0.00s)
        --- PASS: TestSourceStateAdd/template/2 (0.00s)
    --- PASS: TestSourceStateAdd/dir_and_dir_file (0.00s)
        --- PASS: TestSourceStateAdd/dir_and_dir_file/0 (0.00s)
        --- PASS: TestSourceStateAdd/dir_and_dir_file/1 (0.00s)
        --- PASS: TestSourceStateAdd/dir_and_dir_file/0#01 (0.00s)
        --- PASS: TestSourceStateAdd/dir_and_dir_file/1#01 (0.00s)
        --- PASS: TestSourceStateAdd/dir_and_dir_file/2 (0.00s)
    --- PASS: TestSourceStateAdd/file_in_dir_exact_subdir (0.01s)
        --- PASS: TestSourceStateAdd/file_in_dir_exact_subdir/0 (0.00s)
        --- PASS: TestSourceStateAdd/file_in_dir_exact_subdir/1 (0.00s)
    --- PASS: TestSourceStateAdd/exact_subdir_not_exact_parent (0.00s)
        --- PASS: TestSourceStateAdd/exact_subdir_not_exact_parent/0 (0.00s)
        --- PASS: TestSourceStateAdd/exact_subdir_not_exact_parent/1 (0.00s)
        --- PASS: TestSourceStateAdd/exact_subdir_not_exact_parent/0#01 (0.00s)
        --- PASS: TestSourceStateAdd/exact_subdir_not_exact_parent/1#01 (0.00s)
        --- PASS: TestSourceStateAdd/exact_subdir_not_exact_parent/0#02 (0.00s)
=== RUN   TestSourceStateAddInExternal
2026/07/20 20:42:29 INFO HTTPRequest duration=35.296314ms method=GET url=http://127.0.0.1:44469/archive.tar statusCode=200 status="200 OK" contentLength=-1
=== RUN   TestSourceStateAddInExternal/0
=== RUN   TestSourceStateAddInExternal/1
=== RUN   TestSourceStateAddInExternal/0#01
=== RUN   TestSourceStateAddInExternal/1#01
=== RUN   TestSourceStateAddInExternal/2
--- PASS: TestSourceStateAddInExternal (0.04s)
    --- PASS: TestSourceStateAddInExternal/0 (0.00s)
    --- PASS: TestSourceStateAddInExternal/1 (0.00s)
    --- PASS: TestSourceStateAddInExternal/0#01 (0.00s)
    --- PASS: TestSourceStateAddInExternal/1#01 (0.00s)
    --- PASS: TestSourceStateAddInExternal/2 (0.00s)
=== RUN   TestSourceStateApplyAll
=== RUN   TestSourceStateApplyAll/empty
=== RUN   TestSourceStateApplyAll/dir
=== RUN   TestSourceStateApplyAll/dir/0
=== RUN   TestSourceStateApplyAll/dir/1
=== RUN   TestSourceStateApplyAll/dir_exact
=== RUN   TestSourceStateApplyAll/dir_exact/0
=== RUN   TestSourceStateApplyAll/dir_exact/1
=== RUN   TestSourceStateApplyAll/dir_exact/0#01
=== RUN   TestSourceStateApplyAll/file
=== RUN   TestSourceStateApplyAll/file/0
=== RUN   TestSourceStateApplyAll/file/1
=== RUN   TestSourceStateApplyAll/file/2
=== RUN   TestSourceStateApplyAll/file_remove_empty
=== RUN   TestSourceStateApplyAll/file_remove_empty/0
=== RUN   TestSourceStateApplyAll/file_create_empty
=== RUN   TestSourceStateApplyAll/file_create_empty/0
=== RUN   TestSourceStateApplyAll/file_create_empty/1
=== RUN   TestSourceStateApplyAll/file_create_empty/2
=== RUN   TestSourceStateApplyAll/file_template
=== RUN   TestSourceStateApplyAll/file_template/0
=== RUN   TestSourceStateApplyAll/file_template/1
=== RUN   TestSourceStateApplyAll/file_template/2
=== RUN   TestSourceStateApplyAll/create
=== RUN   TestSourceStateApplyAll/create/0
=== RUN   TestSourceStateApplyAll/create/1
=== RUN   TestSourceStateApplyAll/create/2
=== RUN   TestSourceStateApplyAll/create_no_replace
=== RUN   TestSourceStateApplyAll/create_no_replace/0
=== RUN   TestSourceStateApplyAll/create_no_replace/1
=== RUN   TestSourceStateApplyAll/create_no_replace/2
=== RUN   TestSourceStateApplyAll/symlink
=== RUN   TestSourceStateApplyAll/symlink/0
=== RUN   TestSourceStateApplyAll/symlink/1
=== RUN   TestSourceStateApplyAll/symlink_template
=== RUN   TestSourceStateApplyAll/symlink_template/0
=== RUN   TestSourceStateApplyAll/symlink_template/1
--- PASS: TestSourceStateApplyAll (0.01s)
    --- PASS: TestSourceStateApplyAll/empty (0.00s)
    --- PASS: TestSourceStateApplyAll/dir (0.00s)
        --- PASS: TestSourceStateApplyAll/dir/0 (0.00s)
        --- PASS: TestSourceStateApplyAll/dir/1 (0.00s)
    --- PASS: TestSourceStateApplyAll/dir_exact (0.00s)
        --- PASS: TestSourceStateApplyAll/dir_exact/0 (0.00s)
        --- PASS: TestSourceStateApplyAll/dir_exact/1 (0.00s)
        --- PASS: TestSourceStateApplyAll/dir_exact/0#01 (0.00s)
    --- PASS: TestSourceStateApplyAll/file (0.00s)
        --- PASS: TestSourceStateApplyAll/file/0 (0.00s)
        --- PASS: TestSourceStateApplyAll/file/1 (0.00s)
        --- PASS: TestSourceStateApplyAll/file/2 (0.00s)
    --- PASS: TestSourceStateApplyAll/file_remove_empty (0.00s)
        --- PASS: TestSourceStateApplyAll/file_remove_empty/0 (0.00s)
    --- PASS: TestSourceStateApplyAll/file_create_empty (0.00s)
        --- PASS: TestSourceStateApplyAll/file_create_empty/0 (0.00s)
        --- PASS: TestSourceStateApplyAll/file_create_empty/1 (0.00s)
        --- PASS: TestSourceStateApplyAll/file_create_empty/2 (0.00s)
    --- PASS: TestSourceStateApplyAll/file_template (0.00s)
        --- PASS: TestSourceStateApplyAll/file_template/0 (0.00s)
        --- PASS: TestSourceStateApplyAll/file_template/1 (0.00s)
        --- PASS: TestSourceStateApplyAll/file_template/2 (0.00s)
    --- PASS: TestSourceStateApplyAll/create (0.00s)
        --- PASS: TestSourceStateApplyAll/create/0 (0.00s)
        --- PASS: TestSourceStateApplyAll/create/1 (0.00s)
        --- PASS: TestSourceStateApplyAll/create/2 (0.00s)
    --- PASS: TestSourceStateApplyAll/create_no_replace (0.00s)
        --- PASS: TestSourceStateApplyAll/create_no_replace/0 (0.00s)
        --- PASS: TestSourceStateApplyAll/create_no_replace/1 (0.00s)
        --- PASS: TestSourceStateApplyAll/create_no_replace/2 (0.00s)
    --- PASS: TestSourceStateApplyAll/symlink (0.00s)
        --- PASS: TestSourceStateApplyAll/symlink/0 (0.00s)
        --- PASS: TestSourceStateApplyAll/symlink/1 (0.00s)
    --- PASS: TestSourceStateApplyAll/symlink_template (0.00s)
        --- PASS: TestSourceStateApplyAll/symlink_template/0 (0.00s)
        --- PASS: TestSourceStateApplyAll/symlink_template/1 (0.00s)
=== RUN   TestSourceStateExecuteTemplateData
=== RUN   TestSourceStateExecuteTemplateData/line_ending_lf
=== RUN   TestSourceStateExecuteTemplateData/line_endings_lf
--- PASS: TestSourceStateExecuteTemplateData (0.00s)
    --- PASS: TestSourceStateExecuteTemplateData/line_ending_lf (0.00s)
    --- PASS: TestSourceStateExecuteTemplateData/line_endings_lf (0.00s)
=== RUN   TestReadSourceFileAndApplyTemplate
=== RUN   TestReadSourceFileAndApplyTemplate/not_template
=== RUN   TestReadSourceFileAndApplyTemplate/template
=== RUN   TestReadSourceFileAndApplyTemplate/read_error
=== RUN   TestReadSourceFileAndApplyTemplate/template_error
--- PASS: TestReadSourceFileAndApplyTemplate (0.00s)
    --- PASS: TestReadSourceFileAndApplyTemplate/not_template (0.00s)
    --- PASS: TestReadSourceFileAndApplyTemplate/template (0.00s)
    --- PASS: TestReadSourceFileAndApplyTemplate/read_error (0.00s)
    --- PASS: TestReadSourceFileAndApplyTemplate/template_error (0.00s)
=== RUN   TestSourceStateRead
=== RUN   TestSourceStateRead/empty
=== RUN   TestSourceStateRead/dir
=== RUN   TestSourceStateRead/file
=== RUN   TestSourceStateRead/duplicate_target_file
=== RUN   TestSourceStateRead/duplicate_target_dir
=== RUN   TestSourceStateRead/duplicate_target_script
=== RUN   TestSourceStateRead/symlink_with_attr
=== RUN   TestSourceStateRead/symlink_script
=== RUN   TestSourceStateRead/script
=== RUN   TestSourceStateRead/symlink
=== RUN   TestSourceStateRead/file_in_dir
=== RUN   TestSourceStateRead/chezmoiignore
=== RUN   TestSourceStateRead/chezmoiignore_ignore_file
=== RUN   TestSourceStateRead/chezmoiignore_ignore_file_with_hash
=== RUN   TestSourceStateRead/chezmoiignore_exact_dir
=== RUN   TestSourceStateRead/chezmoiremove
=== RUN   TestSourceStateRead/chezmoiremove_and_ignore
=== RUN   TestSourceStateRead/chezmoiremove_and_ignore_in_subdir
=== RUN   TestSourceStateRead/external
=== RUN   TestSourceStateRead/chezmoitemplates
=== RUN   TestSourceStateRead/chezmoiversion
=== RUN   TestSourceStateRead/chezmoiversion_multiple
=== RUN   TestSourceStateRead/ignore_dir
=== RUN   TestSourceStateRead/ignore_file
--- PASS: TestSourceStateRead (0.04s)
    --- PASS: TestSourceStateRead/empty (0.00s)
    --- PASS: TestSourceStateRead/dir (0.00s)
    --- PASS: TestSourceStateRead/file (0.00s)
    --- PASS: TestSourceStateRead/duplicate_target_file (0.00s)
    --- PASS: TestSourceStateRead/duplicate_target_dir (0.00s)
    --- PASS: TestSourceStateRead/duplicate_target_script (0.00s)
    --- PASS: TestSourceStateRead/symlink_with_attr (0.00s)
    --- PASS: TestSourceStateRead/symlink_script (0.00s)
    --- PASS: TestSourceStateRead/script (0.00s)
    --- PASS: TestSourceStateRead/symlink (0.00s)
    --- PASS: TestSourceStateRead/file_in_dir (0.03s)
    --- PASS: TestSourceStateRead/chezmoiignore (0.00s)
    --- PASS: TestSourceStateRead/chezmoiignore_ignore_file (0.00s)
    --- PASS: TestSourceStateRead/chezmoiignore_ignore_file_with_hash (0.00s)
    --- PASS: TestSourceStateRead/chezmoiignore_exact_dir (0.00s)
    --- PASS: TestSourceStateRead/chezmoiremove (0.00s)
    --- PASS: TestSourceStateRead/chezmoiremove_and_ignore (0.00s)
    --- PASS: TestSourceStateRead/chezmoiremove_and_ignore_in_subdir (0.00s)
    --- PASS: TestSourceStateRead/external (0.00s)
    --- PASS: TestSourceStateRead/chezmoitemplates (0.00s)
    --- PASS: TestSourceStateRead/chezmoiversion (0.00s)
    --- PASS: TestSourceStateRead/chezmoiversion_multiple (0.00s)
    --- PASS: TestSourceStateRead/ignore_dir (0.00s)
    --- PASS: TestSourceStateRead/ignore_file (0.00s)
=== RUN   TestSourceStateReadExternal
=== RUN   TestSourceStateReadExternal/external_yaml
=== RUN   TestSourceStateReadExternal/external_toml
=== RUN   TestSourceStateReadExternal/external_in_subdir
--- PASS: TestSourceStateReadExternal (0.01s)
    --- PASS: TestSourceStateReadExternal/external_yaml (0.00s)
    --- PASS: TestSourceStateReadExternal/external_toml (0.00s)
    --- PASS: TestSourceStateReadExternal/external_in_subdir (0.00s)
=== RUN   TestSourceStateReadScriptsConcurrent
=== RUN   TestSourceStateReadScriptsConcurrent/with_ignore
--- PASS: TestSourceStateReadScriptsConcurrent (0.30s)
    --- PASS: TestSourceStateReadScriptsConcurrent/with_ignore (0.30s)
=== RUN   TestSourceStateReadExternalCache
2026/07/20 20:42:29 INFO HTTPRequest duration=7.418532ms method=GET url=http://127.0.0.1:34219/archive.tar statusCode=200 status="200 OK" contentLength=2048
2026/07/20 20:42:29 INFO HTTPRequest duration=98.122µs method=GET url=http://127.0.0.1:34219/archive.tar statusCode=200 status="200 OK" contentLength=2048
2026/07/20 20:42:29 INFO HTTPRequest duration=52.412µs method=GET url=http://127.0.0.1:34219/archive.tar statusCode=200 status="200 OK" contentLength=2048
--- PASS: TestSourceStateReadExternalCache (0.03s)
=== RUN   TestSourceStateTargetRelPaths
=== RUN   TestSourceStateTargetRelPaths/empty
=== RUN   TestSourceStateTargetRelPaths/scripts
--- PASS: TestSourceStateTargetRelPaths (0.00s)
    --- PASS: TestSourceStateTargetRelPaths/empty (0.00s)
    --- PASS: TestSourceStateTargetRelPaths/scripts (0.00s)
=== RUN   TestTemplateOptionsParseDirectives
=== RUN   TestTemplateOptionsParseDirectives/empty
=== RUN   TestTemplateOptionsParseDirectives/unquoted
=== RUN   TestTemplateOptionsParseDirectives/quoted
=== RUN   TestTemplateOptionsParseDirectives/left_only
=== RUN   TestTemplateOptionsParseDirectives/left_quoted_only
=== RUN   TestTemplateOptionsParseDirectives/right_quoted_only
=== RUN   TestTemplateOptionsParseDirectives/line_with_leading_data
=== RUN   TestTemplateOptionsParseDirectives/line_before
=== RUN   TestTemplateOptionsParseDirectives/line_after
=== RUN   TestTemplateOptionsParseDirectives/line_before_and_after
=== RUN   TestTemplateOptionsParseDirectives/multiple_lines
=== RUN   TestTemplateOptionsParseDirectives/duplicate_directives
=== RUN   TestTemplateOptionsParseDirectives/missing_key
=== RUN   TestTemplateOptionsParseDirectives/line_ending_crlf
=== RUN   TestTemplateOptionsParseDirectives/line_endings_crlf
=== RUN   TestTemplateOptionsParseDirectives/line_ending_quoted
=== RUN   TestTemplateOptionsParseDirectives/line_endings_quoted
=== RUN   TestTemplateOptionsParseDirectives/format_indent_string
=== RUN   TestTemplateOptionsParseDirectives/format_indent_width_number
=== RUN   TestTemplateOptionsParseDirectives/format_indent_width_number_error
--- PASS: TestTemplateOptionsParseDirectives (0.00s)
    --- PASS: TestTemplateOptionsParseDirectives/empty (0.00s)
    --- PASS: TestTemplateOptionsParseDirectives/unquoted (0.00s)
    --- PASS: TestTemplateOptionsParseDirectives/quoted (0.00s)
    --- PASS: TestTemplateOptionsParseDirectives/left_only (0.00s)
    --- PASS: TestTemplateOptionsParseDirectives/left_quoted_only (0.00s)
    --- PASS: TestTemplateOptionsParseDirectives/right_quoted_only (0.00s)
    --- PASS: TestTemplateOptionsParseDirectives/line_with_leading_data (0.00s)
    --- PASS: TestTemplateOptionsParseDirectives/line_before (0.00s)
    --- PASS: TestTemplateOptionsParseDirectives/line_after (0.00s)
    --- PASS: TestTemplateOptionsParseDirectives/line_before_and_after (0.00s)
    --- PASS: TestTemplateOptionsParseDirectives/multiple_lines (0.00s)
    --- PASS: TestTemplateOptionsParseDirectives/duplicate_directives (0.00s)
    --- PASS: TestTemplateOptionsParseDirectives/missing_key (0.00s)
    --- PASS: TestTemplateOptionsParseDirectives/line_ending_crlf (0.00s)
    --- PASS: TestTemplateOptionsParseDirectives/line_endings_crlf (0.00s)
    --- PASS: TestTemplateOptionsParseDirectives/line_ending_quoted (0.00s)
    --- PASS: TestTemplateOptionsParseDirectives/line_endings_quoted (0.00s)
    --- PASS: TestTemplateOptionsParseDirectives/format_indent_string (0.00s)
    --- PASS: TestTemplateOptionsParseDirectives/format_indent_width_number (0.00s)
    --- PASS: TestTemplateOptionsParseDirectives/format_indent_width_number_error (0.00s)
=== RUN   TestSourceStateExternalErrors
=== RUN   TestSourceStateExternalErrors/missing_type
=== RUN   TestSourceStateExternalErrors/empty_rel_path
=== RUN   TestSourceStateExternalErrors/relative_empty_rel_path
=== RUN   TestSourceStateExternalErrors/parent_root_rel_path
=== RUN   TestSourceStateExternalErrors/relative_parent_root_rel_path
=== RUN   TestSourceStateExternalErrors/relative_empty
=== RUN   TestSourceStateExternalErrors/relative_parent
=== RUN   TestSourceStateExternalErrors/relative_outside_parent
--- PASS: TestSourceStateExternalErrors (0.00s)
    --- PASS: TestSourceStateExternalErrors/missing_type (0.00s)
    --- PASS: TestSourceStateExternalErrors/empty_rel_path (0.00s)
    --- PASS: TestSourceStateExternalErrors/relative_empty_rel_path (0.00s)
    --- PASS: TestSourceStateExternalErrors/parent_root_rel_path (0.00s)
    --- PASS: TestSourceStateExternalErrors/relative_parent_root_rel_path (0.00s)
    --- PASS: TestSourceStateExternalErrors/relative_empty (0.00s)
    --- PASS: TestSourceStateExternalErrors/relative_parent (0.00s)
    --- PASS: TestSourceStateExternalErrors/relative_outside_parent (0.00s)
=== RUN   TestSourceStateEntryTreeNodeEmpty
--- PASS: TestSourceStateEntryTreeNodeEmpty (0.00s)
=== RUN   TestSourceStateEntryTreeNodeSingle
--- PASS: TestSourceStateEntryTreeNodeSingle (0.00s)
=== RUN   TestSourceStateEntryTreeNodeMultiple
--- PASS: TestSourceStateEntryTreeNodeMultiple (0.00s)
=== RUN   TestConcurrentWalkSourceDir
--- PASS: TestConcurrentWalkSourceDir (0.00s)
=== RUN   TestWalkSourceDir
--- PASS: TestWalkSourceDir (0.00s)
=== RUN   TestTargetStateEntryApply
=== RUN   TestTargetStateEntryApply/target_dir_actual_dir
=== RUN   TestTargetStateEntryApply/target_dir_actual_dir/0
=== RUN   TestTargetStateEntryApply/target_dir_actual_dir/1
=== RUN   TestTargetStateEntryApply/target_file_actual_dir
=== RUN   TestTargetStateEntryApply/target_file_actual_dir/0
=== RUN   TestTargetStateEntryApply/target_file_actual_dir/1
=== RUN   TestTargetStateEntryApply/target_file_actual_dir/2
=== RUN   TestTargetStateEntryApply/target_file_empty_actual_dir
=== RUN   TestTargetStateEntryApply/target_file_empty_actual_dir/0
=== RUN   TestTargetStateEntryApply/target_file_empty_actual_dir/1
=== RUN   TestTargetStateEntryApply/target_file_empty_actual_dir/2
=== RUN   TestTargetStateEntryApply/target_file_executable_actual_dir
=== RUN   TestTargetStateEntryApply/target_file_executable_actual_dir/0
=== RUN   TestTargetStateEntryApply/target_file_executable_actual_dir/1
=== RUN   TestTargetStateEntryApply/target_file_executable_actual_dir/2
=== RUN   TestTargetStateEntryApply/target_remove_actual_dir
=== RUN   TestTargetStateEntryApply/target_remove_actual_dir/0
=== RUN   TestTargetStateEntryApply/target_symlink_actual_dir
=== RUN   TestTargetStateEntryApply/target_symlink_actual_dir/0
=== RUN   TestTargetStateEntryApply/target_symlink_actual_dir/1
=== RUN   TestTargetStateEntryApply/target_dir_actual_file
=== RUN   TestTargetStateEntryApply/target_dir_actual_file/0
=== RUN   TestTargetStateEntryApply/target_dir_actual_file/1
=== RUN   TestTargetStateEntryApply/target_file_actual_file
=== RUN   TestTargetStateEntryApply/target_file_actual_file/0
=== RUN   TestTargetStateEntryApply/target_file_actual_file/1
=== RUN   TestTargetStateEntryApply/target_file_actual_file/2
=== RUN   TestTargetStateEntryApply/target_file_empty_actual_file
=== RUN   TestTargetStateEntryApply/target_file_empty_actual_file/0
=== RUN   TestTargetStateEntryApply/target_file_empty_actual_file/1
=== RUN   TestTargetStateEntryApply/target_file_empty_actual_file/2
=== RUN   TestTargetStateEntryApply/target_file_executable_actual_file
=== RUN   TestTargetStateEntryApply/target_file_executable_actual_file/0
=== RUN   TestTargetStateEntryApply/target_file_executable_actual_file/1
=== RUN   TestTargetStateEntryApply/target_file_executable_actual_file/2
=== RUN   TestTargetStateEntryApply/target_remove_actual_file
=== RUN   TestTargetStateEntryApply/target_remove_actual_file/0
=== RUN   TestTargetStateEntryApply/target_symlink_actual_file
=== RUN   TestTargetStateEntryApply/target_symlink_actual_file/0
=== RUN   TestTargetStateEntryApply/target_symlink_actual_file/1
=== RUN   TestTargetStateEntryApply/target_dir_actual_file_empty
=== RUN   TestTargetStateEntryApply/target_dir_actual_file_empty/0
=== RUN   TestTargetStateEntryApply/target_dir_actual_file_empty/1
=== RUN   TestTargetStateEntryApply/target_file_actual_file_empty
=== RUN   TestTargetStateEntryApply/target_file_actual_file_empty/0
=== RUN   TestTargetStateEntryApply/target_file_actual_file_empty/1
=== RUN   TestTargetStateEntryApply/target_file_actual_file_empty/2
=== RUN   TestTargetStateEntryApply/target_file_empty_actual_file_empty
=== RUN   TestTargetStateEntryApply/target_file_empty_actual_file_empty/0
=== RUN   TestTargetStateEntryApply/target_file_empty_actual_file_empty/1
=== RUN   TestTargetStateEntryApply/target_file_empty_actual_file_empty/2
=== RUN   TestTargetStateEntryApply/target_file_executable_actual_file_empty
=== RUN   TestTargetStateEntryApply/target_file_executable_actual_file_empty/0
=== RUN   TestTargetStateEntryApply/target_file_executable_actual_file_empty/1
=== RUN   TestTargetStateEntryApply/target_file_executable_actual_file_empty/2
=== RUN   TestTargetStateEntryApply/target_remove_actual_file_empty
=== RUN   TestTargetStateEntryApply/target_remove_actual_file_empty/0
=== RUN   TestTargetStateEntryApply/target_symlink_actual_file_empty
=== RUN   TestTargetStateEntryApply/target_symlink_actual_file_empty/0
=== RUN   TestTargetStateEntryApply/target_symlink_actual_file_empty/1
=== RUN   TestTargetStateEntryApply/target_dir_actual_file_executable
=== RUN   TestTargetStateEntryApply/target_dir_actual_file_executable/0
=== RUN   TestTargetStateEntryApply/target_dir_actual_file_executable/1
=== RUN   TestTargetStateEntryApply/target_file_actual_file_executable
=== RUN   TestTargetStateEntryApply/target_file_actual_file_executable/0
=== RUN   TestTargetStateEntryApply/target_file_actual_file_executable/1
=== RUN   TestTargetStateEntryApply/target_file_actual_file_executable/2
=== RUN   TestTargetStateEntryApply/target_file_empty_actual_file_executable
=== RUN   TestTargetStateEntryApply/target_file_empty_actual_file_executable/0
=== RUN   TestTargetStateEntryApply/target_file_empty_actual_file_executable/1
=== RUN   TestTargetStateEntryApply/target_file_empty_actual_file_executable/2
=== RUN   TestTargetStateEntryApply/target_file_executable_actual_file_executable
=== RUN   TestTargetStateEntryApply/target_file_executable_actual_file_executable/0
=== RUN   TestTargetStateEntryApply/target_file_executable_actual_file_executable/1
=== RUN   TestTargetStateEntryApply/target_file_executable_actual_file_executable/2
=== RUN   TestTargetStateEntryApply/target_remove_actual_file_executable
=== RUN   TestTargetStateEntryApply/target_remove_actual_file_executable/0
=== RUN   TestTargetStateEntryApply/target_symlink_actual_file_executable
=== RUN   TestTargetStateEntryApply/target_symlink_actual_file_executable/0
=== RUN   TestTargetStateEntryApply/target_symlink_actual_file_executable/1
=== RUN   TestTargetStateEntryApply/target_dir_actual_remove
=== RUN   TestTargetStateEntryApply/target_dir_actual_remove/0
=== RUN   TestTargetStateEntryApply/target_dir_actual_remove/1
=== RUN   TestTargetStateEntryApply/target_file_actual_remove
=== RUN   TestTargetStateEntryApply/target_file_actual_remove/0
=== RUN   TestTargetStateEntryApply/target_file_actual_remove/1
=== RUN   TestTargetStateEntryApply/target_file_actual_remove/2
=== RUN   TestTargetStateEntryApply/target_file_empty_actual_remove
=== RUN   TestTargetStateEntryApply/target_file_empty_actual_remove/0
=== RUN   TestTargetStateEntryApply/target_file_empty_actual_remove/1
=== RUN   TestTargetStateEntryApply/target_file_empty_actual_remove/2
=== RUN   TestTargetStateEntryApply/target_file_executable_actual_remove
=== RUN   TestTargetStateEntryApply/target_file_executable_actual_remove/0
=== RUN   TestTargetStateEntryApply/target_file_executable_actual_remove/1
=== RUN   TestTargetStateEntryApply/target_file_executable_actual_remove/2
=== RUN   TestTargetStateEntryApply/target_remove_actual_remove
=== RUN   TestTargetStateEntryApply/target_remove_actual_remove/0
=== RUN   TestTargetStateEntryApply/target_symlink_actual_remove
=== RUN   TestTargetStateEntryApply/target_symlink_actual_remove/0
=== RUN   TestTargetStateEntryApply/target_symlink_actual_remove/1
=== RUN   TestTargetStateEntryApply/target_dir_actual_symlink
=== RUN   TestTargetStateEntryApply/target_dir_actual_symlink/0
=== RUN   TestTargetStateEntryApply/target_dir_actual_symlink/1
=== RUN   TestTargetStateEntryApply/target_file_actual_symlink
=== RUN   TestTargetStateEntryApply/target_file_actual_symlink/0
=== RUN   TestTargetStateEntryApply/target_file_actual_symlink/1
=== RUN   TestTargetStateEntryApply/target_file_actual_symlink/2
=== RUN   TestTargetStateEntryApply/target_file_empty_actual_symlink
=== RUN   TestTargetStateEntryApply/target_file_empty_actual_symlink/0
=== RUN   TestTargetStateEntryApply/target_file_empty_actual_symlink/1
=== RUN   TestTargetStateEntryApply/target_file_empty_actual_symlink/2
=== RUN   TestTargetStateEntryApply/target_file_executable_actual_symlink
=== RUN   TestTargetStateEntryApply/target_file_executable_actual_symlink/0
=== RUN   TestTargetStateEntryApply/target_file_executable_actual_symlink/1
=== RUN   TestTargetStateEntryApply/target_file_executable_actual_symlink/2
=== RUN   TestTargetStateEntryApply/target_remove_actual_symlink
=== RUN   TestTargetStateEntryApply/target_remove_actual_symlink/0
=== RUN   TestTargetStateEntryApply/target_symlink_actual_symlink
=== RUN   TestTargetStateEntryApply/target_symlink_actual_symlink/0
=== RUN   TestTargetStateEntryApply/target_symlink_actual_symlink/1
=== RUN   TestTargetStateEntryApply/target_dir_actual_symlink_broken
=== RUN   TestTargetStateEntryApply/target_dir_actual_symlink_broken/0
=== RUN   TestTargetStateEntryApply/target_dir_actual_symlink_broken/1
=== RUN   TestTargetStateEntryApply/target_file_actual_symlink_broken
=== RUN   TestTargetStateEntryApply/target_file_actual_symlink_broken/0
=== RUN   TestTargetStateEntryApply/target_file_actual_symlink_broken/1
=== RUN   TestTargetStateEntryApply/target_file_actual_symlink_broken/2
=== RUN   TestTargetStateEntryApply/target_file_empty_actual_symlink_broken
=== RUN   TestTargetStateEntryApply/target_file_empty_actual_symlink_broken/0
=== RUN   TestTargetStateEntryApply/target_file_empty_actual_symlink_broken/1
=== RUN   TestTargetStateEntryApply/target_file_empty_actual_symlink_broken/2
=== RUN   TestTargetStateEntryApply/target_file_executable_actual_symlink_broken
=== RUN   TestTargetStateEntryApply/target_file_executable_actual_symlink_broken/0
=== RUN   TestTargetStateEntryApply/target_file_executable_actual_symlink_broken/1
=== RUN   TestTargetStateEntryApply/target_file_executable_actual_symlink_broken/2
=== RUN   TestTargetStateEntryApply/target_remove_actual_symlink_broken
=== RUN   TestTargetStateEntryApply/target_remove_actual_symlink_broken/0
=== RUN   TestTargetStateEntryApply/target_symlink_actual_symlink_broken
=== RUN   TestTargetStateEntryApply/target_symlink_actual_symlink_broken/0
=== RUN   TestTargetStateEntryApply/target_symlink_actual_symlink_broken/1
--- PASS: TestTargetStateEntryApply (0.01s)
    --- PASS: TestTargetStateEntryApply/target_dir_actual_dir (0.00s)
        --- PASS: TestTargetStateEntryApply/target_dir_actual_dir/0 (0.00s)
        --- PASS: TestTargetStateEntryApply/target_dir_actual_dir/1 (0.00s)
    --- PASS: TestTargetStateEntryApply/target_file_actual_dir (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_actual_dir/0 (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_actual_dir/1 (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_actual_dir/2 (0.00s)
    --- PASS: TestTargetStateEntryApply/target_file_empty_actual_dir (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_empty_actual_dir/0 (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_empty_actual_dir/1 (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_empty_actual_dir/2 (0.00s)
    --- PASS: TestTargetStateEntryApply/target_file_executable_actual_dir (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_executable_actual_dir/0 (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_executable_actual_dir/1 (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_executable_actual_dir/2 (0.00s)
    --- PASS: TestTargetStateEntryApply/target_remove_actual_dir (0.00s)
        --- PASS: TestTargetStateEntryApply/target_remove_actual_dir/0 (0.00s)
    --- PASS: TestTargetStateEntryApply/target_symlink_actual_dir (0.00s)
        --- PASS: TestTargetStateEntryApply/target_symlink_actual_dir/0 (0.00s)
        --- PASS: TestTargetStateEntryApply/target_symlink_actual_dir/1 (0.00s)
    --- PASS: TestTargetStateEntryApply/target_dir_actual_file (0.00s)
        --- PASS: TestTargetStateEntryApply/target_dir_actual_file/0 (0.00s)
        --- PASS: TestTargetStateEntryApply/target_dir_actual_file/1 (0.00s)
    --- PASS: TestTargetStateEntryApply/target_file_actual_file (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_actual_file/0 (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_actual_file/1 (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_actual_file/2 (0.00s)
    --- PASS: TestTargetStateEntryApply/target_file_empty_actual_file (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_empty_actual_file/0 (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_empty_actual_file/1 (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_empty_actual_file/2 (0.00s)
    --- PASS: TestTargetStateEntryApply/target_file_executable_actual_file (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_executable_actual_file/0 (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_executable_actual_file/1 (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_executable_actual_file/2 (0.00s)
    --- PASS: TestTargetStateEntryApply/target_remove_actual_file (0.00s)
        --- PASS: TestTargetStateEntryApply/target_remove_actual_file/0 (0.00s)
    --- PASS: TestTargetStateEntryApply/target_symlink_actual_file (0.00s)
        --- PASS: TestTargetStateEntryApply/target_symlink_actual_file/0 (0.00s)
        --- PASS: TestTargetStateEntryApply/target_symlink_actual_file/1 (0.00s)
    --- PASS: TestTargetStateEntryApply/target_dir_actual_file_empty (0.00s)
        --- PASS: TestTargetStateEntryApply/target_dir_actual_file_empty/0 (0.00s)
        --- PASS: TestTargetStateEntryApply/target_dir_actual_file_empty/1 (0.00s)
    --- PASS: TestTargetStateEntryApply/target_file_actual_file_empty (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_actual_file_empty/0 (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_actual_file_empty/1 (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_actual_file_empty/2 (0.00s)
    --- PASS: TestTargetStateEntryApply/target_file_empty_actual_file_empty (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_empty_actual_file_empty/0 (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_empty_actual_file_empty/1 (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_empty_actual_file_empty/2 (0.00s)
    --- PASS: TestTargetStateEntryApply/target_file_executable_actual_file_empty (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_executable_actual_file_empty/0 (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_executable_actual_file_empty/1 (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_executable_actual_file_empty/2 (0.00s)
    --- PASS: TestTargetStateEntryApply/target_remove_actual_file_empty (0.00s)
        --- PASS: TestTargetStateEntryApply/target_remove_actual_file_empty/0 (0.00s)
    --- PASS: TestTargetStateEntryApply/target_symlink_actual_file_empty (0.00s)
        --- PASS: TestTargetStateEntryApply/target_symlink_actual_file_empty/0 (0.00s)
        --- PASS: TestTargetStateEntryApply/target_symlink_actual_file_empty/1 (0.00s)
    --- PASS: TestTargetStateEntryApply/target_dir_actual_file_executable (0.00s)
        --- PASS: TestTargetStateEntryApply/target_dir_actual_file_executable/0 (0.00s)
        --- PASS: TestTargetStateEntryApply/target_dir_actual_file_executable/1 (0.00s)
    --- PASS: TestTargetStateEntryApply/target_file_actual_file_executable (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_actual_file_executable/0 (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_actual_file_executable/1 (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_actual_file_executable/2 (0.00s)
    --- PASS: TestTargetStateEntryApply/target_file_empty_actual_file_executable (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_empty_actual_file_executable/0 (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_empty_actual_file_executable/1 (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_empty_actual_file_executable/2 (0.00s)
    --- PASS: TestTargetStateEntryApply/target_file_executable_actual_file_executable (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_executable_actual_file_executable/0 (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_executable_actual_file_executable/1 (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_executable_actual_file_executable/2 (0.00s)
    --- PASS: TestTargetStateEntryApply/target_remove_actual_file_executable (0.00s)
        --- PASS: TestTargetStateEntryApply/target_remove_actual_file_executable/0 (0.00s)
    --- PASS: TestTargetStateEntryApply/target_symlink_actual_file_executable (0.00s)
        --- PASS: TestTargetStateEntryApply/target_symlink_actual_file_executable/0 (0.00s)
        --- PASS: TestTargetStateEntryApply/target_symlink_actual_file_executable/1 (0.00s)
    --- PASS: TestTargetStateEntryApply/target_dir_actual_remove (0.00s)
        --- PASS: TestTargetStateEntryApply/target_dir_actual_remove/0 (0.00s)
        --- PASS: TestTargetStateEntryApply/target_dir_actual_remove/1 (0.00s)
    --- PASS: TestTargetStateEntryApply/target_file_actual_remove (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_actual_remove/0 (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_actual_remove/1 (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_actual_remove/2 (0.00s)
    --- PASS: TestTargetStateEntryApply/target_file_empty_actual_remove (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_empty_actual_remove/0 (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_empty_actual_remove/1 (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_empty_actual_remove/2 (0.00s)
    --- PASS: TestTargetStateEntryApply/target_file_executable_actual_remove (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_executable_actual_remove/0 (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_executable_actual_remove/1 (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_executable_actual_remove/2 (0.00s)
    --- PASS: TestTargetStateEntryApply/target_remove_actual_remove (0.00s)
        --- PASS: TestTargetStateEntryApply/target_remove_actual_remove/0 (0.00s)
    --- PASS: TestTargetStateEntryApply/target_symlink_actual_remove (0.00s)
        --- PASS: TestTargetStateEntryApply/target_symlink_actual_remove/0 (0.00s)
        --- PASS: TestTargetStateEntryApply/target_symlink_actual_remove/1 (0.00s)
    --- PASS: TestTargetStateEntryApply/target_dir_actual_symlink (0.00s)
        --- PASS: TestTargetStateEntryApply/target_dir_actual_symlink/0 (0.00s)
        --- PASS: TestTargetStateEntryApply/target_dir_actual_symlink/1 (0.00s)
    --- PASS: TestTargetStateEntryApply/target_file_actual_symlink (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_actual_symlink/0 (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_actual_symlink/1 (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_actual_symlink/2 (0.00s)
    --- PASS: TestTargetStateEntryApply/target_file_empty_actual_symlink (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_empty_actual_symlink/0 (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_empty_actual_symlink/1 (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_empty_actual_symlink/2 (0.00s)
    --- PASS: TestTargetStateEntryApply/target_file_executable_actual_symlink (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_executable_actual_symlink/0 (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_executable_actual_symlink/1 (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_executable_actual_symlink/2 (0.00s)
    --- PASS: TestTargetStateEntryApply/target_remove_actual_symlink (0.00s)
        --- PASS: TestTargetStateEntryApply/target_remove_actual_symlink/0 (0.00s)
    --- PASS: TestTargetStateEntryApply/target_symlink_actual_symlink (0.00s)
        --- PASS: TestTargetStateEntryApply/target_symlink_actual_symlink/0 (0.00s)
        --- PASS: TestTargetStateEntryApply/target_symlink_actual_symlink/1 (0.00s)
    --- PASS: TestTargetStateEntryApply/target_dir_actual_symlink_broken (0.00s)
        --- PASS: TestTargetStateEntryApply/target_dir_actual_symlink_broken/0 (0.00s)
        --- PASS: TestTargetStateEntryApply/target_dir_actual_symlink_broken/1 (0.00s)
    --- PASS: TestTargetStateEntryApply/target_file_actual_symlink_broken (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_actual_symlink_broken/0 (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_actual_symlink_broken/1 (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_actual_symlink_broken/2 (0.00s)
    --- PASS: TestTargetStateEntryApply/target_file_empty_actual_symlink_broken (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_empty_actual_symlink_broken/0 (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_empty_actual_symlink_broken/1 (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_empty_actual_symlink_broken/2 (0.00s)
    --- PASS: TestTargetStateEntryApply/target_file_executable_actual_symlink_broken (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_executable_actual_symlink_broken/0 (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_executable_actual_symlink_broken/1 (0.00s)
        --- PASS: TestTargetStateEntryApply/target_file_executable_actual_symlink_broken/2 (0.00s)
    --- PASS: TestTargetStateEntryApply/target_remove_actual_symlink_broken (0.00s)
        --- PASS: TestTargetStateEntryApply/target_remove_actual_symlink_broken/0 (0.00s)
    --- PASS: TestTargetStateEntryApply/target_symlink_actual_symlink_broken (0.00s)
        --- PASS: TestTargetStateEntryApply/target_symlink_actual_symlink_broken/0 (0.00s)
        --- PASS: TestTargetStateEntryApply/target_symlink_actual_symlink_broken/1 (0.00s)
=== RUN   TestTarWriterSystem
=== RUN   TestTarWriterSystem/.dir/
=== RUN   TestTarWriterSystem/.dir/file
=== RUN   TestTarWriterSystem/script
=== RUN   TestTarWriterSystem/symlink
--- PASS: TestTarWriterSystem (0.00s)
    --- PASS: TestTarWriterSystem/.dir/ (0.00s)
    --- PASS: TestTarWriterSystem/.dir/file (0.00s)
    --- PASS: TestTarWriterSystem/script (0.00s)
    --- PASS: TestTarWriterSystem/symlink (0.00s)
=== RUN   TestTemplateParseAndExecute
=== RUN   TestTemplateParseAndExecute/missing_key
=== RUN   TestTemplateParseAndExecute/delimiters
=== RUN   TestTemplateParseAndExecute/line_ending_crlf
=== RUN   TestTemplateParseAndExecute/line_ending_lf
--- PASS: TestTemplateParseAndExecute (0.00s)
    --- PASS: TestTemplateParseAndExecute/missing_key (0.00s)
    --- PASS: TestTemplateParseAndExecute/delimiters (0.00s)
    --- PASS: TestTemplateParseAndExecute/line_ending_crlf (0.00s)
    --- PASS: TestTemplateParseAndExecute/line_ending_lf (0.00s)
=== RUN   TestZIPWriterSystem
=== RUN   TestZIPWriterSystem/.dir
=== RUN   TestZIPWriterSystem/.dir/file
=== RUN   TestZIPWriterSystem/script
=== RUN   TestZIPWriterSystem/symlink
--- PASS: TestZIPWriterSystem (0.00s)
    --- PASS: TestZIPWriterSystem/.dir (0.00s)
    --- PASS: TestZIPWriterSystem/.dir/file (0.00s)
    --- PASS: TestZIPWriterSystem/script (0.00s)
    --- PASS: TestZIPWriterSystem/symlink (0.00s)
PASS
ok  	chezmoi.io/chezmoi/v2/internal/chezmoi	3.771s
?   	chezmoi.io/chezmoi/v2/internal/chezmoiassert	[no test files]
=== RUN   TestBoolInputModel
=== RUN   TestBoolInputModel/empty_with_default
=== RUN   TestBoolInputModel/cancel_ctrlc
=== RUN   TestBoolInputModel/cancel_esc
=== RUN   TestBoolInputModel/true
=== RUN   TestBoolInputModel/false
=== RUN   TestBoolInputModel/yes
=== RUN   TestBoolInputModel/no
=== RUN   TestBoolInputModel/one
=== RUN   TestBoolInputModel/zero
--- PASS: TestBoolInputModel (0.00s)
    --- PASS: TestBoolInputModel/empty_with_default (0.00s)
    --- PASS: TestBoolInputModel/cancel_ctrlc (0.00s)
    --- PASS: TestBoolInputModel/cancel_esc (0.00s)
    --- PASS: TestBoolInputModel/true (0.00s)
    --- PASS: TestBoolInputModel/false (0.00s)
    --- PASS: TestBoolInputModel/yes (0.00s)
    --- PASS: TestBoolInputModel/no (0.00s)
    --- PASS: TestBoolInputModel/one (0.00s)
    --- PASS: TestBoolInputModel/zero (0.00s)
=== RUN   TestChoiceInputModel
=== RUN   TestChoiceInputModel/empty_with_default
=== RUN   TestChoiceInputModel/cancel_ctrlc
=== RUN   TestChoiceInputModel/cancel_esc
=== RUN   TestChoiceInputModel/y
=== RUN   TestChoiceInputModel/n
=== RUN   TestChoiceInputModel/a
=== RUN   TestChoiceInputModel/ambiguous_a
=== RUN   TestChoiceInputModel/unambiguous_b
=== RUN   TestChoiceInputModel/ambiguous_resolved
--- PASS: TestChoiceInputModel (0.00s)
    --- PASS: TestChoiceInputModel/empty_with_default (0.00s)
    --- PASS: TestChoiceInputModel/cancel_ctrlc (0.00s)
    --- PASS: TestChoiceInputModel/cancel_esc (0.00s)
    --- PASS: TestChoiceInputModel/y (0.00s)
    --- PASS: TestChoiceInputModel/n (0.00s)
    --- PASS: TestChoiceInputModel/a (0.00s)
    --- PASS: TestChoiceInputModel/ambiguous_a (0.00s)
    --- PASS: TestChoiceInputModel/unambiguous_b (0.00s)
    --- PASS: TestChoiceInputModel/ambiguous_resolved (0.00s)
=== RUN   TestIntInputModel
=== RUN   TestIntInputModel/empty_with_default
=== RUN   TestIntInputModel/cancel_ctrlc
=== RUN   TestIntInputModel/cancel_esc
=== RUN   TestIntInputModel/one_enter
=== RUN   TestIntInputModel/minus_one_enter
=== RUN   TestIntInputModel/minus_enter
=== RUN   TestIntInputModel/one_invalid_enter
--- PASS: TestIntInputModel (0.00s)
    --- PASS: TestIntInputModel/empty_with_default (0.00s)
    --- PASS: TestIntInputModel/cancel_ctrlc (0.00s)
    --- PASS: TestIntInputModel/cancel_esc (0.00s)
    --- PASS: TestIntInputModel/one_enter (0.00s)
    --- PASS: TestIntInputModel/minus_one_enter (0.00s)
    --- PASS: TestIntInputModel/minus_enter (0.00s)
    --- PASS: TestIntInputModel/one_invalid_enter (0.00s)
=== RUN   TestPasswordInputModel
=== RUN   TestPasswordInputModel/empty
=== RUN   TestPasswordInputModel/cancel_ctrlc
=== RUN   TestPasswordInputModel/cancel_esc
=== RUN   TestPasswordInputModel/password_enter
=== RUN   TestPasswordInputModel/password_ctrlc
--- PASS: TestPasswordInputModel (0.00s)
    --- PASS: TestPasswordInputModel/empty (0.00s)
    --- PASS: TestPasswordInputModel/cancel_ctrlc (0.00s)
    --- PASS: TestPasswordInputModel/cancel_esc (0.00s)
    --- PASS: TestPasswordInputModel/password_enter (0.00s)
    --- PASS: TestPasswordInputModel/password_ctrlc (0.00s)
=== RUN   TestStringInputModel
=== RUN   TestStringInputModel/empty
=== RUN   TestStringInputModel/empty_with_default
=== RUN   TestStringInputModel/cancel_ctrlc
=== RUN   TestStringInputModel/cancel_esc
=== RUN   TestStringInputModel/value_enter
=== RUN   TestStringInputModel/value_ctrlc
--- PASS: TestStringInputModel (0.00s)
    --- PASS: TestStringInputModel/empty (0.00s)
    --- PASS: TestStringInputModel/empty_with_default (0.00s)
    --- PASS: TestStringInputModel/cancel_ctrlc (0.00s)
    --- PASS: TestStringInputModel/cancel_esc (0.00s)
    --- PASS: TestStringInputModel/value_enter (0.00s)
    --- PASS: TestStringInputModel/value_ctrlc (0.00s)
PASS
ok  	chezmoi.io/chezmoi/v2/internal/chezmoibubbles	0.020s
?   	chezmoi.io/chezmoi/v2/internal/chezmoierrors	[no test files]
=== RUN   TestParseStatusPorcelainV2
=== RUN   TestParseStatusPorcelainV2/empty
=== RUN   TestParseStatusPorcelainV2/added
=== RUN   TestParseStatusPorcelainV2/removed
=== RUN   TestParseStatusPorcelainV2/copied
=== RUN   TestParseStatusPorcelainV2/update
=== RUN   TestParseStatusPorcelainV2/renamed
=== RUN   TestParseStatusPorcelainV2/renamed_2
=== RUN   TestParseStatusPorcelainV2/modified_2
=== RUN   TestParseStatusPorcelainV2/unmerged
=== RUN   TestParseStatusPorcelainV2/ordinary
=== RUN   TestParseStatusPorcelainV2/untracked
=== RUN   TestParseStatusPorcelainV2/ignored
--- PASS: TestParseStatusPorcelainV2 (0.00s)
    --- PASS: TestParseStatusPorcelainV2/empty (0.00s)
    --- PASS: TestParseStatusPorcelainV2/added (0.00s)
    --- PASS: TestParseStatusPorcelainV2/removed (0.00s)
    --- PASS: TestParseStatusPorcelainV2/copied (0.00s)
    --- PASS: TestParseStatusPorcelainV2/update (0.00s)
    --- PASS: TestParseStatusPorcelainV2/renamed (0.00s)
    --- PASS: TestParseStatusPorcelainV2/renamed_2 (0.00s)
    --- PASS: TestParseStatusPorcelainV2/modified_2 (0.00s)
    --- PASS: TestParseStatusPorcelainV2/unmerged (0.00s)
    --- PASS: TestParseStatusPorcelainV2/ordinary (0.00s)
    --- PASS: TestParseStatusPorcelainV2/untracked (0.00s)
    --- PASS: TestParseStatusPorcelainV2/ignored (0.00s)
PASS
ok  	chezmoi.io/chezmoi/v2/internal/chezmoigit	0.023s
testing: warning: no tests to run
PASS
ok  	chezmoi.io/chezmoi/v2/internal/chezmoilog	0.020s [no tests to run]
?   	chezmoi.io/chezmoi/v2/internal/chezmoiset	[no test files]
=== RUN   TestJoinLines
=== RUN   TestJoinLines/0
=== RUN   TestJoinLines/1
=== RUN   TestJoinLines/2
=== RUN   TestJoinLines/3
--- PASS: TestJoinLines (0.00s)
    --- PASS: TestJoinLines/0 (0.00s)
    --- PASS: TestJoinLines/1 (0.00s)
    --- PASS: TestJoinLines/2 (0.00s)
    --- PASS: TestJoinLines/3 (0.00s)
PASS
ok  	chezmoi.io/chezmoi/v2/internal/chezmoitest	0.020s
=== RUN   TestAddCmd
=== RUN   TestAddCmd/dir
=== RUN   TestAddCmd/dir/0
=== RUN   TestAddCmd/dir/1
=== RUN   TestAddCmd/dir/0#01
=== RUN   TestAddCmd/dir/1#01
=== RUN   TestAddCmd/dir_with_file
=== RUN   TestAddCmd/dir_with_file/0
=== RUN   TestAddCmd/dir_with_file/1
=== RUN   TestAddCmd/dir_with_file/0#01
=== RUN   TestAddCmd/dir_with_file/0#02
=== RUN   TestAddCmd/dir_with_file/1#01
=== RUN   TestAddCmd/dir_with_file/2
=== RUN   TestAddCmd/dir_with_file_with_--recursive=false
=== RUN   TestAddCmd/dir_with_file_with_--recursive=false/0
=== RUN   TestAddCmd/dir_with_file_with_--recursive=false/1
=== RUN   TestAddCmd/dir_with_file_with_--recursive=false/0#01
=== RUN   TestAddCmd/dir_with_file_with_--recursive=false/1#01
=== RUN   TestAddCmd/dir_with_file_with_--recursive=false/0#02
=== RUN   TestAddCmd/dir_private_unix
=== RUN   TestAddCmd/dir_private_unix/0
=== RUN   TestAddCmd/dir_private_unix/1
=== RUN   TestAddCmd/dir_private_unix/0#01
=== RUN   TestAddCmd/dir_private_unix/0#02
=== RUN   TestAddCmd/dir_private_unix/1#01
=== RUN   TestAddCmd/dir_private_unix/2
=== RUN   TestAddCmd/dir_file_private_unix
=== RUN   TestAddCmd/dir_file_private_unix/0
=== RUN   TestAddCmd/dir_file_private_unix/1
=== RUN   TestAddCmd/dir_file_private_unix/0#01
=== RUN   TestAddCmd/dir_file_private_unix/0#02
=== RUN   TestAddCmd/dir_file_private_unix/1#01
=== RUN   TestAddCmd/dir_file_private_unix/2
=== RUN   TestAddCmd/empty
=== RUN   TestAddCmd/empty/0
=== RUN   TestAddCmd/empty/1
=== RUN   TestAddCmd/empty/2
=== RUN   TestAddCmd/executable_unix
=== RUN   TestAddCmd/executable_unix/0
=== RUN   TestAddCmd/executable_unix/1
=== RUN   TestAddCmd/executable_unix/2
=== RUN   TestAddCmd/file
=== RUN   TestAddCmd/file/0
=== RUN   TestAddCmd/file/1
=== RUN   TestAddCmd/file/2
=== RUN   TestAddCmd/symlink
=== RUN   TestAddCmd/symlink/0
=== RUN   TestAddCmd/symlink/1
=== RUN   TestAddCmd/symlink/2
=== RUN   TestAddCmd/symlink_with_--follow
=== RUN   TestAddCmd/symlink_with_--follow/0
=== RUN   TestAddCmd/symlink_with_--follow/1
=== RUN   TestAddCmd/symlink_with_--follow/2
=== RUN   TestAddCmd/issue_3666
=== RUN   TestAddCmd/issue_3666/0
=== RUN   TestAddCmd/issue_3666/1
=== RUN   TestAddCmd/issue_3666/2
=== RUN   TestAddCmd/new
=== RUN   TestAddCmd/new/0
=== RUN   TestAddCmd/new/1
=== RUN   TestAddCmd/new/2
=== RUN   TestAddCmd/new_--recursive=false
=== RUN   TestAddCmd/new_--recursive=false/0
=== RUN   TestAddCmd/new_--recursive=false/1
=== RUN   TestAddCmd/new_--recursive=false/2
--- PASS: TestAddCmd (0.14s)
    --- PASS: TestAddCmd/dir (0.01s)
        --- PASS: TestAddCmd/dir/0 (0.00s)
        --- PASS: TestAddCmd/dir/1 (0.00s)
        --- PASS: TestAddCmd/dir/0#01 (0.00s)
        --- PASS: TestAddCmd/dir/1#01 (0.00s)
    --- PASS: TestAddCmd/dir_with_file (0.01s)
        --- PASS: TestAddCmd/dir_with_file/0 (0.00s)
        --- PASS: TestAddCmd/dir_with_file/1 (0.00s)
        --- PASS: TestAddCmd/dir_with_file/0#01 (0.00s)
        --- PASS: TestAddCmd/dir_with_file/0#02 (0.00s)
        --- PASS: TestAddCmd/dir_with_file/1#01 (0.00s)
        --- PASS: TestAddCmd/dir_with_file/2 (0.00s)
    --- PASS: TestAddCmd/dir_with_file_with_--recursive=false (0.00s)
        --- PASS: TestAddCmd/dir_with_file_with_--recursive=false/0 (0.00s)
        --- PASS: TestAddCmd/dir_with_file_with_--recursive=false/1 (0.00s)
        --- PASS: TestAddCmd/dir_with_file_with_--recursive=false/0#01 (0.00s)
        --- PASS: TestAddCmd/dir_with_file_with_--recursive=false/1#01 (0.00s)
        --- PASS: TestAddCmd/dir_with_file_with_--recursive=false/0#02 (0.00s)
    --- PASS: TestAddCmd/dir_private_unix (0.01s)
        --- PASS: TestAddCmd/dir_private_unix/0 (0.00s)
        --- PASS: TestAddCmd/dir_private_unix/1 (0.00s)
        --- PASS: TestAddCmd/dir_private_unix/0#01 (0.00s)
        --- PASS: TestAddCmd/dir_private_unix/0#02 (0.00s)
        --- PASS: TestAddCmd/dir_private_unix/1#01 (0.00s)
        --- PASS: TestAddCmd/dir_private_unix/2 (0.00s)
    --- PASS: TestAddCmd/dir_file_private_unix (0.02s)
        --- PASS: TestAddCmd/dir_file_private_unix/0 (0.00s)
        --- PASS: TestAddCmd/dir_file_private_unix/1 (0.00s)
        --- PASS: TestAddCmd/dir_file_private_unix/0#01 (0.00s)
        --- PASS: TestAddCmd/dir_file_private_unix/0#02 (0.00s)
        --- PASS: TestAddCmd/dir_file_private_unix/1#01 (0.00s)
        --- PASS: TestAddCmd/dir_file_private_unix/2 (0.00s)
    --- PASS: TestAddCmd/empty (0.02s)
        --- PASS: TestAddCmd/empty/0 (0.00s)
        --- PASS: TestAddCmd/empty/1 (0.00s)
        --- PASS: TestAddCmd/empty/2 (0.00s)
    --- PASS: TestAddCmd/executable_unix (0.01s)
        --- PASS: TestAddCmd/executable_unix/0 (0.00s)
        --- PASS: TestAddCmd/executable_unix/1 (0.00s)
        --- PASS: TestAddCmd/executable_unix/2 (0.00s)
    --- PASS: TestAddCmd/file (0.02s)
        --- PASS: TestAddCmd/file/0 (0.00s)
        --- PASS: TestAddCmd/file/1 (0.00s)
        --- PASS: TestAddCmd/file/2 (0.00s)
    --- PASS: TestAddCmd/symlink (0.00s)
        --- PASS: TestAddCmd/symlink/0 (0.00s)
        --- PASS: TestAddCmd/symlink/1 (0.00s)
        --- PASS: TestAddCmd/symlink/2 (0.00s)
    --- PASS: TestAddCmd/symlink_with_--follow (0.02s)
        --- PASS: TestAddCmd/symlink_with_--follow/0 (0.00s)
        --- PASS: TestAddCmd/symlink_with_--follow/1 (0.00s)
        --- PASS: TestAddCmd/symlink_with_--follow/2 (0.00s)
    --- PASS: TestAddCmd/issue_3666 (0.01s)
        --- PASS: TestAddCmd/issue_3666/0 (0.00s)
        --- PASS: TestAddCmd/issue_3666/1 (0.00s)
        --- PASS: TestAddCmd/issue_3666/2 (0.00s)
    --- PASS: TestAddCmd/new (0.00s)
        --- PASS: TestAddCmd/new/0 (0.00s)
        --- PASS: TestAddCmd/new/1 (0.00s)
        --- PASS: TestAddCmd/new/2 (0.00s)
    --- PASS: TestAddCmd/new_--recursive=false (0.00s)
        --- PASS: TestAddCmd/new_--recursive=false/0 (0.00s)
        --- PASS: TestAddCmd/new_--recursive=false/1 (0.00s)
        --- PASS: TestAddCmd/new_--recursive=false/2 (0.00s)
=== RUN   TestAddCmdChmod
--- PASS: TestAddCmdChmod (0.02s)
=== RUN   TestAddCmdSecretsError
chezmoi: /home/user/.secret:1: Uncovered a SumoLogic Access Token, which could lead to unauthorized access to log data and analytics insights.
--- PASS: TestAddCmdSecretsError (0.01s)
=== RUN   TestIssue4107
--- PASS: TestIssue4107 (0.00s)
=== RUN   TestApplyCmd
=== RUN   TestApplyCmd/all
=== RUN   TestApplyCmd/all/0
=== RUN   TestApplyCmd/all/1
=== RUN   TestApplyCmd/all/2
=== RUN   TestApplyCmd/all/0#01
=== RUN   TestApplyCmd/all/1#01
=== RUN   TestApplyCmd/all/0#02
=== RUN   TestApplyCmd/all/1#02
=== RUN   TestApplyCmd/all/2#01
=== RUN   TestApplyCmd/all/0#03
=== RUN   TestApplyCmd/all/1#03
=== RUN   TestApplyCmd/all/0#04
=== RUN   TestApplyCmd/all/1#04
=== RUN   TestApplyCmd/all/2#02
=== RUN   TestApplyCmd/all/0#05
=== RUN   TestApplyCmd/all/1#05
=== RUN   TestApplyCmd/all/2#03
=== RUN   TestApplyCmd/all/0#06
=== RUN   TestApplyCmd/all/1#06
=== RUN   TestApplyCmd/all/2#04
=== RUN   TestApplyCmd/all/0#07
=== RUN   TestApplyCmd/all/1#07
=== RUN   TestApplyCmd/all/2#05
=== RUN   TestApplyCmd/all/0#08
=== RUN   TestApplyCmd/all/1#08
=== RUN   TestApplyCmd/all/2#06
=== RUN   TestApplyCmd/all/0#09
=== RUN   TestApplyCmd/all/0#10
=== RUN   TestApplyCmd/all/1#09
=== RUN   TestApplyCmd/all/0#11
=== RUN   TestApplyCmd/all/1#10
=== RUN   TestApplyCmd/all/2#07
=== RUN   TestApplyCmd/all_with_--dry-run
=== RUN   TestApplyCmd/all_with_--dry-run/0
=== RUN   TestApplyCmd/all_with_--dry-run/0#01
=== RUN   TestApplyCmd/all_with_--dry-run/0#02
=== RUN   TestApplyCmd/all_with_--dry-run/0#03
=== RUN   TestApplyCmd/all_with_--dry-run/0#04
=== RUN   TestApplyCmd/all_with_--dry-run/0#05
=== RUN   TestApplyCmd/all_with_--dry-run/0#06
=== RUN   TestApplyCmd/all_with_--dry-run/0#07
=== RUN   TestApplyCmd/all_with_--dry-run/0#08
=== RUN   TestApplyCmd/dir
=== RUN   TestApplyCmd/dir/0
=== RUN   TestApplyCmd/dir/1
=== RUN   TestApplyCmd/dir/0#01
=== RUN   TestApplyCmd/dir/1#01
=== RUN   TestApplyCmd/dir/2
=== RUN   TestApplyCmd/dir/0#02
=== RUN   TestApplyCmd/dir/1#02
=== RUN   TestApplyCmd/dir/0#03
=== RUN   TestApplyCmd/dir/1#03
=== RUN   TestApplyCmd/dir/2#01
=== RUN   TestApplyCmd/dir_with_--recursive=false
=== RUN   TestApplyCmd/dir_with_--recursive=false/0
=== RUN   TestApplyCmd/dir_with_--recursive=false/1
=== RUN   TestApplyCmd/dir_with_--recursive=false/0#01
=== RUN   TestApplyCmd/dir_with_--recursive=false/0#02
=== RUN   TestApplyCmd/create
=== RUN   TestApplyCmd/create/0
=== RUN   TestApplyCmd/create/1
=== RUN   TestApplyCmd/create/2
--- PASS: TestApplyCmd (0.01s)
    --- PASS: TestApplyCmd/all (0.00s)
        --- PASS: TestApplyCmd/all/0 (0.00s)
        --- PASS: TestApplyCmd/all/1 (0.00s)
        --- PASS: TestApplyCmd/all/2 (0.00s)
        --- PASS: TestApplyCmd/all/0#01 (0.00s)
        --- PASS: TestApplyCmd/all/1#01 (0.00s)
        --- PASS: TestApplyCmd/all/0#02 (0.00s)
        --- PASS: TestApplyCmd/all/1#02 (0.00s)
        --- PASS: TestApplyCmd/all/2#01 (0.00s)
        --- PASS: TestApplyCmd/all/0#03 (0.00s)
        --- PASS: TestApplyCmd/all/1#03 (0.00s)
        --- PASS: TestApplyCmd/all/0#04 (0.00s)
        --- PASS: TestApplyCmd/all/1#04 (0.00s)
        --- PASS: TestApplyCmd/all/2#02 (0.00s)
        --- PASS: TestApplyCmd/all/0#05 (0.00s)
        --- PASS: TestApplyCmd/all/1#05 (0.00s)
        --- PASS: TestApplyCmd/all/2#03 (0.00s)
        --- PASS: TestApplyCmd/all/0#06 (0.00s)
        --- PASS: TestApplyCmd/all/1#06 (0.00s)
        --- PASS: TestApplyCmd/all/2#04 (0.00s)
        --- PASS: TestApplyCmd/all/0#07 (0.00s)
        --- PASS: TestApplyCmd/all/1#07 (0.00s)
        --- PASS: TestApplyCmd/all/2#05 (0.00s)
        --- PASS: TestApplyCmd/all/0#08 (0.00s)
        --- PASS: TestApplyCmd/all/1#08 (0.00s)
        --- PASS: TestApplyCmd/all/2#06 (0.00s)
        --- PASS: TestApplyCmd/all/0#09 (0.00s)
        --- PASS: TestApplyCmd/all/0#10 (0.00s)
        --- PASS: TestApplyCmd/all/1#09 (0.00s)
        --- PASS: TestApplyCmd/all/0#11 (0.00s)
        --- PASS: TestApplyCmd/all/1#10 (0.00s)
        --- PASS: TestApplyCmd/all/2#07 (0.00s)
    --- PASS: TestApplyCmd/all_with_--dry-run (0.00s)
        --- PASS: TestApplyCmd/all_with_--dry-run/0 (0.00s)
        --- PASS: TestApplyCmd/all_with_--dry-run/0#01 (0.00s)
        --- PASS: TestApplyCmd/all_with_--dry-run/0#02 (0.00s)
        --- PASS: TestApplyCmd/all_with_--dry-run/0#03 (0.00s)
        --- PASS: TestApplyCmd/all_with_--dry-run/0#04 (0.00s)
        --- PASS: TestApplyCmd/all_with_--dry-run/0#05 (0.00s)
        --- PASS: TestApplyCmd/all_with_--dry-run/0#06 (0.00s)
        --- PASS: TestApplyCmd/all_with_--dry-run/0#07 (0.00s)
        --- PASS: TestApplyCmd/all_with_--dry-run/0#08 (0.00s)
    --- PASS: TestApplyCmd/dir (0.00s)
        --- PASS: TestApplyCmd/dir/0 (0.00s)
        --- PASS: TestApplyCmd/dir/1 (0.00s)
        --- PASS: TestApplyCmd/dir/0#01 (0.00s)
        --- PASS: TestApplyCmd/dir/1#01 (0.00s)
        --- PASS: TestApplyCmd/dir/2 (0.00s)
        --- PASS: TestApplyCmd/dir/0#02 (0.00s)
        --- PASS: TestApplyCmd/dir/1#02 (0.00s)
        --- PASS: TestApplyCmd/dir/0#03 (0.00s)
        --- PASS: TestApplyCmd/dir/1#03 (0.00s)
        --- PASS: TestApplyCmd/dir/2#01 (0.00s)
    --- PASS: TestApplyCmd/dir_with_--recursive=false (0.00s)
        --- PASS: TestApplyCmd/dir_with_--recursive=false/0 (0.00s)
        --- PASS: TestApplyCmd/dir_with_--recursive=false/1 (0.00s)
        --- PASS: TestApplyCmd/dir_with_--recursive=false/0#01 (0.00s)
        --- PASS: TestApplyCmd/dir_with_--recursive=false/0#02 (0.00s)
    --- PASS: TestApplyCmd/create (0.00s)
        --- PASS: TestApplyCmd/create/0 (0.00s)
        --- PASS: TestApplyCmd/create/1 (0.00s)
        --- PASS: TestApplyCmd/create/2 (0.00s)
=== RUN   TestApplySkipSecrets
=== RUN   TestApplySkipSecrets/0
=== RUN   TestApplySkipSecrets/0#01
=== RUN   TestApplySkipSecrets/0#02
--- PASS: TestApplySkipSecrets (0.00s)
    --- PASS: TestApplySkipSecrets/0 (0.00s)
    --- PASS: TestApplySkipSecrets/0#01 (0.00s)
    --- PASS: TestApplySkipSecrets/0#02 (0.00s)
=== RUN   TestUserAgent
--- PASS: TestUserAgent (0.00s)
=== RUN   TestIssue2132
=== RUN   TestIssue2132/0
=== RUN   TestIssue2132/0#01
--- PASS: TestIssue2132 (0.00s)
    --- PASS: TestIssue2132/0 (0.00s)
    --- PASS: TestIssue2132/0#01 (0.00s)
=== RUN   TestIssue3206
--- PASS: TestIssue3206 (0.01s)
=== RUN   TestIssue3216
--- PASS: TestIssue3216 (0.00s)
=== RUN   TestIssue3703
=== RUN   TestIssue3703/0
=== RUN   TestIssue3703/0#01
--- PASS: TestIssue3703 (0.00s)
    --- PASS: TestIssue3703/0 (0.00s)
    --- PASS: TestIssue3703/0#01 (0.00s)
=== RUN   TestIssue4927
=== RUN   TestIssue4927/0
=== RUN   TestIssue4927/0#01
=== RUN   TestIssue4927/0#02
=== RUN   TestIssue4927/0#03
=== RUN   TestIssue4927/0#04
--- PASS: TestIssue4927 (0.01s)
    --- PASS: TestIssue4927/0 (0.00s)
    --- PASS: TestIssue4927/0#01 (0.00s)
    --- PASS: TestIssue4927/0#02 (0.00s)
    --- PASS: TestIssue4927/0#03 (0.00s)
    --- PASS: TestIssue4927/0#04 (0.00s)
=== RUN   TestCatCmd
=== RUN   TestCatCmd/template_delimiters
=== RUN   TestCatCmd/json_indent
=== RUN   TestCatCmd/yaml_indent
--- PASS: TestCatCmd (0.01s)
    --- PASS: TestCatCmd/template_delimiters (0.00s)
    --- PASS: TestCatCmd/json_indent (0.00s)
    --- PASS: TestCatCmd/yaml_indent (0.00s)
=== RUN   TestChattrCmdValidArgs
=== RUN   TestChattrCmdValidArgs/chattrValidArgs(_,_[],_"a")
=== RUN   TestChattrCmdValidArgs/chattrValidArgs(_,_[],_"e")
=== RUN   TestChattrCmdValidArgs/chattrValidArgs(_,_[],_"-c")
=== RUN   TestChattrCmdValidArgs/chattrValidArgs(_,_[],_"+o")
=== RUN   TestChattrCmdValidArgs/chattrValidArgs(_,_[],_"nop")
=== RUN   TestChattrCmdValidArgs/chattrValidArgs(_,_[],_"empty,s")
--- PASS: TestChattrCmdValidArgs (0.00s)
    --- PASS: TestChattrCmdValidArgs/chattrValidArgs(_,_[],_"a") (0.00s)
    --- PASS: TestChattrCmdValidArgs/chattrValidArgs(_,_[],_"e") (0.00s)
    --- PASS: TestChattrCmdValidArgs/chattrValidArgs(_,_[],_"-c") (0.00s)
    --- PASS: TestChattrCmdValidArgs/chattrValidArgs(_,_[],_"+o") (0.00s)
    --- PASS: TestChattrCmdValidArgs/chattrValidArgs(_,_[],_"nop") (0.00s)
    --- PASS: TestChattrCmdValidArgs/chattrValidArgs(_,_[],_"empty,s") (0.00s)
=== RUN   TestParseAttrModifier
=== RUN   TestParseAttrModifier/empty
=== RUN   TestParseAttrModifier/+empty
=== RUN   TestParseAttrModifier/-empty
=== RUN   TestParseAttrModifier/noempty
=== RUN   TestParseAttrModifier/e
=== RUN   TestParseAttrModifier/encrypted
=== RUN   TestParseAttrModifier/executable
=== RUN   TestParseAttrModifier/x
=== RUN   TestParseAttrModifier/b
=== RUN   TestParseAttrModifier/-b
=== RUN   TestParseAttrModifier/after
=== RUN   TestParseAttrModifier/noafter
=== RUN   TestParseAttrModifier/once
=== RUN   TestParseAttrModifier/private
=== RUN   TestParseAttrModifier/p
=== RUN   TestParseAttrModifier/template
=== RUN   TestParseAttrModifier/t
=== RUN   TestParseAttrModifier/create
=== RUN   TestParseAttrModifier/-create
=== RUN   TestParseAttrModifier/modify
=== RUN   TestParseAttrModifier/-script
=== RUN   TestParseAttrModifier/+symlink
=== RUN   TestParseAttrModifier/empty,+executable,noprivate,-t
=== RUN   TestParseAttrModifier/_empty_,_-private,_notemplate_
=== RUN   TestParseAttrModifier/p,,-t
=== RUN   TestParseAttrModifier/unknown
--- PASS: TestParseAttrModifier (0.00s)
    --- PASS: TestParseAttrModifier/empty (0.00s)
    --- PASS: TestParseAttrModifier/+empty (0.00s)
    --- PASS: TestParseAttrModifier/-empty (0.00s)
    --- PASS: TestParseAttrModifier/noempty (0.00s)
    --- PASS: TestParseAttrModifier/e (0.00s)
    --- PASS: TestParseAttrModifier/encrypted (0.00s)
    --- PASS: TestParseAttrModifier/executable (0.00s)
    --- PASS: TestParseAttrModifier/x (0.00s)
    --- PASS: TestParseAttrModifier/b (0.00s)
    --- PASS: TestParseAttrModifier/-b (0.00s)
    --- PASS: TestParseAttrModifier/after (0.00s)
    --- PASS: TestParseAttrModifier/noafter (0.00s)
    --- PASS: TestParseAttrModifier/once (0.00s)
    --- PASS: TestParseAttrModifier/private (0.00s)
    --- PASS: TestParseAttrModifier/p (0.00s)
    --- PASS: TestParseAttrModifier/template (0.00s)
    --- PASS: TestParseAttrModifier/t (0.00s)
    --- PASS: TestParseAttrModifier/create (0.00s)
    --- PASS: TestParseAttrModifier/-create (0.00s)
    --- PASS: TestParseAttrModifier/modify (0.00s)
    --- PASS: TestParseAttrModifier/-script (0.00s)
    --- PASS: TestParseAttrModifier/+symlink (0.00s)
    --- PASS: TestParseAttrModifier/empty,+executable,noprivate,-t (0.00s)
    --- PASS: TestParseAttrModifier/_empty_,_-private,_notemplate_ (0.00s)
    --- PASS: TestParseAttrModifier/p,,-t (0.00s)
    --- PASS: TestParseAttrModifier/unknown (0.00s)
=== RUN   TestDeDuplicateError
=== RUN   TestDeDuplicateError/0
=== RUN   TestDeDuplicateError/1
=== RUN   TestDeDuplicateError/2
=== RUN   TestDeDuplicateError/3
=== RUN   TestDeDuplicateError/4
=== RUN   TestDeDuplicateError/5
=== RUN   TestDeDuplicateError/6
=== RUN   TestDeDuplicateError/7
--- PASS: TestDeDuplicateError (0.00s)
    --- PASS: TestDeDuplicateError/0 (0.00s)
    --- PASS: TestDeDuplicateError/1 (0.00s)
    --- PASS: TestDeDuplicateError/2 (0.00s)
    --- PASS: TestDeDuplicateError/3 (0.00s)
    --- PASS: TestDeDuplicateError/4 (0.00s)
    --- PASS: TestDeDuplicateError/5 (0.00s)
    --- PASS: TestDeDuplicateError/6 (0.00s)
    --- PASS: TestDeDuplicateError/7 (0.00s)
=== RUN   TestMustGetLongHelpPanics
--- PASS: TestMustGetLongHelpPanics (0.00s)
=== RUN   TestExportedFieldsHaveMatchingMarshalTags
--- PASS: TestExportedFieldsHaveMatchingMarshalTags (0.00s)
=== RUN   TestConfigFileFieldTagNamesMatch
=== RUN   TestConfigFileFieldTagNamesMatch/CacheDirAbsPath
=== RUN   TestConfigFileFieldTagNamesMatch/Color
=== RUN   TestConfigFileFieldTagNamesMatch/Data
=== RUN   TestConfigFileFieldTagNamesMatch/Env
=== RUN   TestConfigFileFieldTagNamesMatch/Format
=== RUN   TestConfigFileFieldTagNamesMatch/DestDirAbsPath
=== RUN   TestConfigFileFieldTagNamesMatch/GitHub
=== RUN   TestConfigFileFieldTagNamesMatch/Hooks
=== RUN   TestConfigFileFieldTagNamesMatch/Interactive
=== RUN   TestConfigFileFieldTagNamesMatch/Interpreters
=== RUN   TestConfigFileFieldTagNamesMatch/LessInteractive
=== RUN   TestConfigFileFieldTagNamesMatch/Mode
=== RUN   TestConfigFileFieldTagNamesMatch/Pager
=== RUN   TestConfigFileFieldTagNamesMatch/PagerArgs
=== RUN   TestConfigFileFieldTagNamesMatch/PersistentStateAbsPath
=== RUN   TestConfigFileFieldTagNamesMatch/PINEntry
=== RUN   TestConfigFileFieldTagNamesMatch/Progress
=== RUN   TestConfigFileFieldTagNamesMatch/Safe
=== RUN   TestConfigFileFieldTagNamesMatch/ScriptEnv
=== RUN   TestConfigFileFieldTagNamesMatch/ScriptTempDir
=== RUN   TestConfigFileFieldTagNamesMatch/SourceDirAbsPath
=== RUN   TestConfigFileFieldTagNamesMatch/TempDir
=== RUN   TestConfigFileFieldTagNamesMatch/Template
=== RUN   TestConfigFileFieldTagNamesMatch/TextConv
=== RUN   TestConfigFileFieldTagNamesMatch/Umask
=== RUN   TestConfigFileFieldTagNamesMatch/UseBuiltinAge
=== RUN   TestConfigFileFieldTagNamesMatch/UseBuiltinGit
=== RUN   TestConfigFileFieldTagNamesMatch/Verbose
=== RUN   TestConfigFileFieldTagNamesMatch/Warnings
=== RUN   TestConfigFileFieldTagNamesMatch/WorkingTreeAbsPath
=== RUN   TestConfigFileFieldTagNamesMatch/AWSSecretsManager
=== RUN   TestConfigFileFieldTagNamesMatch/AzureKeyVault
=== RUN   TestConfigFileFieldTagNamesMatch/Bitwarden
=== RUN   TestConfigFileFieldTagNamesMatch/BitwardenSecrets
=== RUN   TestConfigFileFieldTagNamesMatch/Dashlane
=== RUN   TestConfigFileFieldTagNamesMatch/Doppler
=== RUN   TestConfigFileFieldTagNamesMatch/Ejson
=== RUN   TestConfigFileFieldTagNamesMatch/Gopass
=== RUN   TestConfigFileFieldTagNamesMatch/Keepassxc
=== RUN   TestConfigFileFieldTagNamesMatch/Keeper
=== RUN   TestConfigFileFieldTagNamesMatch/Lastpass
=== RUN   TestConfigFileFieldTagNamesMatch/Onepassword
=== RUN   TestConfigFileFieldTagNamesMatch/Pass
=== RUN   TestConfigFileFieldTagNamesMatch/Passhole
=== RUN   TestConfigFileFieldTagNamesMatch/ProtonPass
=== RUN   TestConfigFileFieldTagNamesMatch/RBW
=== RUN   TestConfigFileFieldTagNamesMatch/Secret
=== RUN   TestConfigFileFieldTagNamesMatch/Vault
=== RUN   TestConfigFileFieldTagNamesMatch/Encryption
=== RUN   TestConfigFileFieldTagNamesMatch/Age
=== RUN   TestConfigFileFieldTagNamesMatch/GPG
=== RUN   TestConfigFileFieldTagNamesMatch/Add
=== RUN   TestConfigFileFieldTagNamesMatch/CD
=== RUN   TestConfigFileFieldTagNamesMatch/Completion
=== RUN   TestConfigFileFieldTagNamesMatch/Docker
=== RUN   TestConfigFileFieldTagNamesMatch/Diff
=== RUN   TestConfigFileFieldTagNamesMatch/Edit
=== RUN   TestConfigFileFieldTagNamesMatch/Git
=== RUN   TestConfigFileFieldTagNamesMatch/Merge
=== RUN   TestConfigFileFieldTagNamesMatch/Status
=== RUN   TestConfigFileFieldTagNamesMatch/Update
=== RUN   TestConfigFileFieldTagNamesMatch/Verify
--- PASS: TestConfigFileFieldTagNamesMatch (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/CacheDirAbsPath (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/Color (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/Data (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/Env (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/Format (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/DestDirAbsPath (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/GitHub (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/Hooks (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/Interactive (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/Interpreters (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/LessInteractive (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/Mode (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/Pager (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/PagerArgs (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/PersistentStateAbsPath (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/PINEntry (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/Progress (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/Safe (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/ScriptEnv (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/ScriptTempDir (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/SourceDirAbsPath (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/TempDir (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/Template (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/TextConv (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/Umask (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/UseBuiltinAge (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/UseBuiltinGit (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/Verbose (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/Warnings (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/WorkingTreeAbsPath (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/AWSSecretsManager (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/AzureKeyVault (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/Bitwarden (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/BitwardenSecrets (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/Dashlane (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/Doppler (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/Ejson (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/Gopass (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/Keepassxc (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/Keeper (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/Lastpass (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/Onepassword (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/Pass (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/Passhole (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/ProtonPass (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/RBW (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/Secret (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/Vault (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/Encryption (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/Age (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/GPG (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/Add (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/CD (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/Completion (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/Docker (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/Diff (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/Edit (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/Git (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/Merge (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/Status (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/Update (0.00s)
    --- PASS: TestConfigFileFieldTagNamesMatch/Verify (0.00s)
=== RUN   TestAddTemplateFuncPanic
--- PASS: TestAddTemplateFuncPanic (0.00s)
=== RUN   TestConfigFileFormatRoundTrip
=== RUN   TestConfigFileFormatRoundTrip/json
=== RUN   TestConfigFileFormatRoundTrip/yaml
--- PASS: TestConfigFileFormatRoundTrip (0.00s)
    --- PASS: TestConfigFileFormatRoundTrip/json (0.00s)
    --- PASS: TestConfigFileFormatRoundTrip/yaml (0.00s)
=== RUN   TestParseCommand
=== RUN   TestParseCommand/0
=== RUN   TestParseCommand/1
=== RUN   TestParseCommand/2
=== RUN   TestParseCommand/3
--- PASS: TestParseCommand (0.00s)
    --- PASS: TestParseCommand/0 (0.00s)
    --- PASS: TestParseCommand/1 (0.00s)
    --- PASS: TestParseCommand/2 (0.00s)
    --- PASS: TestParseCommand/3 (0.00s)
=== RUN   TestParseConfig
=== RUN   TestParseConfig/json_bool
=== RUN   TestParseConfig/json_string
=== RUN   TestParseConfig/toml_bool
=== RUN   TestParseConfig/toml_string
=== RUN   TestParseConfig/yaml_bool
=== RUN   TestParseConfig/yaml_string
--- PASS: TestParseConfig (0.06s)
    --- PASS: TestParseConfig/json_bool (0.01s)
    --- PASS: TestParseConfig/json_string (0.01s)
    --- PASS: TestParseConfig/toml_bool (0.01s)
    --- PASS: TestParseConfig/toml_string (0.01s)
    --- PASS: TestParseConfig/yaml_bool (0.02s)
    --- PASS: TestParseConfig/yaml_string (0.01s)
=== RUN   TestPrependParentRelPaths
=== RUN   TestPrependParentRelPaths/empty
=== RUN   TestPrependParentRelPaths/single
=== RUN   TestPrependParentRelPaths/multiple
=== RUN   TestPrependParentRelPaths/single_parent
=== RUN   TestPrependParentRelPaths/multiple_parents
=== RUN   TestPrependParentRelPaths/duplicate_parents
--- PASS: TestPrependParentRelPaths (0.00s)
    --- PASS: TestPrependParentRelPaths/empty (0.00s)
    --- PASS: TestPrependParentRelPaths/single (0.00s)
    --- PASS: TestPrependParentRelPaths/multiple (0.00s)
    --- PASS: TestPrependParentRelPaths/single_parent (0.00s)
    --- PASS: TestPrependParentRelPaths/multiple_parents (0.00s)
    --- PASS: TestPrependParentRelPaths/duplicate_parents (0.00s)
=== RUN   TestInitConfigWithIncludedTemplate
--- PASS: TestInitConfigWithIncludedTemplate (0.02s)
=== RUN   TestUpperSnakeCaseToCamelCase
--- PASS: TestUpperSnakeCaseToCamelCase (0.00s)
=== RUN   TestIssue3980
=== RUN   TestIssue3980/empty_config
=== RUN   TestIssue3980/empty_encryption_no_configs
=== RUN   TestIssue3980/valid_age_config
=== RUN   TestIssue3980/valid_age_config_no_builtin
=== RUN   TestIssue3980/valid_gpg_config
=== RUN   TestIssue3980/unset_encryption_uses_gpg
=== RUN   TestIssue3980/unset_encryption_uses_age
=== RUN   TestIssue3980/unset_encryption_uses_age_no_builtin
=== RUN   TestIssue3980/unset_encryption_gpg_priority
=== RUN   TestIssue3980/unknown_encryption
--- PASS: TestIssue3980 (0.08s)
    --- PASS: TestIssue3980/empty_config (0.01s)
    --- PASS: TestIssue3980/empty_encryption_no_configs (0.01s)
    --- PASS: TestIssue3980/valid_age_config (0.01s)
    --- PASS: TestIssue3980/valid_age_config_no_builtin (0.01s)
    --- PASS: TestIssue3980/valid_gpg_config (0.01s)
    --- PASS: TestIssue3980/unset_encryption_uses_gpg (0.01s)
    --- PASS: TestIssue3980/unset_encryption_uses_age (0.01s)
    --- PASS: TestIssue3980/unset_encryption_uses_age_no_builtin (0.01s)
    --- PASS: TestIssue3980/unset_encryption_gpg_priority (0.01s)
    --- PASS: TestIssue3980/unknown_encryption (0.00s)
=== RUN   TestDataCmd
=== RUN   TestDataCmd/json
=== RUN   TestDataCmd/yaml
--- PASS: TestDataCmd (0.01s)
    --- PASS: TestDataCmd/json (0.00s)
    --- PASS: TestDataCmd/yaml (0.00s)
=== RUN   TestDiffCmd
=== RUN   TestDiffCmd/empty
=== RUN   TestDiffCmd/file
=== RUN   TestDiffCmd/simple_exclude_files
=== RUN   TestDiffCmd/simple_exclude_files_with_config
=== RUN   TestDiffCmd/simple_exclude_externals_with_config
=== RUN   TestDiffCmd/issue_4425
=== RUN   TestDiffCmd/issue_4425_nested_dir
=== RUN   TestDiffCmd/issue_4425_nested_file
--- PASS: TestDiffCmd (0.02s)
    --- PASS: TestDiffCmd/empty (0.00s)
    --- PASS: TestDiffCmd/file (0.00s)
    --- PASS: TestDiffCmd/simple_exclude_files (0.00s)
    --- PASS: TestDiffCmd/simple_exclude_files_with_config (0.00s)
    --- PASS: TestDiffCmd/simple_exclude_externals_with_config (0.00s)
    --- PASS: TestDiffCmd/issue_4425 (0.00s)
    --- PASS: TestDiffCmd/issue_4425_nested_dir (0.00s)
    --- PASS: TestDiffCmd/issue_4425_nested_file (0.00s)
=== RUN   TestImportCmd
=== RUN   TestImportCmd/--strip-components=1
=== RUN   TestImportCmd/--strip-components=1/0
=== RUN   TestImportCmd/--strip-components=1/1
=== RUN   TestImportCmd/--strip-components=1/0#01
=== RUN   TestImportCmd/--strip-components=1/1#01
=== RUN   TestImportCmd/--strip-components=1/2
=== RUN   TestImportCmd/--strip-components=1/0#02
=== RUN   TestImportCmd/--strip-components=1/1#02
=== RUN   TestImportCmd/--strip-components=1/2#01
=== RUN   TestImportCmd/--destination=~/dir_--strip-components=1
=== RUN   TestImportCmd/--destination=~/dir_--strip-components=1/0
=== RUN   TestImportCmd/--destination=~/dir_--strip-components=1/1
=== RUN   TestImportCmd/--destination=~/dir_--strip-components=1/0#01
=== RUN   TestImportCmd/--destination=~/dir_--strip-components=1/1#01
=== RUN   TestImportCmd/--destination=~/dir_--strip-components=1/2
=== RUN   TestImportCmd/--destination=~/dir_--strip-components=1/0#02
=== RUN   TestImportCmd/--destination=~/dir_--strip-components=1/1#02
=== RUN   TestImportCmd/--destination=~/dir_--strip-components=1/2#01
=== RUN   TestImportCmd/--destination=~/dir_--remove-destination_--strip-components=1
=== RUN   TestImportCmd/--destination=~/dir_--remove-destination_--strip-components=1/0
=== RUN   TestImportCmd/--destination=~/dir_--remove-destination_--strip-components=1/1
=== RUN   TestImportCmd/--destination=~/dir_--remove-destination_--strip-components=1/0#01
=== RUN   TestImportCmd/--destination=~/dir_--remove-destination_--strip-components=1/0#02
=== RUN   TestImportCmd/--destination=~/dir_--remove-destination_--strip-components=1/1#01
=== RUN   TestImportCmd/--destination=~/dir_--remove-destination_--strip-components=1/2
=== RUN   TestImportCmd/--destination=~/dir_--remove-destination_--strip-components=1/0#03
=== RUN   TestImportCmd/--destination=~/dir_--remove-destination_--strip-components=1/1#02
=== RUN   TestImportCmd/--destination=~/dir_--remove-destination_--strip-components=1/2#01
=== RUN   TestImportCmd/--destination=~/dir_--exact_--strip-components=1
=== RUN   TestImportCmd/--destination=~/dir_--exact_--strip-components=1/0
=== RUN   TestImportCmd/--destination=~/dir_--exact_--strip-components=1/1
=== RUN   TestImportCmd/--destination=~/dir_--exact_--strip-components=1/0#01
=== RUN   TestImportCmd/--destination=~/dir_--exact_--strip-components=1/1#01
=== RUN   TestImportCmd/--destination=~/dir_--exact_--strip-components=1/2
=== RUN   TestImportCmd/--destination=~/dir_--exact_--strip-components=1/0#02
=== RUN   TestImportCmd/--destination=~/dir_--exact_--strip-components=1/1#02
=== RUN   TestImportCmd/--destination=~/dir_--exact_--strip-components=1/2#01
--- PASS: TestImportCmd (0.01s)
    --- PASS: TestImportCmd/--strip-components=1 (0.00s)
        --- PASS: TestImportCmd/--strip-components=1/0 (0.00s)
        --- PASS: TestImportCmd/--strip-components=1/1 (0.00s)
        --- PASS: TestImportCmd/--strip-components=1/0#01 (0.00s)
        --- PASS: TestImportCmd/--strip-components=1/1#01 (0.00s)
        --- PASS: TestImportCmd/--strip-components=1/2 (0.00s)
        --- PASS: TestImportCmd/--strip-components=1/0#02 (0.00s)
        --- PASS: TestImportCmd/--strip-components=1/1#02 (0.00s)
        --- PASS: TestImportCmd/--strip-components=1/2#01 (0.00s)
    --- PASS: TestImportCmd/--destination=~/dir_--strip-components=1 (0.00s)
        --- PASS: TestImportCmd/--destination=~/dir_--strip-components=1/0 (0.00s)
        --- PASS: TestImportCmd/--destination=~/dir_--strip-components=1/1 (0.00s)
        --- PASS: TestImportCmd/--destination=~/dir_--strip-components=1/0#01 (0.00s)
        --- PASS: TestImportCmd/--destination=~/dir_--strip-components=1/1#01 (0.00s)
        --- PASS: TestImportCmd/--destination=~/dir_--strip-components=1/2 (0.00s)
        --- PASS: TestImportCmd/--destination=~/dir_--strip-components=1/0#02 (0.00s)
        --- PASS: TestImportCmd/--destination=~/dir_--strip-components=1/1#02 (0.00s)
        --- PASS: TestImportCmd/--destination=~/dir_--strip-components=1/2#01 (0.00s)
    --- PASS: TestImportCmd/--destination=~/dir_--remove-destination_--strip-components=1 (0.00s)
        --- PASS: TestImportCmd/--destination=~/dir_--remove-destination_--strip-components=1/0 (0.00s)
        --- PASS: TestImportCmd/--destination=~/dir_--remove-destination_--strip-components=1/1 (0.00s)
        --- PASS: TestImportCmd/--destination=~/dir_--remove-destination_--strip-components=1/0#01 (0.00s)
        --- PASS: TestImportCmd/--destination=~/dir_--remove-destination_--strip-components=1/0#02 (0.00s)
        --- PASS: TestImportCmd/--destination=~/dir_--remove-destination_--strip-components=1/1#01 (0.00s)
        --- PASS: TestImportCmd/--destination=~/dir_--remove-destination_--strip-components=1/2 (0.00s)
        --- PASS: TestImportCmd/--destination=~/dir_--remove-destination_--strip-components=1/0#03 (0.00s)
        --- PASS: TestImportCmd/--destination=~/dir_--remove-destination_--strip-components=1/1#02 (0.00s)
        --- PASS: TestImportCmd/--destination=~/dir_--remove-destination_--strip-components=1/2#01 (0.00s)
    --- PASS: TestImportCmd/--destination=~/dir_--exact_--strip-components=1 (0.00s)
        --- PASS: TestImportCmd/--destination=~/dir_--exact_--strip-components=1/0 (0.00s)
        --- PASS: TestImportCmd/--destination=~/dir_--exact_--strip-components=1/1 (0.00s)
        --- PASS: TestImportCmd/--destination=~/dir_--exact_--strip-components=1/0#01 (0.00s)
        --- PASS: TestImportCmd/--destination=~/dir_--exact_--strip-components=1/1#01 (0.00s)
        --- PASS: TestImportCmd/--destination=~/dir_--exact_--strip-components=1/2 (0.00s)
        --- PASS: TestImportCmd/--destination=~/dir_--exact_--strip-components=1/0#02 (0.00s)
        --- PASS: TestImportCmd/--destination=~/dir_--exact_--strip-components=1/1#02 (0.00s)
        --- PASS: TestImportCmd/--destination=~/dir_--exact_--strip-components=1/2#01 (0.00s)
=== RUN   TestGuessRepoURL
=== RUN   TestGuessRepoURL/git@github.com:user/dotfiles.git
=== RUN   TestGuessRepoURL/codeberg.org/user
=== RUN   TestGuessRepoURL/codeberg.org/user/dots
=== RUN   TestGuessRepoURL/gitlab.com/user
=== RUN   TestGuessRepoURL/gitlab.com/user/dots
=== RUN   TestGuessRepoURL/gitlab.com/user/dots.git
=== RUN   TestGuessRepoURL/http://gitlab.com/user/dots.git
=== RUN   TestGuessRepoURL/https://gitlab.com/user/dots.git
=== RUN   TestGuessRepoURL/sr.ht/~user_name
=== RUN   TestGuessRepoURL/sr.ht/~user_name/dots
=== RUN   TestGuessRepoURL/user
=== RUN   TestGuessRepoURL/user/chezmoi_dotfiles
=== RUN   TestGuessRepoURL/user/.dotfiles
=== RUN   TestGuessRepoURL/user/dots
=== RUN   TestGuessRepoURL/user/dots.git
--- PASS: TestGuessRepoURL (0.00s)
    --- PASS: TestGuessRepoURL/git@github.com:user/dotfiles.git (0.00s)
    --- PASS: TestGuessRepoURL/codeberg.org/user (0.00s)
    --- PASS: TestGuessRepoURL/codeberg.org/user/dots (0.00s)
    --- PASS: TestGuessRepoURL/gitlab.com/user (0.00s)
    --- PASS: TestGuessRepoURL/gitlab.com/user/dots (0.00s)
    --- PASS: TestGuessRepoURL/gitlab.com/user/dots.git (0.00s)
    --- PASS: TestGuessRepoURL/http://gitlab.com/user/dots.git (0.00s)
    --- PASS: TestGuessRepoURL/https://gitlab.com/user/dots.git (0.00s)
    --- PASS: TestGuessRepoURL/sr.ht/~user_name (0.00s)
    --- PASS: TestGuessRepoURL/sr.ht/~user_name/dots (0.00s)
    --- PASS: TestGuessRepoURL/user (0.00s)
    --- PASS: TestGuessRepoURL/user/chezmoi_dotfiles (0.00s)
    --- PASS: TestGuessRepoURL/user/.dotfiles (0.00s)
    --- PASS: TestGuessRepoURL/user/dots (0.00s)
    --- PASS: TestGuessRepoURL/user/dots.git (0.00s)
=== RUN   TestIssue2137
--- PASS: TestIssue2137 (0.00s)
=== RUN   TestIssue2283
--- PASS: TestIssue2283 (0.01s)
=== RUN   TestPromptBoolInteractiveTemplateFunc
=== RUN   TestPromptBoolInteractiveTemplateFunc/response_without_default
=== RUN   TestPromptBoolInteractiveTemplateFunc/response_with_default
=== RUN   TestPromptBoolInteractiveTemplateFunc/no_response_with_default
=== RUN   TestPromptBoolInteractiveTemplateFunc/invalid_response
=== RUN   TestPromptBoolInteractiveTemplateFunc/invalid_response_with_default
=== RUN   TestPromptBoolInteractiveTemplateFunc/too_many_args
--- PASS: TestPromptBoolInteractiveTemplateFunc (0.00s)
    --- PASS: TestPromptBoolInteractiveTemplateFunc/response_without_default (0.00s)
    --- PASS: TestPromptBoolInteractiveTemplateFunc/response_with_default (0.00s)
    --- PASS: TestPromptBoolInteractiveTemplateFunc/no_response_with_default (0.00s)
    --- PASS: TestPromptBoolInteractiveTemplateFunc/invalid_response (0.00s)
    --- PASS: TestPromptBoolInteractiveTemplateFunc/invalid_response_with_default (0.00s)
    --- PASS: TestPromptBoolInteractiveTemplateFunc/too_many_args (0.00s)
=== RUN   TestPromptChoiceInteractiveTemplateFunc
=== RUN   TestPromptChoiceInteractiveTemplateFunc/response_without_default
=== RUN   TestPromptChoiceInteractiveTemplateFunc/response_with_default
=== RUN   TestPromptChoiceInteractiveTemplateFunc/no_response_with_default
=== RUN   TestPromptChoiceInteractiveTemplateFunc/invalid_response
=== RUN   TestPromptChoiceInteractiveTemplateFunc/invalid_response_with_default
=== RUN   TestPromptChoiceInteractiveTemplateFunc/too_many_args
=== RUN   TestPromptChoiceInteractiveTemplateFunc/invalid_default
--- PASS: TestPromptChoiceInteractiveTemplateFunc (0.00s)
    --- PASS: TestPromptChoiceInteractiveTemplateFunc/response_without_default (0.00s)
    --- PASS: TestPromptChoiceInteractiveTemplateFunc/response_with_default (0.00s)
    --- PASS: TestPromptChoiceInteractiveTemplateFunc/no_response_with_default (0.00s)
    --- PASS: TestPromptChoiceInteractiveTemplateFunc/invalid_response (0.00s)
    --- PASS: TestPromptChoiceInteractiveTemplateFunc/invalid_response_with_default (0.00s)
    --- PASS: TestPromptChoiceInteractiveTemplateFunc/too_many_args (0.00s)
    --- PASS: TestPromptChoiceInteractiveTemplateFunc/invalid_default (0.00s)
=== RUN   TestPromptIntInteractiveTemplateFunc
=== RUN   TestPromptIntInteractiveTemplateFunc/response_without_default
=== RUN   TestPromptIntInteractiveTemplateFunc/response_with_default
=== RUN   TestPromptIntInteractiveTemplateFunc/no_response_with_default
=== RUN   TestPromptIntInteractiveTemplateFunc/invalid_response
=== RUN   TestPromptIntInteractiveTemplateFunc/invalid_response_with_default
=== RUN   TestPromptIntInteractiveTemplateFunc/too_many_args
--- PASS: TestPromptIntInteractiveTemplateFunc (0.00s)
    --- PASS: TestPromptIntInteractiveTemplateFunc/response_without_default (0.00s)
    --- PASS: TestPromptIntInteractiveTemplateFunc/response_with_default (0.00s)
    --- PASS: TestPromptIntInteractiveTemplateFunc/no_response_with_default (0.00s)
    --- PASS: TestPromptIntInteractiveTemplateFunc/invalid_response (0.00s)
    --- PASS: TestPromptIntInteractiveTemplateFunc/invalid_response_with_default (0.00s)
    --- PASS: TestPromptIntInteractiveTemplateFunc/too_many_args (0.00s)
=== RUN   TestPromptMultichoiceInteractiveTemplateFunc
=== RUN   TestPromptMultichoiceInteractiveTemplateFunc/response_without_default
=== RUN   TestPromptMultichoiceInteractiveTemplateFunc/response_with_default
=== RUN   TestPromptMultichoiceInteractiveTemplateFunc/no_response_with_default
=== RUN   TestPromptMultichoiceInteractiveTemplateFunc/empty_response_without_default
=== RUN   TestPromptMultichoiceInteractiveTemplateFunc/empty_response_without_default#01
=== RUN   TestPromptMultichoiceInteractiveTemplateFunc/invalid_response
=== RUN   TestPromptMultichoiceInteractiveTemplateFunc/invalid_response_with_default
=== RUN   TestPromptMultichoiceInteractiveTemplateFunc/invalid_default
--- PASS: TestPromptMultichoiceInteractiveTemplateFunc (0.00s)
    --- PASS: TestPromptMultichoiceInteractiveTemplateFunc/response_without_default (0.00s)
    --- PASS: TestPromptMultichoiceInteractiveTemplateFunc/response_with_default (0.00s)
    --- PASS: TestPromptMultichoiceInteractiveTemplateFunc/no_response_with_default (0.00s)
    --- PASS: TestPromptMultichoiceInteractiveTemplateFunc/empty_response_without_default (0.00s)
    --- PASS: TestPromptMultichoiceInteractiveTemplateFunc/empty_response_without_default#01 (0.00s)
    --- PASS: TestPromptMultichoiceInteractiveTemplateFunc/invalid_response (0.00s)
    --- PASS: TestPromptMultichoiceInteractiveTemplateFunc/invalid_response_with_default (0.00s)
    --- PASS: TestPromptMultichoiceInteractiveTemplateFunc/invalid_default (0.00s)
=== RUN   TestPromptStringInteractiveTemplateFunc
=== RUN   TestPromptStringInteractiveTemplateFunc/response_without_default
=== RUN   TestPromptStringInteractiveTemplateFunc/response_with_default
=== RUN   TestPromptStringInteractiveTemplateFunc/response_with_space_with_default
=== RUN   TestPromptStringInteractiveTemplateFunc/no_response_with_default_with_space
=== RUN   TestPromptStringInteractiveTemplateFunc/no_response_with_default
=== RUN   TestPromptStringInteractiveTemplateFunc/whitespace_response_with_default
=== RUN   TestPromptStringInteractiveTemplateFunc/too_many_args
--- PASS: TestPromptStringInteractiveTemplateFunc (0.00s)
    --- PASS: TestPromptStringInteractiveTemplateFunc/response_without_default (0.00s)
    --- PASS: TestPromptStringInteractiveTemplateFunc/response_with_default (0.00s)
    --- PASS: TestPromptStringInteractiveTemplateFunc/response_with_space_with_default (0.00s)
    --- PASS: TestPromptStringInteractiveTemplateFunc/no_response_with_default_with_space (0.00s)
    --- PASS: TestPromptStringInteractiveTemplateFunc/no_response_with_default (0.00s)
    --- PASS: TestPromptStringInteractiveTemplateFunc/whitespace_response_with_default (0.00s)
    --- PASS: TestPromptStringInteractiveTemplateFunc/too_many_args (0.00s)
=== RUN   TestNewDefaultInterpreters_OtherInterpreters
=== RUN   TestNewDefaultInterpreters_OtherInterpreters/bat
=== RUN   TestNewDefaultInterpreters_OtherInterpreters/cmd
=== RUN   TestNewDefaultInterpreters_OtherInterpreters/com
=== RUN   TestNewDefaultInterpreters_OtherInterpreters/exe
=== RUN   TestNewDefaultInterpreters_OtherInterpreters/nu
=== RUN   TestNewDefaultInterpreters_OtherInterpreters/pl
=== RUN   TestNewDefaultInterpreters_OtherInterpreters/py
=== RUN   TestNewDefaultInterpreters_OtherInterpreters/rb
--- PASS: TestNewDefaultInterpreters_OtherInterpreters (0.00s)
    --- PASS: TestNewDefaultInterpreters_OtherInterpreters/bat (0.00s)
    --- PASS: TestNewDefaultInterpreters_OtherInterpreters/cmd (0.00s)
    --- PASS: TestNewDefaultInterpreters_OtherInterpreters/com (0.00s)
    --- PASS: TestNewDefaultInterpreters_OtherInterpreters/exe (0.00s)
    --- PASS: TestNewDefaultInterpreters_OtherInterpreters/nu (0.00s)
    --- PASS: TestNewDefaultInterpreters_OtherInterpreters/pl (0.00s)
    --- PASS: TestNewDefaultInterpreters_OtherInterpreters/py (0.00s)
    --- PASS: TestNewDefaultInterpreters_OtherInterpreters/rb (0.00s)
=== RUN   TestNewDefaultInterpreters_PS1
=== RUN   TestNewDefaultInterpreters_PS1/pwsh_available
=== RUN   TestNewDefaultInterpreters_PS1/pwsh_not_available
--- PASS: TestNewDefaultInterpreters_PS1 (0.00s)
    --- PASS: TestNewDefaultInterpreters_PS1/pwsh_available (0.00s)
    --- PASS: TestNewDefaultInterpreters_PS1/pwsh_not_available (0.00s)
=== RUN   TestKeepassxcParseOutput
=== RUN   TestKeepassxcParseOutput/0
=== RUN   TestKeepassxcParseOutput/1
--- PASS: TestKeepassxcParseOutput (0.00s)
    --- PASS: TestKeepassxcParseOutput/0 (0.00s)
    --- PASS: TestKeepassxcParseOutput/1 (0.00s)
=== RUN   TestKeepassxcTemplateFuncs
    keepassxctemplatefuncs_test.go:75: keepassxc-cli not found in $PATH
--- SKIP: TestKeepassxcTemplateFuncs (0.00s)
=== RUN   TestLastpassParseNote
=== RUN   TestLastpassParseNote/0
=== RUN   TestLastpassParseNote/1
=== RUN   TestLastpassParseNote/2
--- PASS: TestLastpassParseNote (0.00s)
    --- PASS: TestLastpassParseNote/0 (0.00s)
    --- PASS: TestLastpassParseNote/1 (0.00s)
    --- PASS: TestLastpassParseNote/2 (0.00s)
=== RUN   TestManagedCmd
=== RUN   TestManagedCmd/simple
=== RUN   TestManagedCmd/nul_path_separator
=== RUN   TestManagedCmd/template
=== RUN   TestManagedCmd/create_template
=== RUN   TestManagedCmd/modify_template
=== RUN   TestManagedCmd/remove
=== RUN   TestManagedCmd/script_template
=== RUN   TestManagedCmd/symlink_template
=== RUN   TestManagedCmd/external_git_repo
--- PASS: TestManagedCmd (0.02s)
    --- PASS: TestManagedCmd/simple (0.00s)
    --- PASS: TestManagedCmd/nul_path_separator (0.00s)
    --- PASS: TestManagedCmd/template (0.01s)
    --- PASS: TestManagedCmd/create_template (0.00s)
    --- PASS: TestManagedCmd/modify_template (0.00s)
    --- PASS: TestManagedCmd/remove (0.00s)
    --- PASS: TestManagedCmd/script_template (0.00s)
    --- PASS: TestManagedCmd/symlink_template (0.00s)
    --- PASS: TestManagedCmd/external_git_repo (0.00s)
=== RUN   TestOnepasswordAccountMap
=== RUN   TestOnepasswordAccountMap/single_account_without_shorthand
=== RUN   TestOnepasswordAccountMap/single_account_with_shorthand
=== RUN   TestOnepasswordAccountMap/multiple_unambiguous_accounts
=== RUN   TestOnepasswordAccountMap/multiple_ambiguous_accounts
--- PASS: TestOnepasswordAccountMap (0.00s)
    --- PASS: TestOnepasswordAccountMap/single_account_without_shorthand (0.00s)
    --- PASS: TestOnepasswordAccountMap/single_account_with_shorthand (0.00s)
    --- PASS: TestOnepasswordAccountMap/multiple_unambiguous_accounts (0.00s)
    --- PASS: TestOnepasswordAccountMap/multiple_ambiguous_accounts (0.00s)
=== RUN   TestNewNodeFromPathsSlice
=== RUN   TestNewNodeFromPathsSlice/empty
=== RUN   TestNewNodeFromPathsSlice/root
=== RUN   TestNewNodeFromPathsSlice/simple
=== RUN   TestNewNodeFromPathsSlice/simple_nesting
=== RUN   TestNewNodeFromPathsSlice/multiple_simple_nesting
--- PASS: TestNewNodeFromPathsSlice (0.00s)
    --- PASS: TestNewNodeFromPathsSlice/empty (0.00s)
    --- PASS: TestNewNodeFromPathsSlice/root (0.00s)
    --- PASS: TestNewNodeFromPathsSlice/simple (0.00s)
    --- PASS: TestNewNodeFromPathsSlice/simple_nesting (0.00s)
    --- PASS: TestNewNodeFromPathsSlice/multiple_simple_nesting (0.00s)
=== RUN   TestIssue3891
    readdcmd_test.go:19: Windows only
--- SKIP: TestIssue3891 (0.00s)
=== RUN   TestMakeNightriderFrames
=== RUN   TestMakeNightriderFrames/0
=== RUN   TestMakeNightriderFrames/1
=== RUN   TestMakeNightriderFrames/2
=== RUN   TestMakeNightriderFrames/3
=== RUN   TestMakeNightriderFrames/4
=== RUN   TestMakeNightriderFrames/5
=== RUN   TestMakeNightriderFrames/6
--- PASS: TestMakeNightriderFrames (0.00s)
    --- PASS: TestMakeNightriderFrames/0 (0.00s)
    --- PASS: TestMakeNightriderFrames/1 (0.00s)
    --- PASS: TestMakeNightriderFrames/2 (0.00s)
    --- PASS: TestMakeNightriderFrames/3 (0.00s)
    --- PASS: TestMakeNightriderFrames/4 (0.00s)
    --- PASS: TestMakeNightriderFrames/5 (0.00s)
    --- PASS: TestMakeNightriderFrames/6 (0.00s)
=== RUN   TestShellQuote
--- PASS: TestShellQuote (0.00s)
=== RUN   TestShellQuoteCommand
--- PASS: TestShellQuoteCommand (0.00s)
=== RUN   TestStatusCmd
=== RUN   TestStatusCmd/add_file
=== RUN   TestStatusCmd/add_file/0
=== RUN   TestStatusCmd/add_file/1
=== RUN   TestStatusCmd/add_file/2
=== RUN   TestStatusCmd/update_symlink
=== RUN   TestStatusCmd/update_symlink/0
=== RUN   TestStatusCmd/path_style
--- PASS: TestStatusCmd (0.01s)
    --- PASS: TestStatusCmd/add_file (0.00s)
        --- PASS: TestStatusCmd/add_file/0 (0.00s)
        --- PASS: TestStatusCmd/add_file/1 (0.00s)
        --- PASS: TestStatusCmd/add_file/2 (0.00s)
    --- PASS: TestStatusCmd/update_symlink (0.00s)
        --- PASS: TestStatusCmd/update_symlink/0 (0.00s)
    --- PASS: TestStatusCmd/path_style (0.00s)
=== RUN   TestSymlinks
=== RUN   TestSymlinks/symlink_forward_slash_unix
=== RUN   TestSymlinks/symlink_forward_slash_unix/0
=== RUN   TestSymlinks/symlink_forward_slash_unix/1
=== RUN   TestSymlinks/symlink_forward_slash_windows
    symlinks_test.go:75: skipping Windows test on UNIX
=== RUN   TestSymlinks/symlink_backward_slash_windows
    symlinks_test.go:75: skipping Windows test on UNIX
=== RUN   TestSymlinks/symlink_mixed_slash_windows
    symlinks_test.go:75: skipping Windows test on UNIX
--- PASS: TestSymlinks (0.00s)
    --- PASS: TestSymlinks/symlink_forward_slash_unix (0.00s)
        --- PASS: TestSymlinks/symlink_forward_slash_unix/0 (0.00s)
        --- PASS: TestSymlinks/symlink_forward_slash_unix/1 (0.00s)
    --- SKIP: TestSymlinks/symlink_forward_slash_windows (0.00s)
    --- SKIP: TestSymlinks/symlink_backward_slash_windows (0.00s)
    --- SKIP: TestSymlinks/symlink_mixed_slash_windows (0.00s)
=== RUN   TestCommentTemplateFunc
=== RUN   TestCommentTemplateFunc/0
=== RUN   TestCommentTemplateFunc/1
=== RUN   TestCommentTemplateFunc/2
=== RUN   TestCommentTemplateFunc/3
=== RUN   TestCommentTemplateFunc/4
=== RUN   TestCommentTemplateFunc/5
=== RUN   TestCommentTemplateFunc/6
--- PASS: TestCommentTemplateFunc (0.00s)
    --- PASS: TestCommentTemplateFunc/0 (0.00s)
    --- PASS: TestCommentTemplateFunc/1 (0.00s)
    --- PASS: TestCommentTemplateFunc/2 (0.00s)
    --- PASS: TestCommentTemplateFunc/3 (0.00s)
    --- PASS: TestCommentTemplateFunc/4 (0.00s)
    --- PASS: TestCommentTemplateFunc/5 (0.00s)
    --- PASS: TestCommentTemplateFunc/6 (0.00s)
=== RUN   TestDeleteValueAtPathTemplateFunc
=== RUN   TestDeleteValueAtPathTemplateFunc/empty
=== RUN   TestDeleteValueAtPathTemplateFunc/outer
=== RUN   TestDeleteValueAtPathTemplateFunc/inner
=== RUN   TestDeleteValueAtPathTemplateFunc/missing
=== RUN   TestDeleteValueAtPathTemplateFunc/missing_inner
=== RUN   TestDeleteValueAtPathTemplateFunc/missing_depth2
=== RUN   TestDeleteValueAtPathTemplateFunc/not_an_inner_dict
--- PASS: TestDeleteValueAtPathTemplateFunc (0.00s)
    --- PASS: TestDeleteValueAtPathTemplateFunc/empty (0.00s)
    --- PASS: TestDeleteValueAtPathTemplateFunc/outer (0.00s)
    --- PASS: TestDeleteValueAtPathTemplateFunc/inner (0.00s)
    --- PASS: TestDeleteValueAtPathTemplateFunc/missing (0.00s)
    --- PASS: TestDeleteValueAtPathTemplateFunc/missing_inner (0.00s)
    --- PASS: TestDeleteValueAtPathTemplateFunc/missing_depth2 (0.00s)
    --- PASS: TestDeleteValueAtPathTemplateFunc/not_an_inner_dict (0.00s)
=== RUN   TestFromJson
=== RUN   TestFromJson/0
=== RUN   TestFromJson/1
=== RUN   TestFromJson/2
=== RUN   TestFromJson/3
=== RUN   TestFromJson/4
=== RUN   TestFromJson/5
--- PASS: TestFromJson (0.00s)
    --- PASS: TestFromJson/0 (0.00s)
    --- PASS: TestFromJson/1 (0.00s)
    --- PASS: TestFromJson/2 (0.00s)
    --- PASS: TestFromJson/3 (0.00s)
    --- PASS: TestFromJson/4 (0.00s)
    --- PASS: TestFromJson/5 (0.00s)
=== RUN   TestPruneEmptyDicts
=== RUN   TestPruneEmptyDicts/nil
=== RUN   TestPruneEmptyDicts/empty
=== RUN   TestPruneEmptyDicts/nested_empty
--- PASS: TestPruneEmptyDicts (0.00s)
    --- PASS: TestPruneEmptyDicts/nil (0.00s)
    --- PASS: TestPruneEmptyDicts/empty (0.00s)
    --- PASS: TestPruneEmptyDicts/nested_empty (0.00s)
=== RUN   TestQuoteTemplateFunc
=== RUN   TestQuoteTemplateFunc/empty
=== RUN   TestQuoteTemplateFunc/single
=== RUN   TestQuoteTemplateFunc/multiple
=== RUN   TestQuoteTemplateFunc/quotes
=== RUN   TestQuoteTemplateFunc/ints
=== RUN   TestQuoteTemplateFunc/string_pointer
=== RUN   TestQuoteTemplateFunc/byte_slice
=== RUN   TestQuoteTemplateFunc/escaped_chars
--- PASS: TestQuoteTemplateFunc (0.00s)
    --- PASS: TestQuoteTemplateFunc/empty (0.00s)
    --- PASS: TestQuoteTemplateFunc/single (0.00s)
    --- PASS: TestQuoteTemplateFunc/multiple (0.00s)
    --- PASS: TestQuoteTemplateFunc/quotes (0.00s)
    --- PASS: TestQuoteTemplateFunc/ints (0.00s)
    --- PASS: TestQuoteTemplateFunc/string_pointer (0.00s)
    --- PASS: TestQuoteTemplateFunc/byte_slice (0.00s)
    --- PASS: TestQuoteTemplateFunc/escaped_chars (0.00s)
=== RUN   TestSquoteTemplateFunc
=== RUN   TestSquoteTemplateFunc/empty
=== RUN   TestSquoteTemplateFunc/single
=== RUN   TestSquoteTemplateFunc/multiple
=== RUN   TestSquoteTemplateFunc/quotes
=== RUN   TestSquoteTemplateFunc/ints
=== RUN   TestSquoteTemplateFunc/string_pointer
=== RUN   TestSquoteTemplateFunc/byte_slice
=== RUN   TestSquoteTemplateFunc/escaped_chars
--- PASS: TestSquoteTemplateFunc (0.00s)
    --- PASS: TestSquoteTemplateFunc/empty (0.00s)
    --- PASS: TestSquoteTemplateFunc/single (0.00s)
    --- PASS: TestSquoteTemplateFunc/multiple (0.00s)
    --- PASS: TestSquoteTemplateFunc/quotes (0.00s)
    --- PASS: TestSquoteTemplateFunc/ints (0.00s)
    --- PASS: TestSquoteTemplateFunc/string_pointer (0.00s)
    --- PASS: TestSquoteTemplateFunc/byte_slice (0.00s)
    --- PASS: TestSquoteTemplateFunc/escaped_chars (0.00s)
=== RUN   TestSetValueAtPathTemplateFunc
=== RUN   TestSetValueAtPathTemplateFunc/simple
=== RUN   TestSetValueAtPathTemplateFunc/create_map
=== RUN   TestSetValueAtPathTemplateFunc/modify_map
=== RUN   TestSetValueAtPathTemplateFunc/create_nested_map
=== RUN   TestSetValueAtPathTemplateFunc/modify_nested_map
=== RUN   TestSetValueAtPathTemplateFunc/replace_map
=== RUN   TestSetValueAtPathTemplateFunc/replace_nested_map
=== RUN   TestSetValueAtPathTemplateFunc/replace_nested_value
=== RUN   TestSetValueAtPathTemplateFunc/string_list_path
=== RUN   TestSetValueAtPathTemplateFunc/any_list_path
=== RUN   TestSetValueAtPathTemplateFunc/invalid_path
=== RUN   TestSetValueAtPathTemplateFunc/invalid_path_element
--- PASS: TestSetValueAtPathTemplateFunc (0.00s)
    --- PASS: TestSetValueAtPathTemplateFunc/simple (0.00s)
    --- PASS: TestSetValueAtPathTemplateFunc/create_map (0.00s)
    --- PASS: TestSetValueAtPathTemplateFunc/modify_map (0.00s)
    --- PASS: TestSetValueAtPathTemplateFunc/create_nested_map (0.00s)
    --- PASS: TestSetValueAtPathTemplateFunc/modify_nested_map (0.00s)
    --- PASS: TestSetValueAtPathTemplateFunc/replace_map (0.00s)
    --- PASS: TestSetValueAtPathTemplateFunc/replace_nested_map (0.00s)
    --- PASS: TestSetValueAtPathTemplateFunc/replace_nested_value (0.00s)
    --- PASS: TestSetValueAtPathTemplateFunc/string_list_path (0.00s)
    --- PASS: TestSetValueAtPathTemplateFunc/any_list_path (0.00s)
    --- PASS: TestSetValueAtPathTemplateFunc/invalid_path (0.00s)
    --- PASS: TestSetValueAtPathTemplateFunc/invalid_path_element (0.00s)
=== RUN   TestFromIniTemplateFunc
=== RUN   TestFromIniTemplateFunc/0
=== RUN   TestFromIniTemplateFunc/1
=== RUN   TestFromIniTemplateFunc/2
--- PASS: TestFromIniTemplateFunc (0.00s)
    --- PASS: TestFromIniTemplateFunc/0 (0.00s)
    --- PASS: TestFromIniTemplateFunc/1 (0.00s)
    --- PASS: TestFromIniTemplateFunc/2 (0.00s)
=== RUN   TestKeysFromPath
=== RUN   TestKeysFromPath/string_key
=== RUN   TestKeysFromPath/string_period_separated_keys
=== RUN   TestKeysFromPath/string_period_separated_nested_keys
=== RUN   TestKeysFromPath/string_empty
=== RUN   TestKeysFromPath/string_period_separated_empty_key
=== RUN   TestKeysFromPath/string_slice_one_key
=== RUN   TestKeysFromPath/string_slice_two_keys
=== RUN   TestKeysFromPath/string_slice_multiple_keys
=== RUN   TestKeysFromPath/string_slice_empty
=== RUN   TestKeysFromPath/string_slice_empty_key
=== RUN   TestKeysFromPath/string_slice_empty_key_second
=== RUN   TestKeysFromPath/any_slice_nil
=== RUN   TestKeysFromPath/any_slice_empty
=== RUN   TestKeysFromPath/any_slice_one_key
=== RUN   TestKeysFromPath/any_slice_two_keys
=== RUN   TestKeysFromPath/any_slice_invalid_key
=== RUN   TestKeysFromPath/any_slice_empty_key
--- PASS: TestKeysFromPath (0.00s)
    --- PASS: TestKeysFromPath/string_key (0.00s)
    --- PASS: TestKeysFromPath/string_period_separated_keys (0.00s)
    --- PASS: TestKeysFromPath/string_period_separated_nested_keys (0.00s)
    --- PASS: TestKeysFromPath/string_empty (0.00s)
    --- PASS: TestKeysFromPath/string_period_separated_empty_key (0.00s)
    --- PASS: TestKeysFromPath/string_slice_one_key (0.00s)
    --- PASS: TestKeysFromPath/string_slice_two_keys (0.00s)
    --- PASS: TestKeysFromPath/string_slice_multiple_keys (0.00s)
    --- PASS: TestKeysFromPath/string_slice_empty (0.00s)
    --- PASS: TestKeysFromPath/string_slice_empty_key (0.00s)
    --- PASS: TestKeysFromPath/string_slice_empty_key_second (0.00s)
    --- PASS: TestKeysFromPath/any_slice_nil (0.00s)
    --- PASS: TestKeysFromPath/any_slice_empty (0.00s)
    --- PASS: TestKeysFromPath/any_slice_one_key (0.00s)
    --- PASS: TestKeysFromPath/any_slice_two_keys (0.00s)
    --- PASS: TestKeysFromPath/any_slice_invalid_key (0.00s)
    --- PASS: TestKeysFromPath/any_slice_empty_key (0.00s)
=== RUN   TestNestedMapAtPath
=== RUN   TestNestedMapAtPath/simple
=== RUN   TestNestedMapAtPath/nested_map
=== RUN   TestNestedMapAtPath/not_a_map
=== RUN   TestNestedMapAtPath/nested_not_a_map
=== RUN   TestNestedMapAtPath/empty_path
--- PASS: TestNestedMapAtPath (0.00s)
    --- PASS: TestNestedMapAtPath/simple (0.00s)
    --- PASS: TestNestedMapAtPath/nested_map (0.00s)
    --- PASS: TestNestedMapAtPath/not_a_map (0.00s)
    --- PASS: TestNestedMapAtPath/nested_not_a_map (0.00s)
    --- PASS: TestNestedMapAtPath/empty_path (0.00s)
=== RUN   TestToIniTemplateFunc
=== RUN   TestToIniTemplateFunc/0
=== RUN   TestToIniTemplateFunc/1
=== RUN   TestToIniTemplateFunc/2
=== RUN   TestToIniTemplateFunc/3
=== RUN   TestToIniTemplateFunc/4
=== RUN   TestToIniTemplateFunc/5
--- PASS: TestToIniTemplateFunc (0.00s)
    --- PASS: TestToIniTemplateFunc/0 (0.00s)
    --- PASS: TestToIniTemplateFunc/1 (0.00s)
    --- PASS: TestToIniTemplateFunc/2 (0.00s)
    --- PASS: TestToIniTemplateFunc/3 (0.00s)
    --- PASS: TestToIniTemplateFunc/4 (0.00s)
    --- PASS: TestToIniTemplateFunc/5 (0.00s)
=== RUN   TestNeedsQuote
=== RUN   TestNeedsQuote/0
=== RUN   TestNeedsQuote/1
=== RUN   TestNeedsQuote/2
=== RUN   TestNeedsQuote/3
=== RUN   TestNeedsQuote/4
=== RUN   TestNeedsQuote/5
--- PASS: TestNeedsQuote (0.00s)
    --- PASS: TestNeedsQuote/0 (0.00s)
    --- PASS: TestNeedsQuote/1 (0.00s)
    --- PASS: TestNeedsQuote/2 (0.00s)
    --- PASS: TestNeedsQuote/3 (0.00s)
    --- PASS: TestNeedsQuote/4 (0.00s)
    --- PASS: TestNeedsQuote/5 (0.00s)
=== RUN   TestQuoteListTemplateFunc
--- PASS: TestQuoteListTemplateFunc (0.00s)
=== RUN   TestGetRedirectedURLTemplateFunc
--- PASS: TestGetRedirectedURLTemplateFunc (0.00s)
=== RUN   TestUnmanagedCmd
=== RUN   TestUnmanagedCmd/simple
=== RUN   TestUnmanagedCmd/nul_path_separator
=== RUN   TestUnmanagedCmd/private_subdir
chezmoi: /home/user/.dir: open /tmp/go-vfs-vfst3324111223/home/user/.dir: permission denied
--- PASS: TestUnmanagedCmd (0.00s)
    --- PASS: TestUnmanagedCmd/simple (0.00s)
    --- PASS: TestUnmanagedCmd/nul_path_separator (0.00s)
    --- PASS: TestUnmanagedCmd/private_subdir (0.00s)
=== RUN   TestConfigGetPackageFilename
=== RUN   TestConfigGetPackageFilename/chezmoi_2.0.0_linux_amd64.apk
=== RUN   TestConfigGetPackageFilename/chezmoi_2.0.0_linux_i386.deb
=== RUN   TestConfigGetPackageFilename/chezmoi_2.0.0_linux_amd64.deb
=== RUN   TestConfigGetPackageFilename/chezmoi_2.0.0_linux_armhf.deb
=== RUN   TestConfigGetPackageFilename/chezmoi_2.0.0_linux_arm64.deb
=== RUN   TestConfigGetPackageFilename/chezmoi-2.0.0-i686.rpm
=== RUN   TestConfigGetPackageFilename/chezmoi-2.0.0-x86_64.rpm
=== RUN   TestConfigGetPackageFilename/chezmoi-2.0.0-armhfp.rpm
=== RUN   TestConfigGetPackageFilename/chezmoi-2.0.0-aarch64.rpm
=== RUN   TestConfigGetPackageFilename/chezmoi-2.0.0-ppc64.rpm
=== RUN   TestConfigGetPackageFilename/chezmoi-2.0.0-ppc64le.rpm
--- PASS: TestConfigGetPackageFilename (0.00s)
    --- PASS: TestConfigGetPackageFilename/chezmoi_2.0.0_linux_amd64.apk (0.00s)
    --- PASS: TestConfigGetPackageFilename/chezmoi_2.0.0_linux_i386.deb (0.00s)
    --- PASS: TestConfigGetPackageFilename/chezmoi_2.0.0_linux_amd64.deb (0.00s)
    --- PASS: TestConfigGetPackageFilename/chezmoi_2.0.0_linux_armhf.deb (0.00s)
    --- PASS: TestConfigGetPackageFilename/chezmoi_2.0.0_linux_arm64.deb (0.00s)
    --- PASS: TestConfigGetPackageFilename/chezmoi-2.0.0-i686.rpm (0.00s)
    --- PASS: TestConfigGetPackageFilename/chezmoi-2.0.0-x86_64.rpm (0.00s)
    --- PASS: TestConfigGetPackageFilename/chezmoi-2.0.0-armhfp.rpm (0.00s)
    --- PASS: TestConfigGetPackageFilename/chezmoi-2.0.0-aarch64.rpm (0.00s)
    --- PASS: TestConfigGetPackageFilename/chezmoi-2.0.0-ppc64.rpm (0.00s)
    --- PASS: TestConfigGetPackageFilename/chezmoi-2.0.0-ppc64le.rpm (0.00s)
=== RUN   TestCamelCaseToUpperSnakeCase
=== RUN   TestCamelCaseToUpperSnakeCase/#00
=== RUN   TestCamelCaseToUpperSnakeCase/camel
=== RUN   TestCamelCaseToUpperSnakeCase/camelCase
=== RUN   TestCamelCaseToUpperSnakeCase/bugReportURL
--- PASS: TestCamelCaseToUpperSnakeCase (0.00s)
    --- PASS: TestCamelCaseToUpperSnakeCase/#00 (0.00s)
    --- PASS: TestCamelCaseToUpperSnakeCase/camel (0.00s)
    --- PASS: TestCamelCaseToUpperSnakeCase/camelCase (0.00s)
    --- PASS: TestCamelCaseToUpperSnakeCase/bugReportURL (0.00s)
=== RUN   TestEnglishList
--- PASS: TestEnglishList (0.00s)
=== RUN   TestEnglishListWithNoun
--- PASS: TestEnglishListWithNoun (0.00s)
=== RUN   TestUpperSnakeCaseToCamelCaseMap
--- PASS: TestUpperSnakeCaseToCamelCaseMap (0.00s)
=== RUN   TestVerifyCmd
=== RUN   TestVerifyCmd/empty
=== RUN   TestVerifyCmd/file
--- PASS: TestVerifyCmd (0.00s)
    --- PASS: TestVerifyCmd/empty (0.00s)
    --- PASS: TestVerifyCmd/file (0.00s)
=== RUN   TestScript
=== RUN   TestScript/add
=== PAUSE TestScript/add
=== RUN   TestScript/addattributes
=== PAUSE TestScript/addattributes
=== RUN   TestScript/addautotemplate
=== PAUSE TestScript/addautotemplate
=== RUN   TestScript/addencrypted
=== PAUSE TestScript/addencrypted
=== RUN   TestScript/addnew
=== PAUSE TestScript/addnew
=== RUN   TestScript/addsecrets
=== PAUSE TestScript/addsecrets
=== RUN   TestScript/age
=== PAUSE TestScript/age
=== RUN   TestScript/ageencryption
=== PAUSE TestScript/ageencryption
=== RUN   TestScript/ageencryptionsymmetric
=== PAUSE TestScript/ageencryptionsymmetric
=== RUN   TestScript/agekeygen
=== PAUSE TestScript/agekeygen
=== RUN   TestScript/apply
=== PAUSE TestScript/apply
=== RUN   TestScript/applychmod_unix
=== PAUSE TestScript/applychmod_unix
=== RUN   TestScript/applyexact
=== PAUSE TestScript/applyexact
=== RUN   TestScript/applyremove
=== PAUSE TestScript/applyremove
=== RUN   TestScript/applyskipencrypted
=== PAUSE TestScript/applyskipencrypted
=== RUN   TestScript/applysourcepath
=== PAUSE TestScript/applysourcepath
=== RUN   TestScript/applystate
=== PAUSE TestScript/applystate
=== RUN   TestScript/applytype
=== PAUSE TestScript/applytype
=== RUN   TestScript/applyverbose
=== PAUSE TestScript/applyverbose
=== RUN   TestScript/archivetar
=== PAUSE TestScript/archivetar
=== RUN   TestScript/archivezip
=== PAUSE TestScript/archivezip
=== RUN   TestScript/autocommit
=== PAUSE TestScript/autocommit
=== RUN   TestScript/autopush
=== PAUSE TestScript/autopush
=== RUN   TestScript/bitwarden
=== PAUSE TestScript/bitwarden
=== RUN   TestScript/bitwardenunlock
=== PAUSE TestScript/bitwardenunlock
=== RUN   TestScript/builtinage
=== PAUSE TestScript/builtinage
=== RUN   TestScript/builtingit
=== PAUSE TestScript/builtingit
=== RUN   TestScript/cat
=== PAUSE TestScript/cat
=== RUN   TestScript/catconfig
=== PAUSE TestScript/catconfig
=== RUN   TestScript/cd_unix
=== PAUSE TestScript/cd_unix
=== RUN   TestScript/cd_windows
=== PAUSE TestScript/cd_windows
=== RUN   TestScript/chattr
=== PAUSE TestScript/chattr
=== RUN   TestScript/chattrencrypted
=== PAUSE TestScript/chattrencrypted
=== RUN   TestScript/completion
=== PAUSE TestScript/completion
=== RUN   TestScript/completion_unix
=== PAUSE TestScript/completion_unix
=== RUN   TestScript/config
=== PAUSE TestScript/config
=== RUN   TestScript/configstate
=== PAUSE TestScript/configstate
=== RUN   TestScript/create
=== PAUSE TestScript/create
=== RUN   TestScript/dashlane
=== PAUSE TestScript/dashlane
=== RUN   TestScript/data
=== PAUSE TestScript/data
=== RUN   TestScript/debug
=== PAUSE TestScript/debug
=== RUN   TestScript/destroy
=== PAUSE TestScript/destroy
=== RUN   TestScript/diff
=== PAUSE TestScript/diff
=== RUN   TestScript/diffcommand_unix
=== PAUSE TestScript/diffcommand_unix
=== RUN   TestScript/diffcommand_windows
=== PAUSE TestScript/diffcommand_windows
=== RUN   TestScript/discussion4732
=== PAUSE TestScript/discussion4732
=== RUN   TestScript/doctor_unix
=== PAUSE TestScript/doctor_unix
=== RUN   TestScript/doctor_windows
=== PAUSE TestScript/doctor_windows
=== RUN   TestScript/doppler
=== PAUSE TestScript/doppler
=== RUN   TestScript/dumpconfig
=== PAUSE TestScript/dumpconfig
=== RUN   TestScript/dumpjson
=== PAUSE TestScript/dumpjson
=== RUN   TestScript/dumpyaml
=== PAUSE TestScript/dumpyaml
=== RUN   TestScript/edgecases
=== PAUSE TestScript/edgecases
=== RUN   TestScript/edgecasesumask
=== PAUSE TestScript/edgecasesumask
=== RUN   TestScript/edit
=== PAUSE TestScript/edit
=== RUN   TestScript/editconfig
=== PAUSE TestScript/editconfig
=== RUN   TestScript/editconfigtemplate
=== PAUSE TestScript/editconfigtemplate
=== RUN   TestScript/editencrypted
=== PAUSE TestScript/editencrypted
=== RUN   TestScript/edithardlink
=== PAUSE TestScript/edithardlink
=== RUN   TestScript/ejson
=== PAUSE TestScript/ejson
=== RUN   TestScript/encryptiontemplatefuncs
=== PAUSE TestScript/encryptiontemplatefuncs
=== RUN   TestScript/errors
=== PAUSE TestScript/errors
=== RUN   TestScript/exclude
=== PAUSE TestScript/exclude
=== RUN   TestScript/exectemplatefunc
=== PAUSE TestScript/exectemplatefunc
=== RUN   TestScript/executetemplate
=== PAUSE TestScript/executetemplate
=== RUN   TestScript/external
=== PAUSE TestScript/external
=== RUN   TestScript/externalarchiveinclude
=== PAUSE TestScript/externalarchiveinclude
=== RUN   TestScript/externalcompression
=== PAUSE TestScript/externalcompression
=== RUN   TestScript/externaldiff
=== PAUSE TestScript/externaldiff
=== RUN   TestScript/externaldir
=== PAUSE TestScript/externaldir
=== RUN   TestScript/externalencrypted
=== PAUSE TestScript/externalencrypted
=== RUN   TestScript/externalfileurl
=== PAUSE TestScript/externalfileurl
=== RUN   TestScript/externalfilter
=== PAUSE TestScript/externalfilter
=== RUN   TestScript/externalgitrepo
=== PAUSE TestScript/externalgitrepo
=== RUN   TestScript/externalguess
=== PAUSE TestScript/externalguess
=== RUN   TestScript/externalrar
=== PAUSE TestScript/externalrar
=== RUN   TestScript/externalzip
=== PAUSE TestScript/externalzip
=== RUN   TestScript/forget
=== PAUSE TestScript/forget
=== RUN   TestScript/generate
=== PAUSE TestScript/generate
=== RUN   TestScript/git
=== PAUSE TestScript/git
=== RUN   TestScript/githubtemplatefuncs
=== PAUSE TestScript/githubtemplatefuncs
=== RUN   TestScript/gitleaks
=== PAUSE TestScript/gitleaks
=== RUN   TestScript/gopass
=== PAUSE TestScript/gopass
=== RUN   TestScript/gpg
=== PAUSE TestScript/gpg
=== RUN   TestScript/gpgencryption
=== PAUSE TestScript/gpgencryption
=== RUN   TestScript/gpgencryptionsymmetric
=== PAUSE TestScript/gpgencryptionsymmetric
=== RUN   TestScript/help
=== PAUSE TestScript/help
=== RUN   TestScript/hooks
=== PAUSE TestScript/hooks
=== RUN   TestScript/hooks_windows
=== PAUSE TestScript/hooks_windows
=== RUN   TestScript/ignore
=== PAUSE TestScript/ignore
=== RUN   TestScript/ignored
=== PAUSE TestScript/ignored
=== RUN   TestScript/import
=== PAUSE TestScript/import
=== RUN   TestScript/importtarzst
=== PAUSE TestScript/importtarzst
=== RUN   TestScript/importxz
=== PAUSE TestScript/importxz
=== RUN   TestScript/importzip
=== PAUSE TestScript/importzip
=== RUN   TestScript/init
=== PAUSE TestScript/init
=== RUN   TestScript/initconfig
=== PAUSE TestScript/initconfig
=== RUN   TestScript/initgitlfs
=== PAUSE TestScript/initgitlfs
=== RUN   TestScript/inittemplatefuncs
=== PAUSE TestScript/inittemplatefuncs
=== RUN   TestScript/issue1161
=== PAUSE TestScript/issue1161
=== RUN   TestScript/issue1213
=== PAUSE TestScript/issue1213
=== RUN   TestScript/issue1237
=== PAUSE TestScript/issue1237
=== RUN   TestScript/issue1365
=== PAUSE TestScript/issue1365
=== RUN   TestScript/issue1666
=== PAUSE TestScript/issue1666
=== RUN   TestScript/issue1794
=== PAUSE TestScript/issue1794
=== RUN   TestScript/issue1832
=== PAUSE TestScript/issue1832
=== RUN   TestScript/issue1866
=== PAUSE TestScript/issue1866
=== RUN   TestScript/issue1869
=== PAUSE TestScript/issue1869
=== RUN   TestScript/issue2016
=== PAUSE TestScript/issue2016
=== RUN   TestScript/issue2092
=== PAUSE TestScript/issue2092
=== RUN   TestScript/issue2132
=== PAUSE TestScript/issue2132
=== RUN   TestScript/issue2137
=== PAUSE TestScript/issue2137
=== RUN   TestScript/issue2177
=== PAUSE TestScript/issue2177
=== RUN   TestScript/issue2283
=== PAUSE TestScript/issue2283
=== RUN   TestScript/issue2300
=== PAUSE TestScript/issue2300
=== RUN   TestScript/issue2302
=== PAUSE TestScript/issue2302
=== RUN   TestScript/issue2315
=== PAUSE TestScript/issue2315
=== RUN   TestScript/issue2354
=== PAUSE TestScript/issue2354
=== RUN   TestScript/issue2380
=== PAUSE TestScript/issue2380
=== RUN   TestScript/issue2427
=== PAUSE TestScript/issue2427
=== RUN   TestScript/issue2500
=== PAUSE TestScript/issue2500
=== RUN   TestScript/issue2510
=== PAUSE TestScript/issue2510
=== RUN   TestScript/issue2573
=== PAUSE TestScript/issue2573
=== RUN   TestScript/issue2577
=== PAUSE TestScript/issue2577
=== RUN   TestScript/issue2597
=== PAUSE TestScript/issue2597
=== RUN   TestScript/issue2599
=== PAUSE TestScript/issue2599
=== RUN   TestScript/issue2609
=== PAUSE TestScript/issue2609
=== RUN   TestScript/issue2628
=== PAUSE TestScript/issue2628
=== RUN   TestScript/issue2695
=== PAUSE TestScript/issue2695
=== RUN   TestScript/issue2752
=== PAUSE TestScript/issue2752
=== RUN   TestScript/issue2820
=== PAUSE TestScript/issue2820
=== RUN   TestScript/issue2858
=== PAUSE TestScript/issue2858
=== RUN   TestScript/issue2861
=== PAUSE TestScript/issue2861
=== RUN   TestScript/issue2865
=== PAUSE TestScript/issue2865
=== RUN   TestScript/issue2934
=== PAUSE TestScript/issue2934
=== RUN   TestScript/issue2937
=== PAUSE TestScript/issue2937
=== RUN   TestScript/issue2942
=== PAUSE TestScript/issue2942
=== RUN   TestScript/issue2954
=== PAUSE TestScript/issue2954
=== RUN   TestScript/issue2964
=== PAUSE TestScript/issue2964
=== RUN   TestScript/issue2977
=== PAUSE TestScript/issue2977
=== RUN   TestScript/issue2995
=== PAUSE TestScript/issue2995
=== RUN   TestScript/issue3005
=== PAUSE TestScript/issue3005
=== RUN   TestScript/issue3008
=== PAUSE TestScript/issue3008
=== RUN   TestScript/issue3051
=== PAUSE TestScript/issue3051
=== RUN   TestScript/issue3064
=== PAUSE TestScript/issue3064
=== RUN   TestScript/issue3113
=== PAUSE TestScript/issue3113
=== RUN   TestScript/issue3126
=== PAUSE TestScript/issue3126
=== RUN   TestScript/issue3127
=== PAUSE TestScript/issue3127
=== RUN   TestScript/issue3163
=== PAUSE TestScript/issue3163
=== RUN   TestScript/issue3206
=== PAUSE TestScript/issue3206
=== RUN   TestScript/issue3232
=== PAUSE TestScript/issue3232
=== RUN   TestScript/issue3240
=== PAUSE TestScript/issue3240
=== RUN   TestScript/issue3257
=== PAUSE TestScript/issue3257
=== RUN   TestScript/issue3268
=== PAUSE TestScript/issue3268
=== RUN   TestScript/issue3325
=== PAUSE TestScript/issue3325
=== RUN   TestScript/issue3344
=== PAUSE TestScript/issue3344
=== RUN   TestScript/issue3349
=== PAUSE TestScript/issue3349
=== RUN   TestScript/issue3371
=== PAUSE TestScript/issue3371
=== RUN   TestScript/issue3374
=== PAUSE TestScript/issue3374
=== RUN   TestScript/issue3414
=== PAUSE TestScript/issue3414
=== RUN   TestScript/issue3415
=== PAUSE TestScript/issue3415
=== RUN   TestScript/issue3418
=== PAUSE TestScript/issue3418
=== RUN   TestScript/issue3421
=== PAUSE TestScript/issue3421
=== RUN   TestScript/issue3510
=== PAUSE TestScript/issue3510
=== RUN   TestScript/issue3525
=== PAUSE TestScript/issue3525
=== RUN   TestScript/issue3582
=== PAUSE TestScript/issue3582
=== RUN   TestScript/issue3590
=== PAUSE TestScript/issue3590
=== RUN   TestScript/issue3602
=== PAUSE TestScript/issue3602
=== RUN   TestScript/issue3630
=== PAUSE TestScript/issue3630
=== RUN   TestScript/issue3652
=== PAUSE TestScript/issue3652
=== RUN   TestScript/issue3666
=== PAUSE TestScript/issue3666
=== RUN   TestScript/issue3693
=== PAUSE TestScript/issue3693
=== RUN   TestScript/issue3703
=== PAUSE TestScript/issue3703
=== RUN   TestScript/issue3744
=== PAUSE TestScript/issue3744
=== RUN   TestScript/issue3772
=== PAUSE TestScript/issue3772
=== RUN   TestScript/issue3887
=== PAUSE TestScript/issue3887
=== RUN   TestScript/issue3891
=== PAUSE TestScript/issue3891
=== RUN   TestScript/issue3987
=== PAUSE TestScript/issue3987
=== RUN   TestScript/issue4002
=== PAUSE TestScript/issue4002
=== RUN   TestScript/issue4012
=== PAUSE TestScript/issue4012
=== RUN   TestScript/issue4024
=== PAUSE TestScript/issue4024
=== RUN   TestScript/issue4027
=== PAUSE TestScript/issue4027
=== RUN   TestScript/issue4104
=== PAUSE TestScript/issue4104
=== RUN   TestScript/issue4181
=== PAUSE TestScript/issue4181
=== RUN   TestScript/issue4315
=== PAUSE TestScript/issue4315
=== RUN   TestScript/issue4454
=== PAUSE TestScript/issue4454
=== RUN   TestScript/issue4479
=== PAUSE TestScript/issue4479
=== RUN   TestScript/issue4496
=== PAUSE TestScript/issue4496
=== RUN   TestScript/issue4500
=== PAUSE TestScript/issue4500
=== RUN   TestScript/issue4634
=== PAUSE TestScript/issue4634
=== RUN   TestScript/issue4647
=== PAUSE TestScript/issue4647
=== RUN   TestScript/issue4656
=== PAUSE TestScript/issue4656
=== RUN   TestScript/issue4662
=== PAUSE TestScript/issue4662
=== RUN   TestScript/issue4703
=== PAUSE TestScript/issue4703
=== RUN   TestScript/issue4727
=== PAUSE TestScript/issue4727
=== RUN   TestScript/issue4743
=== PAUSE TestScript/issue4743
=== RUN   TestScript/issue4745
=== PAUSE TestScript/issue4745
=== RUN   TestScript/issue4787
=== PAUSE TestScript/issue4787
=== RUN   TestScript/issue4796
=== PAUSE TestScript/issue4796
=== RUN   TestScript/issue4816
=== PAUSE TestScript/issue4816
=== RUN   TestScript/issue4824
=== PAUSE TestScript/issue4824
=== RUN   TestScript/issue4827
=== PAUSE TestScript/issue4827
=== RUN   TestScript/issue4845
=== PAUSE TestScript/issue4845
=== RUN   TestScript/issue4927
=== PAUSE TestScript/issue4927
=== RUN   TestScript/issue4976
=== PAUSE TestScript/issue4976
=== RUN   TestScript/issue5061
=== PAUSE TestScript/issue5061
=== RUN   TestScript/issue5095
=== PAUSE TestScript/issue5095
=== RUN   TestScript/issue796
=== PAUSE TestScript/issue796
=== RUN   TestScript/keepassxc
=== PAUSE TestScript/keepassxc
=== RUN   TestScript/keeper
=== PAUSE TestScript/keeper
=== RUN   TestScript/keepgoing
=== PAUSE TestScript/keepgoing
=== RUN   TestScript/lastpass
=== PAUSE TestScript/lastpass
=== RUN   TestScript/license
=== PAUSE TestScript/license
=== RUN   TestScript/literal
=== PAUSE TestScript/literal
=== RUN   TestScript/mackupbrew_darwin
=== PAUSE TestScript/mackupbrew_darwin
=== RUN   TestScript/mackupmacports_darwin
=== PAUSE TestScript/mackupmacports_darwin
=== RUN   TestScript/mackuppip_darwin
=== PAUSE TestScript/mackuppip_darwin
=== RUN   TestScript/mackuppipx_darwin
=== PAUSE TestScript/mackuppipx_darwin
=== RUN   TestScript/managed
=== PAUSE TestScript/managed
=== RUN   TestScript/managedtree
=== PAUSE TestScript/managedtree
=== RUN   TestScript/merge_unix
=== PAUSE TestScript/merge_unix
=== RUN   TestScript/mergeall_unix
=== PAUSE TestScript/mergeall_unix
=== RUN   TestScript/mergeencryptedage_unix
=== PAUSE TestScript/mergeencryptedage_unix
=== RUN   TestScript/mergeencryptedgpg_unix
=== PAUSE TestScript/mergeencryptedgpg_unix
=== RUN   TestScript/modesymlink
=== PAUSE TestScript/modesymlink
=== RUN   TestScript/modify_unix
=== PAUSE TestScript/modify_unix
=== RUN   TestScript/modify_windows
=== PAUSE TestScript/modify_windows
=== RUN   TestScript/modifyencrypted
=== PAUSE TestScript/modifyencrypted
=== RUN   TestScript/modifypython_windows
=== PAUSE TestScript/modifypython_windows
=== RUN   TestScript/noencryption
=== PAUSE TestScript/noencryption
=== RUN   TestScript/nosourcedir
=== PAUSE TestScript/nosourcedir
=== RUN   TestScript/onepassword2
=== PAUSE TestScript/onepassword2
=== RUN   TestScript/onepassword2connect
=== PAUSE TestScript/onepassword2connect
=== RUN   TestScript/onepassword2service
=== PAUSE TestScript/onepassword2service
=== RUN   TestScript/options
=== PAUSE TestScript/options
=== RUN   TestScript/pager
=== PAUSE TestScript/pager
=== RUN   TestScript/pass
=== PAUSE TestScript/pass
=== RUN   TestScript/passhole
=== PAUSE TestScript/passhole
=== RUN   TestScript/plugin
=== PAUSE TestScript/plugin
=== RUN   TestScript/protonpass
=== PAUSE TestScript/protonpass
=== RUN   TestScript/purge
=== PAUSE TestScript/purge
=== RUN   TestScript/rbw
=== PAUSE TestScript/rbw
=== RUN   TestScript/re-add
=== PAUSE TestScript/re-add
=== RUN   TestScript/readd-exact
=== PAUSE TestScript/readd-exact
=== RUN   TestScript/readdreencrypt
=== PAUSE TestScript/readdreencrypt
=== RUN   TestScript/remove
=== PAUSE TestScript/remove
=== RUN   TestScript/removedir
=== PAUSE TestScript/removedir
=== RUN   TestScript/root
=== PAUSE TestScript/root
=== RUN   TestScript/runscriptdir_unix
=== PAUSE TestScript/runscriptdir_unix
=== RUN   TestScript/script
=== PAUSE TestScript/script
=== RUN   TestScript/script_unix
=== PAUSE TestScript/script_unix
=== RUN   TestScript/script_windows
=== PAUSE TestScript/script_windows
=== RUN   TestScript/scriptenv
=== PAUSE TestScript/scriptenv
=== RUN   TestScript/scriptinterpreters_unix_pwsh
=== PAUSE TestScript/scriptinterpreters_unix_pwsh
=== RUN   TestScript/scriptinterpreters_windows
=== PAUSE TestScript/scriptinterpreters_windows
=== RUN   TestScript/scriptinterpreterstemplate
=== PAUSE TestScript/scriptinterpreterstemplate
=== RUN   TestScript/scriptonce_unix
=== PAUSE TestScript/scriptonce_unix
=== RUN   TestScript/scriptonce_windows
=== PAUSE TestScript/scriptonce_windows
=== RUN   TestScript/scriptonchange_unix
=== PAUSE TestScript/scriptonchange_unix
=== RUN   TestScript/scriptorder_unix
=== PAUSE TestScript/scriptorder_unix
=== RUN   TestScript/scriptorder_windows
=== PAUSE TestScript/scriptorder_windows
=== RUN   TestScript/scriptperl
=== PAUSE TestScript/scriptperl
=== RUN   TestScript/scriptpython
=== PAUSE TestScript/scriptpython
=== RUN   TestScript/scriptruby
=== PAUSE TestScript/scriptruby
=== RUN   TestScript/scriptsdir_unix
=== PAUSE TestScript/scriptsdir_unix
=== RUN   TestScript/scriptsubdir_unix
=== PAUSE TestScript/scriptsubdir_unix
=== RUN   TestScript/scriptsubdir_windows
=== PAUSE TestScript/scriptsubdir_windows
=== RUN   TestScript/scripttempdir
=== PAUSE TestScript/scripttempdir
=== RUN   TestScript/secret
=== PAUSE TestScript/secret
=== RUN   TestScript/sourcedir
=== PAUSE TestScript/sourcedir
=== RUN   TestScript/sourcepath
=== PAUSE TestScript/sourcepath
=== RUN   TestScript/state
=== PAUSE TestScript/state
=== RUN   TestScript/state_unix
=== PAUSE TestScript/state_unix
=== RUN   TestScript/state_windows
=== PAUSE TestScript/state_windows
=== RUN   TestScript/status
=== PAUSE TestScript/status
=== RUN   TestScript/symlinks
=== PAUSE TestScript/symlinks
=== RUN   TestScript/symlinks_windows
=== PAUSE TestScript/symlinks_windows
=== RUN   TestScript/targetpath
=== PAUSE TestScript/targetpath
=== RUN   TestScript/templatedata
=== PAUSE TestScript/templatedata
=== RUN   TestScript/templatedirectives
=== PAUSE TestScript/templatedirectives
=== RUN   TestScript/templatefuncs
=== PAUSE TestScript/templatefuncs
=== RUN   TestScript/templatevars
=== PAUSE TestScript/templatevars
=== RUN   TestScript/textconv
=== PAUSE TestScript/textconv
=== RUN   TestScript/tilde
=== PAUSE TestScript/tilde
=== RUN   TestScript/transparentencryption
=== PAUSE TestScript/transparentencryption
=== RUN   TestScript/umask_unix
=== PAUSE TestScript/umask_unix
=== RUN   TestScript/unmanaged
=== PAUSE TestScript/unmanaged
=== RUN   TestScript/unmanagedtree
=== PAUSE TestScript/unmanagedtree
=== RUN   TestScript/update
=== PAUSE TestScript/update
=== RUN   TestScript/upgrade
=== PAUSE TestScript/upgrade
=== RUN   TestScript/vault
=== PAUSE TestScript/vault
=== RUN   TestScript/verify
=== PAUSE TestScript/verify
=== RUN   TestScript/version
=== PAUSE TestScript/version
=== RUN   TestScript/workingtree
=== PAUSE TestScript/workingtree
=== CONT  TestScript/scriptinterpreters_unix_pwsh
=== CONT  TestScript/add
=== CONT  TestScript/issue3008
=== CONT  TestScript/workingtree
=== CONT  TestScript/scriptenv
=== CONT  TestScript/unmanaged
=== CONT  TestScript/umask_unix
=== CONT  TestScript/externalfileurl
=== CONT  TestScript/config
=== CONT  TestScript/issue3005
=== CONT  TestScript/edgecasesumask
=== CONT  TestScript/applyskipencrypted
gpg: Warning: using insecure memory!
gpg: keybox '/tmp/test-gpg-homedir1861137954/pubring.kbx' created
=== CONT  TestScript/version
=== CONT  TestScript/builtinage
=== CONT  TestScript/vault
=== CONT  TestScript/upgrade
=== CONT  TestScript/update
=== CONT  TestScript/verify
=== CONT  TestScript/unmanagedtree
=== CONT  TestScript/completion_unix
=== CONT  TestScript/chattrencrypted
=== CONT  TestScript/chattr
=== CONT  TestScript/completion
=== NAME  TestScript/scriptinterpreters_unix_pwsh
    cmd.go:380: pwsh not found in $PATH
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] skip 'Unix only'
        > [!exec:pwsh] skip 'pwsh not found in $PATH'
        
=== CONT  TestScript/cd_windows
    cmd.go:380: Windows only
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [unix] skip 'Windows only'
        
=== CONT  TestScript/cd_unix
=== NAME  TestScript/builtinage
    cmd.go:380: age not found in $PATH
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [!exec:age] skip 'age not found in $PATH'
        
=== CONT  TestScript/catconfig
=== CONT  TestScript/cat
=== NAME  TestScript/chattrencrypted
    cmd.go:380: age not found in $PATH
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [!exec:age] skip 'age not found in $PATH'
        
=== NAME  TestScript/issue3005
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi --debug init does not fail (0.040s)
        > exec chezmoi --debug init
        [stderr]
        time=2026-07-20T20:42:28.409Z level=INFO msg=persistentPreRunRootE version.version=v2.0.0+test version.commit=HEAD version.date=2026-07-20T20:42:28Z version.builtBy=testscript args="[chezmoi --debug init]" goVersion=go1.26.5-X:nodwarf5
        time=2026-07-20T20:42:28.409Z level=ERROR msg=Stat component=system err="stat $WORK/home/user/.config/chezmoi/chezmoistate.boltdb: no such file or directory" name=$WORK/home/user/.config/chezmoi/chezmoistate.boltdb
        time=2026-07-20T20:42:28.409Z level=ERROR msg=Mkdir component=system err="mkdir $WORK/home/user/.local/share/chezmoi: no such file or directory" name=$WORK/home/user/.local/share/chezmoi perm=511
        time=2026-07-20T20:42:28.409Z level=ERROR msg=Mkdir component=system err="mkdir $WORK/home/user/.local/share: no such file or directory" name=$WORK/home/user/.local/share perm=511
        time=2026-07-20T20:42:28.409Z level=ERROR msg=Mkdir component=system err="mkdir $WORK/home/user/.local: no such file or directory" name=$WORK/home/user/.local perm=511
        time=2026-07-20T20:42:28.409Z level=ERROR msg=Mkdir component=system err="mkdir $WORK/home/user: no such file or directory" name=$WORK/home/user perm=511
        time=2026-07-20T20:42:28.409Z level=INFO msg=Mkdir component=system name=$WORK/home perm=511
        time=2026-07-20T20:42:28.409Z level=INFO msg=Mkdir component=system name=$WORK/home/user perm=511
        time=2026-07-20T20:42:28.409Z level=INFO msg=Mkdir component=system name=$WORK/home/user/.local perm=511
        time=2026-07-20T20:42:28.409Z level=INFO msg=Mkdir component=system name=$WORK/home/user/.local/share perm=511
        time=2026-07-20T20:42:28.409Z level=INFO msg=Mkdir component=system name=$WORK/home/user/.local/share/chezmoi perm=511
        time=2026-07-20T20:42:28.409Z level=ERROR msg=Stat component=system err="stat $WORK/home/user/.local/share/chezmoi/.git: no such file or directory" name=$WORK/home/user/.local/share/chezmoi/.git
        time=2026-07-20T20:42:28.409Z level=ERROR msg=Stat component=system err="stat $WORK/home/user/.local/share/.git: no such file or directory" name=$WORK/home/user/.local/share/.git
        time=2026-07-20T20:42:28.409Z level=ERROR msg=Stat component=system err="stat $WORK/home/user/.local/.git: no such file or directory" name=$WORK/home/user/.local/.git
        time=2026-07-20T20:42:28.409Z level=ERROR msg=Mkdir component=system err="mkdir $WORK/home/user/.local/share/chezmoi: file exists" name=$WORK/home/user/.local/share/chezmoi perm=511
        time=2026-07-20T20:42:28.409Z level=INFO msg=Stat component=system name=$WORK/home/user/.local/share/chezmoi
        time=2026-07-20T20:42:28.410Z level=ERROR msg=ReadFile component=system err="open $WORK/home/user/.local/share/chezmoi/.chezmoiroot: no such file or directory" name=$WORK/home/user/.local/share/chezmoi/.chezmoiroot size=0 data=""
        time=2026-07-20T20:42:28.410Z level=ERROR msg=Stat component=system err="stat $WORK/home/user/.local/share/chezmoi/.git: no such file or directory" name=$WORK/home/user/.local/share/chezmoi/.git
        time=2026-07-20T20:42:28.418Z level=INFO msg=Run cmd="/usr/bin/git init --quiet" duration=7.633996ms err=<nil>
        time=2026-07-20T20:42:28.418Z level=ERROR msg=ReadFile component=system err="open $WORK/home/user/.local/share/chezmoi/.chezmoiversion: no such file or directory" name=$WORK/home/user/.local/share/chezmoi/.chezmoiversion size=0 data=""
        time=2026-07-20T20:42:28.418Z level=ERROR msg=ReadFile component=system err="open $WORK/home/user/.local/share/chezmoi/.chezmoiroot: no such file or directory" name=$WORK/home/user/.local/share/chezmoi/.chezmoiroot size=0 data=""
        time=2026-07-20T20:42:28.418Z level=INFO msg=ReadDir component=system name=$WORK/home/user/.local/share/chezmoi
        time=2026-07-20T20:42:28.418Z level=INFO msg=Delete component=persistentState bucket=configState key=configState
        time=2026-07-20T20:42:28.418Z level=INFO msg=Close component=persistentState
        PASS
        
=== CONT  TestScript/builtingit
=== CONT  TestScript/issue1866
=== NAME  TestScript/upgrade
    cmd.go:380: $CHEZMOI_GITHUB_TOKEN not set
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [!env:CHEZMOI_GITHUB_TOKEN] skip '$CHEZMOI_GITHUB_TOKEN not set'
        
=== CONT  TestScript/issue2995
=== NAME  TestScript/version
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > exec chezmoi --version
        [stdout]
        chezmoi version v2.0.0+test, commit HEAD, built at 2026-07-20T20:42:28Z, built by testscript
        > stdout 'chezmoi version v2\.0\.0'
        PASS
        
=== CONT  TestScript/issue2977
=== NAME  TestScript/issue3008
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi apply does not get confused by multiple files in .chezmoidata (0.087s)
        > exec chezmoi apply
        PASS
        
=== CONT  TestScript/issue2964
=== NAME  TestScript/unmanagedtree
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi unmanaged --tree produces tree-like output (0.029s)
        > exec chezmoi unmanaged --tree
        [stdout]
        .dir
          file
          subdir
        .local
        > cmp stdout golden/stdout
        PASS
        
=== CONT  TestScript/issue2954
=== NAME  TestScript/issue2995
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi apply only creates empty files if they have the empty_ attribute (0.028s)
        > exec chezmoi apply
        > ! exists $HOME/new.txt
        > exists $HOME/create-new.txt
        > cmp $HOME/existing.txt golden/existing.txt
        > cmp $HOME/existing-empty.txt golden/existing-empty.txt
        PASS
        
=== CONT  TestScript/issue2942
=== NAME  TestScript/issue2964
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] skip 'UNIX only'
        > chmod 755 $CHEZMOISOURCEDIR/external_dot_dir/executable
        # test that external_ directories respect the executable bit (0.031s)
        > exec chezmoi apply
        > [umask:002] cmpmod 775 $HOME/.dir/executable
        > [umask:022] cmpmod 755 $HOME/.dir/executable
        PASS
        
=== CONT  TestScript/issue2937
=== NAME  TestScript/catconfig
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi cat-config prints the configuration file without parsing it (0.094s)
        > exec chezmoi cat-config
        [stdout]
        # contents of .config/chezmoi/chezmoi.json
        > cmp stdout golden/cat-config
        PASS
        
=== CONT  TestScript/issue2934
=== NAME  TestScript/issue2977
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi source-path returns an error for file to be removed from exact directories (0.064s)
        > mkdir $HOME/.dir
        > mkfile $HOME/.dir/test.file
        > ! exec chezmoi source-path $HOME/.dir/test.file
        [stderr]
        chezmoi: $WORK/home/user/.dir/test.file: not in source state
        [exit status 1]
        > stderr 'not in source state'
        PASS
        
=== CONT  TestScript/issue2865
=== NAME  TestScript/scriptenv
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] skip 'UNIX only'
        # test that chezmoi sets environment variables for scripts (0.038s)
        > exec chezmoi apply
        [stdout]
        WORK=$WORK
        CHEZMOI_OS=linux
        CHEZMOI_SOURCE_DIR=$WORK/home/user/.local/share/chezmoi/home
        SCRIPTENV_KEY=SCRIPTENV_VALUE
        CHEZMOI_VERBOSE=
        > stdout ^WORK=${WORK@R}$
        > [darwin] stdout ^CHEZMOI_OS=darwin$
        > [linux] stdout ^CHEZMOI_OS=linux$
        > stdout ^CHEZMOI_SOURCE_DIR=${CHEZMOISOURCEDIR@R}/home$
        > stdout ^CHEZMOI_VERBOSE=$
        > stdout ^SCRIPTENV_KEY=SCRIPTENV_VALUE$
        # test that chezmoi passes along --verbose in scripts (0.127s)
        > exec chezmoi apply --verbose
        [stdout]
        diff --git a/print-variable.sh b/print-variable.sh
        new file mode 100755
        index 0000000000000000000000000000000000000000..d3b811906e5cbcfa062c7883400385271ab3dd6b
        --- /dev/null
        +++ b/print-variable.sh
        @@ -0,0 +1,7 @@
        +#!/bin/sh
        +
        +echo "WORK=${WORK}"
        +echo "CHEZMOI_OS=${CHEZMOI_OS}"
        +echo "CHEZMOI_SOURCE_DIR=${CHEZMOI_SOURCE_DIR}"
        +echo "SCRIPTENV_KEY=${SCRIPTENV_KEY}"
        +echo "CHEZMOI_VERBOSE=${CHEZMOI_VERBOSE}"
        WORK=$WORK
        CHEZMOI_OS=linux
        CHEZMOI_SOURCE_DIR=$WORK/home/user/.local/share/chezmoi/home
        SCRIPTENV_KEY=SCRIPTENV_VALUE
        CHEZMOI_VERBOSE=1
        > stdout ^WORK=${WORK@R}$
        > [darwin] stdout ^CHEZMOI_OS=darwin$
        > [linux] stdout ^CHEZMOI_OS=linux$
        > stdout ^CHEZMOI_SOURCE_DIR=${CHEZMOISOURCEDIR@R}/home$
        > stdout ^CHEZMOI_VERBOSE=1$
        > stdout ^SCRIPTENV_KEY=SCRIPTENV_VALUE$
        PASS
        
=== CONT  TestScript/issue2861
=== NAME  TestScript/issue1866
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi ignores emacs symbolic link locks (0.111s)
        > symlink 'home/user/.local/share/chezmoi/.#lock' -> invalid
        > exec chezmoi apply
        > cmp $HOME/.file golden/.file
        PASS
        
=== CONT  TestScript/issue2858
=== NAME  TestScript/vault
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > mockcommand bin/vault
        # test vault template function (0.119s)
        > exec chezmoi execute-template '{{ (vault "secret/examplesecret").data.data.password }}'
        [stdout]
        examplepassword> stdout ^examplepassword$
        PASS
        
=== CONT  TestScript/issue2820
=== NAME  TestScript/issue2954
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi destroy does not delete the source directory when removing a file in an exact directory (0.091s)
        > mkdir $HOME/.dir
        > mkfile $HOME/.dir/test.file
        > exec chezmoi destroy --force $HOME${/}.dir/test.file
        > exists $CHEZMOISOURCEDIR
        PASS
        
=== CONT  TestScript/issue2752
=== NAME  TestScript/issue2942
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that .chezmoi.config variables are capitalized correctly (0.117s)
        > exec chezmoi execute-template '{{ .chezmoi.config.keepassxc.command }}'
        [stdout]
        keepassxc-cli> stdout '^keepassxc-cli$'
        PASS
        
=== CONT  TestScript/issue2695
=== NAME  TestScript/issue2752
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] skip 'uses forward slashes in paths'
        # test that chezmoi target-path does not include .chezmoiroot in the output (0.109s)
        > exec chezmoi target-path $CHEZMOISOURCEDIR${/}home${/}dot_file
        [stdout]
        $WORK/home/user/.file
        > stdout ${HOME@R}/\.file
        PASS
        
=== CONT  TestScript/issue2628
=== NAME  TestScript/externalfileurl
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi apply reads from file:// URLs (0.088s)
        > exec chezmoi apply
        > cmp $HOME/.file golden/.file
        > chhome home2/user
        # test that chezmoi apply reads from the first found URL (0.136s)
        > exec chezmoi apply
        > cmp $HOME/.file golden/.file2
        > chhome home3/user
        # test that chezmoi apply returns an error from the first URL if all URLs return errors (0.076s)
        > ! exec chezmoi apply
        [stderr]
        chezmoi: .file: open $WORK/home3/user/.local/share/file.txt: no such file or directory
        [exit status 1]
        > [!windows] stderr 'home3/user/\.local/share/file.txt: no such file or directory'
        > [windows] stderr 'home3/user/\.local/share/file.txt: The system cannot find the file specified\.'
        PASS
        
=== CONT  TestScript/issue2609
=== NAME  TestScript/workingtree
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [!exec:true] skip 'true not found in $PATH'
        > mkhomedir
        # test that chezmoi cd creates the working tree if needed (0.026s)
        > ! exists $CHEZMOISOURCEDIR
        > exec chezmoi cd
        > exists $CHEZMOISOURCEDIR
        > exists $CHEZMOISOURCEDIR/home
        # test that chezmoi add adds a file into the source directory (0.134s)
        > exec chezmoi add $HOME${/}.file
        > cp golden/.file $CHEZMOISOURCEDIR/home/dot_file
        > chhome home2/user
        # test chezmoi init --working-tree creates the correct directory (0.083s)
        > exec chezmoi init --working-tree=$HOME${/}.dotfiles --source=$HOME${/}.dotfiles${/}home
        > exists $HOME/.dotfiles/.git
        > exists $HOME/.dotfiles/home
        > chhome home3/user
        # test that chezmoi add returns an error if the source directory is not in the working tree (0.094s)
        > mkhomedir
        > ! exec chezmoi add $HOME${/}.file
        [stderr]
        chezmoi: $WORK/home3/user/.local/share/chezmoi: not in $WORK/home3/user/.local/share/chezmoi/home
        [exit status 1]
        > stderr 'not in'
        PASS
        
=== CONT  TestScript/issue2599
=== NAME  TestScript/issue2858
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi managed lists managed files in git-repo externals (0.117s)
        > exec chezmoi managed
        [stdout]
        .dir
        > cmp stdout golden/managed
        # test that chezmoi unmanaged does not list files in git-repo externals (0.074s)
        > exec chezmoi unmanaged
        [stdout]
        .local
        > cmp stdout golden/unmanaged
        PASS
        
=== CONT  TestScript/issue2597
=== NAME  TestScript/issue2934
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] skip 'UNIX only'
        # test that chezmoi sets environment variables for modify_ scripts (0.155s)
        > exec chezmoi apply $HOME${/}.modify
        > grep ^CHEZMOI_SOURCE_DIR=${CHEZMOISOURCEDIR@R}$ $HOME/.modify
        > grep ^CHEZMOI_SOURCE_FILE=modify_dot_modify$ $HOME/.modify
        > chhome home2/user
        # test that CHEZMOI_SOURCE_FILE environment variable is set when running scripts (0.086s)
        > exec chezmoi apply $HOME${/}script.sh
        [stdout]
        CHEZMOI_SOURCE_DIR=$WORK/home2/user/.local/share/chezmoi
        CHEZMOI_SOURCE_FILE=run_script.sh
        > stdout ^CHEZMOI_SOURCE_DIR=${CHEZMOISOURCEDIR@R}$
        > stdout ^CHEZMOI_SOURCE_FILE=run_script.sh$
        PASS
        
=== CONT  TestScript/issue2577
=== NAME  TestScript/issue2609
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] skip 'UNIX only'
        # test that chezmoi apply uses the umask from the configuration file (0.056s)
        > exec chezmoi apply
        > cmpmod 600 $HOME/.file
        PASS
        
=== CONT  TestScript/issue2573
=== NAME  TestScript/issue2861
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi status shows just-added-then-modified files (0.216s)
        > exec chezmoi add $HOME${/}.file
        > edit $HOME/.file
        > edit $CHEZMOISOURCEDIR/dot_file
        > edit $CHEZMOISOURCEDIR/dot_file
        > exec chezmoi status
        [stdout]
        MM .file
        > cmp stdout golden/status
        PASS
        
=== CONT  TestScript/issue2510
=== NAME  TestScript/issue2937
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that .chezmoiignore prevents git-repo externals from being downloaded (0.190s)
        > exec chezmoi apply
        > ! exists .dir
        > chhome home2/user
        # test that .chezmoiignore prevents external archives from being downloaded (0.082s)
        > exec chezmoi apply
        > ! exists .dir
        PASS
        
=== CONT  TestScript/issue2500
=== NAME  TestScript/issue2573
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] skip 'UNIX only'
        > chmod 755 bin/diff
        # test that chezmoi apply --verbose with an external diff command and dirs excluded does not run the diff command when a directory is removed (0.059s)
        > exec chezmoi apply --verbose
        > ! stdout diff
        PASS
        
=== CONT  TestScript/issue2427
=== NAME  TestScript/issue2599
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi apply --interactive --verbose does not prompt for empty scripts (0.151s)
        > exec chezmoi apply --interactive --no-tty --verbose
        PASS
        
=== CONT  TestScript/issue2380
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi source-path with no arguments respects .chezmoiroot (0.030s)
        > exec chezmoi source-path
        [stdout]
        $WORK/home/user/.local/share/chezmoi/home
        > stdout ${CHEZMOISOURCEDIR@R}/home
        PASS
        
=== CONT  TestScript/issue2354
=== NAME  TestScript/issue2500
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [unix] chmod 755 bin/git
        > [windows] skip 'UNIX only'
        # test that the error message returned when git fails to update an external includes the target path (0.139s)
        > exec chezmoi apply
        [stdout]
        clone ok
        > ! exec chezmoi apply --force --refresh-externals
        [stdout]
        unknown command pull
        [stderr]
        chezmoi: .dir: $WORK/home/user/.dir: exit status 1
        [exit status 1]
        > stderr ${HOME@R}/\.dir:\x20exit\x20status\x201
        PASS
        
=== NAME  TestScript/edgecasesumask
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [!umask:022] skip
        > mkhomedir
        # test that chezmoi add --dry-run does not modify anything (0.153s)
        > exec chezmoi add --dry-run $HOME${/}.file
        > ! exists $CHEZMOICONFIGDIR/chezmoistate.boltdb
        > ! exists $CHEZMOISOURCEDIR/dot_file
        # test that chezmoi add updates the persistent state (0.153s)
        > exec chezmoi add $HOME${/}.file
        > exists $CHEZMOICONFIGDIR/chezmoistate.boltdb
        > exists $CHEZMOISOURCEDIR/dot_file
        > exec chezmoi state dump
        [stdout]
        {
          "configState": {},
          "entryState": {
            "$WORK/home/user/.file": {
              "contentsSHA256": "634a4dd193c7b3b926d2e08026aa81a416fd41cec52854863b974af422495663",
              "mode": 420,
              "type": "file"
            }
          },
          "gitHubKeysState": {},
          "gitHubLatestReleaseState": {},
          "gitHubReleasesState": {},
          "gitHubTagsState": {},
          "gitHubVersionReleaseState": {},
          "gitRepoExternalState": {},
          "scriptState": {}
        }
        > stdout 634a4dd193c7b3b926d2e08026aa81a416fd41cec52854863b974af422495663 # sha256sum of "# contents of .file\n"
        # test that chezmoi apply updates the state if the target and destination states match, even if the last written state does not (0.231s)
        > edit $CHEZMOISOURCEDIR/dot_file
        > edit $HOME/.file
        > cmp $HOME/.file $CHEZMOISOURCEDIR/dot_file
        > exec chezmoi apply --dry-run --force $HOME${/}.file
        > exec chezmoi state dump
        [stdout]
        {
          "configState": {},
          "entryState": {
            "$WORK/home/user/.file": {
              "contentsSHA256": "634a4dd193c7b3b926d2e08026aa81a416fd41cec52854863b974af422495663",
              "mode": 420,
              "type": "file"
            }
          },
          "gitHubKeysState": {},
          "gitHubLatestReleaseState": {},
          "gitHubReleasesState": {},
          "gitHubTagsState": {},
          "gitHubVersionReleaseState": {},
          "gitRepoExternalState": {},
          "scriptState": {}
        }
        > ! stdout 2e9dd6a2a8c15b20d4b0882d4c0fb8c7eea4e8ece46818090b387132f9f84c34 # sha256sum of "# contents of .file\n# edited\n"
        > exec chezmoi apply --force $HOME${/}.file
        > exec chezmoi state dump
        [stdout]
        {
          "configState": {},
          "entryState": {
            "$WORK/home/user/.file": {
              "contentsSHA256": "2e9dd6a2a8c15b20d4b0882d4c0fb8c7eea4e8ece46818090b387132f9f84c34",
              "mode": 420,
              "type": "file"
            }
          },
          "gitHubKeysState": {},
          "gitHubLatestReleaseState": {},
          "gitHubReleasesState": {},
          "gitHubTagsState": {},
          "gitHubVersionReleaseState": {},
          "gitRepoExternalState": {},
          "scriptState": {}
        }
        > stdout 2e9dd6a2a8c15b20d4b0882d4c0fb8c7eea4e8ece46818090b387132f9f84c34 # sha256sum of "# contents of .file\n# edited\n"
        PASS
        
=== CONT  TestScript/issue2315
=== CONT  TestScript/issue2302
=== NAME  TestScript/issue2597
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > exec tar czf www/master.tar.gz master
        > httpd www
        > exec chezmoi apply
        > exists $HOME/.oh-my-zsh/README.md
        > ! exists $HOME/.oh-my-zsh/cache/.gitkeep
        PASS
        
=== CONT  TestScript/issue2300
=== NAME  TestScript/issue2628
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > httpd www
        # test that .chezmoiexternal.toml.tmpl is read (0.068s)
        > exec chezmoi apply
        > cmp $HOME/.file golden/.file
        > chhome home2/user
        # test that .chezmoiignore.tmpl is read (0.065s)
        > exec chezmoi apply
        > ! exists $HOME/.file
        > chhome home3/user
        # test that .chezmoiremove.tmpl is read (0.121s)
        > exec chezmoi apply
        > ! exists $HOME/.file
        PASS
        
=== CONT  TestScript/issue2283
=== NAME  TestScript/issue2577
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] skip 'UNIX only'
        > chmod 755 bin/fossil
        # test that chezmoi update runs a custom update command and applies changes (0.197s)
        > exec chezmoi update
        > cmp $HOME/.file golden/.file
        PASS
        
=== CONT  TestScript/issue2177
=== NAME  TestScript/cat
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > mkhomedir golden
        > mksourcedir
        # test that chezmoi cat prints an empty file (0.027s)
        > exec chezmoi cat $HOME${/}.empty
        > cmp stdout golden/.empty
        # test that chezmoi cat prints a file (0.153s)
        > exec chezmoi cat $HOME${/}.file
        [stdout]
        # contents of .file
        > cmp stdout golden/.file
        # test that chezmoi cat prints a symlink (0.055s)
        > exec chezmoi cat $HOME${/}.symlink
        [stdout]
        .dir/subdir/file
        > stdout '\.dir/subdir/file'
        # test that chezmoi cat prints a template (0.075s)
        > exec chezmoi cat $HOME${/}.template
        [stdout]
        key = value
        > cmp stdout golden/.template
        # test that chezmoi cat does not print directories (0.065s)
        > ! exec chezmoi cat $HOME${/}.dir
        [stderr]
        chezmoi: .dir: not a file, script, or symlink
        [exit status 1]
        > stderr 'not a file, script, or symlink'
        # test that chezmoi cat does not print files outside the destination directory (0.086s)
        > ! exec chezmoi cat ${/}etc${/}passwd
        [stderr]
        chezmoi: /etc/passwd: not in destination directory ($WORK/home/user)
        [exit status 1]
        > stderr 'not in destination directory'
        # test that chezmoi cat uses relative paths (0.062s)
        > mkdir $HOME/.dir
        > cd $HOME/.dir
        $WORK/home/user/.dir
        > exec chezmoi cat file
        [stdout]
        # contents of .dir/file
        > cmp stdout $WORK/golden/.dir/file
        PASS
        
=== CONT  TestScript/issue2137
=== NAME  TestScript/issue2300
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] skip 'UNIX only' # FIXME
        # test that chezmoi edit --apply applies changes to a directory (0.075s)
        > exec chezmoi edit --apply $HOME/.dir
        > grep '# edited' $HOME/.dir/file
        PASS
        
=== CONT  TestScript/issue2132
=== NAME  TestScript/issue2510
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that .chezmoiignore works with scripts (0.078s)
        > exec chezmoi diff
        [stdout]
        diff --git a/script-one.sh b/script-one.sh
        new file mode 100755
        index 0000000000000000000000000000000000000000..a5498fa48acd6f616d60604b94352958c5e967fc
        --- /dev/null
        +++ b/script-one.sh
        @@ -0,0 +1,3 @@
        +#!/bin/sh
        +
        +echo "script one"
        > cmp stdout golden/diff
        > chhome home2/user
        # test that .chezmoiignore works with scripts in .chezmoiscripts (0.167s)
        > exec chezmoi diff
        [stdout]
        diff --git a/.chezmoiscripts/script-one.sh b/.chezmoiscripts/script-one.sh
        new file mode 100755
        index 0000000000000000000000000000000000000000..a5498fa48acd6f616d60604b94352958c5e967fc
        --- /dev/null
        +++ b/.chezmoiscripts/script-one.sh
        @@ -0,0 +1,3 @@
        +#!/bin/sh
        +
        +echo "script one"
        > cmp stdout golden/diff2
        PASS
        
=== CONT  TestScript/issue2092
=== NAME  TestScript/issue2354
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi source-path does not read the source state if not needed (0.099s)
        > exec chezmoi source-path
        [stdout]
        $WORK/home/user/.local/share/chezmoi
        > stdout ${CHEZMOISOURCEDIR@R}
        PASS
        
=== CONT  TestScript/issue2016
=== NAME  TestScript/completion_unix
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] skip 'UNIX only'
        # test chezmoi --include completion (0.101s)
        > exec chezmoi __complete apply --include=d
        [stdout]
        dirs
        :6
        [stderr]
        Completion ended with directive: ShellCompDirectiveNoSpace, ShellCompDirectiveNoFileComp
        > cmp stdout golden/complete-apply-include-d
        # test chezmoi --secrets completion (0.133s)
        > exec chezmoi __complete add --secrets=e
        [stdout]
        error
        :4
        [stderr]
        Completion ended with directive: ShellCompDirectiveNoFileComp
        > cmp stdout golden/complete-secrets-e
        # test chezmoi cat completion of targets in a directory (0.069s)
        > exec chezmoi __complete cat $HOME
        [stdout]
        $WORK/home/user/.dir/
        $WORK/home/user/.dir/file
        $WORK/home/user/.file
        :4
        [stderr]
        Completion ended with directive: ShellCompDirectiveNoFileComp
        > cmpenv stdout golden/complete-target-home
        # test chezmoi cat completion of matching absolute targets (0.045s)
        > exec chezmoi __complete cat $HOME/.f
        [stdout]
        $WORK/home/user/.file
        :4
        [stderr]
        Completion ended with directive: ShellCompDirectiveNoFileComp
        > cmpenv stdout golden/complete-target-home-dot-f
        # test chezmoi cat completion of matching relative targets (0.081s)
        > cd $HOME
        $WORK/home/user
        > exec chezmoi __complete cat .f
        [stdout]
        .file
        :4
        [stderr]
        Completion ended with directive: ShellCompDirectiveNoFileComp
        > cmpenv stdout $WORK/golden/complete-dot-f-in-home
        > cd $WORK
        $WORK
        # test chezmoi chattr completion of attributes (0.072s)
        > exec chezmoi __complete chattr p
        [stdout]
        private
        :4
        [stderr]
        Completion ended with directive: ShellCompDirectiveNoFileComp
        > cmp stdout golden/complete-attribute-p
        # test chezmoi chattr completion of targets (0.123s)
        > exec chezmoi __complete cat private $HOME
        [stdout]
        $WORK/home/user/.dir/
        $WORK/home/user/.dir/file
        $WORK/home/user/.file
        :4
        [stderr]
        Completion ended with directive: ShellCompDirectiveNoFileComp
        > cmpenv stdout golden/complete-target-home
        PASS
        
=== CONT  TestScript/issue1869
=== NAME  TestScript/issue2283
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that sourceDir has the correct value in chezmoi init with .chezmoiroot (0.130s)
        > exec chezmoi init
        > cmpenv $CHEZMOICONFIGDIR/chezmoi.yaml golden/chezmoi.yaml
        PASS
        
=== CONT  TestScript/diffcommand_windows
    cmd.go:380: Windows only
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [unix] skip 'Windows only'
        
=== CONT  TestScript/edgecases
=== NAME  TestScript/issue2177
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi forget prints a warning when asked to forget externals (0.130s)
        > exec chezmoi forget $HOME${/}.external
        [stderr]
        chezmoi: warning: .external: cannot forget entry from external https://github.com/user/repo.git defined in $WORK/home/user/.local/share/chezmoi/.chezmoiexternal.toml
        > stderr 'cannot forget entry from external https://github\.com/user/repo\.git defined in .*/home/user/\.local/share/chezmoi/\.chezmoiexternal\.toml'
        PASS
        
=== CONT  TestScript/dumpyaml
=== NAME  TestScript/issue2315
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] skip 'UNIX only'
        # Test that chezmoi init runs run_before_ scripts before executing templates (0.164s)
        > env PATH=$PATH:$HOME/bin
        > exec chezmoi init --apply
        > cmp $HOME/.file golden/.file
        PASS
        
=== CONT  TestScript/dumpjson
=== NAME  TestScript/issue2302
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi does not panic if an external uses an absolute path (0.210s)
        > ! exec chezmoi diff
        [stderr]
        chezmoi: $WORK/home/user/.local/share/chezmoi/.chezmoiexternal.toml: /home/user/.dir: path is not relative
        [exit status 1]
        > stderr 'path is not relative'
        PASS
        
=== CONT  TestScript/dumpconfig
=== NAME  TestScript/issue2016
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > symlink $HOME/.symlink -> .file
        # test that chezmoi apply removes broken symlinks (0.119s)
        > exec chezmoi apply
        > ! lexists $HOME/.symlink
        PASS
        
=== CONT  TestScript/doppler
=== NAME  TestScript/issue2132
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi apply does not create a remove_ directory if it has no contents (0.062s)
        > exec chezmoi apply
        > ! exists $HOME/.dir
        # test that running chezmoi apply a second time completes with no output (0.064s)
        > exec chezmoi apply --no-tty
        > ! stdout .
        > ! exists $HOME/.dir
        PASS
        
=== CONT  TestScript/doctor_windows
    cmd.go:380: Windows only
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [unix] skip 'Windows only'
        
=== CONT  TestScript/doctor_unix
=== NAME  TestScript/issue2820
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi add refuses to add files in chezmoi's source directory (0.135s)
        > ! exec chezmoi add $CHEZMOISOURCEDIR
        [stderr]
        chezmoi: $WORK/home/user/.local/share/chezmoi: cannot add chezmoi file to chezmoi ($WORK/home/user/.local/share/chezmoi is protected)
        [exit status 1]
        > stderr 'cannot add chezmoi file to chezmoi'
        # test that chezmoi add refuses to add chezmoi's config file (0.117s)
        > ! exec chezmoi add $CHEZMOICONFIGDIR/chezmoi.toml
        [stderr]
        chezmoi: $WORK/home/user/.config/chezmoi/chezmoi.toml: cannot add chezmoi's config file to chezmoi, use a config file template instead
        [exit status 1]
        > stderr 'cannot add chezmoi\x27s config file to chezmoi'
        # test that chezmoi add refuses to add files in chezmoi's cache directory (0.130s)
        > ! exec chezmoi add $HOME/.cache/chezmoi
        [stderr]
        chezmoi: $WORK/home/user/.cache/chezmoi: cannot add chezmoi file to chezmoi ($WORK/home/user/.cache/chezmoi is protected)
        [exit status 1]
        > stderr 'cannot add chezmoi file to chezmoi'
        # test that chezmoi add refuses to add files in chezmoi's source directory when already in that directory (0.212s)
        > cd $CHEZMOISOURCEDIR
        $WORK/home/user/.local/share/chezmoi
        > exists dot_file
        > ! exec chezmoi add dot_file
        [stderr]
        chezmoi: $WORK/home/user/.local/share/chezmoi: cannot add chezmoi file to chezmoi ($WORK/home/user/.local/share/chezmoi is protected)
        [exit status 1]
        > stderr 'cannot add chezmoi file to chezmoi'
        PASS
        
=== CONT  TestScript/discussion4732
=== NAME  TestScript/issue2137
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi apply fails if .chezmoiversion requires a more recent version (0.046s)
        > ! exec chezmoi apply
        [stderr]
        chezmoi: source state requires chezmoi version 3.0.0 or later, chezmoi is version 2.0.0+test
        [exit status 1]
        > stderr 'source state requires chezmoi version 3\.0\.0 or later'
        # test that chezmoi init fails if .chezmoiversion requires a more recent version (0.158s)
        > ! exec chezmoi init
        [stderr]
        chezmoi: source state requires chezmoi version 3.0.0 or later, chezmoi is version 2.0.0+test
        [exit status 1]
        > stderr 'source state requires chezmoi version 3\.0\.0 or later'
        PASS
        
=== CONT  TestScript/exclude
=== NAME  TestScript/issue1869
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test concurrent read when there are multiple .chezmoiignore files (0.133s)
        > exec chezmoi status
        [stdout]
         A dir1
         A dir1/subdir1
         A dir1/subdir2
         A dir1/subdir3
         A dir2
         A dir2/subdir1
         A dir2/subdir2
         A dir2/subdir3
         A dir3
         A dir3/subdir1
         A dir3/subdir2
         A dir3/subdir3
        > chhome home2/user
        # test concurrent read when there are multitple .chezmoidata.<format> files (0.034s)
        > exec chezmoi data
        [stdout]
        {
          "chezmoi": {
            "arch": "amd64",
            "args": [
              "chezmoi",
              "data"
            ],
            "cacheDir": "$WORK/home2/user/.cache/chezmoi",
            "command": "data",
            "commandDir": "$WORK",
            "config": {
              "add": {
                "encrypt": false,
                "secrets": "warning",
                "templateSymlinks": false
              },
              "age": {
                "args": null,
                "command": "age",
                "identities": null,
                "identity": "",
                "passphrase": false,
                "recipient": "",
                "recipients": null,
                "recipientsFile": "",
                "recipientsFiles": null,
                "suffix": ".age",
                "symmetric": false,
                "useBuiltin": false
              },
              "awsSecretsManager": {
                "profile": "",
                "region": ""
              },
              "azureKeyVault": {
                "defaultVault": ""
              },
              "bitwarden": {
                "command": "bw",
                "unlock": false
              },
              "bitwardenSecrets": {
                "command": "bws"
              },
              "cacheDir": "$WORK/home2/user/.cache/chezmoi",
              "cd": {
                "args": null,
                "command": ""
              },
              "color": "auto",
              "completion": {
                "custom": false
              },
              "dashlane": {
                "args": null,
                "command": "dcli"
              },
              "data": {},
              "destDir": "$WORK/home2/user",
              "diff": {
                "args": null,
                "command": "",
                "exclude": [],
                "pager": "",
                "pagerArgs": null,
                "reverse": false,
                "scriptContents": true
              },
              "docker": {
                "command": "docker"
              },
              "doppler": {
                "args": null,
                "command": "doppler",
                "config": "",
                "project": ""
              },
              "edit": {
                "apply": false,
                "args": null,
                "command": "",
                "hardlink": true,
                "minDuration": 1000000000,
                "watch": false
              },
              "ejson": {
                "key": "",
                "keyDir": "/opt/ejson/keys"
              },
              "encryption": "",
              "env": null,
              "format": "json",
              "git": {
                "autoadd": false,
                "autocommit": false,
                "autopush": false,
                "command": "git",
                "commitMessageTemplate": "",
                "commitMessageTemplateFile": "",
                "lfs": false
              },
              "gitHub": {
                "refreshPeriod": 60000000000
              },
              "gopass": {
                "command": "gopass",
                "mode": ""
              },
              "gpg": {
                "args": null,
                "command": "gpg",
                "recipient": "",
                "recipients": null,
                "suffix": ".asc",
                "symmetric": false
              },
              "hooks": null,
              "interactive": false,
              "interpreters": {
                "bat": {
                  "args": null,
                  "command": ""
                },
                "cmd": {
                  "args": null,
                  "command": ""
                },
                "com": {
                  "args": null,
                  "command": ""
                },
                "exe": {
                  "args": null,
                  "command": ""
                },
                "nu": {
                  "args": null,
                  "command": "nu"
                },
                "pl": {
                  "args": null,
                  "command": "perl"
                },
                "ps1": {
                  "args": null,
                  "command": ""
                },
                "py": {
                  "args": null,
                  "command": "python3"
                },
                "rb": {
                  "args": null,
                  "command": "ruby"
                }
              },
              "keepassxc": {
                "args": null,
                "command": "keepassxc-cli",
                "database": "",
                "mode": "cache-password",
                "prompt": true
              },
              "keeper": {
                "args": null,
                "command": "keeper"
              },
              "lastpass": {
                "command": "lpass"
              },
              "lessInteractive": false,
              "merge": {
                "args": null,
                "command": "vimdiff"
              },
              "mode": "file",
              "onepassword": {
                "command": "op",
                "mode": "account",
                "prompt": true
              },
              "pager": "",
              "pagerArgs": null,
              "pass": {
                "command": "pass"
              },
              "passhole": {
                "args": null,
                "command": "ph",
                "prompt": true
              },
              "persistentState": "",
              "pinentry": {
                "args": null,
                "command": "",
                "options": [
                  "allow-external-password-cache"
                ]
              },
              "progress": "auto",
              "protonPass": {
                "command": "pass-cli"
              },
              "rbw": {
                "command": "rbw"
              },
              "safe": true,
              "scriptEnv": null,
              "scriptTempDir": "",
              "secret": {
                "args": null,
                "command": ""
              },
              "sourceDir": "$WORK/home2/user/.local/share/chezmoi",
              "status": {
                "exclude": [],
                "pathStyle": "relative"
              },
              "tempDir": "$WORK/.tmp",
              "template": {
                "options": [
                  "missingkey=error"
                ]
              },
              "textConv": null,
              "umask": 18,
              "update": {
                "apply": true,
                "args": null,
                "command": "",
                "recurseSubmodules": true
              },
              "useBuiltinAge": "auto",
              "useBuiltinGit": "auto",
              "vault": {
                "command": "vault"
              },
              "verbose": false,
              "verify": {
                "exclude": []
              },
              "warnings": {
                "configFileTemplateHasChanged": true
              },
              "workingTree": "$WORK/home2/user/.local/share/chezmoi"
            },
            "configFile": "$WORK/home2/user/.config/chezmoi/chezmoi.toml",
            "destDir": "$WORK/home2/user",
            "executable": "/tmp/testscript-main23456104/bin/chezmoi",
            "flags": {
              "dryRun": false,
              "force": false,
              "keepGoing": false,
              "noPager": false,
              "noTTY": false
            },
            "fqdnHostname": "arch-nspawn-4102825",
            "gid": "1002",
            "group": "builduser",
            "homeDir": "$WORK/home2/user",
            "hostname": "arch-nspawn-4102825",
            "kernel": {
              "osrelease": "6.18.31-1-lts",
              "ostype": "Linux",
              "version": "#1 SMP PREEMPT_DYNAMIC Fri, 15 May 2026 15:01:51 +0000"
            },
            "os": "linux",
            "osRelease": {
              "ansiColor": "38;2;23;147;209",
              "bugReportURL": "https://gitlab.archlinux.org/groups/archlinux/-/issues",
              "buildID": "rolling",
              "documentationURL": "https://wiki.archlinux.org/",
              "homeURL": "https://archlinux.org/",
              "id": "arch",
              "logo": "archlinux-logo",
              "name": "Arch Linux",
              "prettyName": "Arch Linux",
              "privacyPolicyURL": "https://terms.archlinux.org/docs/privacy-policy/",
              "supportURL": "https://bbs.archlinux.org/"
            },
            "pathListSeparator": ":",
            "pathSeparator": "/",
            "rawHomeDir": "$WORK/home2/user",
            "sourceDir": "$WORK/home2/user/.local/share/chezmoi",
            "uid": "1002",
            "username": "builduser",
            "version": {
              "builtBy": "testscript",
              "commit": "HEAD",
              "date": "2026-07-20T20:42:29Z",
              "version": "v2.0.0+test"
            },
            "windowsVersion": {},
            "workingTree": "$WORK/home2/user/.local/share/chezmoi"
          },
          "key": "value"
        }
        PASS
        
=== NAME  TestScript/dumpyaml
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [!umask:022] skip
        > mksourcedir
        > exec chezmoi dump --format=yaml
        [stdout]
        .create:
          type: file
          name: .create
          contents: "# contents of .create\n"
          perm: 420
        .dir:
          type: dir
          name: .dir
          perm: 493
        .dir/file:
          type: file
          name: .dir/file
          contents: "# contents of .dir/file\n"
          perm: 420
        .dir/subdir:
          type: dir
          name: .dir/subdir
          perm: 493
        .dir/subdir/file:
          type: file
          name: .dir/subdir/file
          contents: "# contents of .dir/subdir/file\n"
          perm: 420
        .empty:
          type: file
          name: .empty
          contents: ""
          perm: 420
        .executable:
          type: file
          name: .executable
          contents: "# contents of .executable\n"
          perm: 493
        .file:
          type: file
          name: .file
          contents: "# contents of .file\n"
          perm: 420
        .private:
          type: file
          name: .private
          contents: "# contents of .private\n"
          perm: 384
        .readonly:
          type: file
          name: .readonly
          contents: "# contents of .readonly\n"
          perm: 292
        .symlink:
          type: symlink
          name: .symlink
          linkname: .dir/subdir/file
        .template:
          type: file
          name: .template
          contents: |
            key = value
          perm: 420
        > cmp stdout golden/dump.yaml
        > exec chezmoi dump --exclude=dirs --format=yaml
        [stdout]
        .create:
          type: file
          name: .create
          contents: "# contents of .create\n"
          perm: 420
        .dir/file:
          type: file
          name: .dir/file
          contents: "# contents of .dir/file\n"
          perm: 420
        .dir/subdir/file:
          type: file
          name: .dir/subdir/file
          contents: "# contents of .dir/subdir/file\n"
          perm: 420
        .empty:
          type: file
          name: .empty
          contents: ""
          perm: 420
        .executable:
          type: file
          name: .executable
          contents: "# contents of .executable\n"
          perm: 493
        .file:
          type: file
          name: .file
          contents: "# contents of .file\n"
          perm: 420
        .private:
          type: file
          name: .private
          contents: "# contents of .private\n"
          perm: 384
        .readonly:
          type: file
          name: .readonly
          contents: "# contents of .readonly\n"
          perm: 292
        .symlink:
          type: symlink
          name: .symlink
          linkname: .dir/subdir/file
        .template:
          type: file
          name: .template
          contents: |
            key = value
          perm: 420
        > cmp stdout golden/dump-except-dirs.yaml
        PASS
        
=== CONT  TestScript/externalencrypted
=== CONT  TestScript/externaldir
gpg: Warning: using insecure memory!
gpg: keybox '/tmp/test-gpg-homedir3479108412/pubring.kbx' created
=== NAME  TestScript/issue2427
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > symlink archive/dir/symlink -> file
        > exec tar czf www/archive.tar.gz archive
        > httpd www
        # test that chezmoi managed lists all targets (0.230s)
        > exec chezmoi managed
        [stdout]
        .dir
        .dir/dir
        .dir/dir/file
        .dir/dir/symlink
        .encrypted
        .file
        > cmp stdout golden/managed
        # test that chezmoi managed --include=encrypted lists encrypted files only (0.054s)
        > exec chezmoi managed --include=encrypted
        [stdout]
        .encrypted
        > cmp stdout golden/managed-encrypted
        # test that chezmoi managed --include=externals lists external targets only (0.094s)
        > exec chezmoi managed --include=externals
        [stdout]
        .dir
        .dir/dir
        .dir/dir/file
        .dir/dir/symlink
        > cmp stdout golden/managed-externals
        PASS
        
=== CONT  TestScript/externaldiff
=== NAME  TestScript/dumpconfig
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi dump-config dumps the configuration in the given format (0.114s)
        > exec chezmoi dump-config --format=yaml
        [stdout]
        configfile:
          cacheDir: $WORK/home/user/.cache/chezmoi
          color: auto
          data:
            key: value
          env: {}
          format: json
          destDir: $WORK/home/user
          gitHub:
            refreshPeriod: 1m0s
          hooks: {}
          interactive: false
          interpreters:
            bat:
              command: ""
              args: []
            cmd:
              command: ""
              args: []
            com:
              command: ""
              args: []
            exe:
              command: ""
              args: []
            nu:
              command: nu
              args: []
            pl:
              command: perl
              args: []
            ps1:
              command: ""
              args: []
            py:
              command: python3
              args: []
            rb:
              command: ruby
              args: []
          lessInteractive: false
          mode: file
          pager: ""
          pagerArgs: []
          persistentState: ""
          pinentry:
            command: ""
            args: []
            options:
            - allow-external-password-cache
          progress: auto
          safe: true
          scriptEnv: {}
          scriptTempDir: ""
          sourceDir: $WORK/home/user/.local/share/chezmoi
          tempDir: $WORK/.tmp
          template:
            options:
            - missingkey=error
          textConv: []
          umask: 18
          useBuiltinAge: auto
          useBuiltinGit: auto
          verbose: false
          warnings:
            configFileTemplateHasChanged: true
          workingTree: $WORK/home/user/.local/share/chezmoi
          awsSecretsManager:
            region: ""
            profile: ""
          azureKeyVault:
            defaultVault: ""
          bitwarden:
            command: bw
            unlock: false
          bitwardenSecrets:
            command: bws
          dashlane:
            command: dcli
            args: []
          doppler:
            command: doppler
            args: []
            project: ""
            config: ""
          ejson:
            keyDir: /opt/ejson/keys
            key: ""
          gopass:
            command: gopass
            mode: ""
          keepassxc:
            command: keepassxc-cli
            database: ""
            mode: cache-password
            args: []
            prompt: true
          keeper:
            command: keeper
            args: []
          lastpass:
            command: lpass
          onepassword:
            command: op
            prompt: true
            mode: account
          pass:
            command: pass
          passhole:
            command: ph
            args: []
            prompt: true
          protonPass:
            command: pass-cli
          rbw:
            command: rbw
          secret:
            command: ""
            args: []
          vault:
            command: vault
          encryption: ""
          age:
            useBuiltin: false
            command: age
            args: []
            identity: ""
            identities: []
            passphrase: false
            recipient: ""
            recipients: []
            recipientsFile: ""
            recipientsFiles: []
            suffix: .age
            symmetric: false
          gpg:
            command: gpg
            args: []
            recipient: ""
            recipients: []
            symmetric: false
            suffix: .asc
          add:
            encrypt: false
            secrets: warning
            templateSymlinks: false
          cd:
            command: ""
            args: []
          completion:
            custom: false
          docker:
            command: docker
          diff:
            command: ""
            args: []
            exclude: []
            pager:  
            pagerArgs: []
            reverse: false
            scriptContents: true
          edit:
            command: ""
            args: []
            hardlink: true
            minDuration: 1s
            watch: false
            apply: false
          git:
            command: git
            autoadd: false
            autocommit: false
            autopush: false
            commitMessageTemplate: ""
            commitMessageTemplateFile: ""
            lfs: false
          merge:
            command: vimdiff
            args: []
          status:
            exclude: []
            pathStyle: relative
          update:
            command: ""
            args: []
            apply: true
            recurseSubmodules: true
          verify:
            exclude: []
        > stdout 'key: value'
        PASS
        
=== CONT  TestScript/externalcompression
=== NAME  TestScript/issue2092
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] skip 'UNIX only'
        # test that chezmoi dump warns when the config file has not been generated (0.131s)
        > exec chezmoi dump
        [stdout]
        {
          ".file": {
            "type": "file",
            "name": ".file",
            "contents": "# contents of .file\n",
            "perm": 420
          }
        }
        [stderr]
        chezmoi: warning: config file template has changed, run chezmoi init to regenerate config file
        > [umask:002] cmp stdout golden/dump-umask-002.json
        > [umask:022] cmp stdout golden/dump-umask-022.json
        > stderr 'config file template has changed'
        # test that chezmoi dump does not return an error when the config file template has been modified (0.104s)
        > exec chezmoi init
        > edit $CHEZMOICONFIGDIR${/}chezmoi.toml
        > exec chezmoi dump
        [stdout]
        {
          ".file": {
            "type": "file",
            "name": ".file",
            "contents": "# contents of .file\n",
            "perm": 420
          }
        }
        > [umask:002] cmp stdout golden/dump-umask-002.json
        > [umask:022] cmp stdout golden/dump-umask-022.json
        > ! stderr .
        PASS
        
=== CONT  TestScript/externalarchiveinclude
=== NAME  TestScript/config
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test default config (0.030s)
        > exec chezmoi data --format=yaml
        [stdout]
        chezmoi:
          arch: amd64
          args:
          - chezmoi
          - data
          - --format=yaml
          cacheDir: $WORK/home/user/.cache/chezmoi
          command: data
          commandDir: $WORK
          config:
            add:
              encrypt: false
              secrets: warning
              templateSymlinks: false
            age:
              args: null
              command: age
              identities: null
              identity: ""
              passphrase: false
              recipient: ""
              recipients: null
              recipientsFile: ""
              recipientsFiles: null
              suffix: .age
              symmetric: false
              useBuiltin: false
            awsSecretsManager:
              profile: ""
              region: ""
            azureKeyVault:
              defaultVault: ""
            bitwarden:
              command: bw
              unlock: false
            bitwardenSecrets:
              command: bws
            cacheDir: $WORK/home/user/.cache/chezmoi
            cd:
              args: null
              command: ""
            color: auto
            completion:
              custom: false
            dashlane:
              args: null
              command: dcli
            data: {}
            destDir: $WORK/home/user
            diff:
              args: null
              command: ""
              exclude: []
              pager: ""
              pagerArgs: null
              reverse: false
              scriptContents: true
            docker:
              command: docker
            doppler:
              args: null
              command: doppler
              config: ""
              project: ""
            edit:
              apply: false
              args: null
              command: ""
              hardlink: true
              minDuration: 1e+09
              watch: false
            ejson:
              key: ""
              keyDir: /opt/ejson/keys
            encryption: ""
            env: null
            format: json
            git:
              autoadd: false
              autocommit: false
              autopush: false
              command: git
              commitMessageTemplate: ""
              commitMessageTemplateFile: ""
              lfs: false
            gitHub:
              refreshPeriod: 6e+10
            gopass:
              command: gopass
              mode: ""
            gpg:
              args: null
              command: gpg
              recipient: ""
              recipients: null
              suffix: .asc
              symmetric: false
            hooks: null
            interactive: false
            interpreters:
              bat:
                args: null
                command: ""
              cmd:
                args: null
                command: ""
              com:
                args: null
                command: ""
              exe:
                args: null
                command: ""
              nu:
                args: null
                command: nu
              pl:
                args: null
                command: perl
              ps1:
                args: null
                command: ""
              py:
                args: null
                command: python3
              rb:
                args: null
                command: ruby
            keepassxc:
              args: null
              command: keepassxc-cli
              database: ""
              mode: cache-password
              prompt: true
            keeper:
              args: null
              command: keeper
            lastpass:
              command: lpass
            lessInteractive: false
            merge:
              args: null
              command: vimdiff
            mode: file
            onepassword:
              command: op
              mode: account
              prompt: true
            pager: ""
            pagerArgs: null
            pass:
              command: pass
            passhole:
              args: null
              command: ph
              prompt: true
            persistentState: ""
            pinentry:
              args: null
              command: ""
              options:
              - allow-external-password-cache
            progress: auto
            protonPass:
              command: pass-cli
            rbw:
              command: rbw
            safe: true
            scriptEnv: null
            scriptTempDir: ""
            secret:
              args: null
              command: ""
            sourceDir: $WORK/home/user/.local/share/chezmoi
            status:
              exclude: []
              pathStyle: relative
            tempDir: $WORK/.tmp
            template:
              options:
              - missingkey=error
            textConv: null
            umask: 18.0
            update:
              apply: true
              args: null
              command: ""
              recurseSubmodules: true
            useBuiltinAge: auto
            useBuiltinGit: auto
            vault:
              command: vault
            verbose: false
            verify:
              exclude: []
            warnings:
              configFileTemplateHasChanged: true
            workingTree: $WORK/home/user/.local/share/chezmoi
          configFile: $WORK/home/user/.config/chezmoi/chezmoi.toml
          destDir: $WORK/home/user
          executable: /tmp/testscript-main23456104/bin/chezmoi
          flags:
            dryRun: false
            force: false
            keepGoing: false
            noPager: false
            noTTY: false
          fqdnHostname: arch-nspawn-4102825
          gid: "1002"
          group: builduser
          homeDir: $WORK/home/user
          hostname: arch-nspawn-4102825
          kernel:
            osrelease: 6.18.31-1-lts
            ostype: Linux
            version: "#1 SMP PREEMPT_DYNAMIC Fri, 15 May 2026 15:01:51 +0000"
          os: linux
          osRelease:
            ansiColor: 38;2;23;147;209
            bugReportURL: https://gitlab.archlinux.org/groups/archlinux/-/issues
            buildID: rolling
            documentationURL: https://wiki.archlinux.org/
            homeURL: https://archlinux.org/
            id: arch
            logo: archlinux-logo
            name: Arch Linux
            prettyName: Arch Linux
            privacyPolicyURL: https://terms.archlinux.org/docs/privacy-policy/
            supportURL: https://bbs.archlinux.org/
          pathListSeparator: ":"
          pathSeparator: /
          rawHomeDir: $WORK/home/user
          sourceDir: $WORK/home/user/.local/share/chezmoi
          uid: "1002"
          username: builduser
          version:
            builtBy: testscript
            commit: HEAD
            date: "2026-07-20T20:42:28Z"
            version: v2.0.0+test
          windowsVersion: {}
          workingTree: $WORK/home/user/.local/share/chezmoi
        > stdout 'sourceDir: .*/home/user/.local/share/chezmoi'
        # test that flags override default config (0.123s)
        > exec chezmoi data --format=yaml --source=/flag/source
        [stdout]
        chezmoi:
          arch: amd64
          args:
          - chezmoi
          - data
          - --format=yaml
          - --source=/flag/source
          cacheDir: $WORK/home/user/.cache/chezmoi
          command: data
          commandDir: $WORK
          config:
            add:
              encrypt: false
              secrets: warning
              templateSymlinks: false
            age:
              args: null
              command: age
              identities: null
              identity: ""
              passphrase: false
              recipient: ""
              recipients: null
              recipientsFile: ""
              recipientsFiles: null
              suffix: .age
              symmetric: false
              useBuiltin: false
            awsSecretsManager:
              profile: ""
              region: ""
            azureKeyVault:
              defaultVault: ""
            bitwarden:
              command: bw
              unlock: false
            bitwardenSecrets:
              command: bws
            cacheDir: $WORK/home/user/.cache/chezmoi
            cd:
              args: null
              command: ""
            color: auto
            completion:
              custom: false
            dashlane:
              args: null
              command: dcli
            data: {}
            destDir: $WORK/home/user
            diff:
              args: null
              command: ""
              exclude: []
              pager: ""
              pagerArgs: null
              reverse: false
              scriptContents: true
            docker:
              command: docker
            doppler:
              args: null
              command: doppler
              config: ""
              project: ""
            edit:
              apply: false
              args: null
              command: ""
              hardlink: true
              minDuration: 1e+09
              watch: false
            ejson:
              key: ""
              keyDir: /opt/ejson/keys
            encryption: ""
            env: null
            format: json
            git:
              autoadd: false
              autocommit: false
              autopush: false
              command: git
              commitMessageTemplate: ""
              commitMessageTemplateFile: ""
              lfs: false
            gitHub:
              refreshPeriod: 6e+10
            gopass:
              command: gopass
              mode: ""
            gpg:
              args: null
              command: gpg
              recipient: ""
              recipients: null
              suffix: .asc
              symmetric: false
            hooks: null
            interactive: false
            interpreters:
              bat:
                args: null
                command: ""
              cmd:
                args: null
                command: ""
              com:
                args: null
                command: ""
              exe:
                args: null
                command: ""
              nu:
                args: null
                command: nu
              pl:
                args: null
                command: perl
              ps1:
                args: null
                command: ""
              py:
                args: null
                command: python3
              rb:
                args: null
                command: ruby
            keepassxc:
              args: null
              command: keepassxc-cli
              database: ""
              mode: cache-password
              prompt: true
            keeper:
              args: null
              command: keeper
            lastpass:
              command: lpass
            lessInteractive: false
            merge:
              args: null
              command: vimdiff
            mode: file
            onepassword:
              command: op
              mode: account
              prompt: true
            pager: ""
            pagerArgs: null
            pass:
              command: pass
            passhole:
              args: null
              command: ph
              prompt: true
            persistentState: ""
            pinentry:
              args: null
              command: ""
              options:
              - allow-external-password-cache
            progress: auto
            protonPass:
              command: pass-cli
            rbw:
              command: rbw
            safe: true
            scriptEnv: null
            scriptTempDir: ""
            secret:
              args: null
              command: ""
            sourceDir: /flag/source
            status:
              exclude: []
              pathStyle: relative
            tempDir: $WORK/.tmp
            template:
              options:
              - missingkey=error
            textConv: null
            umask: 18.0
            update:
              apply: true
              args: null
              command: ""
              recurseSubmodules: true
            useBuiltinAge: auto
            useBuiltinGit: auto
            vault:
              command: vault
            verbose: false
            verify:
              exclude: []
            warnings:
              configFileTemplateHasChanged: true
            workingTree: /flag/source
          configFile: $WORK/home/user/.config/chezmoi/chezmoi.toml
          destDir: $WORK/home/user
          executable: /tmp/testscript-main23456104/bin/chezmoi
          flags:
            dryRun: false
            force: false
            keepGoing: false
            noPager: false
            noTTY: false
          fqdnHostname: arch-nspawn-4102825
          gid: "1002"
          group: builduser
          homeDir: $WORK/home/user
          hostname: arch-nspawn-4102825
          kernel:
            osrelease: 6.18.31-1-lts
            ostype: Linux
            version: "#1 SMP PREEMPT_DYNAMIC Fri, 15 May 2026 15:01:51 +0000"
          os: linux
          osRelease:
            ansiColor: 38;2;23;147;209
            bugReportURL: https://gitlab.archlinux.org/groups/archlinux/-/issues
            buildID: rolling
            documentationURL: https://wiki.archlinux.org/
            homeURL: https://archlinux.org/
            id: arch
            logo: archlinux-logo
            name: Arch Linux
            prettyName: Arch Linux
            privacyPolicyURL: https://terms.archlinux.org/docs/privacy-policy/
            supportURL: https://bbs.archlinux.org/
          pathListSeparator: ":"
          pathSeparator: /
          rawHomeDir: $WORK/home/user
          sourceDir: /flag/source
          uid: "1002"
          username: builduser
          version:
            builtBy: testscript
            commit: HEAD
            date: "2026-07-20T20:42:28Z"
            version: v2.0.0+test
          windowsVersion: {}
          workingTree: /flag/source
        > stdout 'sourceDir: .*/flag/source'
        > chhome home2/user
        # test that flags override default config (0.173s)
        > exec chezmoi execute-template --source=/flag/source '{{ .chezmoi.sourceDir }}'
        [stdout]
        /flag/source> stdout /flag/source
        # test that config files override default config (0.108s)
        > exec chezmoi data --format=yaml
        [stdout]
        chezmoi:
          arch: amd64
          args:
          - chezmoi
          - data
          - --format=yaml
          cacheDir: $WORK/home2/user/.cache/chezmoi
          command: data
          commandDir: $WORK
          config:
            add:
              encrypt: false
              secrets: warning
              templateSymlinks: false
            age:
              args: null
              command: age
              identities: null
              identity: ""
              passphrase: false
              recipient: ""
              recipients: null
              recipientsFile: ""
              recipientsFiles: null
              suffix: .age
              symmetric: false
              useBuiltin: false
            awsSecretsManager:
              profile: ""
              region: ""
            azureKeyVault:
              defaultVault: ""
            bitwarden:
              command: bw
              unlock: false
            bitwardenSecrets:
              command: bws
            cacheDir: $WORK/home2/user/.cache/chezmoi
            cd:
              args: null
              command: ""
            color: auto
            completion:
              custom: false
            dashlane:
              args: null
              command: dcli
            data: {}
            destDir: $WORK/home2/user
            diff:
              args: null
              command: ""
              exclude: []
              pager: ""
              pagerArgs: null
              reverse: false
              scriptContents: true
            docker:
              command: docker
            doppler:
              args: null
              command: doppler
              config: ""
              project: ""
            edit:
              apply: false
              args: null
              command: ""
              hardlink: true
              minDuration: 1e+09
              watch: false
            ejson:
              key: ""
              keyDir: /opt/ejson/keys
            encryption: ""
            env: null
            format: json
            git:
              autoadd: false
              autocommit: false
              autopush: false
              command: git
              commitMessageTemplate: ""
              commitMessageTemplateFile: ""
              lfs: false
            gitHub:
              refreshPeriod: 6e+10
            gopass:
              command: gopass
              mode: ""
            gpg:
              args: null
              command: gpg
              recipient: ""
              recipients: null
              suffix: .asc
              symmetric: false
            hooks: null
            interactive: false
            interpreters:
              bat:
                args: null
                command: ""
              cmd:
                args: null
                command: ""
              com:
                args: null
                command: ""
              exe:
                args: null
                command: ""
              nu:
                args: null
                command: nu
              pl:
                args: null
                command: perl
              ps1:
                args: null
                command: ""
              py:
                args: null
                command: python3
              rb:
                args: null
                command: ruby
            keepassxc:
              args: null
              command: keepassxc-cli
              database: ""
              mode: cache-password
              prompt: true
            keeper:
              args: null
              command: keeper
            lastpass:
              command: lpass
            lessInteractive: false
            merge:
              args: null
              command: vimdiff
            mode: file
            onepassword:
              command: op
              mode: account
              prompt: true
            pager: ""
            pagerArgs: null
            pass:
              command: pass
            passhole:
              args: null
              command: ph
              prompt: true
            persistentState: ""
            pinentry:
              args: null
              command: ""
              options:
              - allow-external-password-cache
            progress: auto
            protonPass:
              command: pass-cli
            rbw:
              command: rbw
            safe: true
            scriptEnv: null
            scriptTempDir: ""
            secret:
              args: null
              command: ""
            sourceDir: /config/source
            status:
              exclude: []
              pathStyle: relative
            tempDir: $WORK/.tmp
            template:
              options:
              - missingkey=error
            textConv: null
            umask: 18.0
            update:
              apply: true
              args: null
              command: ""
              recurseSubmodules: true
            useBuiltinAge: auto
            useBuiltinGit: auto
            vault:
              command: vault
            verbose: false
            verify:
              exclude: []
            warnings:
              configFileTemplateHasChanged: true
            workingTree: /config/source
          configFile: $WORK/home2/user/.config/chezmoi/chezmoi.toml
          destDir: $WORK/home2/user
          executable: /tmp/testscript-main23456104/bin/chezmoi
          flags:
            dryRun: false
            force: false
            keepGoing: false
            noPager: false
            noTTY: false
          fqdnHostname: arch-nspawn-4102825
          gid: "1002"
          group: builduser
          homeDir: $WORK/home2/user
          hostname: arch-nspawn-4102825
          kernel:
            osrelease: 6.18.31-1-lts
            ostype: Linux
            version: "#1 SMP PREEMPT_DYNAMIC Fri, 15 May 2026 15:01:51 +0000"
          os: linux
          osRelease:
            ansiColor: 38;2;23;147;209
            bugReportURL: https://gitlab.archlinux.org/groups/archlinux/-/issues
            buildID: rolling
            documentationURL: https://wiki.archlinux.org/
            homeURL: https://archlinux.org/
            id: arch
            logo: archlinux-logo
            name: Arch Linux
            prettyName: Arch Linux
            privacyPolicyURL: https://terms.archlinux.org/docs/privacy-policy/
            supportURL: https://bbs.archlinux.org/
          pathListSeparator: ":"
          pathSeparator: /
          rawHomeDir: $WORK/home2/user
          sourceDir: /config/source
          uid: "1002"
          username: builduser
          version:
            builtBy: testscript
            commit: HEAD
            date: "2026-07-20T20:42:28Z"
            version: v2.0.0+test
          windowsVersion: {}
          workingTree: /config/source
        > stdout 'sourceDir: .*/config/source'
        # test that the config file can be set and can be in YAML format (0.080s)
        > exec chezmoi data --config=$HOME/.chezmoi.yaml --format=yaml
        [stdout]
        chezmoi:
          arch: amd64
          args:
          - chezmoi
          - data
          - --config=$WORK/home2/user/.chezmoi.yaml
          - --format=yaml
          cacheDir: $WORK/home2/user/.cache/chezmoi
          command: data
          commandDir: $WORK
          config:
            add:
              encrypt: false
              secrets: warning
              templateSymlinks: false
            age:
              args: null
              command: age
              identities: null
              identity: ""
              passphrase: false
              recipient: ""
              recipients: null
              recipientsFile: ""
              recipientsFiles: null
              suffix: .age
              symmetric: false
              useBuiltin: false
            awsSecretsManager:
              profile: ""
              region: ""
            azureKeyVault:
              defaultVault: ""
            bitwarden:
              command: bw
              unlock: false
            bitwardenSecrets:
              command: bws
            cacheDir: $WORK/home2/user/.cache/chezmoi
            cd:
              args: null
              command: ""
            color: auto
            completion:
              custom: false
            dashlane:
              args: null
              command: dcli
            data: {}
            destDir: $WORK/home2/user
            diff:
              args: null
              command: ""
              exclude: []
              pager: ""
              pagerArgs: null
              reverse: false
              scriptContents: true
            docker:
              command: docker
            doppler:
              args: null
              command: doppler
              config: ""
              project: ""
            edit:
              apply: false
              args: null
              command: ""
              hardlink: true
              minDuration: 1e+09
              watch: false
            ejson:
              key: ""
              keyDir: /opt/ejson/keys
            encryption: ""
            env: null
            format: json
            git:
              autoadd: false
              autocommit: false
              autopush: false
              command: git
              commitMessageTemplate: ""
              commitMessageTemplateFile: ""
              lfs: false
            gitHub:
              refreshPeriod: 6e+10
            gopass:
              command: gopass
              mode: ""
            gpg:
              args: null
              command: gpg
              recipient: ""
              recipients: null
              suffix: .asc
              symmetric: false
            hooks: null
            interactive: false
            interpreters:
              bat:
                args: null
                command: ""
              cmd:
                args: null
                command: ""
              com:
                args: null
                command: ""
              exe:
                args: null
                command: ""
              nu:
                args: null
                command: nu
              pl:
                args: null
                command: perl
              ps1:
                args: null
                command: ""
              py:
                args: null
                command: python3
              rb:
                args: null
                command: ruby
            keepassxc:
              args: null
              command: keepassxc-cli
              database: ""
              mode: cache-password
              prompt: true
            keeper:
              args: null
              command: keeper
            lastpass:
              command: lpass
            lessInteractive: false
            merge:
              args: null
              command: vimdiff
            mode: file
            onepassword:
              command: op
              mode: account
              prompt: true
            pager: ""
            pagerArgs: null
            pass:
              command: pass
            passhole:
              args: null
              command: ph
              prompt: true
            persistentState: ""
            pinentry:
              args: null
              command: ""
              options:
              - allow-external-password-cache
            progress: auto
            protonPass:
              command: pass-cli
            rbw:
              command: rbw
            safe: true
            scriptEnv: null
            scriptTempDir: ""
            secret:
              args: null
              command: ""
            sourceDir: /config2/source
            status:
              exclude: []
              pathStyle: relative
            tempDir: $WORK/.tmp
            template:
              options:
              - missingkey=error
            textConv: null
            umask: 18.0
            update:
              apply: true
              args: null
              command: ""
              recurseSubmodules: true
            useBuiltinAge: auto
            useBuiltinGit: auto
            vault:
              command: vault
            verbose: false
            verify:
              exclude: []
            warnings:
              configFileTemplateHasChanged: true
            workingTree: /config2/source
          configFile: $WORK/home2/user/.chezmoi.yaml
          destDir: $WORK/home2/user
          executable: /tmp/testscript-main23456104/bin/chezmoi
          flags:
            dryRun: false
            force: false
            keepGoing: false
            noPager: false
            noTTY: false
          fqdnHostname: arch-nspawn-4102825
          gid: "1002"
          group: builduser
          homeDir: $WORK/home2/user
          hostname: arch-nspawn-4102825
          kernel:
            osrelease: 6.18.31-1-lts
            ostype: Linux
            version: "#1 SMP PREEMPT_DYNAMIC Fri, 15 May 2026 15:01:51 +0000"
          os: linux
          osRelease:
            ansiColor: 38;2;23;147;209
            bugReportURL: https://gitlab.archlinux.org/groups/archlinux/-/issues
            buildID: rolling
            documentationURL: https://wiki.archlinux.org/
            homeURL: https://archlinux.org/
            id: arch
            logo: archlinux-logo
            name: Arch Linux
            prettyName: Arch Linux
            privacyPolicyURL: https://terms.archlinux.org/docs/privacy-policy/
            supportURL: https://bbs.archlinux.org/
          pathListSeparator: ":"
          pathSeparator: /
          rawHomeDir: $WORK/home2/user
          sourceDir: /config2/source
          uid: "1002"
          username: builduser
          version:
            builtBy: testscript
            commit: HEAD
            date: "2026-07-20T20:42:28Z"
            version: v2.0.0+test
          windowsVersion: {}
          workingTree: /config2/source
        > stdout 'sourceDir: .*/config2/source'
        # test that the config file can be in JSONC format (0.265s)
        > exec chezmoi data --config=$HOME/.chezmoi.jsonc --format=yaml
        [stdout]
        chezmoi:
          arch: amd64
          args:
          - chezmoi
          - data
          - --config=$WORK/home2/user/.chezmoi.jsonc
          - --format=yaml
          cacheDir: $WORK/home2/user/.cache/chezmoi
          command: data
          commandDir: $WORK
          config:
            add:
              encrypt: false
              secrets: warning
              templateSymlinks: false
            age:
              args: null
              command: age
              identities: null
              identity: ""
              passphrase: false
              recipient: ""
              recipients: null
              recipientsFile: ""
              recipientsFiles: null
              suffix: .age
              symmetric: false
              useBuiltin: false
            awsSecretsManager:
              profile: ""
              region: ""
            azureKeyVault:
              defaultVault: ""
            bitwarden:
              command: bw
              unlock: false
            bitwardenSecrets:
              command: bws
            cacheDir: $WORK/home2/user/.cache/chezmoi
            cd:
              args: null
              command: ""
            color: auto
            completion:
              custom: false
            dashlane:
              args: null
              command: dcli
            data: {}
            destDir: $WORK/home2/user
            diff:
              args: null
              command: ""
              exclude: []
              pager: ""
              pagerArgs: null
              reverse: false
              scriptContents: true
            docker:
              command: docker
            doppler:
              args: null
              command: doppler
              config: ""
              project: ""
            edit:
              apply: false
              args: null
              command: ""
              hardlink: true
              minDuration: 1e+09
              watch: false
            ejson:
              key: ""
              keyDir: /opt/ejson/keys
            encryption: ""
            env: null
            format: json
            git:
              autoadd: false
              autocommit: false
              autopush: false
              command: git
              commitMessageTemplate: ""
              commitMessageTemplateFile: ""
              lfs: false
            gitHub:
              refreshPeriod: 6e+10
            gopass:
              command: gopass
              mode: ""
            gpg:
              args: null
              command: gpg
              recipient: ""
              recipients: null
              suffix: .asc
              symmetric: false
            hooks: null
            interactive: false
            interpreters:
              bat:
                args: null
                command: ""
              cmd:
                args: null
                command: ""
              com:
                args: null
                command: ""
              exe:
                args: null
                command: ""
              nu:
                args: null
                command: nu
              pl:
                args: null
                command: perl
              ps1:
                args: null
                command: ""
              py:
                args: null
                command: python3
              rb:
                args: null
                command: ruby
            keepassxc:
              args: null
              command: keepassxc-cli
              database: ""
              mode: cache-password
              prompt: true
            keeper:
              args: null
              command: keeper
            lastpass:
              command: lpass
            lessInteractive: false
            merge:
              args: null
              command: vimdiff
            mode: file
            onepassword:
              command: op
              mode: account
              prompt: true
            pager: ""
            pagerArgs: null
            pass:
              command: pass
            passhole:
              args: null
              command: ph
              prompt: true
            persistentState: ""
            pinentry:
              args: null
              command: ""
              options:
              - allow-external-password-cache
            progress: auto
            protonPass:
              command: pass-cli
            rbw:
              command: rbw
            safe: true
            scriptEnv: null
            scriptTempDir: ""
            secret:
              args: null
              command: ""
            sourceDir: /config3/source
            status:
              exclude: []
              pathStyle: relative
            tempDir: $WORK/.tmp
            template:
              options:
              - missingkey=error
            textConv: null
            umask: 18.0
            update:
              apply: true
              args: null
              command: ""
              recurseSubmodules: true
            useBuiltinAge: auto
            useBuiltinGit: auto
            vault:
              command: vault
            verbose: false
            verify:
              exclude: []
            warnings:
              configFileTemplateHasChanged: true
            workingTree: /config3/source
          configFile: $WORK/home2/user/.chezmoi.jsonc
          destDir: $WORK/home2/user
          executable: /tmp/testscript-main23456104/bin/chezmoi
          flags:
            dryRun: false
            force: false
            keepGoing: false
            noPager: false
            noTTY: false
          fqdnHostname: arch-nspawn-4102825
          gid: "1002"
          group: builduser
          homeDir: $WORK/home2/user
          hostname: arch-nspawn-4102825
          kernel:
            osrelease: 6.18.31-1-lts
            ostype: Linux
            version: "#1 SMP PREEMPT_DYNAMIC Fri, 15 May 2026 15:01:51 +0000"
          os: linux
          osRelease:
            ansiColor: 38;2;23;147;209
            bugReportURL: https://gitlab.archlinux.org/groups/archlinux/-/issues
            buildID: rolling
            documentationURL: https://wiki.archlinux.org/
            homeURL: https://archlinux.org/
            id: arch
            logo: archlinux-logo
            name: Arch Linux
            prettyName: Arch Linux
            privacyPolicyURL: https://terms.archlinux.org/docs/privacy-policy/
            supportURL: https://bbs.archlinux.org/
          pathListSeparator: ":"
          pathSeparator: /
          rawHomeDir: $WORK/home2/user
          sourceDir: /config3/source
          uid: "1002"
          username: builduser
          version:
            builtBy: testscript
            commit: HEAD
            date: "2026-07-20T20:42:29Z"
            version: v2.0.0+test
          windowsVersion: {}
          workingTree: /config3/source
        > stdout 'sourceDir: .*/config3/source'
        # test that the cache directory can be set (0.052s)
        > exec chezmoi data --cache=/flag/cache --format=yaml
        [stdout]
        chezmoi:
          arch: amd64
          args:
          - chezmoi
          - data
          - --cache=/flag/cache
          - --format=yaml
          cacheDir: /flag/cache
          command: data
          commandDir: $WORK
          config:
            add:
              encrypt: false
              secrets: warning
              templateSymlinks: false
            age:
              args: null
              command: age
              identities: null
              identity: ""
              passphrase: false
              recipient: ""
              recipients: null
              recipientsFile: ""
              recipientsFiles: null
              suffix: .age
              symmetric: false
              useBuiltin: false
            awsSecretsManager:
              profile: ""
              region: ""
            azureKeyVault:
              defaultVault: ""
            bitwarden:
              command: bw
              unlock: false
            bitwardenSecrets:
              command: bws
            cacheDir: /flag/cache
            cd:
              args: null
              command: ""
            color: auto
            completion:
              custom: false
            dashlane:
              args: null
              command: dcli
            data: {}
            destDir: $WORK/home2/user
            diff:
              args: null
              command: ""
              exclude: []
              pager: ""
              pagerArgs: null
              reverse: false
              scriptContents: true
            docker:
              command: docker
            doppler:
              args: null
              command: doppler
              config: ""
              project: ""
            edit:
              apply: false
              args: null
              command: ""
              hardlink: true
              minDuration: 1e+09
              watch: false
            ejson:
              key: ""
              keyDir: /opt/ejson/keys
            encryption: ""
            env: null
            format: json
            git:
              autoadd: false
              autocommit: false
              autopush: false
              command: git
              commitMessageTemplate: ""
              commitMessageTemplateFile: ""
              lfs: false
            gitHub:
              refreshPeriod: 6e+10
            gopass:
              command: gopass
              mode: ""
            gpg:
              args: null
              command: gpg
              recipient: ""
              recipients: null
              suffix: .asc
              symmetric: false
            hooks: null
            interactive: false
            interpreters:
              bat:
                args: null
                command: ""
              cmd:
                args: null
                command: ""
              com:
                args: null
                command: ""
              exe:
                args: null
                command: ""
              nu:
                args: null
                command: nu
              pl:
                args: null
                command: perl
              ps1:
                args: null
                command: ""
              py:
                args: null
                command: python3
              rb:
                args: null
                command: ruby
            keepassxc:
              args: null
              command: keepassxc-cli
              database: ""
              mode: cache-password
              prompt: true
            keeper:
              args: null
              command: keeper
            lastpass:
              command: lpass
            lessInteractive: false
            merge:
              args: null
              command: vimdiff
            mode: file
            onepassword:
              command: op
              mode: account
              prompt: true
            pager: ""
            pagerArgs: null
            pass:
              command: pass
            passhole:
              args: null
              command: ph
              prompt: true
            persistentState: ""
            pinentry:
              args: null
              command: ""
              options:
              - allow-external-password-cache
            progress: auto
            protonPass:
              command: pass-cli
            rbw:
              command: rbw
            safe: true
            scriptEnv: null
            scriptTempDir: ""
            secret:
              args: null
              command: ""
            sourceDir: /config/source
            status:
              exclude: []
              pathStyle: relative
            tempDir: $WORK/.tmp
            template:
              options:
              - missingkey=error
            textConv: null
            umask: 18.0
            update:
              apply: true
              args: null
              command: ""
              recurseSubmodules: true
            useBuiltinAge: auto
            useBuiltinGit: auto
            vault:
              command: vault
            verbose: false
            verify:
              exclude: []
            warnings:
              configFileTemplateHasChanged: true
            workingTree: /config/source
          configFile: $WORK/home2/user/.config/chezmoi/chezmoi.toml
          destDir: $WORK/home2/user
          executable: /tmp/testscript-main23456104/bin/chezmoi
          flags:
            dryRun: false
            force: false
            keepGoing: false
            noPager: false
            noTTY: false
          fqdnHostname: arch-nspawn-4102825
          gid: "1002"
          group: builduser
          homeDir: $WORK/home2/user
          hostname: arch-nspawn-4102825
          kernel:
            osrelease: 6.18.31-1-lts
            ostype: Linux
            version: "#1 SMP PREEMPT_DYNAMIC Fri, 15 May 2026 15:01:51 +0000"
          os: linux
          osRelease:
            ansiColor: 38;2;23;147;209
            bugReportURL: https://gitlab.archlinux.org/groups/archlinux/-/issues
            buildID: rolling
            documentationURL: https://wiki.archlinux.org/
            homeURL: https://archlinux.org/
            id: arch
            logo: archlinux-logo
            name: Arch Linux
            prettyName: Arch Linux
            privacyPolicyURL: https://terms.archlinux.org/docs/privacy-policy/
            supportURL: https://bbs.archlinux.org/
          pathListSeparator: ":"
          pathSeparator: /
          rawHomeDir: $WORK/home2/user
          sourceDir: /config/source
          uid: "1002"
          username: builduser
          version:
            builtBy: testscript
            commit: HEAD
            date: "2026-07-20T20:42:29Z"
            version: v2.0.0+test
          windowsVersion: {}
          workingTree: /config/source
        > stdout 'cacheDir: .*/flag/cache'
        > [windows] stop 'remaining tests require /dev/stdin'
        # test that chezmoi can read the config from stdin (0.048s)
        > stdin home2/user/.chezmoi.yaml
        > exec chezmoi data --config=/dev/stdin --config-format=yaml --format=yaml
        [stdout]
        chezmoi:
          arch: amd64
          args:
          - chezmoi
          - data
          - --config=/dev/stdin
          - --config-format=yaml
          - --format=yaml
          cacheDir: $WORK/home2/user/.cache/chezmoi
          command: data
          commandDir: $WORK
          config:
            add:
              encrypt: false
              secrets: warning
              templateSymlinks: false
            age:
              args: null
              command: age
              identities: null
              identity: ""
              passphrase: false
              recipient: ""
              recipients: null
              recipientsFile: ""
              recipientsFiles: null
              suffix: .age
              symmetric: false
              useBuiltin: false
            awsSecretsManager:
              profile: ""
              region: ""
            azureKeyVault:
              defaultVault: ""
            bitwarden:
              command: bw
              unlock: false
            bitwardenSecrets:
              command: bws
            cacheDir: $WORK/home2/user/.cache/chezmoi
            cd:
              args: null
              command: ""
            color: auto
            completion:
              custom: false
            dashlane:
              args: null
              command: dcli
            data: {}
            destDir: $WORK/home2/user
            diff:
              args: null
              command: ""
              exclude: []
              pager: ""
              pagerArgs: null
              reverse: false
              scriptContents: true
            docker:
              command: docker
            doppler:
              args: null
              command: doppler
              config: ""
              project: ""
            edit:
              apply: false
              args: null
              command: ""
              hardlink: true
              minDuration: 1e+09
              watch: false
            ejson:
              key: ""
              keyDir: /opt/ejson/keys
            encryption: ""
            env: null
            format: json
            git:
              autoadd: false
              autocommit: false
              autopush: false
              command: git
              commitMessageTemplate: ""
              commitMessageTemplateFile: ""
              lfs: false
            gitHub:
              refreshPeriod: 6e+10
            gopass:
              command: gopass
              mode: ""
            gpg:
              args: null
              command: gpg
              recipient: ""
              recipients: null
              suffix: .asc
              symmetric: false
            hooks: null
            interactive: false
            interpreters:
              bat:
                args: null
                command: ""
              cmd:
                args: null
                command: ""
              com:
                args: null
                command: ""
              exe:
                args: null
                command: ""
              nu:
                args: null
                command: nu
              pl:
                args: null
                command: perl
              ps1:
                args: null
                command: ""
              py:
                args: null
                command: python3
              rb:
                args: null
                command: ruby
            keepassxc:
              args: null
              command: keepassxc-cli
              database: ""
              mode: cache-password
              prompt: true
            keeper:
              args: null
              command: keeper
            lastpass:
              command: lpass
            lessInteractive: false
            merge:
              args: null
              command: vimdiff
            mode: file
            onepassword:
              command: op
              mode: account
              prompt: true
            pager: ""
            pagerArgs: null
            pass:
              command: pass
            passhole:
              args: null
              command: ph
              prompt: true
            persistentState: ""
            pinentry:
              args: null
              command: ""
              options:
              - allow-external-password-cache
            progress: auto
            protonPass:
              command: pass-cli
            rbw:
              command: rbw
            safe: true
            scriptEnv: null
            scriptTempDir: ""
            secret:
              args: null
              command: ""
            sourceDir: /config2/source
            status:
              exclude: []
              pathStyle: relative
            tempDir: $WORK/.tmp
            template:
              options:
              - missingkey=error
            textConv: null
            umask: 18.0
            update:
              apply: true
              args: null
              command: ""
              recurseSubmodules: true
            useBuiltinAge: auto
            useBuiltinGit: auto
            vault:
              command: vault
            verbose: false
            verify:
              exclude: []
            warnings:
              configFileTemplateHasChanged: true
            workingTree: /config2/source
          configFile: /dev/stdin
          destDir: $WORK/home2/user
          executable: /tmp/testscript-main23456104/bin/chezmoi
          flags:
            dryRun: false
            force: false
            keepGoing: false
            noPager: false
            noTTY: false
          fqdnHostname: arch-nspawn-4102825
          gid: "1002"
          group: builduser
          homeDir: $WORK/home2/user
          hostname: arch-nspawn-4102825
          kernel:
            osrelease: 6.18.31-1-lts
            ostype: Linux
            version: "#1 SMP PREEMPT_DYNAMIC Fri, 15 May 2026 15:01:51 +0000"
          os: linux
          osRelease:
            ansiColor: 38;2;23;147;209
            bugReportURL: https://gitlab.archlinux.org/groups/archlinux/-/issues
            buildID: rolling
            documentationURL: https://wiki.archlinux.org/
            homeURL: https://archlinux.org/
            id: arch
            logo: archlinux-logo
            name: Arch Linux
            prettyName: Arch Linux
            privacyPolicyURL: https://terms.archlinux.org/docs/privacy-policy/
            supportURL: https://bbs.archlinux.org/
          pathListSeparator: ":"
          pathSeparator: /
          rawHomeDir: $WORK/home2/user
          sourceDir: /config2/source
          uid: "1002"
          username: builduser
          version:
            builtBy: testscript
            commit: HEAD
            date: "2026-07-20T20:42:29Z"
            version: v2.0.0+test
          windowsVersion: {}
          workingTree: /config2/source
        > stdout 'sourceDir: .*/config2/source'
        PASS
        
=== CONT  TestScript/external
=== NAME  TestScript/cd_unix
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] skip 'UNIX only'
        > chmod 755 bin/shell
        # test that chezmoi cd creates source directory if needed (0.048s)
        > exec chezmoi cd
        [stdout]
        shell
        > exists $CHEZMOISOURCEDIR
        > grep ${CHEZMOISOURCEDIR@R} pwd.log
        > rm pwd.log
        # test that chezmoi cd changes into an existing directory and sets the CHEZMOI environment variable (0.129s)
        > exec chezmoi cd
        [stdout]
        shell
        > grep CHEZMOI=1 env.log
        > rm env.log
        > grep ${CHEZMOISOURCEDIR@R} pwd.log
        > rm pwd.log
        # test chat chezmoi cd with an argument changes into the corresponding source directory (0.077s)
        > exec chezmoi cd $HOME${/}.dir
        [stdout]
        shell
        > grep ${CHEZMOISOURCEDIR@R}/dot_dir pwd.log
        > rm pwd.log
        # test that chezmoi cd works when $SHELL environment variable contains spaces (0.148s)
        > env SHELL='shell arg1'
        > exec chezmoi cd
        [stdout]
        shell arg1
        > stdout '^shell arg1$'
        # test that chezmoi cd will not try to change to a non-directory (0.194s)
        > ! exec chezmoi cd $HOME${/}.file
        [stderr]
        chezmoi: $WORK/home/user/.local/share/chezmoi/dot_file: not a directory
        [exit status 1]
        > stderr 'not a directory'
        # test that cd will not try to change to a non-existent directory (0.121s)
        > ! exec chezmoi cd $HOME${/}.notexist
        [stderr]
        chezmoi: $WORK/home/user/.notexist: not managed
        [exit status 1]
        > stderr 'not managed'
        > chhome home2/user
        # test chezmoi cd with shell command set in config file overrides $SHELL environment variable (0.078s)
        > exec chezmoi cd
        [stdout]
        shell arg2
        > stdout '^shell arg2$'
        > env SHELL=$WORK/bin/shell
        > chhome home3/user
        # test that chezmoi cd $HOME with .chezmoiroot changes into .chezmoiroot (0.057s)
        > exec chezmoi cd $HOME
        [stdout]
        shell
        > grep ${CHEZMOISOURCEDIR@R}/home pwd.log
        > rm pwd.log
        PASS
        
=== CONT  TestScript/executetemplate
=== NAME  TestScript/externaldir
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > symlink $CHEZMOISOURCEDIR/dot_vim/external_bundle/symlink -> executable_file
        # test that chezmoi ignores attributes in external_ dirs (0.109s)
        > exec chezmoi apply
        # test that executable_ attributes are ignored and empty files are created (0.000s)
        > cmp $HOME/.vim/bundle/executable_file $CHEZMOISOURCEDIR/dot_vim/external_bundle/executable_file
        # test that scripts are not run (0.000s)
        > cmp $HOME/.vim/bundle/run_script.sh $CHEZMOISOURCEDIR/dot_vim/external_bundle/run_script.sh
        > ! stdout evil
        # test that private_ attributes are ignored and subdirectories are created (0.000s)
        > isdir $HOME/.vim/bundle/private_subdir
        # test that files can be ignored (0.000s)
        > ! exists $HOME/.vim/bundle/private_subdir/.keep
        # test that symlinks are created (0.000s)
        > issymlink $HOME/.vim/bundle/symlink
        # test that symlink_ attributes are ignored (0.000s)
        > cmp $HOME/.vim/bundle/symlink_example $CHEZMOISOURCEDIR/dot_vim/external_bundle/symlink_example
        > ! issymlink $HOME/.vim/bundle/symlink_example
        PASS
        
=== CONT  TestScript/exectemplatefunc
gpg: /tmp/test-gpg-homedir1861137954/trustdb.gpg: trustdb created
gpg: directory '/tmp/test-gpg-homedir1861137954/openpgp-revocs.d' created
=== NAME  TestScript/dumpjson
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [!umask:022] skip
        > mksourcedir
        > exec chezmoi dump --format=json
        [stdout]
        {
          ".create": {
            "type": "file",
            "name": ".create",
            "contents": "# contents of .create\n",
            "perm": 420
          },
          ".dir": {
            "type": "dir",
            "name": ".dir",
            "perm": 493
          },
          ".dir/file": {
            "type": "file",
            "name": ".dir/file",
            "contents": "# contents of .dir/file\n",
            "perm": 420
          },
          ".dir/subdir": {
            "type": "dir",
            "name": ".dir/subdir",
            "perm": 493
          },
          ".dir/subdir/file": {
            "type": "file",
            "name": ".dir/subdir/file",
            "contents": "# contents of .dir/subdir/file\n",
            "perm": 420
          },
          ".empty": {
            "type": "file",
            "name": ".empty",
            "contents": "",
            "perm": 420
          },
          ".executable": {
            "type": "file",
            "name": ".executable",
            "contents": "# contents of .executable\n",
            "perm": 493
          },
          ".file": {
            "type": "file",
            "name": ".file",
            "contents": "# contents of .file\n",
            "perm": 420
          },
          ".private": {
            "type": "file",
            "name": ".private",
            "contents": "# contents of .private\n",
            "perm": 384
          },
          ".readonly": {
            "type": "file",
            "name": ".readonly",
            "contents": "# contents of .readonly\n",
            "perm": 292
          },
          ".symlink": {
            "type": "symlink",
            "name": ".symlink",
            "linkname": ".dir/subdir/file"
          },
          ".template": {
            "type": "file",
            "name": ".template",
            "contents": "key = value\n",
            "perm": 420
          }
        }
        > cmp stdout golden/dump.json
        > exec chezmoi dump --format=json $HOME${/}.file
        [stdout]
        {
          ".file": {
            "type": "file",
            "name": ".file",
            "contents": "# contents of .file\n",
            "perm": 420
          }
        }
        > cmp stdout golden/dump-file.json
        > exec chezmoi dump --format=json $HOME${/}.dir
        [stdout]
        {
          ".dir": {
            "type": "dir",
            "name": ".dir",
            "perm": 493
          },
          ".dir/file": {
            "type": "file",
            "name": ".dir/file",
            "contents": "# contents of .dir/file\n",
            "perm": 420
          },
          ".dir/subdir": {
            "type": "dir",
            "name": ".dir/subdir",
            "perm": 493
          },
          ".dir/subdir/file": {
            "type": "file",
            "name": ".dir/subdir/file",
            "contents": "# contents of .dir/subdir/file\n",
            "perm": 420
          }
        }
        > cmp stdout golden/dump-dir.json
        > exec chezmoi dump --format=json --recursive=false $HOME${/}.dir
        [stdout]
        {
          ".dir": {
            "type": "dir",
            "name": ".dir",
            "perm": 493
          }
        }
        > cmp stdout golden/dump-dir-non-recursive.json
        > ! exec chezmoi dump $HOME${/}.inputrc
        [stderr]
        chezmoi: $WORK/home/user/.inputrc: not managed
        [exit status 1]
        > stderr 'not managed'
        PASS
        
=== CONT  TestScript/issue4787
=== NAME  TestScript/exclude
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [!umask:022] skip
        # test chezmoi diff --exclude (0.141s)
        > exec chezmoi diff --exclude=scripts
        [stdout]
        diff --git a/.file b/.file
        new file mode 100644
        index 0000000000000000000000000000000000000000..8a52cb9ce9551221716a53786ad74104c5902362
        --- /dev/null
        +++ b/.file
        @@ -0,0 +1 @@
        +# contents of .file
        > [unix] cmp stdout golden/diff-no-scripts.diff
        > [windows] cmp stdout golden/diff-no-scripts-windows.diff
        # test that chezmoi diff respects the diff.exclude configuration variable (0.122s)
        > exec chezmoi diff
        [stdout]
        diff --git a/.file b/.file
        new file mode 100644
        index 0000000000000000000000000000000000000000..8a52cb9ce9551221716a53786ad74104c5902362
        --- /dev/null
        +++ b/.file
        @@ -0,0 +1 @@
        +# contents of .file
        diff --git a/script.sh b/script.sh
        new file mode 100755
        index 0000000000000000000000000000000000000000..3747a7ba08ee591c41b7c518e430d2802137eac4
        --- /dev/null
        +++ b/script.sh
        @@ -0,0 +1,3 @@
        +#!/bin/sh
        +
        +echo $*
        > [unix] cmp stdout golden/diff.diff
        > [windows] cmp stdout golden/diff-windows.diff
        > mkdir $CHEZMOICONFIGDIR
        > cp golden/chezmoi.toml $CHEZMOICONFIGDIR
        > exec chezmoi diff
        [stdout]
        diff --git a/.file b/.file
        new file mode 100644
        index 0000000000000000000000000000000000000000..8a52cb9ce9551221716a53786ad74104c5902362
        --- /dev/null
        +++ b/.file
        @@ -0,0 +1 @@
        +# contents of .file
        > [unix] cmp stdout golden/diff-no-scripts.diff
        > [windows] cmp stdout golden/diff-no-scripts-windows.diff
        > chhome home2/user
        # test that chezmoi diff --exclude=always excludes scripts that are always run (0.093s)
        > exec chezmoi diff --exclude=always
        [stdout]
        diff --git a/script-once.sh b/script-once.sh
        new file mode 100755
        index 0000000000000000000000000000000000000000..d7dff6100cefc930f4161600c12b6f7ea37b7d3a
        --- /dev/null
        +++ b/script-once.sh
        @@ -0,0 +1,3 @@
        +#!/bin/sh
        +
        +echo once
        > cmp stdout golden/diff-exclude-always.diff
        PASS
        
=== CONT  TestScript/script_windows
=== NAME  TestScript/discussion4732
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > exec tar czf www/archive1.tar.gz archive1
        > exec tar czf www/archive2.tar.gz archive2
        > exec tar czf www/archive3.tar.gz archive3
        > exec tar czf www/archive4.tar.gz archive4
        > httpd www
        # test that chezmoi externals allow multiple entries targeting the same directory in a single file (0.259s)
        > exec chezmoi apply
        > cmp $HOME/.local/bin/uv archive1/uv
        > cmp $HOME/.local/bin/uvx archive1/uvx
        > cmp $HOME/.local/bin/ya archive2/ya
        > cmp $HOME/.local/bin/yazi archive2/yazi
        > cmp $HOME/.local/bin/todo.sh archive3/todo.sh
        > cmp $HOME/.local/bin/print.sh archive4/print.sh
        PASS
        
=== CONT  TestScript/script_unix
=== NAME  TestScript/issue2865
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [!exec:git] skip 'git not found in $PATH'
        > mkgitconfig
        # create a commit (0.380s)
        > exec chezmoi git init
        [stdout]
        Initialized empty Git repository in $WORK/home/user/.local/share/chezmoi/.git/
        > exec chezmoi git add .
        > exec chezmoi git commit -- --message 'Initial commit'
        [stdout]
        [master (root-commit) 3ac178e] Initial commit
         5 files changed, 14 insertions(+)
         create mode 100644 .chezmoiroot
         create mode 100644 home/.chezmoi.toml.tmpl
         create mode 100644 home/.chezmoiignore
         create mode 100644 home/.chezmoiscripts/run_once_echo.ps1.tmpl
         create mode 100644 home/.chezmoiscripts/run_once_echo.sh.tmpl
        > chhome home2/user
        # test that .chezmoi.sourceDir is set correctly when .chezmoiroot is present (chezmoi init --apply in a clean home directory) (0.572s)
        > mkgitconfig
        > exec chezmoi init --apply file://$WORK/home/user/.local/share/chezmoi
        [stdout]
        .chezmoi.sourceDir=$WORK/home2/user/.local/share/chezmoi/home
        CHEZMOI_SOURCE_DIR=$WORK/home2/user/.local/share/chezmoi/home
        [stderr]
        Cloning into '$WORK/home2/user/.local/share/chezmoi'...
        > stdout '\.chezmoi\.sourceDir=.*/\.local/share/chezmoi/home\r?$'
        > stdout 'CHEZMOI_SOURCE_DIR=.*/\.local/share/chezmoi/home\r?$'
        # test that .chezmoi.sourceDir is set correctly in config file (0.062s)
        > exec chezmoi execute-template '{{ .testDir }}'
        [stdout]
        $WORK/home2/user/.local/share/chezmoi/home> stdout '/.local/share/chezmoi/home\r?$'
        PASS
        
=== NAME  TestScript/umask_unix
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] skip 'UNIX only'
        > [!umask:022] skip
        > chmod 777 $HOME/.file
        # test that chezmoi diff prints a diff when a file's permissions are different (0.025s)
        > exec chezmoi diff
        [stdout]
        diff --git a/.file b/.file
        old mode 100777
        new mode 100644
        > cmp stdout golden/diff
        # test that chezmoi verify fails when a file's permissions are different (0.113s)
        > ! exec chezmoi verify
        [exit status 1]
        # test that chezmoi apply updates file permissions (0.302s)
        > exec chezmoi apply --force
        > exec chezmoi diff
        > ! stdout .
        > exec chezmoi verify
        # test that chezmoi ignores incorrect permissions in the persistent state if the actual file permissions match and updates the persistent state (0.394s)
        > exec chezmoi state get --bucket=entryState --key=$HOME/.file
        [stdout]
        {
          "type": "file",
          "mode": 420,
          "contentsSHA256": "634a4dd193c7b3b926d2e08026aa81a416fd41cec52854863b974af422495663"
        }
        > cmp stdout golden/state-file-get.json
        > exec chezmoi state set --bucket=entryState --key=$HOME/.file --value={"type":"file","mode":436,"contentsSHA256":"634a4dd193c7b3b926d2e08026aa81a416fd41cec52854863b974af422495663"}
        > exec chezmoi apply --verbose
        > ! stdout .
        > exec chezmoi state get --bucket=entryState --key=$HOME/.file
        [stdout]
        {
          "type": "file",
          "mode": 420,
          "contentsSHA256": "634a4dd193c7b3b926d2e08026aa81a416fd41cec52854863b974af422495663"
        }
        > cmp stdout golden/state-file-get.json
        # test that chezmoi ignores incorrect permissions in the persistent state if the actual dir permissions match and updates the persistent state
        # chezmoi state get --bucket=entryState --key=$HOME/.dir # FIXME understand why un-commenting this and the next line causes the test to fail
        # cmp stdout golden/state-dir-get (0.319s)
        > exec chezmoi state set --bucket=entryState --key=$HOME/.dir --value={"type":"dir","mode":509}
        > exec chezmoi apply --verbose
        > ! stdout .
        > exec chezmoi state get --bucket=entryState --key=$HOME/.dir
        [stdout]
        {
          "type": "dir",
          "mode": 2147484141
        }
        > cmp stdout golden/state-dir-get.json
        PASS
        
=== CONT  TestScript/script
=== CONT  TestScript/runscriptdir_unix
=== NAME  TestScript/script_windows
    cmd.go:380: Windows only
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [unix] skip 'Windows only'
        
=== CONT  TestScript/root
gpg: revocation certificate stored as '/tmp/test-gpg-homedir1861137954/openpgp-revocs.d/97944F86BFFE256548EFFD7B8190C9EFEDDBDCB2.rev'
=== NAME  TestScript/issue4787
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi forget on a file in an exact_ directory does not delete the source directory (0.057s)
        > exec chezmoi forget --debug --force $HOME${/}.dir${/}file2
        [stderr]
        time=2026-07-20T20:42:29.581Z level=INFO msg=persistentPreRunRootE version.version=v2.0.0+test version.commit=HEAD version.date=2026-07-20T20:42:29Z version.builtBy=testscript args="[chezmoi forget --debug --force $WORK/home/user/.dir/file2]" goVersion=go1.26.5-X:nodwarf5
        time=2026-07-20T20:42:29.581Z level=ERROR msg=Stat component=system err="stat $WORK/home/user/.config/chezmoi/chezmoistate.boltdb: no such file or directory" name=$WORK/home/user/.config/chezmoi/chezmoistate.boltdb
        time=2026-07-20T20:42:29.581Z level=ERROR msg=Stat component=system err="stat $WORK/home/user/.local/share/chezmoi/.git: no such file or directory" name=$WORK/home/user/.local/share/chezmoi/.git
        time=2026-07-20T20:42:29.582Z level=ERROR msg=Stat component=system err="stat $WORK/home/user/.local/share/.git: no such file or directory" name=$WORK/home/user/.local/share/.git
        time=2026-07-20T20:42:29.582Z level=ERROR msg=Stat component=system err="stat $WORK/home/user/.local/.git: no such file or directory" name=$WORK/home/user/.local/.git
        time=2026-07-20T20:42:29.582Z level=ERROR msg=ReadFile component=system err="open $WORK/home/user/.local/share/chezmoi/.chezmoiroot: no such file or directory" name=$WORK/home/user/.local/share/chezmoi/.chezmoiroot size=0 data=""
        time=2026-07-20T20:42:29.583Z level=ERROR msg=ReadFile component=system err="open $WORK/home/user/.local/share/chezmoi/.chezmoiversion: no such file or directory" name=$WORK/home/user/.local/share/chezmoi/.chezmoiversion size=0 data=""
        time=2026-07-20T20:42:29.583Z level=INFO msg=Stat component=system name=$WORK/home/user/.local/share/chezmoi
        time=2026-07-20T20:42:29.583Z level=INFO msg=Stat component=system name=$WORK/home/user/.local/share/chezmoi
        time=2026-07-20T20:42:29.583Z level=INFO msg=ReadDir component=system name=$WORK/home/user/.local/share/chezmoi
        time=2026-07-20T20:42:29.583Z level=INFO msg=ReadDir component=system name=$WORK/home/user/.local/share/chezmoi/exact_dot_dir
        time=2026-07-20T20:42:29.583Z level=INFO msg=ReadDir component=system name=$WORK/home/user/.dir
        chezmoi: warning: .dir/file2: ignoring implicitly managed file
        time=2026-07-20T20:42:29.583Z level=INFO msg=Close component=persistentState
        > stderr 'warning: .dir/file2: ignoring implicitly managed file'
        > exists $CHEZMOISOURCEDIR
        PASS
        
=== CONT  TestScript/removedir
=== NAME  TestScript/exectemplatefunc
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [!exec:true] skip 'true not found in $PATH'
        > [!exec:false] skip 'false not found in $PATH'
        # test that the exec template function returns true if the command succeeds (0.117s)
        > exec chezmoi execute-template '{{ exec "true" }}'
        [stdout]
        true> stdout ^true$
        # test that the exec template function returns false if the command fails (0.147s)
        > exec chezmoi execute-template '{{ exec "false" }}'
        [stdout]
        false> stdout ^false$
        # test that the exec template function returns fails if the command cannot be found (0.046s)
        > ! exec chezmoi execute-template '{{ exec "non-existent-command" }}'
        [stderr]
        chezmoi: template: arg1:1:3: executing "arg1" at <exec "non-existent-command">: error calling exec: exec: "non-existent-command": executable file not found in $PATH
        [exit status 1]
        PASS
        
=== CONT  TestScript/remove
=== NAME  TestScript/script
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [unix] chmod 755 bin/perl
        > [unix] chmod 755 bin/python3
        > [unix] chmod 755 bin/ruby
        > [windows] unix2dos golden/stdout
        # test that chezmoi apply uses python3 and ruby from $PATH instead of the system Python and Ruby (0.096s)
        > exec chezmoi apply
        [stdout]
        Hello from fake Perl
        Hello from fake Python
        Hello from fake Ruby
        > cmp stdout golden/stdout
        PASS
        
=== CONT  TestScript/readdreencrypt
=== NAME  TestScript/edgecases
    cmd.go:380: FIXME make the following test pass
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that the source directory can be a symlink to another directory (0.088s)
        > symlink $HOME/.chezmoi -> $CHEZMOISOURCEDIR
        > exec chezmoi apply --source=$HOME${/}.chezmoi
        > cmp $HOME/.file golden/.file
        # test that adding a directory ending in a slash only adds the directory once (0.041s)
        > mkdir $HOME/.dir
        > exec chezmoi add $HOME${/}.dir/
        > ! exists $CHEZMOISOURCEDIR/dot_dir/dot_dir
        > chhome home2/user
        # test that chezmoi reports an inconsistent state error when a file should be both removed and present (0.077s)
        > ! exec chezmoi apply
        [stderr]
        chezmoi: .file: inconsistent state ($WORK/home2/user/.local/share/chezmoi/dot_file, remove)
        [exit status 1]
        > stderr 'chezmoi: \.file: inconsistent state'
        > chhome home3/user
        # test that chezmoi reports an error if there is a .chezmoi* file in the .chezmoitemplates directory (0.076s)
        > ! exec chezmoi status
        [stderr]
        chezmoi: $WORK/home3/user/.local/share/chezmoi/.chezmoitemplates/.chezmoiignore: not allowed in .chezmoitemplates directory
        [exit status 1]
        > stderr 'not allowed in \.chezmoitemplates directory'
        # test that chezmoi data returns an error if an unknown read format is specified (0.191s)
        > ! exec chezmoi init --config-format=yml
        [stderr]
        chezmoi: invalid argument "yml" for "--config-format" flag: invalid value
        [exit status 1]
        > stderr 'flag: invalid value'
        # test that chezmoi data returns an error if an unknown write format is specified (0.115s)
        > ! exec chezmoi data --format=yml
        [stderr]
        chezmoi: invalid argument "yml" for "-f, --format" flag: invalid value
        [exit status 1]
        > stderr 'flag: invalid value'
        > skip 'FIXME make the following test pass'
        
=== CONT  TestScript/readd-exact
=== NAME  TestScript/externalcompression
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [exec:bzip2] exec bzip2 www/file-bzip2
        > [exec:gzip] exec gzip www/file-gzip
        > [exec:xz] exec xz www/file-xz
        > [exec:zstd] exec zstd www/file-zstd
        [stderr]
        www/file-zstd        :154.17%   (    24 B =>     37 B, www/file-zstd.zst) 
        > httpd www
        # test that chezmoi apply decompresses files in multiple formats (0.150s)
        > exec chezmoi apply
        > [exec:bzip2] cmp $HOME/file-bzip2 golden/file-bzip2
        > [exec:gzip] cmp $HOME/file-gzip golden/file-gzip
        > [exec:xz] cmp $HOME/file-xz golden/file-xz
        > [exec:zstd] cmp $HOME/file-zstd golden/file-zstd
        PASS
        
=== CONT  TestScript/re-add
=== NAME  TestScript/remove
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi remove produces an error (0.078s)
        > ! exec chezmoi remove
        [stderr]
        Command "remove" is deprecated, use forget or destroy instead
        [exit status 1]
        > stderr 'Command "remove" is deprecated, use forget or destroy instead'
        # test that chezmoi rm produces an error (0.053s)
        > ! exec chezmoi rm
        [stderr]
        Command "remove" is deprecated, use forget or destroy instead
        [exit status 1]
        > stderr 'Command "remove" is deprecated, use forget or destroy instead'
        PASS
        
=== CONT  TestScript/rbw
=== NAME  TestScript/removedir
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi apply removes empty directories, but not non-empty directories, or non-existent directories (0.040s)
        > mkdir $HOME/.empty_dir
        > exec chezmoi apply
        > exists $HOME/.dir
        > ! exists $HOME/.empty_dir
        > chhome home2/user
        # test that chezmoi apply will remove a directory even if it is actually a file (0.032s)
        > exec chezmoi apply
        > ! exists $HOME/.dir
        > chhome home3/user
        # test that chezmoi apply removes empty directories recursively (0.137s)
        > mkdir $HOME/.dir/subdir
        > exec chezmoi apply
        > ! exists $HOME/.dir
        PASS
        
=== CONT  TestScript/purge
=== NAME  TestScript/runscriptdir_unix
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] skip 'UNIX only'
        > [!umask:022] skip
        > exec chezmoi apply
        [stdout]
        $WORK/home/user/dir
        > cmpenv stdout golden/apply
        > env $=$
        > exec chezmoi dump
        [stdout]
        {
          "dir": {
            "type": "dir",
            "name": "dir",
            "perm": 493
          },
          "dir/script.sh": {
            "type": "script",
            "name": "dir/script.sh",
            "contents": "#!/bin/sh\n\npwd\n",
            "condition": "always"
          }
        }
        > cmp stdout golden/dump.json
        > exec chezmoi archive --output=archive.tar
        > exec tar -tf archive.tar
        [stdout]
        dir/
        dir/script.sh
        > [openbsd] cmp stdout golden/archive-openbsd
        > [!openbsd] cmp stdout golden/archive
        PASS
        
=== CONT  TestScript/protonpass
=== NAME  TestScript/readdreencrypt
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > mkageconfig
        > mkdir golden
        > exec chezmoi add --encrypt $HOME${/}.file
        > exists $CHEZMOISOURCEDIR/encrypted_dot_file.age
        > cp $CHEZMOISOURCEDIR/encrypted_dot_file.age golden
        # test that chezmoi re-add does not re-add unchanged encrypted files (0.082s)
        > exec chezmoi re-add
        > cmp $CHEZMOISOURCEDIR/encrypted_dot_file.age golden/encrypted_dot_file.age
        # test that chezmoi re-add --re-encrypt does re-encrypt unchanged encrypted files (0.094s)
        > exec chezmoi re-add --force --re-encrypt
        > ! cmp $CHEZMOISOURCEDIR/encrypted_dot_file.age golden/encrypted_dot_file.age
        PASS
        
=== CONT  TestScript/plugin
=== NAME  TestScript/externaldiff
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] skip 'UNIX only'
        > chmod 755 bin/external-diff
        # test that chezmoi diff invokes the external diff command for scripts (0.155s)
        > exec chezmoi diff
        [stdout]
        # contents of script
        > stdout '# contents of script'
        # test that chezmoi diff excludes scripts if configured (0.146s)
        > appendline ${CHEZMOICONFIGDIR}/chezmoi.toml '    exclude = ["scripts"]'
        > exec chezmoi diff
        > ! stdout '# contents of script'
        > chhome home2/user
        # test that chezmoi diff does not pass non-existent filenames to external diff command (0.059s)
        > exec chezmoi diff
        [stdout]
        # contents of .file
        > chhome home3/user
        # test that chezmoi diff passes /dev/null and directory names when creating directories (0.066s)
        > exec chezmoi diff
        [stdout]
        /dev/null $WORK/.tmp/chezmoi-diff1777512674/.dir
        > stdout ^/dev/null\s${WORK@R}/.*/\.dir$
        > chhome home4/user
        # test that chezmoi diff uses textconv when an external diff tool is used (0.238s)
        > exec chezmoi diff
        [stdout]
        old/file.txt:
        # OLD CONTENTS OF .DIR/FILE.TXT
        
        new/file.txt:
        # NEW CONTENTS OF .DIR/FILE.TXT
        > cmp stdout golden/external-diff
        PASS
        
=== NAME  TestScript/unmanaged
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > mkhomedir
        > mksourcedir
        > exec chezmoi unmanaged
        [stdout]
        .local
        > cmp stdout golden/unmanaged
        > rm $CHEZMOISOURCEDIR/dot_dir
        > exec chezmoi unmanaged
        [stdout]
        .dir
        .local
        > cmp stdout golden/unmanaged-dir
        > rm $CHEZMOISOURCEDIR/dot_file
        > exec chezmoi unmanaged
        [stdout]
        .dir
        .file
        .local
        > cmp stdout golden/unmanaged-dir-file
        # test chezmoi unmanaged with arguments (0.050s)
        > exec chezmoi unmanaged $HOME${/}.dir $HOME${/}.file
        [stdout]
        .dir
        .file
        > cmp stdout golden/unmanaged-with-args
        # test chezmoi unmanaged, with child of unmanaged dir as argument (0.077s)
        > exec chezmoi unmanaged $HOME${/}.dir/subdir
        [stdout]
        .dir/subdir
        > cmp stdout golden/unmanaged-inside-unmanaged
        # test chezmoi unmanaged with managed arguments (0.136s)
        > exec chezmoi unmanaged $HOME${/}.create $HOME${/}.file
        [stdout]
        .file
        > cmp stdout golden/unmanaged-with-some-managed
        # test that chezmoi unmanaged with absent paths should fail (0.075s)
        > ! exec chezmoi unmanaged $HOME${/}absent-path
        [stderr]
        chezmoi: $WORK/home/user/absent-path: lstat $WORK/home/user/absent-path: no such file or directory
        chezmoi: skip this directory
        [exit status 1]
        # test chezmoi unmanaged --path-style=absolute (0.128s)
        > [unix] exec chezmoi unmanaged --path-style=absolute
        [stdout]
        $WORK/home/user/.dir
        $WORK/home/user/.file
        $WORK/home/user/.local
        > [unix] cmpenv stdout golden/unmanaged-absolute
        # test chezmoi unmanaged --exclude=dirs (0.234s)
        > exec chezmoi unmanaged --exclude=dirs
        [stdout]
        .file
        > cmpenv stdout golden/unmanaged-exclude-dirs
        # test chezmoi unmanaged --include=dirs (0.145s)
        > exec chezmoi unmanaged --include=dirs
        [stdout]
        .dir
        .local
        > cmpenv stdout golden/unmanaged-include-dirs
        # test chezmoi unmanaged --path-style=source-absolute (0.171s)
        > ! exec chezmoi unmanaged --path-style=source-absolute
        [stderr]
        chezmoi: invalid argument "source-absolute" for "-p, --path-style" flag: invalid value
        [exit status 1]
        > stderr 'flag: invalid value'
        PASS
        
=== CONT  TestScript/passhole
=== CONT  TestScript/pass
=== NAME  TestScript/passhole
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > mockcommand bin/ph
        # test passhole template function (0.083s)
        > stdin golden/stdin
        > exec chezmoi execute-template --no-tty '{{ passhole "example.com" "password" }}'
        [stdout]
        Enter database password: examplepassword
        > stdout examplepassword
        PASS
        
=== CONT  TestScript/pager
=== NAME  TestScript/protonpass
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > mockcommand bin/pass-cli
        # test protonPass template function (0.074s)
        > exec chezmoi execute-template '{{ protonPass "pass://FromCLI/My-Wifi/password" | trim }}'
        [stdout]
        MyPassword> stdout ^MyPassword$
        # test protonPassJSON template function (0.111s)
        > exec chezmoi execute-template '{{ (protonPassJSON "pass://MyVault/My-Wifi-Item").item.content.content.Wifi.password }}'
        [stdout]
        MyWifiPassword> stdout '^MyWifiPassword$'
        PASS
        
=== CONT  TestScript/options
=== NAME  TestScript/purge
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > mksourcedir
        # test that chezmoi purge purges the source dir (0.139s)
        > exists $CHEZMOISOURCEDIR
        > exec chezmoi purge --force
        > ! exists $CHEZMOISOURCEDIR
        > chhome home2/user
        # test that chezmoi purge purges the config dir (0.093s)
        > exists $CHEZMOICONFIGDIR
        > exec chezmoi purge --force
        > ! exists $CHEZMOICONFIGDIR
        # test that chezmoi purge purges the cache dir (0.036s)
        > mkdir $HOME/.cache/chezmoi
        > exec chezmoi purge --force
        > ! exists $HOME/.cache/chezmoi
        PASS
        
=== CONT  TestScript/onepassword2service
=== NAME  TestScript/plugin
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [unix] chmod 755 bin/chezmoi-plugin
        # test that chezmoi returns unknown command errors for unknown commands (0.169s)
        > ! exec chezmoi unknown
        [stderr]
        chezmoi: unknown command "unknown" for "chezmoi"
        [exit status 1]
        > stderr 'unknown command'
        # test that chezmoi executes plugins (0.054s)
        > exec chezmoi plugin
        [stdout]
        CHEZMOI_COMMAND=plugin
        CHEZMOI_SOURCE_DIR=$WORK/home/user/.local/share/chezmoi
        > stdout CHEZMOI_COMMAND=plugin
        > stdout CHEZMOI_SOURCE_DIR=${CHEZMOISOURCEDIR@R}
        PASS
        
=== CONT  TestScript/onepassword2connect
=== NAME  TestScript/externalarchiveinclude
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > symlink archive/symlink1 -> file1
        > symlink archive/symlink2 -> file2
        > mkdir www
        > exec tar czf www/archive.tar.gz archive
        > httpd www
        # test that chezmoi includes all files by default (0.316s)
        > exec chezmoi managed
        [stdout]
        .dir
        .dir/dir
        .dir/dir/subdir1
        .dir/dir/subdir1/file1
        .dir/dir/subdir1/file2
        .dir/dir/subdir2
        .dir/dir/subdir2/file1
        .dir/dir/subdir2/file2
        .dir/file1
        .dir/file2
        .dir/symlink1
        .dir/symlink2
        > cmp stdout golden/managed
        > chhome home2/user
        # test that chezmoi can include only certain files by default (0.081s)
        > exec chezmoi managed
        [stdout]
        .dir
        .dir/dir
        .dir/dir/subdir1
        .dir/dir/subdir1/file1
        .dir/dir/subdir1/file2
        > cmp stdout golden/managed2
        > chhome home3/user
        # test that chezmoi can exclude only certain files by default (0.186s)
        > exec chezmoi managed
        [stdout]
        .dir
        .dir/dir
        .dir/dir/subdir1
        .dir/dir/subdir1/file1
        .dir/file1
        .dir/symlink1
        > cmp stdout golden/managed3
        > chhome home4/user
        # test that chezmoi can include and exclude files (0.111s)
        > exec chezmoi managed
        [stdout]
        .dir
        .dir/dir
        .dir/dir/subdir1
        .dir/dir/subdir1/file1
        .dir/dir/subdir2
        .dir/dir/subdir2/file1
        .dir/file1
        .dir/symlink1
        .dir/symlink2
        > cmp stdout golden/managed4
        > chhome home5/user
        # test that chezmoi can include selected files in sub-directories (0.132s)
        > exec chezmoi managed
        [stdout]
        .dir
        .dir/dir/subdir2/file1
        .dir/dir/subdir2/file2
        > cmp stdout golden/managed5
        PASS
        
=== CONT  TestScript/onepassword2
=== NAME  TestScript/pass
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > mockcommand bin/pass
        > [windows] unix2dos golden/pass-raw
        # test pass template function (0.047s)
        > exec chezmoi execute-template '{{ pass "misc/example.com" }}'
        [stdout]
        examplepassword> stdout ^examplepassword$
        # test passFields template function (0.056s)
        > exec chezmoi execute-template '{{ (passFields "misc/example.com").login }}'
        [stdout]
        examplelogin> stdout ^examplelogin$
        # test pass template function (0.091s)
        > exec chezmoi execute-template '{{ passRaw "misc/example.com" }}'
        [stdout]
        examplepassword
        login: examplelogin
        > cmp stdout golden/pass-raw
        PASS
        
=== CONT  TestScript/nosourcedir
=== NAME  TestScript/pager
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] skip 'UNIX only'
        > chmod 755 bin/shell
        # test that chezmoi diff uses args from diff.pager and diff.pagerArgs (0.082s)
        > exec chezmoi diff
        [stdout]
        -c echo a b c d
        > stdout 'a b c d'
        > chhome home2/user
        # test that chezmoi diff uses pager and pagerArgs from pager and pagerArgs (0.077s)
        > exec chezmoi diff
        [stdout]
        -c echo u v x y z
        > stdout 'u v x y z'
        PASS
        
=== CONT  TestScript/noencryption
=== NAME  TestScript/applyskipencrypted
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] skip 'skipping gpg tests on Windows'
        > [!exec:gpg] skip 'gpg not found in $PATH'
        > mkhomedir
        > mkgpgconfig
        # test that chezmoi apply --exclude=encrypted does not apply encrypted files (0.277s)
        > cp golden/.encrypted $HOME
        > exec chezmoi add --encrypt $HOME${/}.encrypted
        [stderr]
        gpg: Warning: using insecure memory!
        gpg: checking the trustdb
        gpg: marginals needed: 3  completes needed: 1  trust model: pgp
        gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
        gpg: next trustdb check due at 2029-07-19
        > rm $HOME/.encrypted
        > cp $CHEZMOICONFIGDIR/chezmoi.toml golden/chezmoi.toml
        > rm $CHEZMOICONFIGDIR/chezmoi.toml
        > exec chezmoi apply --force --exclude=encrypted
        > ! exists $HOME/.encrypted
        # test that chezmoi apply applies the encrypted file (0.316s)
        > cp golden/chezmoi.toml $CHEZMOICONFIGDIR/chezmoi.toml
        > exec chezmoi apply --force
        [stderr]
        gpg: Warning: using insecure memory!
        gpg: encrypted with cv25519 key, ID F8AFF73B0479FB64, created 2026-07-20
              "chezmoi-test-gpg-key"
        > cmp golden/.encrypted $HOME/.encrypted
        PASS
        
=== CONT  TestScript/modifypython_windows
    cmd.go:380: Windows only
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [unix] skip 'Windows only'
        
=== CONT  TestScript/modifyencrypted
    cmd.go:380: age not found in $PATH
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] skip 'UNIX only'
        > [!exec:age] skip 'age not found in $PATH'
        
=== CONT  TestScript/modify_windows
    cmd.go:380: Windows only
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [unix] skip 'Windows only'
        
=== CONT  TestScript/modify_unix
=== NAME  TestScript/nosourcedir
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi apply returns an error if the source directory does not exist (0.071s)
        > ! exec chezmoi apply
        [stderr]
        chezmoi: stat $WORK/home/user/.local/share/chezmoi: no such file or directory
        [exit status 1]
        > [unix] stderr 'no such file or directory'
        > [windows] stderr 'The system cannot find the path specified'
        PASS
        
=== CONT  TestScript/modesymlink
=== NAME  TestScript/options
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that --source flag is respected (0.060s)
        > exec chezmoi apply --source=~/.dotfiles
        > cmp $HOME/.file golden/.file
        > chhome home2/user
        # test that --destination flag is respected (0.065s)
        > mkdir tmp
        > exec chezmoi apply --destination=$WORK/tmp
        > cmp tmp/.file golden/.file
        > chhome home3/user
        # test that --config flag is respected (0.072s)
        > exec chezmoi apply --config=$HOME/.chezmoi.toml
        > cmp $HOME/tmp/.file golden/.file
        PASS
        
=== CONT  TestScript/mergeencryptedgpg_unix
=== NAME  TestScript/verify
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [!umask:022] skip
        > mkhomedir golden
        > mkhomedir
        > mksourcedir
        # test that chezmoi verify succeeds (0.089s)
        > exec chezmoi verify
        # test that chezmoi verify fails when a file is added to the source state (0.174s)
        > cp golden/dot_newfile $CHEZMOISOURCEDIR/dot_newfile
        > ! exec chezmoi verify
        [exit status 1]
        > exec chezmoi forget --force $HOME${/}.newfile
        > exec chezmoi verify
        # test that chezmoi verify fails when a file is edited (0.242s)
        > edit $HOME/.file
        > ! exec chezmoi verify
        [exit status 1]
        > exec chezmoi apply --force $HOME${/}.file
        > exec chezmoi verify
        # test that chezmoi verify fails when a file is removed from the destination directory (0.326s)
        > rm $HOME/.file
        > ! exec chezmoi verify
        [exit status 1]
        > exec chezmoi apply --force $HOME${/}.file
        > exec chezmoi verify
        # test that chezmoi verify fails when a directory is removed from the destination directory (0.354s)
        > rm $HOME/.dir
        > ! exec chezmoi verify
        [exit status 1]
        > mkdir $HOME/.dir
        > exec chezmoi apply --force $HOME${/}.dir
        > exec chezmoi verify
        > [windows] stop 'remaining tests use file modes'
        # test that chezmoi verify fails when a file's permissions are changed (0.367s)
        > chmod 777 $HOME/.file
        > ! exec chezmoi verify
        [exit status 1]
        > exec chezmoi apply --force $HOME${/}.file
        > exec chezmoi verify
        # test that chezmoi verify fails when a directory's permissions are changed (0.243s)
        > chmod 700 $HOME/.dir
        > ! exec chezmoi verify
        [exit status 1]
        > exec chezmoi apply --force $HOME${/}.dir
        > exec chezmoi verify
        PASS
        
=== CONT  TestScript/mergeencryptedage_unix
    cmd.go:380: age not found in $PATH
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] skip 'UNIX only'
        > [!exec:age] skip 'age not found in $PATH'
        
=== CONT  TestScript/mergeall_unix
=== NAME  TestScript/builtingit
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [!exec:git] skip 'git not found in $PATH'
        > [windows] skip 'go-git does not support file:// URLs on windows'
        > chmod 755 golden/git
        > mkgitconfig
        > mkhomedir golden
        > mkhomedir
        # install fake git (0.245s)
        > cp golden/git bin
        > ! exec chezmoi init
        [stderr]
        chezmoi: git: exit status 1
        [exit status 1]
        > exec chezmoi init --use-builtin-git=true
        > exists $CHEZMOISOURCEDIR/.git
        # create a commit (0.206s)
        > rm bin/git # disable fake git
        > cp golden/.file $CHEZMOISOURCEDIR/dot_file
        > exec chezmoi git add dot_file
        > exec chezmoi git commit -- --message 'Add dot_file'
        [stdout]
        [master (root-commit) cbc70b8] Add dot_file
         1 file changed, 1 insertion(+)
         create mode 100644 dot_file
        > cp golden/git bin # restore fake git
        > chhome home2/user
        # test chezmoi init --use-builtin-git=true (0.111s)
        > exec chezmoi init --use-builtin-git=true file://$WORK/home/user/.local/share/chezmoi
        > exists $CHEZMOISOURCEDIR/.git
        > cmp $CHEZMOISOURCEDIR/dot_file golden/.file
        > chhome home/user
        # create a second commit (0.287s)
        > rm bin/git # disable fake git
        > cp golden/.executable $CHEZMOISOURCEDIR/executable_dot_executable
        > exec chezmoi git add executable_dot_executable
        > exec chezmoi git commit -- --message 'Add executable_dot_executable'
        [stdout]
        [master f6e17fe] Add executable_dot_executable
         1 file changed, 1 insertion(+)
         create mode 100755 executable_dot_executable
        > cp golden/git bin # restore fake git
        > chhome home2/user
        # test chezmoi update --use-builtin-git=true (0.249s)
        > ! exec chezmoi update
        [stderr]
        chezmoi: git: exit status 1
        [exit status 1]
        > exec chezmoi update --use-builtin-git=true
        > cmp $CHEZMOISOURCEDIR/executable_dot_executable golden/.executable
        > chhome home/user
        # test chezmoi init --branch --use-builtin-git=true (0.525s)
        > rm bin/git # disable fake git
        > exec chezmoi git checkout -- -b new-branch
        [stderr]
        Switched to a new branch 'new-branch'
        > edit $CHEZMOISOURCEDIR/dot_file
        > exec chezmoi git add dot_file
        > exec chezmoi git commit -- --message 'Edit .file'
        [stdout]
        [new-branch 6ac3fa0] Edit .file
         1 file changed, 1 insertion(+)
        > exec chezmoi git checkout master
        [stderr]
        Switched to branch 'master'
        > cp golden/git bin # restore fake git
        > chhome home3/user
        # test chezmoi init --apply --branch=new-branch --use-builtin-git=true (0.147s)
        > exec chezmoi init --apply --branch=new-branch --use-builtin-git=true file://$WORK/home/user/.local/share/chezmoi
        > grep '# edited' $HOME/.file
        PASS
        
=== CONT  TestScript/merge_unix
gpg: Warning: using insecure memory!
gpg: keybox '/tmp/test-gpg-homedir1458160258/pubring.kbx' created
=== NAME  TestScript/rbw
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > mockcommand bin/rbw
        # test rbw template function (0.107s)
        > exec chezmoi execute-template '{{ (rbw "test-entry").data.password }}'
        [stdout]
        hunter2> stdout ^hunter2$
        # test rbw template function with extra args (0.138s)
        > exec chezmoi execute-template '{{ (rbw "test-entry" "--folder" "my-folder").data.password }}'
        [stdout]
        correcthorsebatterystaple> stdout ^correcthorsebatterystaple$
        # test rbwFields template function (0.110s)
        > exec chezmoi execute-template '{{ (rbwFields "test-entry").something.value }}'
        [stdout]
        secret> stdout ^secret$
        # test rbwFields template function with extra args (0.128s)
        > exec chezmoi execute-template '{{ (rbwFields "test-entry" "--folder" "my-folder").something.value }}'
        [stdout]
        enigma> stdout ^enigma$
        PASS
        
=== CONT  TestScript/managedtree
=== NAME  TestScript/modesymlink
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > mkhomedir golden
        > mksourcedir
        # test that chezmoi apply does not create symlinks by default (0.079s)
        > exec chezmoi apply
        > cmp $HOME/.create golden/.create
        > ! issymlink $HOME/.create
        > cmp $HOME/.dir/file golden/.dir/file
        > ! issymlink $HOME/.dir/file
        > cmp $HOME/.dir/subdir/file golden/.dir/subdir/file
        > ! issymlink $HOME/.dir/subdir/file
        > cmp $HOME/.empty golden/.empty
        > ! issymlink $HOME/.empty
        > cmp $HOME/.executable golden/.executable
        > ! issymlink $HOME/.executable
        > cmp $HOME/.file golden/.file
        > ! issymlink $HOME/.file
        > cmp $HOME/.private golden/.private
        > ! issymlink $HOME/.private
        > ! exists $HOME/.remove
        > cmp $HOME/.template golden/.template
        > ! issymlink $HOME/.template
        # test that chezmoi apply --mode=symlink creates symlinks where possible (0.073s)
        > exec chezmoi apply --mode=symlink
        > cmp $HOME/.create golden/.create
        > ! issymlink $HOME/.create
        > cmp $HOME/.dir/file golden/.dir/file
        > issymlink $HOME/.dir/file
        > cmp $HOME/.dir/subdir/file golden/.dir/subdir/file
        > issymlink $HOME/.dir/subdir/file
        > cmp $HOME/.empty golden/.empty
        > issymlink $HOME/.empty
        > cmp $HOME/.executable golden/.executable
        > ! issymlink $HOME/.executable
        > cmp $HOME/.file golden/.file
        > issymlink $HOME/.file
        > cmp $HOME/.private golden/.private
        > ! issymlink $HOME/.private
        > ! exists $HOME/.remove
        > cmp $HOME/.template golden/.template
        > ! issymlink $HOME/.template
        PASS
        
=== CONT  TestScript/managed
=== NAME  TestScript/noencryption
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > mkhomedir
        # test that chezmoi add --encrypt without encryption fails (0.046s)
        > ! exec chezmoi add --encrypt $HOME${/}.encrypted
        [stderr]
        chezmoi: encryption not configured
        [exit status 1]
        > stderr 'encryption not configured'
        # test that chezmoi apply without encryption fails (0.142s)
        > ! exec chezmoi apply --force
        [stderr]
        chezmoi: .encrypted: encryption not configured
        [exit status 1]
        > stderr '\.encrypted: encryption not configured$'
        PASS
        
=== CONT  TestScript/mackuppipx_darwin
    cmd.go:380: Darwin only
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [!darwin] skip 'Darwin only'
        
=== CONT  TestScript/mackuppip_darwin
    cmd.go:380: Darwin only
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [!darwin] skip 'Darwin only'
        
=== CONT  TestScript/mackupmacports_darwin
    cmd.go:380: Darwin only
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [!darwin] skip 'Darwin only'
        
=== CONT  TestScript/mackupbrew_darwin
    cmd.go:380: Darwin only
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [!darwin] skip 'Darwin only'
        
=== CONT  TestScript/literal
=== NAME  TestScript/managedtree
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > mksourcedir
        # test that chezmoi managed --tree produces tree-like output (0.070s)
        > exec chezmoi managed --tree
        [stdout]
        .create
        .dir
          file
          subdir
            file
        .empty
        .executable
        .file
        .private
        .readonly
        .remove
        .symlink
        .template
        > cmp stdout golden/stdout
        PASS
        
=== CONT  TestScript/license
gpg: /tmp/test-gpg-homedir3479108412/trustdb.gpg: trustdb created
gpg: directory '/tmp/test-gpg-homedir3479108412/openpgp-revocs.d' created
=== NAME  TestScript/add
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > mkhomedir
        > mksourcedir golden
        # test chezmoi add --create (0.115s)
        > exec chezmoi add --create $HOME${/}.create
        > cmp $CHEZMOISOURCEDIR/create_dot_create golden/create_dot_create
        # test that adding a directory creates a .keep file (0.064s)
        > exec chezmoi add --recursive=false $HOME${/}.dir
        > exists $CHEZMOISOURCEDIR/dot_dir/.keep
        # test adding a file in a directory (0.179s)
        > exec chezmoi add $HOME${/}.dir/file
        > cmp $CHEZMOISOURCEDIR/dot_dir/file golden/dot_dir/file
        # test adding a subdirectory (0.072s)
        > exec chezmoi add --exact $HOME${/}.dir/subdir
        > cmp $CHEZMOISOURCEDIR/dot_dir/exact_subdir/file golden/dot_dir/exact_subdir/file
        # test adding an empty file (0.270s)
        > exec chezmoi add $HOME${/}.empty
        > exists $CHEZMOISOURCEDIR/empty_dot_empty
        # test adding an executable file (0.072s)
        > exec chezmoi add $HOME${/}.executable
        > [unix] cmp $CHEZMOISOURCEDIR/executable_dot_executable golden/executable_dot_executable
        > [windows] cmp $CHEZMOISOURCEDIR/dot_executable golden/executable_dot_executable
        # test adding a private file (0.209s)
        > exec chezmoi add $HOME${/}.private
        > [unix] cmp $CHEZMOISOURCEDIR/private_dot_private $HOME/.private
        > [windows] cmp $CHEZMOISOURCEDIR/dot_private $HOME/.private
        # test adding a symlink (0.164s)
        > exec chezmoi add $HOME${/}.symlink
        > cmp $CHEZMOISOURCEDIR/symlink_dot_symlink golden/symlink_dot_symlink
        # test adding a symlink with a separator (0.067s)
        > symlink $HOME/.symlink2 -> .dir/subdir/file
        > exec chezmoi add $HOME${/}.symlink2
        > cmp $CHEZMOISOURCEDIR/symlink_dot_symlink2 golden/symlink_dot_symlink
        # test adding a symlink with --follow (0.058s)
        > symlink $HOME${/}.symlink3 -> .file
        > exec chezmoi add --follow $HOME${/}.symlink3
        > cmp $CHEZMOISOURCEDIR/dot_symlink3 golden/dot_file
        > chhome home2/user
        # test that chezmoi add only creates .keep files in empty directories (0.190s)
        > mkdir $HOME/.dir/empty_subdir
        > exec chezmoi add $HOME${/}.dir
        > ! exists $CHEZMOISOURCEDIR/dot_dir/.keep
        > exists $CHEZMOISOURCEDIR/dot_dir/empty_subdir/.keep
        > ! exists $CHEZMOISOURCEDIR/dot_dir/non_empty_subdir/.keep
        > chhome home3/user
        # test that chezmoi add respects .chezmoiignore (0.053s)
        > exec chezmoi add $HOME${/}.dir
        [stderr]
        chezmoi: warning: ignoring .dir/ignore
        > exists $CHEZMOISOURCEDIR/dot_dir/file
        > stderr 'warning: ignoring .dir/ignore'
        > ! exists $CHEZMOISOURCEDIR/dot_dir/ignore
        > chhome home4/user
        # test that chezmoi add does not overwrite an already-added file (0.179s)
        > exec chezmoi add $HOME/.file
        > cmp $CHEZMOISOURCEDIR/dot_file golden/dot_file
        > edit $HOME/.file
        > cmp $CHEZMOISOURCEDIR/dot_file golden/dot_file
        # test that chezmoi add --force does overwrite an already-added file (0.121s)
        > exec chezmoi add --force $HOME/.file
        > cmp $CHEZMOISOURCEDIR/dot_file golden/edited_dot_file
        > chhome home5/user
        # test that chezmoi add --exact only applies exact_ to the target, not parent directories
        # This is a regression test for the bug where adding a child with --exact would also
        # mark parent directories as exact (0.163s)
        > exec chezmoi add --exact $HOME${/}.parent/child
        # child directory should have exact_ prefix (0.000s)
        > exists $CHEZMOISOURCEDIR/dot_parent/exact_child
        > cmp $CHEZMOISOURCEDIR/dot_parent/exact_child/file golden/dot_parent/exact_child/file
        # parent directory should NOT have exact_ prefix (bug fix verification) (0.000s)
        > exists $CHEZMOISOURCEDIR/dot_parent
        > ! exists $CHEZMOISOURCEDIR/exact_dot_parent
        # parent's other files should NOT be tracked (parent is not exact) (0.000s)
        > ! exists $CHEZMOISOURCEDIR/dot_parent/other_file
        PASS
        
=== CONT  TestScript/lastpass
=== NAME  TestScript/root
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi apply uses .chezmoiroot (0.113s)
        > exec chezmoi apply
        > cmp $HOME/.file golden/.file
        # test that chezmoi add uses .chezmoiroot (0.092s)
        > symlink $HOME/.symlink -> .file
        > exec chezmoi add $HOME${/}.symlink
        > cmp $CHEZMOISOURCEDIR/home/symlink_dot_symlink golden/symlink_dot_symlink
        > [!exec:git] skip 'git not found in $PATH'
        > [windows] skip 'go-git does not support file:// URLs on windows'
        > chhome home2/user
        > mkgitconfig
        # create a git repo in home2/user/repo (0.144s)
        > exec git -C $HOME/repo init
        [stdout]
        Initialized empty Git repository in $WORK/home2/user/repo/.git/
        > exec git -C $HOME/repo add .
        > exec git -C $HOME/repo commit -m 'Initial commit'
        [stdout]
        [master (root-commit) c0005a5] Initial commit
         3 files changed, 2 insertions(+)
         create mode 100644 .chezmoiroot
         create mode 100644 home/.chezmoi.toml.tmpl
         create mode 100644 home/dot_file
        # test that chezmoi init uses .chezmoiroot (0.511s)
        > exec chezmoi init --apply file://$HOME/repo
        [stderr]
        Cloning into '$WORK/home2/user/.local/share/chezmoi'...
        > exists $CHEZMOICONFIGDIR/chezmoi.toml
        > cmp $HOME/.file golden/.file
        PASS
        
=== CONT  TestScript/keepgoing
=== NAME  TestScript/lastpass
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > mockcommand bin/lpass
        # test lastpass template function (0.079s)
        > exec chezmoi execute-template '{{ (index (lastpass "example.com") 0).password }}'
        [stdout]
        examplepassword> stdout ^examplepassword$
        PASS
        
=== CONT  TestScript/keeper
=== NAME  TestScript/re-add
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > mkhomedir
        > mksourcedir
        # test that chezmoi re-add adds all modified files (0.411s)
        > exec chezmoi apply --force
        > edit $HOME/.file
        > edit $HOME/.dir/file
        > edit $HOME/.dir/subdir/file
        > exec chezmoi re-add
        > grep '# edited' $CHEZMOISOURCEDIR/dot_file
        > grep '# edited' $CHEZMOISOURCEDIR/dot_dir/file
        > grep '# edited' $CHEZMOISOURCEDIR/dot_dir/exact_subdir/file
        > exec chezmoi diff
        > ! stdout .
        # test that chezmoi re-add adds only specified targets (0.122s)
        > edit $HOME/.file
        > edit $HOME/.dir/file
        > edit $HOME/.dir/subdir/file
        > exec chezmoi re-add ~/.dir/file
        > grep -count=1 '# edited' $CHEZMOISOURCEDIR/dot_file
        > grep -count=2 '# edited' $CHEZMOISOURCEDIR/dot_dir/file
        > grep -count=1 '# edited' $CHEZMOISOURCEDIR/dot_dir/exact_subdir/file
        # test that chezmoi re-add --recursive=false does not recurse into subdirectories AND still syncs exact directories
        # Even with --recursive=false, exact directory sync happens because subdir is exact (0.131s)
        > exec chezmoi re-add --recursive=false ~/.dir/subdir
        > grep -count=2 '# edited' $CHEZMOISOURCEDIR/dot_dir/exact_subdir/file
        # test that chezmoi re-add is recursive by default (0.102s)
        > edit $HOME/.dir/subdir/file
        > exec chezmoi re-add ~/.dir/subdir
        > grep -count=3 '# edited' $CHEZMOISOURCEDIR/dot_dir/exact_subdir/file
        PASS
        
=== CONT  TestScript/keepassxc
=== NAME  TestScript/license
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi license prints chezmoi's license (0.110s)
        > exec chezmoi license
        [stdout]
        
          The MIT License (MIT)
        
          Copyright (c) 2018 Tom Payne
        
          Permission is hereby granted, free of charge, to any person obtaining a copy
          of this software and associated documentation files (the "Software"), to
          deal in the Software without restriction, including without limitation the
          rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
          sell copies of the Software, and to permit persons to whom the Software is
          furnished to do so, subject to the following conditions:
        
          The above copyright notice and this permission notice shall be included in
          all copies or substantial portions of the Software.
        
          THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
          IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
          FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
          AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
          LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
          FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
          IN THE SOFTWARE.
        
        > stdout 'The MIT License'
        PASS
        
=== CONT  TestScript/issue796
=== NAME  TestScript/literal
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi add can add files that look like files in the source state (0.123s)
        > exec chezmoi add $HOME${/}dot_file $HOME${/}run_script $HOME${/}symlink_symlink $HOME${/}template.tmpl
        > rm $HOME/dot_file $HOME/run_script $HOME/symlink_symlink $HOME/template.tmpl
        > exec chezmoi apply --force
        > ! exists $HOME/.file
        > ! stdout .
        > ! exists $HOME/symlink
        > ! exists $HOME/template
        > cmp $HOME/dot_file golden/dot_file
        > cmp $HOME/run_script golden/run_script
        > cmp $HOME/symlink_symlink golden/symlink_symlink
        > cmp $HOME/template.tmpl golden/template.tmpl
        PASS
        
=== CONT  TestScript/issue5095
=== NAME  TestScript/script_unix
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] skip 'UNIX only'
        # test that chezmoi status prints that it will run the script (0.063s)
        > exec chezmoi status
        [stdout]
         R script.sh
        > cmp stdout golden/status
        # test that chezmoi diff prints the script (0.067s)
        > exec chezmoi diff
        [stdout]
        diff --git a/script.sh b/script.sh
        new file mode 100755
        index 0000000000000000000000000000000000000000..f9103e018df1bbc178e66b46d8f133f49c85225d
        --- /dev/null
        +++ b/script.sh
        @@ -0,0 +1,3 @@
        +#!/bin/sh
        +
        +pwd
        > cmp stdout golden/diff.diff
        # test that chezmoi diff --script-contents=false prints the script name but not its contents (0.063s)
        > exec chezmoi diff --script-contents=false
        [stdout]
        diff --git a/script.sh b/script.sh
        new file mode 100755
        index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
        --- /dev/null
        +++ b/script.sh
        > cmp stdout golden/diff-no-script-contents.diff
        # test that chezmoi apply runs the script (0.090s)
        > exec chezmoi apply --force
        [stdout]
        $WORK/home/user
        > stdout ${HOME@R}
        # test that chezmoi status prints that it will run the script again (0.098s)
        > exec chezmoi status
        [stdout]
         R script.sh
        > cmp stdout golden/status
        # test that chezmoi apply runs the script even if it has run before (0.054s)
        > exec chezmoi apply --force
        [stdout]
        $WORK/home/user
        > stdout ${HOME@R}
        # test that chezmoi dump includes the script (0.093s)
        > exec chezmoi dump
        [stdout]
        {
          "script.sh": {
            "type": "script",
            "name": "script.sh",
            "contents": "#!/bin/sh\n\npwd\n",
            "condition": "always"
          }
        }
        > cmp stdout golden/dump.json
        # test that chezmoi managed includes the script (0.162s)
        > exec chezmoi managed --include=scripts
        [stdout]
        script.sh
        > cmpenv stdout golden/managed
        # test that chezmoi cat writes the contents of the script (0.142s)
        > exec chezmoi cat $HOME${/}script.sh
        [stdout]
        #!/bin/sh
        
        pwd
        > cmp stdout golden/script.sh
        # test that chezmoi archive includes the script in the archive (0.113s)
        > exec chezmoi archive --format=tar --gzip --output=archive.tar.gz
        > exec tar -tzf archive.tar.gz
        [stdout]
        script.sh
        > cmp stdout golden/archive
        PASS
        
=== CONT  TestScript/issue5061
=== NAME  TestScript/issue796
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > mkhomedir
        > mksourcedir
        > symlink $CHEZMOISOURCEDIR/dot_file2 -> dot_file
        > exec chezmoi apply --force
        > cmp $HOME/.file2 $HOME/.file
        PASS
        
=== CONT  TestScript/issue4976
gpg: revocation certificate stored as '/tmp/test-gpg-homedir3479108412/openpgp-revocs.d/E4CBCA606E177C09F56524985373BA93A9C0D7C0.rev'
=== NAME  TestScript/completion
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi completion bash generates bash completions (0.041s)
        > exec chezmoi completion bash
        [stdout]
        # bash completion V2 for chezmoi                              -*- shell-script -*-
        
        __chezmoi_debug()
        {
            if [[ -n ${BASH_COMP_DEBUG_FILE-} ]]; then
                echo "$*" >> "${BASH_COMP_DEBUG_FILE}"
            fi
        }
        
        # Macs have bash3 for which the bash-completion package doesn't include
        # _init_completion. This is a minimal version of that function.
        __chezmoi_init_completion()
        {
            COMPREPLY=()
            _get_comp_words_by_ref "$@" cur prev words cword
        }
        
        # This function calls the chezmoi program to obtain the completion
        # results and the directive.  It fills the 'out' and 'directive' vars.
        __chezmoi_get_completion_results() {
            local requestComp lastParam lastChar args
        
            # Prepare the command to request completions for the program.
            # Calling ${words[0]} instead of directly chezmoi allows handling aliases
            args=("${words[@]:1}")
            requestComp="${words[0]} __complete ${args[*]}"
        
            lastParam=${words[$((${#words[@]}-1))]}
            lastChar=${lastParam:$((${#lastParam}-1)):1}
            __chezmoi_debug "lastParam ${lastParam}, lastChar ${lastChar}"
        
            if [[ -z ${cur} && ${lastChar} != = ]]; then
                # If the last parameter is complete (there is a space following it)
                # We add an extra empty parameter so we can indicate this to the go method.
                __chezmoi_debug "Adding extra empty parameter"
                requestComp="${requestComp} ''"
            fi
        
            # When completing a flag with an = (e.g., chezmoi -n=<TAB>)
            # bash focuses on the part after the =, so we need to remove
            # the flag part from $cur
            if [[ ${cur} == -*=* ]]; then
                cur="${cur#*=}"
            fi
        
            __chezmoi_debug "Calling ${requestComp}"
            # Use eval to handle any environment variables and such
            out=$(eval "${requestComp}" 2>/dev/null)
        
            # Extract the directive integer at the very end of the output following a colon (:)
            directive=${out##*:}
            # Remove the directive
            out=${out%:*}
            if [[ ${directive} == "${out}" ]]; then
                # There is not directive specified
                directive=0
            fi
            __chezmoi_debug "The completion directive is: ${directive}"
            __chezmoi_debug "The completions are: ${out}"
        }
        
        __chezmoi_process_completion_results() {
            local shellCompDirectiveError=1
            local shellCompDirectiveNoSpace=2
            local shellCompDirectiveNoFileComp=4
            local shellCompDirectiveFilterFileExt=8
            local shellCompDirectiveFilterDirs=16
            local shellCompDirectiveKeepOrder=32
        
            if (((directive & shellCompDirectiveError) != 0)); then
                # Error code.  No completion.
                __chezmoi_debug "Received error from custom completion go code"
                return
            else
                if (((directive & shellCompDirectiveNoSpace) != 0)); then
                    if [[ $(type -t compopt) == builtin ]]; then
                        __chezmoi_debug "Activating no space"
                        compopt -o nospace
                    else
                        __chezmoi_debug "No space directive not supported in this version of bash"
                    fi
                fi
                if (((directive & shellCompDirectiveKeepOrder) != 0)); then
                    if [[ $(type -t compopt) == builtin ]]; then
                        # no sort isn't supported for bash less than < 4.4
                        if [[ ${BASH_VERSINFO[0]} -lt 4 || ( ${BASH_VERSINFO[0]} -eq 4 && ${BASH_VERSINFO[1]} -lt 4 ) ]]; then
                            __chezmoi_debug "No sort directive not supported in this version of bash"
                        else
                            __chezmoi_debug "Activating keep order"
                            compopt -o nosort
                        fi
                    else
                        __chezmoi_debug "No sort directive not supported in this version of bash"
                    fi
                fi
                if (((directive & shellCompDirectiveNoFileComp) != 0)); then
                    if [[ $(type -t compopt) == builtin ]]; then
                        __chezmoi_debug "Activating no file completion"
                        compopt +o default
                    else
                        __chezmoi_debug "No file completion directive not supported in this version of bash"
                    fi
                fi
            fi
        
            # Separate activeHelp from normal completions
            local completions=()
            local activeHelp=()
            __chezmoi_extract_activeHelp
        
            if (((directive & shellCompDirectiveFilterFileExt) != 0)); then
                # File extension filtering
                local fullFilter="" filter filteringCmd
        
                # Do not use quotes around the $completions variable or else newline
                # characters will be kept.
                for filter in ${completions[*]}; do
                    fullFilter+="$filter|"
                done
        
                filteringCmd="_filedir $fullFilter"
                __chezmoi_debug "File filtering command: $filteringCmd"
                $filteringCmd
            elif (((directive & shellCompDirectiveFilterDirs) != 0)); then
                # File completion for directories only
        
                local subdir
                subdir=${completions[0]}
                if [[ -n $subdir ]]; then
                    __chezmoi_debug "Listing directories in $subdir"
                    pushd "$subdir" >/dev/null 2>&1 && _filedir -d && popd >/dev/null 2>&1 || return
                else
                    __chezmoi_debug "Listing directories in ."
                    _filedir -d
                fi
            else
                __chezmoi_handle_completion_types
            fi
        
            __chezmoi_handle_special_char "$cur" :
            __chezmoi_handle_special_char "$cur" =
        
            # Print the activeHelp statements before we finish
            __chezmoi_handle_activeHelp
        }
        
        __chezmoi_handle_activeHelp() {
            # Print the activeHelp statements
            if ((${#activeHelp[*]} != 0)); then
                if [ -z $COMP_TYPE ]; then
                    # Bash v3 does not set the COMP_TYPE variable.
                    printf "\n";
                    printf "%s\n" "${activeHelp[@]}"
                    printf "\n"
                    __chezmoi_reprint_commandLine
                    return
                fi
        
                # Only print ActiveHelp on the second TAB press
                if [ $COMP_TYPE -eq 63 ]; then
                    printf "\n"
                    printf "%s\n" "${activeHelp[@]}"
        
                    if ((${#COMPREPLY[*]} == 0)); then
                        # When there are no completion choices from the program, file completion
                        # may kick in if the program has not disabled it; in such a case, we want
                        # to know if any files will match what the user typed, so that we know if
                        # there will be completions presented, so that we know how to handle ActiveHelp.
                        # To find out, we actually trigger the file completion ourselves;
                        # the call to _filedir will fill COMPREPLY if files match.
                        if (((directive & shellCompDirectiveNoFileComp) == 0)); then
                            __chezmoi_debug "Listing files"
                            _filedir
                        fi
                    fi
        
                    if ((${#COMPREPLY[*]} != 0)); then
                        # If there are completion choices to be shown, print a delimiter.
                        # Re-printing the command-line will automatically be done
                        # by the shell when it prints the completion choices.
                        printf -- "--"
                    else
                        # When there are no completion choices at all, we need
                        # to re-print the command-line since the shell will
                        # not be doing it itself.
                        __chezmoi_reprint_commandLine
                    fi
                elif [ $COMP_TYPE -eq 37 ] || [ $COMP_TYPE -eq 42 ]; then
                    # For completion type: menu-complete/menu-complete-backward and insert-completions
                    # the completions are immediately inserted into the command-line, so we first
                    # print the activeHelp message and reprint the command-line since the shell won't.
                    printf "\n"
                    printf "%s\n" "${activeHelp[@]}"
        
                    __chezmoi_reprint_commandLine
                fi
            fi
        }
        
        __chezmoi_reprint_commandLine() {
            # The prompt format is only available from bash 4.4.
            # We test if it is available before using it.
            if (x=${PS1@P}) 2> /dev/null; then
                printf "%s" "${PS1@P}${COMP_LINE[@]}"
            else
                # Can't print the prompt.  Just print the
                # text the user had typed, it is workable enough.
                printf "%s" "${COMP_LINE[@]}"
            fi
        }
        
        # Separate activeHelp lines from real completions.
        # Fills the $activeHelp and $completions arrays.
        __chezmoi_extract_activeHelp() {
            local activeHelpMarker="_activeHelp_ "
            local endIndex=${#activeHelpMarker}
        
            while IFS='' read -r comp; do
                [[ -z $comp ]] && continue
        
                if [[ ${comp:0:endIndex} == $activeHelpMarker ]]; then
                    comp=${comp:endIndex}
                    __chezmoi_debug "ActiveHelp found: $comp"
                    if [[ -n $comp ]]; then
                        activeHelp+=("$comp")
                    fi
                else
                    # Not an activeHelp line but a normal completion
                    completions+=("$comp")
                fi
            done <<<"${out}"
        }
        
        __chezmoi_handle_completion_types() {
            __chezmoi_debug "__chezmoi_handle_completion_types: COMP_TYPE is $COMP_TYPE"
        
            case $COMP_TYPE in
            37|42)
                # Type: menu-complete/menu-complete-backward and insert-completions
                # If the user requested inserting one completion at a time, or all
                # completions at once on the command-line we must remove the descriptions.
                # https://github.com/spf13/cobra/issues/1508
        
                # If there are no completions, we don't need to do anything
                (( ${#completions[@]} == 0 )) && return 0
        
                local tab=$'\t'
        
                # Strip any description and escape the completion to handled special characters
                IFS=$'\n' read -ra completions -d '' < <(printf "%q\n" "${completions[@]%%$tab*}")
        
                # Only consider the completions that match
                IFS=$'\n' read -ra COMPREPLY -d '' < <(IFS=$'\n'; compgen -W "${completions[*]}" -- "${cur}")
        
                # compgen looses the escaping so we need to escape all completions again since they will
                # all be inserted on the command-line.
                IFS=$'\n' read -ra COMPREPLY -d '' < <(printf "%q\n" "${COMPREPLY[@]}")
                ;;
        
            *)
                # Type: complete (normal completion)
                __chezmoi_handle_standard_completion_case
                ;;
            esac
        }
        
        __chezmoi_handle_standard_completion_case() {
            local tab=$'\t'
        
            # If there are no completions, we don't need to do anything
            (( ${#completions[@]} == 0 )) && return 0
        
            # Short circuit to optimize if we don't have descriptions
            if [[ "${completions[*]}" != *$tab* ]]; then
                # First, escape the completions to handle special characters
                IFS=$'\n' read -ra completions -d '' < <(printf "%q\n" "${completions[@]}")
                # Only consider the completions that match what the user typed
                IFS=$'\n' read -ra COMPREPLY -d '' < <(IFS=$'\n'; compgen -W "${completions[*]}" -- "${cur}")
        
                # compgen looses the escaping so, if there is only a single completion, we need to
                # escape it again because it will be inserted on the command-line.  If there are multiple
                # completions, we don't want to escape them because they will be printed in a list
                # and we don't want to show escape characters in that list.
                if (( ${#COMPREPLY[@]} == 1 )); then
                    COMPREPLY[0]=$(printf "%q" "${COMPREPLY[0]}")
                fi
                return 0
            fi
        
            local longest=0
            local compline
            # Look for the longest completion so that we can format things nicely
            while IFS='' read -r compline; do
                [[ -z $compline ]] && continue
        
                # Before checking if the completion matches what the user typed,
                # we need to strip any description and escape the completion to handle special
                # characters because those escape characters are part of what the user typed.
                # Don't call "printf" in a sub-shell because it will be much slower
                # since we are in a loop.
                printf -v comp "%q" "${compline%%$tab*}" &>/dev/null || comp=$(printf "%q" "${compline%%$tab*}")
        
                # Only consider the completions that match
                [[ $comp == "$cur"* ]] || continue
        
                # The completions matches.  Add it to the list of full completions including
                # its description.  We don't escape the completion because it may get printed
                # in a list if there are more than one and we don't want show escape characters
                # in that list.
                COMPREPLY+=("$compline")
        
                # Strip any description before checking the length, and again, don't escape
                # the completion because this length is only used when printing the completions
                # in a list and we don't want show escape characters in that list.
                comp=${compline%%$tab*}
                if ((${#comp}>longest)); then
                    longest=${#comp}
                fi
            done < <(printf "%s\n" "${completions[@]}")
        
            # If there is a single completion left, remove the description text and escape any special characters
            if ((${#COMPREPLY[*]} == 1)); then
                __chezmoi_debug "COMPREPLY[0]: ${COMPREPLY[0]}"
                COMPREPLY[0]=$(printf "%q" "${COMPREPLY[0]%%$tab*}")
                __chezmoi_debug "Removed description from single completion, which is now: ${COMPREPLY[0]}"
            else
                # Format the descriptions
                __chezmoi_format_comp_descriptions $longest
            fi
        }
        
        __chezmoi_handle_special_char()
        {
            local comp="$1"
            local char=$2
            if [[ "$comp" == *${char}* && "$COMP_WORDBREAKS" == *${char}* ]]; then
                local word=${comp%"${comp##*${char}}"}
                local idx=${#COMPREPLY[*]}
                while ((--idx >= 0)); do
                    COMPREPLY[idx]=${COMPREPLY[idx]#"$word"}
                done
            fi
        }
        
        __chezmoi_format_comp_descriptions()
        {
            local tab=$'\t'
            local comp desc maxdesclength
            local longest=$1
        
            local i ci
            for ci in ${!COMPREPLY[*]}; do
                comp=${COMPREPLY[ci]}
                # Properly format the description string which follows a tab character if there is one
                if [[ "$comp" == *$tab* ]]; then
                    __chezmoi_debug "Original comp: $comp"
                    desc=${comp#*$tab}
                    comp=${comp%%$tab*}
        
                    # $COLUMNS stores the current shell width.
                    # Remove an extra 4 because we add 2 spaces and 2 parentheses.
                    maxdesclength=$(( COLUMNS - longest - 4 ))
        
                    # Make sure we can fit a description of at least 8 characters
                    # if we are to align the descriptions.
                    if ((maxdesclength > 8)); then
                        # Add the proper number of spaces to align the descriptions
                        for ((i = ${#comp} ; i < longest ; i++)); do
                            comp+=" "
                        done
                    else
                        # Don't pad the descriptions so we can fit more text after the completion
                        maxdesclength=$(( COLUMNS - ${#comp} - 4 ))
                    fi
        
                    # If there is enough space for any description text,
                    # truncate the descriptions that are too long for the shell width
                    if ((maxdesclength > 0)); then
                        if ((${#desc} > maxdesclength)); then
                            desc=${desc:0:$(( maxdesclength - 1 ))}
                            desc+="…"
                        fi
                        comp+="  ($desc)"
                    fi
                    COMPREPLY[ci]=$comp
                    __chezmoi_debug "Final comp: $comp"
                fi
            done
        }
        
        __start_chezmoi()
        {
            local cur prev words cword split
        
            COMPREPLY=()
        
            # Call _init_completion from the bash-completion package
            # to prepare the arguments properly
            if declare -F _init_completion >/dev/null 2>&1; then
                _init_completion -n =: || return
            else
                __chezmoi_init_completion -n =: || return
            fi
        
            __chezmoi_debug
            __chezmoi_debug "========= starting completion logic =========="
            __chezmoi_debug "cur is ${cur}, words[*] is ${words[*]}, #words[@] is ${#words[@]}, cword is $cword"
        
            # The user could have moved the cursor backwards on the command-line.
            # We need to trigger completion from the $cword location, so we need
            # to truncate the command-line ($words) up to the $cword location.
            words=("${words[@]:0:$cword+1}")
            __chezmoi_debug "Truncated words[*]: ${words[*]},"
        
            local out directive
            __chezmoi_get_completion_results
            __chezmoi_process_completion_results
        }
        
        if [[ $(type -t compopt) = "builtin" ]]; then
            complete -o default -F __start_chezmoi chezmoi
        else
            complete -o default -o nospace -F __start_chezmoi chezmoi
        fi
        
        # ex: ts=4 sw=4 et filetype=sh
        > stdout '# bash completion V2 for chezmoi'
        # test that chezmoi completion fish generates fish completions (0.135s)
        > exec chezmoi completion fish
        [stdout]
        # fish completion for chezmoi                              -*- shell-script -*-
        
        function __chezmoi_debug
            set -l file "$BASH_COMP_DEBUG_FILE"
            if test -n "$file"
                echo "$argv" >> $file
            end
        end
        
        function __chezmoi_perform_completion
            __chezmoi_debug "Starting __chezmoi_perform_completion"
        
            # Extract all args except the last one
            set -l args (commandline -opc)
            # Extract the last arg and escape it in case it is a space
            set -l lastArg (string escape -- (commandline -ct))
        
            __chezmoi_debug "args: $args"
            __chezmoi_debug "last arg: $lastArg"
        
            # Disable ActiveHelp which is not supported for fish shell
            set -l requestComp "CHEZMOI_ACTIVE_HELP=0 $args[1] __complete $args[2..-1] $lastArg"
        
            __chezmoi_debug "Calling $requestComp"
            set -l results (eval $requestComp 2> /dev/null)
        
            # Some programs may output extra empty lines after the directive.
            # Let's ignore them or else it will break completion.
            # Ref: https://github.com/spf13/cobra/issues/1279
            for line in $results[-1..1]
                if test (string trim -- $line) = ""
                    # Found an empty line, remove it
                    set results $results[1..-2]
                else
                    # Found non-empty line, we have our proper output
                    break
                end
            end
        
            set -l comps $results[1..-2]
            set -l directiveLine $results[-1]
        
            # For Fish, when completing a flag with an = (e.g., <program> -n=<TAB>)
            # completions must be prefixed with the flag
            set -l flagPrefix (string match -r -- '-.*=' "$lastArg")
        
            __chezmoi_debug "Comps: $comps"
            __chezmoi_debug "DirectiveLine: $directiveLine"
            __chezmoi_debug "flagPrefix: $flagPrefix"
        
            for comp in $comps
                printf "%s%s\n" "$flagPrefix" "$comp"
            end
        
            printf "%s\n" "$directiveLine"
        end
        
        # this function limits calls to __chezmoi_perform_completion, by caching the result behind $__chezmoi_perform_completion_once_result
        function __chezmoi_perform_completion_once
            __chezmoi_debug "Starting __chezmoi_perform_completion_once"
        
            if test -n "$__chezmoi_perform_completion_once_result"
                __chezmoi_debug "Seems like a valid result already exists, skipping __chezmoi_perform_completion"
                return 0
            end
        
            set --global __chezmoi_perform_completion_once_result (__chezmoi_perform_completion)
            if test -z "$__chezmoi_perform_completion_once_result"
                __chezmoi_debug "No completions, probably due to a failure"
                return 1
            end
        
            __chezmoi_debug "Performed completions and set __chezmoi_perform_completion_once_result"
            return 0
        end
        
        # this function is used to clear the $__chezmoi_perform_completion_once_result variable after completions are run
        function __chezmoi_clear_perform_completion_once_result
            __chezmoi_debug ""
            __chezmoi_debug "========= clearing previously set __chezmoi_perform_completion_once_result variable =========="
            set --erase __chezmoi_perform_completion_once_result
            __chezmoi_debug "Successfully erased the variable __chezmoi_perform_completion_once_result"
        end
        
        function __chezmoi_requires_order_preservation
            __chezmoi_debug ""
            __chezmoi_debug "========= checking if order preservation is required =========="
        
            __chezmoi_perform_completion_once
            if test -z "$__chezmoi_perform_completion_once_result"
                __chezmoi_debug "Error determining if order preservation is required"
                return 1
            end
        
            set -l directive (string sub --start 2 $__chezmoi_perform_completion_once_result[-1])
            __chezmoi_debug "Directive is: $directive"
        
            set -l shellCompDirectiveKeepOrder 32
            set -l keeporder (math (math --scale 0 $directive / $shellCompDirectiveKeepOrder) % 2)
            __chezmoi_debug "Keeporder is: $keeporder"
        
            if test $keeporder -ne 0
                __chezmoi_debug "This does require order preservation"
                return 0
            end
        
            __chezmoi_debug "This doesn't require order preservation"
            return 1
        end
        
        
        # This function does two things:
        # - Obtain the completions and store them in the global __chezmoi_comp_results
        # - Return false if file completion should be performed
        function __chezmoi_prepare_completions
            __chezmoi_debug ""
            __chezmoi_debug "========= starting completion logic =========="
        
            # Start fresh
            set --erase __chezmoi_comp_results
        
            __chezmoi_perform_completion_once
            __chezmoi_debug "Completion results: $__chezmoi_perform_completion_once_result"
        
            if test -z "$__chezmoi_perform_completion_once_result"
                __chezmoi_debug "No completion, probably due to a failure"
                # Might as well do file completion, in case it helps
                return 1
            end
        
            set -l directive (string sub --start 2 $__chezmoi_perform_completion_once_result[-1])
            set --global __chezmoi_comp_results $__chezmoi_perform_completion_once_result[1..-2]
        
            __chezmoi_debug "Completions are: $__chezmoi_comp_results"
            __chezmoi_debug "Directive is: $directive"
        
            set -l shellCompDirectiveError 1
            set -l shellCompDirectiveNoSpace 2
            set -l shellCompDirectiveNoFileComp 4
            set -l shellCompDirectiveFilterFileExt 8
            set -l shellCompDirectiveFilterDirs 16
        
            if test -z "$directive"
                set directive 0
            end
        
            set -l compErr (math (math --scale 0 $directive / $shellCompDirectiveError) % 2)
            if test $compErr -eq 1
                __chezmoi_debug "Received error directive: aborting."
                # Might as well do file completion, in case it helps
                return 1
            end
        
            set -l filefilter (math (math --scale 0 $directive / $shellCompDirectiveFilterFileExt) % 2)
            set -l dirfilter (math (math --scale 0 $directive / $shellCompDirectiveFilterDirs) % 2)
            if test $filefilter -eq 1; or test $dirfilter -eq 1
                __chezmoi_debug "File extension filtering or directory filtering not supported"
                # Do full file completion instead
                return 1
            end
        
            set -l nospace (math (math --scale 0 $directive / $shellCompDirectiveNoSpace) % 2)
            set -l nofiles (math (math --scale 0 $directive / $shellCompDirectiveNoFileComp) % 2)
        
            __chezmoi_debug "nospace: $nospace, nofiles: $nofiles"
        
            # If we want to prevent a space, or if file completion is NOT disabled,
            # we need to count the number of valid completions.
            # To do so, we will filter on prefix as the completions we have received
            # may not already be filtered so as to allow fish to match on different
            # criteria than the prefix.
            if test $nospace -ne 0; or test $nofiles -eq 0
                set -l prefix (commandline -t | string escape --style=regex)
                __chezmoi_debug "prefix: $prefix"
        
                set -l completions (string match -r -- "^$prefix.*" $__chezmoi_comp_results)
                set --global __chezmoi_comp_results $completions
                __chezmoi_debug "Filtered completions are: $__chezmoi_comp_results"
        
                # Important not to quote the variable for count to work
                set -l numComps (count $__chezmoi_comp_results)
                __chezmoi_debug "numComps: $numComps"
        
                if test $numComps -eq 1; and test $nospace -ne 0
                    # We must first split on \t to get rid of the descriptions to be
                    # able to check what the actual completion will be.
                    # We don't need descriptions anyway since there is only a single
                    # real completion which the shell will expand immediately.
                    set -l split (string split --max 1 \t $__chezmoi_comp_results[1])
        
                    # Fish won't add a space if the completion ends with any
                    # of the following characters: @=/:.,
                    set -l lastChar (string sub -s -1 -- $split)
                    if not string match -r -q "[@=/:.,]" -- "$lastChar"
                        # In other cases, to support the "nospace" directive we trick the shell
                        # by outputting an extra, longer completion.
                        __chezmoi_debug "Adding second completion to perform nospace directive"
                        set --global __chezmoi_comp_results $split[1] $split[1].
                        __chezmoi_debug "Completions are now: $__chezmoi_comp_results"
                    end
                end
        
                if test $numComps -eq 0; and test $nofiles -eq 0
                    # To be consistent with bash and zsh, we only trigger file
                    # completion when there are no other completions
                    __chezmoi_debug "Requesting file completion"
                    return 1
                end
            end
        
            return 0
        end
        
        # Since Fish completions are only loaded once the user triggers them, we trigger them ourselves
        # so we can properly delete any completions provided by another script.
        # Only do this if the program can be found, or else fish may print some errors; besides,
        # the existing completions will only be loaded if the program can be found.
        if type -q "chezmoi"
            # The space after the program name is essential to trigger completion for the program
            # and not completion of the program name itself.
            # Also, we use '> /dev/null 2>&1' since '&>' is not supported in older versions of fish.
            complete --do-complete "chezmoi " > /dev/null 2>&1
        end
        
        # Remove any pre-existing completions for the program since we will be handling all of them.
        complete -c chezmoi -e
        
        # this will get called after the two calls below and clear the $__chezmoi_perform_completion_once_result global
        complete -c chezmoi -n '__chezmoi_clear_perform_completion_once_result'
        # The call to __chezmoi_prepare_completions will setup __chezmoi_comp_results
        # which provides the program's completion choices.
        # If this doesn't require order preservation, we don't use the -k flag
        complete -c chezmoi -n 'not __chezmoi_requires_order_preservation && __chezmoi_prepare_completions' -f -a '$__chezmoi_comp_results'
        # otherwise we use the -k flag
        complete -k -c chezmoi -n '__chezmoi_requires_order_preservation && __chezmoi_prepare_completions' -f -a '$__chezmoi_comp_results'
        > stdout '# fish completion for chezmoi'
        # test that chezmoi completion powershell generates powershell completions (0.092s)
        > exec chezmoi completion powershell
        [stdout]
        # powershell completion for chezmoi                              -*- shell-script -*-
        
        function __chezmoi_debug {
            if ($env:BASH_COMP_DEBUG_FILE) {
                "$args" | Out-File -Append -FilePath "$env:BASH_COMP_DEBUG_FILE"
            }
        }
        
        filter __chezmoi_escapeStringWithSpecialChars {
            $_ -replace '\s|#|@|\$|;|,|''|\{|\}|\(|\)|"|`|\||<|>|&','`$&'
        }
        
        [scriptblock]${__chezmoiCompleterBlock} = {
            param(
                    $WordToComplete,
                    $CommandAst,
                    $CursorPosition
                )
        
            # Get the current command line and convert into a string
            $Command = $CommandAst.CommandElements
            $Command = "$Command"
        
            __chezmoi_debug ""
            __chezmoi_debug "========= starting completion logic =========="
            __chezmoi_debug "WordToComplete: $WordToComplete Command: $Command CursorPosition: $CursorPosition"
        
            # The user could have moved the cursor backwards on the command-line.
            # We need to trigger completion from the $CursorPosition location, so we need
            # to truncate the command-line ($Command) up to the $CursorPosition location.
            # Make sure the $Command is longer then the $CursorPosition before we truncate.
            # This happens because the $Command does not include the last space.
            if ($Command.Length -gt $CursorPosition) {
                $Command=$Command.Substring(0,$CursorPosition)
            }
            __chezmoi_debug "Truncated command: $Command"
        
            $ShellCompDirectiveError=1
            $ShellCompDirectiveNoSpace=2
            $ShellCompDirectiveNoFileComp=4
            $ShellCompDirectiveFilterFileExt=8
            $ShellCompDirectiveFilterDirs=16
            $ShellCompDirectiveKeepOrder=32
        
            # Prepare the command to request completions for the program.
            # Split the command at the first space to separate the program and arguments.
            $Program,$Arguments = $Command.Split(" ",2)
        
            $RequestComp="$Program __complete $Arguments"
            __chezmoi_debug "RequestComp: $RequestComp"
        
            # we cannot use $WordToComplete because it
            # has the wrong values if the cursor was moved
            # so use the last argument
            if ($WordToComplete -ne "" ) {
                $WordToComplete = $Arguments.Split(" ")[-1]
            }
            __chezmoi_debug "New WordToComplete: $WordToComplete"
        
        
            # Check for flag with equal sign
            $IsEqualFlag = ($WordToComplete -Like "--*=*" )
            if ( $IsEqualFlag ) {
                __chezmoi_debug "Completing equal sign flag"
                # Remove the flag part
                $Flag,$WordToComplete = $WordToComplete.Split("=",2)
            }
        
            if ( $WordToComplete -eq "" -And ( -Not $IsEqualFlag )) {
                # If the last parameter is complete (there is a space following it)
                # We add an extra empty parameter so we can indicate this to the go method.
                __chezmoi_debug "Adding extra empty parameter"
                # PowerShell 7.2+ changed the way how the arguments are passed to executables,
                # so for pre-7.2 or when Legacy argument passing is enabled we need to use
                # `"`" to pass an empty argument, a "" or '' does not work!!!
                if ($PSVersionTable.PsVersion -lt [version]'7.2.0' -or
                    ($PSVersionTable.PsVersion -lt [version]'7.3.0' -and -not [ExperimentalFeature]::IsEnabled("PSNativeCommandArgumentPassing")) -or
                    (($PSVersionTable.PsVersion -ge [version]'7.3.0' -or [ExperimentalFeature]::IsEnabled("PSNativeCommandArgumentPassing")) -and
                      $PSNativeCommandArgumentPassing -eq 'Legacy')) {
                     $RequestComp="$RequestComp" + ' `"`"'
                } else {
                     $RequestComp="$RequestComp" + ' ""'
                }
            }
        
            __chezmoi_debug "Calling $RequestComp"
            # First disable ActiveHelp which is not supported for Powershell
            ${env:CHEZMOI_ACTIVE_HELP}=0
        
            #call the command store the output in $out and redirect stderr and stdout to null
            # $Out is an array contains each line per element
            Invoke-Expression -OutVariable out "$RequestComp" 2>&1 | Out-Null
        
            # get directive from last line
            [int]$Directive = $Out[-1].TrimStart(':')
            if ($Directive -eq "") {
                # There is no directive specified
                $Directive = 0
            }
            __chezmoi_debug "The completion directive is: $Directive"
        
            # remove directive (last element) from out
            $Out = $Out | Where-Object { $_ -ne $Out[-1] }
            __chezmoi_debug "The completions are: $Out"
        
            if (($Directive -band $ShellCompDirectiveError) -ne 0 ) {
                # Error code.  No completion.
                __chezmoi_debug "Received error from custom completion go code"
                return
            }
        
            $Longest = 0
            [Array]$Values = $Out | ForEach-Object {
                #Split the output in name and description
                $Name, $Description = $_.Split("`t",2)
                __chezmoi_debug "Name: $Name Description: $Description"
        
                # Look for the longest completion so that we can format things nicely
                if ($Longest -lt $Name.Length) {
                    $Longest = $Name.Length
                }
        
                # Set the description to a one space string if there is none set.
                # This is needed because the CompletionResult does not accept an empty string as argument
                if (-Not $Description) {
                    $Description = " "
                }
                New-Object -TypeName PSCustomObject -Property @{
                    Name = "$Name"
                    Description = "$Description"
                }
            }
        
        
            $Space = " "
            if (($Directive -band $ShellCompDirectiveNoSpace) -ne 0 ) {
                # remove the space here
                __chezmoi_debug "ShellCompDirectiveNoSpace is called"
                $Space = ""
            }
        
            if ((($Directive -band $ShellCompDirectiveFilterFileExt) -ne 0 ) -or
               (($Directive -band $ShellCompDirectiveFilterDirs) -ne 0 ))  {
                __chezmoi_debug "ShellCompDirectiveFilterFileExt ShellCompDirectiveFilterDirs are not supported"
        
                # return here to prevent the completion of the extensions
                return
            }
        
            $Values = $Values | Where-Object {
                # filter the result
                $_.Name -like "$WordToComplete*"
        
                # Join the flag back if we have an equal sign flag
                if ( $IsEqualFlag ) {
                    __chezmoi_debug "Join the equal sign flag back to the completion value"
                    $_.Name = $Flag + "=" + $_.Name
                }
            }
        
            # we sort the values in ascending order by name if keep order isn't passed
            if (($Directive -band $ShellCompDirectiveKeepOrder) -eq 0 ) {
                $Values = $Values | Sort-Object -Property Name
            }
        
            if (($Directive -band $ShellCompDirectiveNoFileComp) -ne 0 ) {
                __chezmoi_debug "ShellCompDirectiveNoFileComp is called"
        
                if ($Values.Length -eq 0) {
                    # Just print an empty string here so the
                    # shell does not start to complete paths.
                    # We cannot use CompletionResult here because
                    # it does not accept an empty string as argument.
                    ""
                    return
                }
            }
        
            # Get the current mode
            $Mode = (Get-PSReadLineKeyHandler | Where-Object {$_.Key -eq "Tab" }).Function
            __chezmoi_debug "Mode: $Mode"
        
            $Values | ForEach-Object {
        
                # store temporary because switch will overwrite $_
                $comp = $_
        
                # PowerShell supports three different completion modes
                # - TabCompleteNext (default windows style - on each key press the next option is displayed)
                # - Complete (works like bash)
                # - MenuComplete (works like zsh)
                # You set the mode with Set-PSReadLineKeyHandler -Key Tab -Function <mode>
        
                # CompletionResult Arguments:
                # 1) CompletionText text to be used as the auto completion result
                # 2) ListItemText   text to be displayed in the suggestion list
                # 3) ResultType     type of completion result
                # 4) ToolTip        text for the tooltip with details about the object
        
                switch ($Mode) {
        
                    # bash like
                    "Complete" {
        
                        if ($Values.Length -eq 1) {
                            __chezmoi_debug "Only one completion left"
        
                            # insert space after value
                            $CompletionText = $($comp.Name | __chezmoi_escapeStringWithSpecialChars) + $Space
                            if ($ExecutionContext.SessionState.LanguageMode -eq "FullLanguage"){
                                [System.Management.Automation.CompletionResult]::new($CompletionText, "$($comp.Name)", 'ParameterValue', "$($comp.Description)")
                            } else {
                                $CompletionText
                            }
        
                        } else {
                            # Add the proper number of spaces to align the descriptions
                            while($comp.Name.Length -lt $Longest) {
                                $comp.Name = $comp.Name + " "
                            }
        
                            # Check for empty description and only add parentheses if needed
                            if ($($comp.Description) -eq " " ) {
                                $Description = ""
                            } else {
                                $Description = "  ($($comp.Description))"
                            }
        
                            $CompletionText = "$($comp.Name)$Description"
                            if ($ExecutionContext.SessionState.LanguageMode -eq "FullLanguage"){
                                [System.Management.Automation.CompletionResult]::new($CompletionText, "$($comp.Name)$Description", 'ParameterValue', "$($comp.Description)")
                            } else {
                                $CompletionText
                            }
                        }
                     }
        
                    # zsh like
                    "MenuComplete" {
                        # insert space after value
                        # MenuComplete will automatically show the ToolTip of
                        # the highlighted value at the bottom of the suggestions.
        
                        $CompletionText = $($comp.Name | __chezmoi_escapeStringWithSpecialChars) + $Space
                        if ($ExecutionContext.SessionState.LanguageMode -eq "FullLanguage"){
                            [System.Management.Automation.CompletionResult]::new($CompletionText, "$($comp.Name)", 'ParameterValue', "$($comp.Description)")
                        } else {
                            $CompletionText
                        }
                    }
        
                    # TabCompleteNext and in case we get something unknown
                    Default {
                        # Like MenuComplete but we don't want to add a space here because
                        # the user need to press space anyway to get the completion.
                        # Description will not be shown because that's not possible with TabCompleteNext
        
                        $CompletionText = $($comp.Name | __chezmoi_escapeStringWithSpecialChars)
                        if ($ExecutionContext.SessionState.LanguageMode -eq "FullLanguage"){
                            [System.Management.Automation.CompletionResult]::new($CompletionText, "$($comp.Name)", 'ParameterValue', "$($comp.Description)")
                        } else {
                            $CompletionText
                        }
                    }
                }
        
            }
        }
        
        Register-ArgumentCompleter -CommandName 'chezmoi' -ScriptBlock ${__chezmoiCompleterBlock}
        > stdout 'Register-ArgumentCompleter'
        # test that chezmoi completion zsh generates zsh completions (0.058s)
        > exec chezmoi completion zsh
        [stdout]
        #compdef chezmoi
        compdef _chezmoi chezmoi
        
        # zsh completion for chezmoi                              -*- shell-script -*-
        
        __chezmoi_debug()
        {
            local file="$BASH_COMP_DEBUG_FILE"
            if [[ -n ${file} ]]; then
                echo "$*" >> "${file}"
            fi
        }
        
        _chezmoi()
        {
            local shellCompDirectiveError=1
            local shellCompDirectiveNoSpace=2
            local shellCompDirectiveNoFileComp=4
            local shellCompDirectiveFilterFileExt=8
            local shellCompDirectiveFilterDirs=16
            local shellCompDirectiveKeepOrder=32
        
            local lastParam lastChar flagPrefix requestComp out directive comp lastComp noSpace keepOrder
            local -a completions
        
            __chezmoi_debug "\n========= starting completion logic =========="
            __chezmoi_debug "CURRENT: ${CURRENT}, words[*]: ${words[*]}"
        
            # The user could have moved the cursor backwards on the command-line.
            # We need to trigger completion from the $CURRENT location, so we need
            # to truncate the command-line ($words) up to the $CURRENT location.
            # (We cannot use $CURSOR as its value does not work when a command is an alias.)
            words=("${=words[1,CURRENT]}")
            __chezmoi_debug "Truncated words[*]: ${words[*]},"
        
            lastParam=${words[-1]}
            lastChar=${lastParam[-1]}
            __chezmoi_debug "lastParam: ${lastParam}, lastChar: ${lastChar}"
        
            # For zsh, when completing a flag with an = (e.g., chezmoi -n=<TAB>)
            # completions must be prefixed with the flag
            setopt local_options BASH_REMATCH
            if [[ "${lastParam}" =~ '-.*=' ]]; then
                # We are dealing with a flag with an =
                flagPrefix="-P ${BASH_REMATCH}"
            fi
        
            # Prepare the command to obtain completions
            requestComp="${words[1]} __complete ${words[2,-1]}"
            if [ "${lastChar}" = "" ]; then
                # If the last parameter is complete (there is a space following it)
                # We add an extra empty parameter so we can indicate this to the go completion code.
                __chezmoi_debug "Adding extra empty parameter"
                requestComp="${requestComp} \"\""
            fi
        
            __chezmoi_debug "About to call: eval ${requestComp}"
        
            # Use eval to handle any environment variables and such
            out=$(eval ${requestComp} 2>/dev/null)
            __chezmoi_debug "completion output: ${out}"
        
            # Extract the directive integer following a : from the last line
            local lastLine
            while IFS='\n' read -r line; do
                lastLine=${line}
            done < <(printf "%s\n" "${out[@]}")
            __chezmoi_debug "last line: ${lastLine}"
        
            if [ "${lastLine[1]}" = : ]; then
                directive=${lastLine[2,-1]}
                # Remove the directive including the : and the newline
                local suffix
                (( suffix=${#lastLine}+2))
                out=${out[1,-$suffix]}
            else
                # There is no directive specified.  Leave $out as is.
                __chezmoi_debug "No directive found.  Setting do default"
                directive=0
            fi
        
            __chezmoi_debug "directive: ${directive}"
            __chezmoi_debug "completions: ${out}"
            __chezmoi_debug "flagPrefix: ${flagPrefix}"
        
            if [ $((directive & shellCompDirectiveError)) -ne 0 ]; then
                __chezmoi_debug "Completion received error. Ignoring completions."
                return
            fi
        
            local activeHelpMarker="_activeHelp_ "
            local endIndex=${#activeHelpMarker}
            local startIndex=$((${#activeHelpMarker}+1))
            local hasActiveHelp=0
            while IFS='\n' read -r comp; do
                # Check if this is an activeHelp statement (i.e., prefixed with $activeHelpMarker)
                if [ "${comp[1,$endIndex]}" = "$activeHelpMarker" ];then
                    __chezmoi_debug "ActiveHelp found: $comp"
                    comp="${comp[$startIndex,-1]}"
                    if [ -n "$comp" ]; then
                        compadd -x "${comp}"
                        __chezmoi_debug "ActiveHelp will need delimiter"
                        hasActiveHelp=1
                    fi
        
                    continue
                fi
        
                if [ -n "$comp" ]; then
                    # If requested, completions are returned with a description.
                    # The description is preceded by a TAB character.
                    # For zsh's _describe, we need to use a : instead of a TAB.
                    # We first need to escape any : as part of the completion itself.
                    comp=${comp//:/\\:}
        
                    local tab="$(printf '\t')"
                    comp=${comp//$tab/:}
        
                    __chezmoi_debug "Adding completion: ${comp}"
                    completions+=${comp}
                    lastComp=$comp
                fi
            done < <(printf "%s\n" "${out[@]}")
        
            # Add a delimiter after the activeHelp statements, but only if:
            # - there are completions following the activeHelp statements, or
            # - file completion will be performed (so there will be choices after the activeHelp)
            if [ $hasActiveHelp -eq 1 ]; then
                if [ ${#completions} -ne 0 ] || [ $((directive & shellCompDirectiveNoFileComp)) -eq 0 ]; then
                    __chezmoi_debug "Adding activeHelp delimiter"
                    compadd -x "--"
                    hasActiveHelp=0
                fi
            fi
        
            if [ $((directive & shellCompDirectiveNoSpace)) -ne 0 ]; then
                __chezmoi_debug "Activating nospace."
                noSpace="-S ''"
            fi
        
            if [ $((directive & shellCompDirectiveKeepOrder)) -ne 0 ]; then
                __chezmoi_debug "Activating keep order."
                keepOrder="-V"
            fi
        
            if [ $((directive & shellCompDirectiveFilterFileExt)) -ne 0 ]; then
                # File extension filtering
                local filteringCmd
                filteringCmd='_files'
                for filter in ${completions[@]}; do
                    if [ ${filter[1]} != '*' ]; then
                        # zsh requires a glob pattern to do file filtering
                        filter="\*.$filter"
                    fi
                    filteringCmd+=" -g $filter"
                done
                filteringCmd+=" ${flagPrefix}"
        
                __chezmoi_debug "File filtering command: $filteringCmd"
                _arguments '*:filename:'"$filteringCmd"
            elif [ $((directive & shellCompDirectiveFilterDirs)) -ne 0 ]; then
                # File completion for directories only
                local subdir
                subdir="${completions[1]}"
                if [ -n "$subdir" ]; then
                    __chezmoi_debug "Listing directories in $subdir"
                    pushd "${subdir}" >/dev/null 2>&1
                else
                    __chezmoi_debug "Listing directories in ."
                fi
        
                local result
                _arguments '*:dirname:_files -/'" ${flagPrefix}"
                result=$?
                if [ -n "$subdir" ]; then
                    popd >/dev/null 2>&1
                fi
                return $result
            else
                __chezmoi_debug "Calling _describe"
                if eval _describe $keepOrder "completions" completions $flagPrefix $noSpace; then
                    __chezmoi_debug "_describe found some completions"
        
                    # Return the success of having called _describe
                    return 0
                else
                    __chezmoi_debug "_describe did not find completions."
                    __chezmoi_debug "Checking if we should do file completion."
                    if [ $((directive & shellCompDirectiveNoFileComp)) -ne 0 ]; then
                        __chezmoi_debug "deactivating file completion"
        
                        # We must return an error code here to let zsh know that there were no
                        # completions found by _describe; this is what will trigger other
                        # matching algorithms to attempt to find completions.
                        # For example zsh can match letters in the middle of words.
                        return 1
                    else
                        # Perform file completion
                        __chezmoi_debug "Activating file completion"
        
                        # We must return the result of this command, so it must be the
                        # last command, or else we must store its result to return it.
                        _arguments '*:filename:_files'" ${flagPrefix}"
                    fi
                fi
            fi
        }
        
        # don't run the completion function when being source-ed or eval-ed
        if [ "$funcstack[1]" = "_chezmoi" ]; then
            _chezmoi
        fi
        > stdout '#compdef chezmoi'
        # test that --color t values are completed (0.075s)
        > exec chezmoi __complete --color t
        [stdout]
        t
        true
        :4
        [stderr]
        Completion ended with directive: ShellCompDirectiveNoFileComp
        > cmp stdout golden/auto-bool-t
        # test that --config-format flags are completed (0.096s)
        > exec chezmoi __complete --config-format ''
        [stdout]
        
        json
        toml
        yaml
        :4
        [stderr]
        Completion ended with directive: ShellCompDirectiveNoFileComp
        > cmp stdout golden/config-format
        # test that --mode values are completed (0.127s)
        > exec chezmoi __complete --mode ''
        [stdout]
        file
        symlink
        :4
        [stderr]
        Completion ended with directive: ShellCompDirectiveNoFileComp
        > cmp stdout golden/mode
        # test that --use-builtin flags are completed (0.124s)
        > exec chezmoi __complete --use-builtin
        [stdout]
        --use-builtin-age	Use builtin age
        --use-builtin-diff	Use builtin diff
        --use-builtin-git	Use builtin git
        :4
        [stderr]
        Completion ended with directive: ShellCompDirectiveNoFileComp
        > cmp stdout golden/use-builtin-flags
        # test that add --secrets values are completed (0.128s)
        > exec chezmoi __complete add --secrets=
        [stdout]
        error
        ignore
        warning
        :4
        [stderr]
        Completion ended with directive: ShellCompDirectiveNoFileComp
        > cmp stdout golden/secrets
        # test that apply --exclude values are completed (0.173s)
        > exec chezmoi __complete apply --exclude=
        [stdout]
        all
        always
        dirs
        encrypted
        externals
        files
        noalways
        nodirs
        noencrypted
        noexternals
        nofiles
        none
        noremove
        noscripts
        nosymlinks
        notemplates
        remove
        scripts
        symlinks
        templates
        :6
        [stderr]
        Completion ended with directive: ShellCompDirectiveNoSpace, ShellCompDirectiveNoFileComp
        > cmp stdout golden/entry-type-set
        # test that apply --include values are completed (0.080s)
        > exec chezmoi __complete apply --include=
        [stdout]
        all
        always
        dirs
        encrypted
        externals
        files
        noalways
        nodirs
        noencrypted
        noexternals
        nofiles
        none
        noremove
        noscripts
        nosymlinks
        notemplates
        remove
        scripts
        symlinks
        templates
        :6
        [stderr]
        Completion ended with directive: ShellCompDirectiveNoSpace, ShellCompDirectiveNoFileComp
        > cmp stdout golden/entry-type-set
        # test that apply --refresh-externals values are completed (0.038s)
        > exec chezmoi __complete apply --refresh-externals=
        [stdout]
        always
        auto
        never
        :4
        [stderr]
        Completion ended with directive: ShellCompDirectiveNoFileComp
        > cmp stdout golden/refresh-externals
        # test that archive --format values are completed (0.148s)
        > exec chezmoi __complete archive --format=
        [stdout]
        
        tar
        tar.gz
        tgz
        zip
        :4
        [stderr]
        Completion ended with directive: ShellCompDirectiveNoFileComp
        > cmp stdout golden/archive-format
        # test that data --format values are completed (0.112s)
        > exec chezmoi __complete data --format=
        [stdout]
        
        json
        yaml
        :4
        [stderr]
        Completion ended with directive: ShellCompDirectiveNoFileComp
        > cmp stdout golden/output-format-with-empty
        # test that dump --format values are completed (0.063s)
        > exec chezmoi __complete dump --format=
        [stdout]
        
        json
        yaml
        :4
        [stderr]
        Completion ended with directive: ShellCompDirectiveNoFileComp
        > cmp stdout golden/output-format-with-empty
        # test that dump-config --format values are completed (0.095s)
        > exec chezmoi __complete dump-config --format=
        [stdout]
        
        json
        yaml
        :4
        [stderr]
        Completion ended with directive: ShellCompDirectiveNoFileComp
        > cmp stdout golden/output-format-with-empty
        # test that managed path style values are completed (0.122s)
        > exec chezmoi __complete managed --path-style=
        [stdout]
        absolute
        all
        relative
        source-absolute
        source-relative
        :4
        [stderr]
        Completion ended with directive: ShellCompDirectiveNoFileComp
        > cmp stdout golden/path-style-with-source
        # test that state data --format values are completed (0.079s)
        > exec chezmoi __complete state data --format=
        [stdout]
        
        json
        yaml
        :4
        [stderr]
        Completion ended with directive: ShellCompDirectiveNoFileComp
        > cmp stdout golden/output-format-with-empty
        # test that state dump --format values are completed (0.187s)
        > exec chezmoi __complete state dump --format=
        [stdout]
        
        json
        yaml
        :4
        [stderr]
        Completion ended with directive: ShellCompDirectiveNoFileComp
        > cmp stdout golden/output-format-with-empty
        # test that status path style values are completed (0.061s)
        > exec chezmoi __complete status --path-style=
        [stdout]
        absolute
        relative
        :4
        [stderr]
        Completion ended with directive: ShellCompDirectiveNoFileComp
        > cmp stdout golden/path-style
        # test that unmanaged path style values are completed (0.078s)
        > exec chezmoi __complete unmanaged --path-style=
        [stdout]
        absolute
        relative
        :4
        [stderr]
        Completion ended with directive: ShellCompDirectiveNoFileComp
        > cmp stdout golden/unmanaged-path-style
        PASS
        
=== CONT  TestScript/issue4927
=== NAME  TestScript/merge_unix
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] skip 'UNIX only'
        > mkhomedir
        > mksourcedir
        # test that chezmoi merge does a three-way merge (0.033s)
        > exec chezmoi merge $HOME${/}.file
        [stdout]
        $WORK/home/user/.file $WORK/home/user/.local/share/chezmoi/dot_file $WORK/.tmp/chezmoi-merge1585283896/.file
        > stdout ^${HOME@R}/\.file\s+${CHEZMOISOURCEDIR@R}/dot_file\s+${WORK@R}/.*/\.file$
        # test that chezmoi merge falls back to a two-way merge when the template is invalid
        # FIXME the following test fails
        # chezmoi merge $HOME${/}.invalid_template
        # stdout ^${HOME@R}/\.invalid_template\s+$CHEZMOISOURCEDIR/dot_invalid_template\.tmpl$ (0.000s)
        > chhome home2/user
        # test that chezmoi merge does a three-way merge with the arguments in the configured order (0.098s)
        > exec chezmoi merge $HOME${/}.file
        [stdout]
        $WORK/home2/user/.local/share/chezmoi/dot_file $WORK/home2/user/.file $WORK/.tmp/chezmoi-merge1666381618/.file
        > stdout ^${CHEZMOISOURCEDIR@R}/dot_file\s+${HOME@R}/\.file\s+${WORK@R}/.*/\.file$
        > chhome home3/user
        # test that chezmoi merge appends the destination, source, and target paths if merge.args does not contain any templates (0.116s)
        > exec chezmoi merge $HOME${/}.file
        [stdout]
        arg $WORK/home3/user/.file $WORK/home3/user/.local/share/chezmoi/dot_file $WORK/.tmp/chezmoi-merge4144032700/.file
        > stdout ^arg\s+${HOME@R}/\.file\s+${CHEZMOISOURCEDIR@R}/dot_file\s+${WORK@R}/.*/\.file$
        > chhome home4/user
        # test that chezmoi merge respects .chezmoiroot (0.069s)
        > exec chezmoi merge $HOME${/}.file
        [stdout]
        $WORK/home4/user/.file $WORK/home4/user/.local/share/chezmoi/home/dot_file $WORK/.tmp/chezmoi-merge230912392/.file
        > stdout ^${HOME@R}/\.file\s+${CHEZMOISOURCEDIR@R}/home/dot_file\s+${WORK@R}/.*/\.file$
        PASS
        
=== CONT  TestScript/issue4845
=== NAME  TestScript/mergeall_unix
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] skip 'UNIX only'
        # test that chezmoi merge-all does not run the merge command if nothing is modified (0.120s)
        > exec chezmoi merge-all
        > ! stdout .
        # test that chezmoi merge-all runs the merge command if a file is modified (0.148s)
        > edit $HOME/.file
        > exec chezmoi merge-all
        [stdout]
        $WORK/home/user/.file $WORK/home/user/.local/share/chezmoi/dot_file.tmpl $WORK/.tmp/chezmoi-merge3575685234/.file
        > stdout ^${HOME@R}/\.file\s+${CHEZMOISOURCEDIR@R}/dot_file\.tmpl\s+${WORK@R}/.*/\.file$
        > chhome home2/user
        # test that chezmoi merge-all only merges files (0.090s)
        > exec chezmoi merge-all
        > ! stdout .
        > ! stderr .
        PASS
        
=== CONT  TestScript/issue4827
=== NAME  TestScript/keepgoing
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > mkhomedir
        # test that chezmoi diff without --keep-going fails when there is an error (0.057s)
        > ! exec chezmoi diff
        [stdout]
        diff --git a/1ok b/1ok
        new file mode 100644
        index 0000000000000000000000000000000000000000..9c59e24b8393179a5d712de4f990178df5734d99
        --- /dev/null
        +++ b/1ok
        @@ -0,0 +1 @@
        +first
        [stderr]
        chezmoi: 2error: template: 2error.tmpl:2: unclosed action started at 2error.tmpl:1
        [exit status 1]
        # test that chezmoi apply without --keep-going fails but still writes the first file (0.107s)
        > ! exec chezmoi apply --force
        [stderr]
        chezmoi: 2error: template: 2error.tmpl:2: unclosed action started at 2error.tmpl:1
        [exit status 1]
        > cmp $HOME/1ok golden/1ok
        > ! exists $HOME/2error
        > ! exists $HOME/3ok
        > stderr '2error: template: 2error\.tmpl:2: unclosed action started at 2error\.tmpl:1'
        # test that chezmoi apply with --keep-going writes all files that it can without errors (0.072s)
        > ! exec chezmoi apply --force --keep-going
        [stderr]
        chezmoi: 2error: template: 2error.tmpl:2: unclosed action started at 2error.tmpl:1
        [exit status 1]
        > cmp $HOME/1ok golden/1ok
        > ! exists $HOME/2error
        > cmp $HOME/3ok golden/3ok
        # FIXME add chezmoi init tests
        # FIXME add chezmoi update tests (0.000s)
        PASS
        
=== CONT  TestScript/issue4824
=== NAME  TestScript/issue5095
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test chezmoi apply --error-on-conflict does nothing when there are no conflicts (0.119s)
        > exec chezmoi apply
        > edit $CHEZMOISOURCEDIR/dot_file
        > exec chezmoi apply --error-on-conflict
        # test chezmoi apply --error-on-conflict exits with an error when there is a conflict (0.075s)
        > edit $HOME/.file
        > ! exec chezmoi apply --error-on-conflict
        [exit status 1]
        > ! stdout .
        > ! stderr .
        > cmp $HOME/.file golden/.file
        PASS
        
=== CONT  TestScript/issue4816
=== NAME  TestScript/issue4827
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi add will add some files with the prefix chezmoi (0.095s)
        > exec chezmoi add $HOME/.local/share/chezmoi.age
        PASS
        
=== CONT  TestScript/issue4796
=== NAME  TestScript/keepassxc
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > mockcommand bin/keepassxc-cli
        # test keepassxcAttachment template function (0.080s)
        > stdin $HOME/input
        > exec chezmoi execute-template --no-tty '{{ keepassxcAttachment "example.com" "attachment" }}'
        [stdout]
        Enter password to unlock /secrets.kdbx: # contents of attachment
        > stdout '# contents of attachment'
        # test keepassxcAttribute template function (0.113s)
        > stdin $HOME/input
        > exec chezmoi execute-template --no-tty '{{ keepassxcAttribute "example.com" "host-name" }}'
        [stdout]
        Enter password to unlock /secrets.kdbx: example.com> stdout example\.com$
        # test keepassxc template function and that password is only requested once (0.049s)
        > stdin $HOME/input
        > exec chezmoi execute-template --no-tty '{{ (keepassxc "example.com").UserName }}/{{ (keepassxc "example.com").Password }}'
        [stdout]
        Enter password to unlock /secrets.kdbx: examplelogin/examplepassword> stdout examplelogin/examplepassword$
        PASS
        
=== CONT  TestScript/debug
    cmd.go:380: age not found in $PATH
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [!exec:age] skip 'age not found in $PATH'
        
=== CONT  TestScript/diffcommand_unix
=== NAME  TestScript/keeper
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > mockcommand bin/keeper
        # test keeper template function (0.069s)
        > exec chezmoi execute-template '{{ (keeper "QOahgRH_dSTvSvhRBqzCzQ").record_uid }}'
        [stdout]
        QOahgRH_dSTvSvhRBqzCzQ> stdout '^QOahgRH_dSTvSvhRBqzCzQ$'
        # test keeperDataFields template function (0.107s)
        > exec chezmoi execute-template '{{ index (keeperDataFields "QOahgRH_dSTvSvhRBqzCzQ").password 0 }}'
        [stdout]
        mypassword> stdout ^mypassword$
        # test keeperFindPassword template function (0.088s)
        > exec chezmoi execute-template '{{ keeperFindPassword "Example" }}'
        [stdout]
        mypassword> stdout ^mypassword$
        PASS
        
=== CONT  TestScript/diff
=== NAME  TestScript/issue4976
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > mkageconfig
        > appendline $CHEZMOICONFIGDIR/chezmoi.toml '[add]'
        > appendline $CHEZMOICONFIGDIR/chezmoi.toml '    secrets = "error"'
        # test that chezmoi re-add --re-encrypt allows secrets in encrypted files (0.205s)
        > exec chezmoi add --encrypt $HOME${/}.file
        > ! stderr .
        > edit $HOME${/}.file
        > exec chezmoi re-add --re-encrypt
        > ! stderr .
        PASS
        
=== CONT  TestScript/destroy
=== NAME  TestScript/issue4845
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi apply with a file called dot_ in the source directory returns an error (0.095s)
        > ! exec chezmoi apply
        [stderr]
        chezmoi: dot_: invalid filename
        [exit status 1]
        > stderr 'dot_: invalid filename'
        > chhome home2/user
        # test that chezmoi apply with a directory called literal_ in the source directory returns an error (0.095s)
        > ! exec chezmoi apply
        [stderr]
        chezmoi: literal_: invalid directory name
        [exit status 1]
        > stderr 'literal_: invalid directory name'
        PASS
        
=== CONT  TestScript/addnew
=== NAME  TestScript/issue4796
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi execute-template --override-data does not panic when there is no template data (0.114s)
        > exec chezmoi execute-template --override-data '{"foo":"baz"}' '{{ .foo }}'
        [stdout]
        baz> stdout baz
        PASS
        
=== CONT  TestScript/applyremove
=== NAME  TestScript/issue5061
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > mkageconfig
        > exec chezmoi add --encrypt $HOME${/}.encrypted
        > cp $CHEZMOISOURCEDIR/encrypted_dot_encrypted.age golden
        # test that chezmoi add warns when the encrypted_ attribute would be removed (0.085s)
        > stdin golden/no
        > exec chezmoi add --no-tty $HOME${/}.encrypted
        [stdout]
        adding .encrypted would remove encrypted attribute, continue (yes/no/all/quit)? > stdout 'adding .encrypted would remove encrypted attribute'
        > cmp $CHEZMOISOURCEDIR/encrypted_dot_encrypted.age golden/encrypted_dot_encrypted.age
        # test that chezmoi add allows the encrypted_ attribute to be removed (0.251s)
        > stdin golden/yes
        > exec chezmoi add --no-tty $HOME${/}.encrypted
        [stdout]
        adding .encrypted would remove encrypted attribute, continue (yes/no/all/quit)? > stdout 'adding .encrypted would remove encrypted attribute'
        > cmp $CHEZMOISOURCEDIR/dot_encrypted golden/dot_encrypted
        PASS
        
=== CONT  TestScript/applyexact
=== NAME  TestScript/issue4824
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi re-add does not affect templates (0.263s)
        > exec chezmoi apply
        > edit $HOME/dir/a
        > edit $HOME/dir/b
        > exec chezmoi re-add
        > cmp $CHEZMOISOURCEDIR/exact_dir/a golden/edited-a
        > cmp $CHEZMOISOURCEDIR/exact_dir/b.tmpl golden/b.tmpl
        PASS
        
=== CONT  TestScript/applychmod_unix
=== NAME  TestScript/applyremove
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi apply --dry-run does not remove entries (0.032s)
        > exec chezmoi apply --dry-run --force
        > exists $HOME/.dir/file
        > exists $HOME/.file1
        > exists $HOME/.file2
        # test that chezmoi apply file1 removes only file1 (0.089s)
        > exec chezmoi apply --force $HOME${/}.file1
        > exists $HOME/.dir/file
        > ! exists $HOME/.file1
        > exists $HOME/.file2
        # test that chezmoi apply removes all entries (0.105s)
        > exec chezmoi apply --force
        > ! exists $HOME/.dir/file
        > ! exists $HOME/.file1
        > ! exists $HOME/.file2
        PASS
        
=== CONT  TestScript/apply
=== NAME  TestScript/addnew
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi add --new creates a new file (0.157s)
        > exec chezmoi add --new $HOME/.file1
        > exists $CHEZMOISOURCEDIR/empty_dot_file1
        # test that chezmoi add --new --recursive=false creates a new file (0.129s)
        > exec chezmoi add --new --recursive=false $HOME/.file2
        > exists $CHEZMOISOURCEDIR/empty_dot_file2
        PASS
        
=== CONT  TestScript/agekeygen
=== NAME  TestScript/issue4816
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > mkageconfig
        > [windows] unix2dos golden/config
        > [windows] unix2dos golden/edited-config
        > mkdir $CHEZMOISOURCEDIR/.chezmoitemplates/dot_ssh
        # test that chezmoi edit-encrypted works on files in the source directory (0.380s)
        > exec chezmoi encrypt -o $CHEZMOISOURCEDIR/.chezmoitemplates/dot_ssh/config.age golden/config
        > exec chezmoi edit-encrypted $CHEZMOISOURCEDIR/.chezmoitemplates/dot_ssh/config.age
        [stderr]
        chezmoi: warning: $WORK/bin/editor $WORK/.tmp/chezmoi-edit-encrypted4112370166/.local/share/chezmoi/.chezmoitemplates/dot_ssh/config.age: returned in less than 1s
        > exec chezmoi decrypt $CHEZMOISOURCEDIR/.chezmoitemplates/dot_ssh/config.age
        [stdout]
        # contents of config
        # edited
        > cmp stdout golden/edited-config
        PASS
        
=== NAME  TestScript/doppler
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > mockcommand bin/doppler
        # test doppler template function (global configuration) (0.158s)
        > exec chezmoi execute-template '{{ doppler "PASSWORD_123"}}'
        [stdout]
        staplebatteryhorsecorrect> stdout ^staplebatteryhorsecorrect$
        # test doppler template function with project and config arguments (supplied configuration) (0.149s)
        > exec chezmoi execute-template '{{ doppler "PASSWORD" "project" "config" }}'
        [stdout]
        correcthorsebatterystaple> stdout ^correcthorsebatterystaple$
        # test doppler template function with empty project and config arguments (global configuration) (0.143s)
        > exec chezmoi execute-template '{{ doppler "PASSWORD" "" "" }}'
        [stdout]
        correcthorsebatterystaple> stdout ^correcthorsebatterystaple$
        # test dopplerProjectJson template function with project and config arguments (supplied configuration) (0.175s)
        > exec chezmoi execute-template '{{ (dopplerProjectJson "project" "config").PASSWORD_123 }}'
        [stdout]
        staplebatteryhorsecorrect> stdout ^staplebatteryhorsecorrect$
        # test dopplerProjectJson template function with JSON secret piped to fromJson function, project and config arguments (0.203s)
        > exec chezmoi execute-template '{{ ((dopplerProjectJson "project" "config").JSON_SECRET | fromJson).created_by.email }}'
        [stdout]
        user@example.com> stdout ^user@example\.com$
        # test dopplerProjectJson template function with project and empty config arguments (global configuration) (0.187s)
        > exec chezmoi execute-template '{{ (dopplerProjectJson "project" "").PASSWORD }}'
        [stdout]
        correcthorsebatterystaple> stdout ^correcthorsebatterystaple$
        # test dopplerProjectJson template function with empty project and empty config arguments (global configuration) (0.124s)
        > exec chezmoi execute-template '{{ (dopplerProjectJson "" "").PASSWORD }}'
        [stdout]
        correcthorsebatterystaple> stdout ^correcthorsebatterystaple$
        # test dopplerProjectJson template function without project and config arguments (global configuration) (0.127s)
        > exec chezmoi execute-template '{{ dopplerProjectJson.PASSWORD }}'
        [stdout]
        correcthorsebatterystaple> stdout ^correcthorsebatterystaple$
        > chhome home3/user
        # test doppler template function with default project and config arguments (chezmoi configuration) (0.111s)
        > exec chezmoi execute-template '{{ doppler "PASSWORD" }}'
        [stdout]
        default-project-password> stdout ^default-project-password$
        # test doppler template function with project and default config arguments (chezmoi configuration) (0.068s)
        > exec chezmoi execute-template '{{ doppler "PASSWORD" "other-project" }}'
        [stdout]
        other-project-password> stdout ^other-project-password$
        # test doppler template function with project and default config arguments (supplied configuration) (0.140s)
        > exec chezmoi execute-template '{{ doppler "PASSWORD" "project" "config" }}'
        [stdout]
        correcthorsebatterystaple> stdout ^correcthorsebatterystaple$
        # test dopplerProjectJson template function with project and default config arguments (chezmoi configuration) (0.145s)
        > exec chezmoi execute-template '{{ (dopplerProjectJson "default-project").DOPPLER_CONFIG }}'
        [stdout]
        default-config> stdout ^default-config$
        # test dopplerProjectJson template function with default project and config arguments (chezmoi configuration) (0.201s)
        > exec chezmoi execute-template '{{ (dopplerProjectJson).DOPPLER_PROJECT }}'
        [stdout]
        default-project> stdout ^default-project$
        PASS
        
=== CONT  TestScript/ageencryptionsymmetric
=== CONT  TestScript/ageencryption
    cmd.go:380: age not found in $PATH
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [!exec:age] skip 'age not found in $PATH'
        
=== NAME  TestScript/ageencryptionsymmetric
    cmd.go:380: age not found in $PATH
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [!exec:age] skip 'age not found in $PATH'
        
=== CONT  TestScript/age
=== CONT  TestScript/addsecrets
=== NAME  TestScript/chattr
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > mksourcedir
        # test that chezmoi chattr empty sets the empty attribute on a file (0.089s)
        > exists $CHEZMOISOURCEDIR/dot_file
        > exec chezmoi chattr empty $HOME${/}.file
        > ! exists $CHEZMOISOURCEDIR/dot_file
        > exists $CHEZMOISOURCEDIR/empty_dot_file
        # test that chezmoi chattr remove sets the remove attribute on a file (0.076s)
        > exec chezmoi chattr remove $HOME${/}.file
        > ! exists $CHEZMOISOURCEDIR/empty_dot_file
        > exists $CHEZMOISOURCEDIR/remove_dot_file
        # test that chezmoi chattr noremove removes the remove attribute on a file (0.051s)
        > exec chezmoi chattr noremove,empty $HOME${/}.file
        > ! exists $CHEZMOISOURCEDIR/remove_dot_file
        > exists $CHEZMOISOURCEDIR/empty_dot_file
        # test that chezmoi attr +p sets the private attribute on a file (0.051s)
        > exec chezmoi chattr +p $HOME${/}.file
        > ! exists $CHEZMOISOURCEDIR/empty_dot_file
        > exists $CHEZMOISOURCEDIR/private_empty_dot_file
        # test that chezmoi chattr t,-e sets the template attribute and removes the empty attribute on a file (0.136s)
        > exec chezmoi chattr t,-e $HOME${/}.file
        > ! exists $CHEZMOISOURCEDIR/private_empty_dot_file
        > exists $CHEZMOISOURCEDIR/private_dot_file.tmpl
        # test that chezmoi chattr -- -e,-p,r sets the readonly attribute on a file and removes the empty and private attributes (0.079s)
        > exec chezmoi chattr -- -e,-p,r $HOME${/}.file
        > ! exists $CHEZMOISOURCEDIR/private_dot_file.tmpl
        > exists $CHEZMOISOURCEDIR/readonly_dot_file.tmpl
        # test that chezmoi chattr -- -r,-t removes the readonly and template attributes on a file (0.142s)
        > exec chezmoi chattr -- -r,-t $HOME${/}.file
        > ! exists $CHEZMOISOURCEDIR/readonly_dot_file.tmpl
        > exists $CHEZMOISOURCEDIR/dot_file
        # test that chezmoi chattr +create changes a file to be a create_ file (0.053s)
        > exec chezmoi chattr +create $HOME${/}.file
        > ! exists $CHEZMOISOURCEDIR/dot_file
        > exists $CHEZMOISOURCEDIR/create_dot_file
        # test that chezmoi chattr nomodify does not change a create_ file (0.043s)
        > exec chezmoi chattr nomodify $HOME${/}.file
        > ! exists $CHEZMOISOURCEDIR/dot_file
        > exists $CHEZMOISOURCEDIR/create_dot_file
        # test that chezmoi chattr modify,script,symlink changes a create_ file to a symlink_ (0.037s)
        > exec chezmoi chattr modify,script,symlink $HOME${/}.file
        > ! exists $CHEZMOISOURCEDIR/create_dot_file
        > exists $CHEZMOISOURCEDIR/symlink_dot_file
        # test that chezmoi chattr -- -symlink changes a symlink_ to a regular file (0.119s)
        > exec chezmoi chattr -- -symlink $HOME${/}.file
        > ! exists $CHEZMOISOURCEDIR/symlink_dot_file
        > exists $CHEZMOISOURCEDIR/dot_file
        # test that chezmoi chattr nox removes the execute attribute on a file (0.020s)
        > exists $CHEZMOISOURCEDIR/executable_dot_executable
        > exec chezmoi chattr nox $HOME${/}.executable
        > ! exists $CHEZMOISOURCEDIR/executable_dot_executable
        > exists $CHEZMOISOURCEDIR/dot_executable
        # test that chezmoi chattr x sets the executable attribute on a file (0.065s)
        > exec chezmoi chattr x $HOME${/}.executable
        > ! exists $CHEZMOISOURCEDIR/dot_executable
        > exists $CHEZMOISOURCEDIR/executable_dot_executable
        # test that chezmoi chattr +private sets the private attribute on a create file (0.152s)
        > exec chezmoi chattr +private $HOME${/}.create
        > ! exists $CHEZMOISOURCEDIR/create_dot_create
        > exists $CHEZMOISOURCEDIR/create_private_dot_create
        # test that chezmoi chattr noprivate removes the private attribute on a create file (0.053s)
        > exec chezmoi chattr noprivate $HOME${/}.create
        > ! exists $CHEZMOISOURCEDIR/create_private_dot_create
        > exists $CHEZMOISOURCEDIR/create_dot_create
        # test that chezmoi chattr exact sets the exact attribute on a directory (0.086s)
        > exists $CHEZMOISOURCEDIR/dot_dir
        > exec chezmoi chattr exact $HOME${/}.dir
        > ! exists $CHEZMOISOURCEDIR/dot_dir
        > exists $CHEZMOISOURCEDIR/exact_dot_dir
        # test that chezmoi chattr readonly sets the readonly attribute on a directory (0.119s)
        > exec chezmoi chattr readonly $HOME${/}.dir
        > ! exists $CHEZMOISOURCEDIR/exact_dot_dir
        > exists $CHEZMOISOURCEDIR/exact_readonly_dot_dir
        # test that chezmoi chattr remove sets the remove attribute on a directory (0.028s)
        > exec chezmoi chattr remove $HOME${/}.dir
        > ! exists $CHEZMOISOURCEDIR/exact_readonly_dot_dir
        > exists $CHEZMOISOURCEDIR/remove_exact_readonly_dot_dir
        # test that chezmoi chattr noremove removes the remove attribute on a directory (0.147s)
        > exec chezmoi chattr noremove $HOME${/}.dir
        > ! exists $CHEZMOISOURCEDIR/remove_exact_readonly_dot_dir
        > exists $CHEZMOISOURCEDIR/exact_readonly_dot_dir
        # test that chezmoi chattr +t sets the template attribute on a symlink (0.163s)
        > exists $CHEZMOISOURCEDIR/symlink_dot_symlink
        > exec chezmoi chattr +t $HOME${/}.symlink
        > ! exists $CHEZMOISOURCEDIR/symlink_dot_symlink
        > exists $CHEZMOISOURCEDIR/symlink_dot_symlink.tmpl
        # test that chezmoi chattr -- -t removes the template attribute on a symlink (0.087s)
        > exec chezmoi chattr -- -t $HOME${/}.symlink
        > ! exists $CHEZMOISOURCEDIR/symlink_dot_symlink.tmpl
        > exists $CHEZMOISOURCEDIR/symlink_dot_symlink
        # test that chezmoi chattr -- before sets the before attribute on a script (0.028s)
        > exec chezmoi chattr -- before $HOME/script.sh
        > ! exists $CHEZMOISOURCEDIR/run_script.sh
        > exists $CHEZMOISOURCEDIR/run_before_script.sh
        # test that chezmoi chattr -- once sets the once attribute on a script (0.081s)
        > exec chezmoi chattr -- once $HOME/script.sh
        > ! exists $CHEZMOISOURCEDIR/run_before_script.sh
        > exists $CHEZMOISOURCEDIR/run_once_before_script.sh
        # test that chezmoi chattr -- after sets the after attribute on a script and removes the before attribute (0.097s)
        > exec chezmoi chattr -- after $HOME/script.sh
        > ! exists $CHEZMOISOURCEDIR/run_once_before_script.sh
        > exists $CHEZMOISOURCEDIR/run_once_after_script.sh
        # test that chezmoi chattr onchange sets the onchange attribute on a script and removes the only attribute (0.058s)
        > exec chezmoi chattr -- onchange $HOME/script.sh
        > ! exists $CHEZMOISOURCEDIR/run_once_after_script.sh
        > exists $CHEZMOISOURCEDIR/run_onchange_after_script.sh
        # test that chezmoi chattr -- -onchange removes the onchange attribute on a script (0.085s)
        > exec chezmoi chattr -- -onchange $HOME/script.sh
        > ! exists $CHEZMOISOURCEDIR/run_onchange_after_script.sh
        > exists $CHEZMOISOURCEDIR/run_after_script.sh
        # test that chezmoi chattr -- -a removes the after attribute on a script (0.050s)
        > exec chezmoi chattr -- -a $HOME/script.sh
        > ! exists $CHEZMOISOURCEDIR/run_after_script.sh
        > exists $CHEZMOISOURCEDIR/run_script.sh
        # test that chezmoi chattr +executable,+private,+readonly,+template sets the attributes on a modify script (0.064s)
        > exec chezmoi chattr +executable,+private,+readonly,+template $HOME${/}.modify
        > ! exists $CHEZMOISOURCEDIR/modify_dot_modify
        > exists $CHEZMOISOURCEDIR/modify_private_readonly_executable_dot_modify.tmpl
        # test that chezmoi chattr --dry-run --verbose generates a diff when a file is renamed (0.062s)
        > exec chezmoi chattr --dry-run --verbose +executable $HOME${/}.file
        [stdout]
        diff --git a/dot_file b/executable_dot_file
        rename from dot_file
        rename to executable_dot_file
        > cmp stdout golden/chattr-diff
        # test that chezmoi chattr --recursive noexact recurses into subdirectories (0.059s)
        > exists $CHEZMOISOURCEDIR/exact_readonly_dot_dir
        > exists $CHEZMOISOURCEDIR/exact_readonly_dot_dir/exact_subdir
        > exec chezmoi chattr --recursive noexact $HOME${/}.dir
        > exists $CHEZMOISOURCEDIR/readonly_dot_dir
        > exists $CHEZMOISOURCEDIR/readonly_dot_dir/subdir
        # test that chezmoi chattr exact adds the exact_ attribute on a subdirectory (0.278s)
        > exec chezmoi chattr +exact $HOME${/}.dir/subdir
        > exists $CHEZMOISOURCEDIR/readonly_dot_dir/exact_subdir
        PASS
        
=== CONT  TestScript/issue3652
=== NAME  TestScript/applychmod_unix
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] skip 'UNIX only'
        > mkhomedir golden
        > mkhomedir
        > mksourcedir
        # test change file mode (0.111s)
        > chmod 777 $HOME/.file
        > exec chezmoi apply --force
        > cmpmod 666 $HOME/.file
        # test change executable file mode (0.070s)
        > chmod 666 $HOME/.executable
        > exec chezmoi apply --force
        > cmpmod 777 $HOME/.executable
        # test change directory mode (0.057s)
        > chmod 700 $HOME/.dir
        > exec chezmoi apply --force
        > cmpmod 777 $HOME/.dir
        PASS
        
=== CONT  TestScript/issue4745
=== NAME  TestScript/issue3652
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi add skips files in external_ directories (0.161s)
        > exec chezmoi apply
        > exists $HOME/.dir/submodule/.git/.keep
        > exec chezmoi add $HOME${/}.dir
        [stderr]
        chezmoi: .dir/submodule: skipping entries in external_ directory
        > stderr '.dir/submodule: skipping entries in external_ directory'
        > cmp $CHEZMOISOURCEDIR/dot_dir/file golden/file
        PASS
        
=== CONT  TestScript/issue4743
=== NAME  TestScript/applyexact
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi apply --dry-run does not remove entries from exact directories (0.131s)
        > exec chezmoi apply --dry-run --force
        > exists $HOME/.dir/file1
        > exists $HOME/.dir/file2
        > exists $HOME/.dir/subdir/file
        # test that chezmoi apply removes entries from exact directories (0.052s)
        > exec chezmoi apply --force
        > exists $HOME/.dir/file1
        > ! exists $HOME/.dir/file2
        > ! exists $HOME/.dir/subdir/file
        # test that chezmoi apply creates entries in exact directories (0.188s)
        > cp golden/file3 $CHEZMOISOURCEDIR/exact_dot_dir
        > exec chezmoi apply --force
        > cmp $HOME/.dir/file3 golden/file3
        PASS
        
=== CONT  TestScript/issue4727
=== NAME  TestScript/externalencrypted
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] skip 'skipping gpg tests on Windows'
        > [!exec:gpg] skip 'gpg not found in $PATH'
        > mkgpgconfig
        # use chezmoi's encryption to encrypt a file and an archive (0.142s)
        > exec tar czf $HOME/archive.tar.gz archive
        > exec chezmoi add --encrypt $HOME${/}.file $HOME${/}archive.tar.gz
        [stderr]
        gpg: Warning: using insecure memory!
        gpg: checking the trustdb
        gpg: marginals needed: 3  completes needed: 1  trust model: pgp
        gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
        gpg: next trustdb check due at 2029-07-19
        gpg: Warning: using insecure memory!
        > mkdir www
        > cp $CHEZMOISOURCEDIR/encrypted_dot_file.asc www/.file.asc
        > cp $CHEZMOISOURCEDIR/encrypted_archive.tar.gz.asc www/archive.tar.gz.asc
        > httpd www
        > chhome home2/user
        # test that chezmoi reads encrypted external files and archives (0.616s)
        > mkdir $CHEZMOICONFIGDIR
        > cp home/user/.config/chezmoi/chezmoi.toml $CHEZMOICONFIGDIR
        > exec chezmoi apply --force
        [stderr]
        gpg: Warning: using insecure memory!
        gpg: encrypted with cv25519 key, ID F9E1A350BF5B4025, created 2026-07-20
              "chezmoi-test-gpg-key"
        gpg: Warning: using insecure memory!
        gpg: encrypted with cv25519 key, ID F9E1A350BF5B4025, created 2026-07-20
              "chezmoi-test-gpg-key"
        > cmp $HOME/.file golden/.file
        > cmp $HOME/.dir/file golden/dir/file
        PASS
        
=== CONT  TestScript/issue4703
=== NAME  TestScript/agekeygen
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that age-keygen generates an age identity on stdout (0.061s)
        > exec chezmoi age-keygen
        [stdout]
        # created: 2026-07-20T20:42:31Z
        # public key: age1ljwr3u8vm0zstqaygdh4vv28zps9huagdh7zf4vm9ctgdq9z0pyq5fq5lk
        AGE-SECRET-KEY-1M5LTPD9XXGPYQEEC2LQD04PKZHFMU9SK0YPP2H0J0TFZLXK4D7HQWEZL3E
        > stdout AGE-SECRET-KEY
        # test that age-keygen generates post-quantum age identities on stdout (0.089s)
        > exec chezmoi age-keygen --pq
        [stdout]
        # created: 2026-07-20T20:42:31Z
        # public key: age1pq14hx2u0j2xzk980d2m09hhlx09u2n67x6sftxn2cxcxzgvssp8q4jktfqfk998dnwhnrspcs4end9v5huxk7fxcpsk9vq9egvapselffugrrlrrq6y6hqkj26zqpxvqq8kl5wn0u6y9km6wv8jjjpkq962vsrctw8gkh82npdtsyksugy5q9zeq42wy7sgvs5kz59n9pxwx3l0p6n0vxem2dd8tmyuc74vn3rgmj7rgqz3pavkgsspxqv8aewyzt9sxr8kxp8anu4hkjutmz6dnlctf7x98zz4xy35mdx5ekdc78qwuz4avtdjdg2al0h2kekjt3lqqsanuvglzz3p7k2w24aqyl97jgf3fy6s44kcx2ny3jtpdd9hyhlp6fvtaqm8thvngfgxa3cfquqw35dmnjc555gyn262md3ep4vjkfgrxngffn6kypprj3wk5w94j9gp56sp70ujntewhdzhfpuqp50szrefgrqdgpmr9vkp2u95dpqp5uzn78f00r2pplc8g4hexsasjd6yfjhg7xe5ev8shp8npg00efkxnuqygf8f22kmnrh8u472y54r28zgkywppn0sr9mqk945wqmfzqp95neqkw8e2x86uewr868gy6cphzm4ntp5g2zlspuulze34yuqpn8cyyyhwuhr446k7s4w9kgwvxervzrzs2rx22m7lwgjn7ssuwe4tk7d9adxq5frj5ny9zp3jcqvyl5tz76v9svzr9yk4wvfgj4jycmwyytc3a6nyze646yg54z2vynqk55mjugkdgfvj4ks2lwdredh8zstjf97pu8l2n8w0fck37633zhupxd3twzk8s9yq45je396d36xy9zzl5xkz2ftldsrfaul3tr6aq5eaccnkgyq0nrcyghu3mks9xt3hapzjepn57drqldvpm96qeultfvvfuzznz3999g008gw4jm4qv838w44gspfjdzexyzk4sfq73qzj2jqw028sxwmxgut89peuqvhmyz98kvsssghz6tlv3x5u3fh228x7uq57qmqk0qhzww70audxhj3axtrzle8duqucqasef6e4crs3aaj50ek8zah9wvu556z56yhaz38jrlsed4jfd0uxw2v5p9kk2zx7qvextkr79p354swyguwt5hq3weeguupacfqmp9d7hftwnm22ptfvj602nyvf9zsa5f0aj5998nsrzule546n6kt0u5hfx9cv52k4s9y2uuqafr0m5n2d9j4nk6ezttxkeas8s5k5s3ft3ff27akqr07yfmp4w8cfqjr4kkk9nzuckp4acvv3ktsk42vluesct76wplzw93z72hwuf2jyplcnce3gjucs2dxwu4k95qvxkpyr4vrdhd6j7xqwzcgl6s2mlv4pvk28z4ckd00zfjw7c5ym6wrtc8xe8sdpu2kg3fencrgqd0wley3d53hknfc54uxnx9eq87va5lrq05h7zlwd3jumapn8c7tfzu727ch6n72r3x35w8pappypnwl9qcnx3vnh6gcef5w7dwnnf50vzse524gz9v23w5yms3ndzzv944gvfplr787gn63ud6szkc5wa9cy69922esv24phj4pf44uy6ulwal3yrx5lyfnhzfz3ah2u73f3q3f7f4vunfh3p5rg6quu2skgfhjkrc3djuxhdwv0nxqjwm2ft34e5vynnjn22upsqfaw7nhyc7dpg40d4s00eps5fryw62rtx0t4d5g44p0kdzy0yk7g4r5adqp5zs04ufgn9lk8lkeve20gcr086z7klhvh0ajjfzy42v9fj7v25rh9xmt2f9k0n5vcek40787g4cceqt55zvqc47usy5sfj2edn0nf282t3g6cu6x3vljjyjf2w8wllsk2t6sv9xrnj6q4dghh6c2hq0d26htx7whyrhwe469sfytgfe
        AGE-SECRET-KEY-PQ-1U0223Y8KQWMH5FUZ0RRYY2NE8W6VY0KGER4VPFQMJDL429PLWT8Q6XEHF6
        > stdout AGE-SECRET-KEY-PQ
        # test that age-keygen generates an age identity and writes it to a file (0.112s)
        > exec chezmoi age-keygen --output=identity.txt
        > grep AGE-SECRET-KEY identity.txt
        > [umask:002] cmpmod 660 identity.txt
        > [umask:022] cmpmod 640 identity.txt
        # test that age-keygen --convert converts an age identity to an age recipient (0.038s)
        > exec chezmoi age-keygen --convert identity.txt
        [stdout]
        age1km9238wv6uq5qs4mmvuk74px79dqt58eq48aukr70kw0p0a0cgyqshu7yq
        > stdout '^age'
        PASS
        
=== CONT  TestScript/issue4662
=== NAME  TestScript/issue4727
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that fromIni | toIni does not mangle strings (0.098s)
        > exec chezmoi execute-template '{{ "a = \"\\\"\"" | fromIni | toIni | fromIni | toIni }}'
        [stdout]
        a = "\""
        > cmp stdout golden/stdout
        PASS
        
=== CONT  TestScript/issue4656
=== NAME  TestScript/external
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > symlink archive/dir/symlink -> file
        > [darwin] exec xattr -w -s io.chezmoi.test metadata-test archive/dir archive/dir/symlink archive/dir/file
        > exec tar czf www/archive.tar.gz archive
        # Force the collection of the Mac metadata for the home15/user test (0.000s)
        > [darwin] exec tar czf www/archive-mac-metadata.tar.gz --mac-metadata archive
        > httpd www
        # test that chezmoi diff includes external files by default (0.030s)
        > exec chezmoi diff
        [stdout]
        diff --git a/.file b/.file
        new file mode 100644
        index 0000000000000000000000000000000000000000..8a52cb9ce9551221716a53786ad74104c5902362
        --- /dev/null
        +++ b/.file
        @@ -0,0 +1 @@
        +# contents of .file
        > stdout '^diff --git a/\.file b/\.file$'
        # test that chezmoi diff --exclude=externals excludes diffs from external files (0.086s)
        > exec chezmoi diff --exclude=externals
        > ! stdout '^diff --git a/\.file b/\.file$'
        # test that chezmoi reads external files from .chezmoiexternal.toml (0.143s)
        > exec chezmoi apply --force
        > cmp $HOME/.file golden/.file
        > [unix] cmpmod 666 $HOME/.file
        > chhome home2/user
        # test that chezmoi reads executable external files from .chezmoiexternal.toml (0.106s)
        > exec chezmoi apply --force
        > cmp $HOME/.file golden/.file
        > [unix] cmpmod 777 $HOME/.file
        > chhome home3/user
        # test that chezmoi managed --include=externals lists external targets (0.081s)
        > exec chezmoi managed --include=externals
        [stdout]
        .dir
        .dir/dir
        .dir/dir/file
        .dir/dir/symlink
        > cmp stdout golden/managed
        # test that chezmoi diff includes external archives by default (0.120s)
        > exec chezmoi diff
        [stdout]
        diff --git a/.dir/dir b/.dir/dir
        new file mode 40755
        index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
        --- /dev/null
        +++ b/.dir/dir
        diff --git a/.dir/dir/file b/.dir/dir/file
        new file mode 100644
        index 0000000000000000000000000000000000000000..8a1745cd1f75b4d1f4bfcad207954b6e09676aac
        --- /dev/null
        +++ b/.dir/dir/file
        @@ -0,0 +1 @@
        +# contents of dir/file
        diff --git a/.dir/dir/symlink b/.dir/dir/symlink
        new file mode 120000
        index 0000000000000000000000000000000000000000..f73f3093ff865c514c6c51f867e35f693487d0d3
        --- /dev/null
        +++ b/.dir/dir/symlink
        @@ -0,0 +1 @@
        +file
        > stdout '^diff --git a/\.dir/dir/file b/\.dir/dir/file$'
        # test that chezmoi diff --exclude=externals excludes diffs from external archives (0.061s)
        > exec chezmoi diff --exclude=externals
        > ! stdout '^diff --git a/\.dir/dir/file b/\.dir/dir/file$'
        # test that chezmoi reads external archives from .chezmoiexternal.yaml (0.100s)
        > exec chezmoi apply --force
        > cmp $HOME/.dir/dir/file golden/dir/file
        > [unix] readlink $HOME/.dir/dir/symlink file
        > exists $HOME/.dir/file
        > chhome home4/user
        # test that chezmoi reads exact external archives from .chezmoiexternal.yaml (0.095s)
        > exec chezmoi apply --force
        > cmp $HOME/.dir/dir/file golden/dir/file
        > [unix] readlink $HOME/.dir/dir/symlink file
        > ! exists $HOME/.dir/file
        > chhome home5/user
        # test that chezmoi reads externals from subdirectories (0.107s)
        > exec chezmoi apply --force
        > cmp $HOME/.dir/subdir/dir/file golden/dir/file
        > [unix] readlink $HOME/.dir/subdir/dir/symlink file
        > chhome home6/user
        # test that .chezmoiignore applies to entries in externals (0.133s)
        > exec chezmoi apply --force
        > exists $HOME/.dir/dir/
        > exists $HOME/.dir/dir/file
        > ! exists $HOME/.dir/dir/symlink
        > chhome home7/user
        # test that .chezmoiignore applies to entire externals (0.105s)
        > exec chezmoi apply --force
        > chhome home8/user
        # test that parent directories are created if needed (0.164s)
        > exec chezmoi apply --force
        > cmp $HOME/.dir1/file golden/dir/file
        > cmp $HOME/.dir2/dir2/file golden/dir/file
        > cmp $HOME/.dir3/dir3/dir3/file golden/dir/file
        > chhome home9/user
        # test that duplicate equivalent directories are allowed (0.077s)
        > exec chezmoi apply --force
        > chhome home10/user
        # test that checksums are verified (0.076s)
        > exec chezmoi apply --force
        [stderr]
        chezmoi: .file: warning: insecure MD5 checksum will be removed, use a secure hash like SHA256 instead
        chezmoi: .file: warning: insecure RIPEMD-160 checksum will be removed, use a secure hash like SHA256 instead
        chezmoi: .file: warning: insecure SHA1 checksum will be removed, use a secure hash like SHA256 instead
        > stderr '.file: warning: insecure MD5 checksum will be removed, use a secure hash like SHA256 instead'
        > stderr '.file: warning: insecure RIPEMD-160 checksum will be removed, use a secure hash like SHA256 instead'
        > stderr '.file: warning: insecure SHA1 checksum will be removed, use a secure hash like SHA256 instead'
        > cp $HOME/.file golden/.file
        > chhome home11/user
        # test that checksums detect corrupt files (0.190s)
        > ! exec chezmoi apply --force
        [stderr]
        chezmoi: .file: warning: insecure MD5 checksum will be removed, use a secure hash like SHA256 instead
        chezmoi: .file: MD5 mismatch: expected 49fe9018f97349cdd0a0ac7b7f668b05, got 449f9ee81bcb01a7b8b77cca6935b7d4
        SHA256 mismatch: expected 634a4dd193c7b3b926d2e08026aa81a416fd41cec52854863b974af422495663, got dc436f17a1d14dc6941f41fd010d9b102cb26f05d765f0b68474f86471e912ad
        [exit status 1]
        > stderr \.file:\sMD5\smismatch
        > stderr 'SHA256 mismatch'
        > chhome home12/user
        # test that chezmoi reads archive-file externals (0.127s)
        > exec chezmoi apply
        > cmp $HOME/.file golden/dir/file
        > chhome home13/user
        # test that chezmoi can set executable bits on archive-file externals (0.121s)
        > exec chezmoi apply
        > [umask:002] cmpmod 775 $HOME/.file
        > [umask:022] cmpmod 755 $HOME/.file
        > chhome home14/user
        # test that chezmoi reads external files from the .chezmoiexternal directory (0.112s)
        > exec chezmoi apply
        > cmp $HOME/.file golden/dir/file
        > [darwin] chhome home15/user
        # test that chezmoi managed --include=externals lists external targets including AppleDouble files (0.000s)
        > [darwin] exec chezmoi managed --include=externals
        > [darwin] cmp stdout golden/managed-appledouble
        > chhome home16/user
        # test that readonly and private attributes are set (0.074s)
        > [!windows] exec chezmoi apply
        > [!windows] cmpmod 400 $HOME/.file
        PASS
        
=== CONT  TestScript/issue4647
=== NAME  TestScript/issue4662
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [!exec:echo] skip 'echo not found in $PATH'
        # test that chezmoi init --apply runs apply's pre and post hooks (0.071s)
        > exec chezmoi init --apply
        [stdout]
        pre-apply-hook
        post-apply-hook
        > cmp stdout golden/init
        PASS
        
=== CONT  TestScript/issue4634
=== NAME  TestScript/readd-exact
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi re-add adds new files in exact_ directories (0.129s)
        > exec chezmoi add --exact $HOME${/}test-dir
        > exists $CHEZMOISOURCEDIR/exact_test-dir/test1
        > cmp $CHEZMOISOURCEDIR/exact_test-dir/test1 golden/test1
        # verify no diff after initial add (0.105s)
        > exec chezmoi diff
        > ! stdout .
        # add a new file to the exact directory in target (0.109s)
        > cp golden/test2 $HOME/test-dir/test2
        > exec chezmoi re-add
        > exists $CHEZMOISOURCEDIR/exact_test-dir/test2
        > cmp $CHEZMOISOURCEDIR/exact_test-dir/test2 golden/test2
        # verify no diff after adding new file (0.046s)
        > exec chezmoi diff
        > ! stdout .
        # test that chezmoi re-add removes deleted files from exact_ directories (0.127s)
        > rm $HOME/test-dir/test1
        > exec chezmoi re-add
        > ! exists $CHEZMOISOURCEDIR/exact_test-dir/test1
        # verify no diff after removing file (0.064s)
        > exec chezmoi diff
        > ! stdout .
        # test that chezmoi re-add with explicit exact directory target works (0.154s)
        > cp golden/test3 $HOME/test-dir/test3
        > exec chezmoi re-add $HOME/test-dir
        > exists $CHEZMOISOURCEDIR/exact_test-dir/test3
        > cmp $CHEZMOISOURCEDIR/exact_test-dir/test3 golden/test3
        # verify no diff after adding file with explicit target (0.075s)
        > exec chezmoi diff
        > ! stdout .
        # test nested exact directory with --recursive=false (0.205s)
        > exec chezmoi add $HOME/outer-dir
        > exec chezmoi add --exact $HOME/outer-dir/exact-inner
        > exists $CHEZMOISOURCEDIR/outer-dir/exact_exact-inner/inner1
        # add a new file to the nested exact directory in target (0.000s)
        > cp golden/inner2 $HOME/outer-dir/exact-inner/inner2
        # re-add with --recursive=false should NOT process nested exact directory, and thereforce should not add new file inner2. (0.074s)
        > exec chezmoi re-add --recursive=false $HOME/outer-dir
        > ! exists $CHEZMOISOURCEDIR/outer-dir/exact_exact-inner/inner2
        # re-add with recursive (default) SHOULD process nested exact directory (0.186s)
        > exec chezmoi re-add $HOME/outer-dir
        > exists $CHEZMOISOURCEDIR/outer-dir/exact_exact-inner/inner2
        > cmp $CHEZMOISOURCEDIR/outer-dir/exact_exact-inner/inner2 golden/inner2
        # verify no diff (0.134s)
        > exec chezmoi diff
        > ! stdout .
        # test nested exact directories (both parent and child are exact) (0.154s)
        > exec chezmoi add --exact $HOME/exact-outer
        > exists $CHEZMOISOURCEDIR/exact_exact-outer/exact_exact-inner/nested1
        # add a new file to the nested exact directory (0.000s)
        > cp golden/nested2 $HOME/exact-outer/exact-inner/nested2
        # re-add should process both exact directories and add the new file (0.171s)
        > exec chezmoi re-add
        > exists $CHEZMOISOURCEDIR/exact_exact-outer/exact_exact-inner/nested2
        > cmp $CHEZMOISOURCEDIR/exact_exact-outer/exact_exact-inner/nested2 golden/nested2
        # verify no diff (0.024s)
        > exec chezmoi diff
        > ! stdout .
        PASS
        
=== CONT  TestScript/issue4500
=== NAME  TestScript/issue4703
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi init --dry-run does not overwrite the config file (0.165s)
        > exec chezmoi init --dry-run
        > cmp $CHEZMOICONFIGDIR/chezmoi.toml golden/chezmoi.toml
        PASS
        
=== CONT  TestScript/issue4496
=== NAME  TestScript/issue4745
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > mkdir www
        > exec tar czf www/archive.tar.gz archive
        > httpd www
        # test that chezmoi destroy skips externals and does not delete the source directory (0.237s)
        > exec chezmoi apply
        > exists $HOME/external/file
        > exec chezmoi destroy --force $HOME${/}external
        [stderr]
        chezmoi: warning: skipping external external
        > stderr 'warning: skipping external external'
        > exists $CHEZMOISOURCEDIR
        PASS
        
=== CONT  TestScript/issue4479
=== NAME  TestScript/issue4656
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi diff shows only three lines of context (0.095s)
        > exec chezmoi diff
        [stdout]
        diff --git a/.file b/.file
        index 1cb5bd7432f53fc594236648d89f0c5c4185ba18..0edb85647c20325c18d158529b73bc2105696c97 100644
        --- a/.file
        +++ b/.file
        @@ -2,6 +2,7 @@ a
         b
         c
         d
        +e
         f
         g
         h
        @@ -18,6 +19,7 @@ r
         s
         t
         u
        +v
         w
         x
         y
        > [umask:002] cmp stdout golden/umask-002.diff
        > [umask:022] cmp stdout golden/umask-022.diff
        PASS
        
=== CONT  TestScript/issue4454
=== NAME  TestScript/onepassword2connect
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > mockcommand bin/op
        > mkhomedir
        # test that mode is properly set and reported (0.083s)
        > exec chezmoi execute-template '{{ .chezmoi.config.onepassword.mode }}'
        [stdout]
        connect> stdout '^connect$'
        # test failure without OP_CONNECT_HOST set (0.068s)
        > ! exec chezmoi execute-template '{{ (onepassword "ExampleLogin").id }}'
        [stderr]
        chezmoi: template: arg1:1:4: executing "arg1" at <onepassword "ExampleLogin">: error calling onepassword: onepassword.mode is connect, but OP_CONNECT_HOST is not set
        [exit status 1]
        > stderr 'OP_CONNECT_HOST'
        > env OP_CONNECT_HOST=x
        # test failure without OP_CONNECT_TOKEN set (0.034s)
        > ! exec chezmoi execute-template '{{ (onepassword "ExampleLogin").id }}'
        [stderr]
        chezmoi: template: arg1:1:4: executing "arg1" at <onepassword "ExampleLogin">: error calling onepassword: onepassword.mode is connect, but OP_CONNECT_TOKEN is not set
        [exit status 1]
        > stderr 'OP_CONNECT_TOKEN'
        > env OP_CONNECT_TOKEN=y
        # test onepassword template function (0.095s)
        > exec chezmoi execute-template '{{ (onepassword "ExampleLogin").id }}'
        [stdout]
        wxcplh5udshnonkzg2n4qx262y> stdout '^wxcplh5udshnonkzg2n4qx262y$'
        # test onepassword template function with vault (0.120s)
        > exec chezmoi execute-template '{{ (onepassword "ExampleLogin" "vault").id }}'
        [stdout]
        wxcplh5udshnonkzg2n4qx262y> stdout '^wxcplh5udshnonkzg2n4qx262y$'
        # test failure onepassword template function with vault and account (0.083s)
        > ! exec chezmoi execute-template '{{ (onepassword "ExampleLogin" "vault" "account").id }}'
        [stderr]
        chezmoi: template: arg1:1:4: executing "arg1" at <onepassword "ExampleLogin" "vault" "account">: error calling onepassword: 1Password account parameters cannot be used in connect mode
        [exit status 1]
        > stderr '1Password account parameters cannot be used in connect mode'
        # test onepassword template function with empty vault (0.050s)
        > exec chezmoi execute-template '{{ (onepassword "ExampleLogin" "").id }}'
        [stdout]
        wxcplh5udshnonkzg2n4qx262y> stdout '^wxcplh5udshnonkzg2n4qx262y$'
        # test onepasswordDetailsFields template function (0.120s)
        > exec chezmoi execute-template '{{ (onepasswordDetailsFields "ExampleLogin").password.value }}'
        [stdout]
        L8rm1JXJIE1b8YUDWq7h> stdout '^L8rm1JXJIE1b8YUDWq7h$'
        # test onepasswordItemFields template function (0.302s)
        > exec chezmoi execute-template '{{ (onepasswordItemFields "ExampleLogin").exampleLabel.value }}'
        [stdout]
        exampleValue> stdout exampleValue
        # test onepasswordRead template function (0.134s)
        > exec chezmoi execute-template '{{ onepasswordRead "op://vault/item/field" }}'
        [stdout]
        exampleField
        > stdout exampleField
        # test failure onepasswordRead template function with account (0.062s)
        > ! exec chezmoi execute-template '{{ onepasswordRead "op://vault/item/field" "account" }}'
        [stderr]
        chezmoi: template: arg1:1:3: executing "arg1" at <onepasswordRead "op://vault/item/field" "account">: error calling onepasswordRead: 1Password account parameters cannot be used in connect mode
        [exit status 1]
        > stderr '1Password account parameters cannot be used in connect mode'
        # test failure onepasswordDocument template function (0.054s)
        > ! exec chezmoi execute-template '{{ onepasswordDocument "exampleDocument" }}'
        [stderr]
        chezmoi: template: arg1:1:3: executing "arg1" at <onepasswordDocument "exampleDocument">: error calling onepasswordDocument: onepasswordDocument cannot be used in connect mode
        [exit status 1]
        > stderr 'onepasswordDocument cannot be used in connect mode'
        # test failure with OP_SERVICE_ACCOUNT_TOKEN set (0.195s)
        > env OP_SERVICE_ACCOUNT_TOKEN=x
        > ! exec chezmoi execute-template '{{ (onepassword "ExampleLogin").id }}'
        [stderr]
        chezmoi: template: arg1:1:4: executing "arg1" at <onepassword "ExampleLogin">: error calling onepassword: onepassword.mode is connect, but OP_SERVICE_ACCOUNT_TOKEN is set
        [exit status 1]
        > stderr 'OP_SERVICE_ACCOUNT_TOKEN is set'
        PASS
        
=== CONT  TestScript/issue4315
=== NAME  TestScript/issue4743
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        >  hexdecode home/user/invalid-utf-8.hex
        >  hexdecode home/user/boms/utf-16-be.hex
        >  exec chezmoi add --template $HOME${/}invalid-utf-8
        [stderr]
        chezmoi: invalid-utf-8: invalid UTF-8
        >  stderr 'invalid UTF-8'
        >  exec chezmoi add --recursive --template ${HOME}${/}boms
        [stderr]
        chezmoi: utf-16-be: invalid UTF-8
        chezmoi: utf-16-be: detected UTF-16 (BE) byte order mark, ensure that template is in UTF-8
        >  stderr 'utf-16-be: detected UTF-16 \(BE\) byte order mark'
        PASS
        
=== CONT  TestScript/issue4181
=== NAME  TestScript/apply
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > mkhomedir golden
        > mksourcedir
        # test that chezmoi apply --dry-run does not create any files (0.104s)
        > exec chezmoi apply --dry-run --force
        > ! exists $HOME/.create
        > ! exists $HOME/.dir
        > ! exists $HOME/.dir/file
        > ! exists $HOME/.dir/subdir
        > ! exists $HOME/.dir/subdir/file
        > ! exists $HOME/.empty
        > ! exists $HOME/.executable
        > ! exists $HOME/.file
        > ! exists $HOME/.private
        > ! exists $HOME/.remove
        > ! exists $HOME/.template
        # test that chezmoi apply file creates a single file only (0.063s)
        > exec chezmoi apply --force $HOME${/}.file
        > ! exists $HOME/.create
        > ! exists $HOME/.dir
        > ! exists $HOME/.dir/file
        > ! exists $HOME/.dir/subdir
        > ! exists $HOME/.dir/subdir/file
        > ! exists $HOME/.empty
        > ! exists $HOME/.executable
        > exists $HOME/.file
        > ! exists $HOME/.private
        > ! exists $HOME/.remove
        > ! exists $HOME/.template
        # test that chezmoi apply dir --recursive=false creates only the directory (0.079s)
        > exec chezmoi apply --force --recursive=false $HOME${/}.dir
        > exists $HOME/.dir
        > ! exists $HOME/.dir/file
        > ! exists $HOME/.dir/subdir
        > ! exists $HOME/.dir/subdir/file
        # test that chezmoi apply dir creates all files in the directory (0.098s)
        > exec chezmoi apply --force $HOME${/}.dir
        > exists $HOME/.dir
        > exists $HOME/.dir/file
        > exists $HOME/.dir/subdir
        > exists $HOME/.dir/subdir/file
        # test that chezmoi apply creates all files (0.035s)
        > exec chezmoi apply --force
        > exists $HOME/.create
        > exists $HOME/.dir
        > exists $HOME/.dir/file
        > exists $HOME/.dir/subdir
        > exists $HOME/.dir/subdir/file
        > exists $HOME/.empty
        > exists $HOME/.executable
        > exists $HOME/.file
        > exists $HOME/.private
        > ! exists $HOME/.remove
        > exists $HOME/.template
        # test apply after edit (0.041s)
        > edit $CHEZMOISOURCEDIR/dot_file
        > exec chezmoi apply --force
        > cmp $HOME/.file $CHEZMOISOURCEDIR/dot_file
        # test that chezmoi apply --source-path applies a file based on its source path (0.036s)
        > edit $CHEZMOISOURCEDIR/dot_file
        > exec chezmoi apply --force --source-path $CHEZMOISOURCEDIR/dot_file
        > grep -count=2 '# edited' $HOME/.file
        # test that chezmoi apply --source-path fails when called with a targetDirAbsPath (0.031s)
        > ! exec chezmoi apply --force --source-path $HOME${/}.file
        [stderr]
        chezmoi: $WORK/home/user/.file: not in $WORK/home/user/.local/share/chezmoi
        [exit status 1]
        > [!windows] stderr ${HOME@R}/\.file:\snot\sin\s${CHEZMOISOURCEDIR@R}$
        PASS
        
=== CONT  TestScript/issue4104
gpg: /tmp/test-gpg-homedir1458160258/trustdb.gpg: trustdb created
gpg: directory '/tmp/test-gpg-homedir1458160258/openpgp-revocs.d' created
=== NAME  TestScript/issue4496
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > hexdecode www/whitespace.txt.hex
        > exec tar -cf www/archive.tar www/whitespace.txt
        > httpd www
        # test that externals files containing only whitespace are preserved (0.064s)
        > exec chezmoi apply
        > cmp $HOME/.whitespace www/whitespace.txt
        > cmp $HOME/.dir/whitespace.txt www/whitespace.txt
        PASS
        
=== CONT  TestScript/issue4027
=== NAME  TestScript/destroy
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi destroy file destroys a file (0.436s)
        > exec chezmoi apply --force
        > exists $HOME/.file
        > exec chezmoi destroy --force $HOME${/}.file
        > ! exists $HOME/.file
        > exec chezmoi state get --bucket=entryState --key=$WORK/home/user/.file
        > ! stdout .
        # test that chezmoi destroy dir destroys a directory (0.149s)
        > exists $CHEZMOISOURCEDIR/dot_dir
        > exists $HOME/.dir
        > exec chezmoi destroy --force $HOME${/}.dir
        > ! exists $HOME/.dir
        # test that if any chezmoi destroy stops on any error (0.050s)
        > exists $CHEZMOISOURCEDIR/executable_dot_executable
        > exists $HOME/.executable
        > ! exec chezmoi destroy --force $HOME${/}.newfile $HOME${/}.executable
        [stderr]
        chezmoi: $WORK/home/user/.newfile: not managed
        [exit status 1]
        > stderr 'not managed'
        > exists $HOME/.executable
        > chhome home2/user
        # test that chezmoi apply destroys a file and a directory (0.059s)
        > exists $HOME/.file
        > exists $HOME/.dir
        > exec chezmoi apply
        > ! exists $HOME/.file
        > ! exists $HOME/.dir
        > chhome home3/user
        # test that chezmoi apply with .chezmoiremove with star works on destination dir with trailing slash (0.089s)
        > exists $HOME/.star-file
        > exists $HOME/.star-dir
        > exec chezmoi apply --destination=$HOME/
        > ! exists $HOME/.star-file
        > ! exists $HOME/.star-dir
        PASS
        
=== CONT  TestScript/issue4024
=== NAME  TestScript/onepassword2service
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > mockcommand bin/op
        > mkhomedir
        # test that mode is properly set and reported (0.116s)
        > exec chezmoi execute-template '{{ .chezmoi.config.onepassword.mode }}'
        [stdout]
        service> stdout '^service$'
        # test failure without OP_SERVICE_ACCOUNT_TOKEN set (0.105s)
        > ! exec chezmoi execute-template '{{ (onepassword "ExampleLogin").id }}'
        [stderr]
        chezmoi: template: arg1:1:4: executing "arg1" at <onepassword "ExampleLogin">: error calling onepassword: onepassword.mode is service, but OP_SERVICE_ACCOUNT_TOKEN is not set
        [exit status 1]
        > stderr 'OP_SERVICE_ACCOUNT_TOKEN is not set'
        > env OP_SERVICE_ACCOUNT_TOKEN=x
        # test onepassword template function (0.060s)
        > exec chezmoi execute-template '{{ (onepassword "ExampleLogin").id }}'
        [stdout]
        wxcplh5udshnonkzg2n4qx262y> stdout '^wxcplh5udshnonkzg2n4qx262y$'
        # test onepassword template function with vault (0.055s)
        > exec chezmoi execute-template '{{ (onepassword "ExampleLogin" "vault").id }}'
        [stdout]
        wxcplh5udshnonkzg2n4qx262y> stdout '^wxcplh5udshnonkzg2n4qx262y$'
        # test failure onepassword template function with vault and account (0.086s)
        > ! exec chezmoi execute-template '{{ (onepassword "ExampleLogin" "vault" "account").id }}'
        [stderr]
        chezmoi: template: arg1:1:4: executing "arg1" at <onepassword "ExampleLogin" "vault" "account">: error calling onepassword: 1Password account parameters cannot be used in service mode
        [exit status 1]
        > stderr '1Password account parameters cannot be used in service mode'
        # test onepassword template function with empty vault (0.077s)
        > exec chezmoi execute-template '{{ (onepassword "ExampleLogin" "").id }}'
        [stdout]
        wxcplh5udshnonkzg2n4qx262y> stdout '^wxcplh5udshnonkzg2n4qx262y$'
        # test onepasswordDetailsFields template function (0.074s)
        > exec chezmoi execute-template '{{ (onepasswordDetailsFields "ExampleLogin").password.value }}'
        [stdout]
        L8rm1JXJIE1b8YUDWq7h> stdout '^L8rm1JXJIE1b8YUDWq7h$'
        # test onepasswordItemFields template function (0.110s)
        > exec chezmoi execute-template '{{ (onepasswordItemFields "ExampleLogin").exampleLabel.value }}'
        [stdout]
        exampleValue> stdout exampleValue
        # test onepasswordRead template function (0.152s)
        > exec chezmoi execute-template '{{ onepasswordRead "op://vault/item/field" }}'
        [stdout]
        exampleField
        > stdout exampleField
        # test failure onepasswordRead template function with account (0.165s)
        > ! exec chezmoi execute-template '{{ onepasswordRead "op://vault/item/field" "account" }}'
        [stderr]
        chezmoi: template: arg1:1:3: executing "arg1" at <onepasswordRead "op://vault/item/field" "account">: error calling onepasswordRead: 1Password account parameters cannot be used in service mode
        [exit status 1]
        > stderr '1Password account parameters cannot be used in service mode'
        # test onepasswordDocument template function (0.089s)
        > exec chezmoi execute-template '{{ onepasswordDocument "exampleDocument" }}'
        [stdout]
        OK-COMPUTER
        > stdout 'OK-COMPUTER'
        # test onepasswordDocument template function with vault (0.097s)
        > exec chezmoi execute-template '{{ onepasswordDocument "exampleDocument" "vault" }}'
        [stdout]
        OK-VAULT
        > stdout 'OK-VAULT'
        # test onepasswordDocument template function with vault and account (0.044s)
        > ! exec chezmoi execute-template '{{ onepasswordDocument "exampleDocument" "vault" "account" }}'
        [stderr]
        chezmoi: template: arg1:1:3: executing "arg1" at <onepasswordDocument "exampleDocument" "vault" "account">: error calling onepasswordDocument: 1Password account parameters cannot be used in service mode
        [exit status 1]
        > stderr '1Password account parameters cannot be used in service mode'
        # test onepasswordDocument template function with account (0.155s)
        > ! exec chezmoi execute-template '{{ onepasswordDocument "exampleDocument" "" "account" }}'
        [stderr]
        chezmoi: template: arg1:1:3: executing "arg1" at <onepasswordDocument "exampleDocument" "" "account">: error calling onepasswordDocument: 1Password account parameters cannot be used in service mode
        [exit status 1]
        > stderr '1Password account parameters cannot be used in service mode'
        # test failure with OP_CONNECT_HOST and OP_CONNECT_TOKEN set (0.095s)
        > env OP_CONNECT_HOST=x
        > env OP_CONNECT_TOKEN=y
        > ! exec chezmoi execute-template '{{ (onepassword "ExampleLogin").id }}'
        [stderr]
        chezmoi: template: arg1:1:4: executing "arg1" at <onepassword "ExampleLogin">: error calling onepassword: onepassword.mode is service, but OP_CONNECT_HOST and OP_CONNECT_TOKEN are set
        [exit status 1]
        > stderr 'OP_CONNECT_HOST and OP_CONNECT_TOKEN'
        PASS
        
=== CONT  TestScript/issue4012
=== NAME  TestScript/issue4104
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi add --secrets=ignore succeeds when the add.secrets config variable is set to error (0.043s)
        > exec chezmoi add --secrets=ignore $HOME${/}.secret
        > ! stderr .
        PASS
        
=== CONT  TestScript/issue4002
=== NAME  TestScript/issue4027
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi diff --keep-going does not panic when the diff pager command does not exist (0.063s)
        > ! exec chezmoi diff --keep-going
        [stderr]
        chezmoi: .file1: fork/exec /not/exist: no such file or directory
        chezmoi: .file2: fork/exec /not/exist: no such file or directory
        [exit status 1]
        > ! stderr panic
        > [!windows] stderr '/not/exist: no such file or directory'
        > [windows] stderr '"/not/exist": executable file not found in %PATH%'
        PASS
        
=== CONT  TestScript/issue3987
=== NAME  TestScript/issue4315
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] skip 'UNIX only'
        > exec chmod a+x bin/prog
        # test that templates are only executed once (0.172s)
        > exec chezmoi apply
        > cmp $HOME/.file golden/.file
        > cmp count golden/count
        PASS
        
=== CONT  TestScript/issue3891
    cmd.go:380: Windows only
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [!windows] skip 'Windows only'
        
=== CONT  TestScript/issue3887
    cmd.go:380: age not found in path
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [!exec:age] skip 'age not found in path'
        
=== CONT  TestScript/issue3772
=== NAME  TestScript/issue4012
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi chattr +encrypted prints an error message when run on an external file (0.103s)
        > ! exec chezmoi chattr +encrypted $HOME${/}.file
        [stderr]
        chezmoi: $WORK/home/user/.file: is an external
        [exit status 1]
        > stderr 'is an external'
        PASS
        
=== CONT  TestScript/issue3744
=== NAME  TestScript/issue4479
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [!exec:git] skip 'git not found in $PATH'
        > mkgitconfig
        > exec git -C $CHEZMOISOURCEDIR init
        [stdout]
        Initialized empty Git repository in $WORK/home/user/.local/share/chezmoi/.git/
        > exec git -C $CHEZMOISOURCEDIR add .
        > exec git -C $CHEZMOISOURCEDIR commit -m 'initial commit'
        [stdout]
        [master (root-commit) 73e1296] initial commit
         3 files changed, 3 insertions(+)
         create mode 100644 .chezmoiroot
         create mode 100644 README.md
         create mode 100644 home/dot_file
        # test that autoCommit does not add or commit files outside the source directory (0.122s)
        > edit $CHEZMOISOURCEDIR/README.md
        > exec chezmoi edit ~/.file
        [stdout]
        [master ce12319] Update .file
         1 file changed, 1 insertion(+)
        [stderr]
        chezmoi: warning: $WORK/bin/editor $WORK/.tmp/chezmoi-edit1173617058/.file: returned in less than 1s
        chezmoi: warning: unsupported XY: .M
        > exec git -C $CHEZMOISOURCEDIR status
        [stdout]
        On branch master
        Changes not staged for commit:
          (use "git add <file>..." to update what will be committed)
          (use "git restore <file>..." to discard changes in working directory)
        	modified:   README.md
        
        no changes added to commit (use "git add" and/or "git commit -a")
        > stdout 'modified:\s+README\.md'
        PASS
        
=== CONT  TestScript/issue3703
=== NAME  TestScript/issue4500
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] skip 'UNIX only'
        > [!exec:diff] skip 'diff not found in $PATH'
        > chmod 755 bin/custom-pager
        # test that chezmoi diff does invoke the diff pager when there is a diff and the command is not "diff" (0.105s)
        > cp golden/dot_file $CHEZMOISOURCEDIR
        > exec chezmoi diff
        [stdout]
        custom-pager
        > stdout custom-pager
        > chhome home2/user
        # test that chezmoi diff does invoke the diff pager when there is a diff and the command is "diff" (0.153s)
        > cp golden/dot_file $CHEZMOISOURCEDIR
        > exec chezmoi diff
        [stdout]
        custom-pager
        > stdout custom-pager
        PASS
        
=== CONT  TestScript/issue3693
=== NAME  TestScript/issue3987
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi apply --parent-dirs creates parent directories (0.101s)
        > exec chezmoi apply --parent-dirs $HOME/.config/nvim/after/queries/gotmpl/injections.scm
        > exists $HOME/.config/nvim/after/queries/gotmpl/injections.scm
        PASS
        
=== CONT  TestScript/issue3666
gpg: revocation certificate stored as '/tmp/test-gpg-homedir1458160258/openpgp-revocs.d/9D2899B9DA4D3A423FFF79C45EF1E74211185485.rev'
=== NAME  TestScript/issue3693
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi apply does not panic when given an external with an empty configuration (0.058s)
        > ! exec chezmoi apply
        [stderr]
        chezmoi: .config: missing external type
        [exit status 1]
        > stderr 'missing external type'
        PASS
        
=== CONT  TestScript/edithardlink
=== NAME  TestScript/issue4024
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi merge-all does not generate incorrect "config file template has changed" warnings (0.209s)
        > exec chezmoi init
        > cp ${CHEZMOICONFIGDIR}/chezmoi.toml golden/chezmoi.toml
        > ! stderr .
        > exec chezmoi state get-bucket --bucket=configState
        [stdout]
        {
          "configState": {
            "configTemplateContentsSHA256": "17237711aec7ba710379c223819293b9a9e039d9a4a3ca721259c2337f21fcfe"
          }
        }
        > cmp stdout golden/state
        > exec chezmoi merge-all
        > ! stderr .
        PASS
        
=== NAME  TestScript/issue4454
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi diff ignores errors from the custom diff command when there are differences in files (0.080s)
        > exec chezmoi diff
        > chhome home2/user
        # test that chezmoi diff ignores errors from the custom diff command when there are differences in directories (0.100s)
        > exec chezmoi diff
        > chhome home3/user
        # test that chezmoi diff ignores errors from the custom diff command when there are differences in symlinks (0.082s)
        > exec chezmoi diff
        PASS
        
=== CONT  TestScript/errors
=== NAME  TestScript/issue3703
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > httpd www
        # test that chezmoi apply removes unmanaged files from an exact_ directory containing an external (0.088s)
        > exists $HOME/.local/bin/unmanaged
        > exec chezmoi apply --debug
        [stderr]
        time=2026-07-20T20:42:31.695Z level=INFO msg=persistentPreRunRootE version.version=v2.0.0+test version.commit=HEAD version.date=2026-07-20T20:42:31Z version.builtBy=testscript args="[chezmoi apply --debug]" goVersion=go1.26.5-X:nodwarf5
        time=2026-07-20T20:42:31.695Z level=ERROR msg=Stat component=system err="stat $WORK/home/user/.config/chezmoi/chezmoistate.boltdb: no such file or directory" name=$WORK/home/user/.config/chezmoi/chezmoistate.boltdb
        time=2026-07-20T20:42:31.695Z level=INFO msg=Stat component=system name=$WORK/home/user/.local/share/chezmoi
        time=2026-07-20T20:42:31.695Z level=ERROR msg=Stat component=system err="stat $WORK/home/user/.local/share/chezmoi/.git: no such file or directory" name=$WORK/home/user/.local/share/chezmoi/.git
        time=2026-07-20T20:42:31.695Z level=ERROR msg=Stat component=system err="stat $WORK/home/user/.local/share/.git: no such file or directory" name=$WORK/home/user/.local/share/.git
        time=2026-07-20T20:42:31.695Z level=ERROR msg=Stat component=system err="stat $WORK/home/user/.local/.git: no such file or directory" name=$WORK/home/user/.local/.git
        time=2026-07-20T20:42:31.696Z level=ERROR msg=ReadFile component=system err="open $WORK/home/user/.local/share/chezmoi/.chezmoiroot: no such file or directory" name=$WORK/home/user/.local/share/chezmoi/.chezmoiroot size=0 data=""
        time=2026-07-20T20:42:31.696Z level=INFO msg=ReadDir component=system name=$WORK/home/user/.local/share/chezmoi
        time=2026-07-20T20:42:31.696Z level=INFO msg=Get component=persistentState bucket=configState key=configState value=""
        time=2026-07-20T20:42:31.696Z level=ERROR msg=ReadFile component=system err="open $WORK/home/user/.local/share/chezmoi/.chezmoiversion: no such file or directory" name=$WORK/home/user/.local/share/chezmoi/.chezmoiversion size=0 data=""
        time=2026-07-20T20:42:31.697Z level=INFO msg=Stat component=system name=$WORK/home/user/.local/share/chezmoi
        time=2026-07-20T20:42:31.697Z level=INFO msg=Stat component=system name=$WORK/home/user/.local/share/chezmoi
        time=2026-07-20T20:42:31.697Z level=INFO msg=ReadDir component=system name=$WORK/home/user/.local/share/chezmoi
        time=2026-07-20T20:42:31.697Z level=INFO msg=ReadFile component=system name=$WORK/home/user/.local/share/chezmoi/.chezmoiexternal.toml.tmpl size=77 data="[\".local/bin/file\"]\n    type = \"file\"\n    url = \"{{ env \"HTTPD_U..."
        time=2026-07-20T20:42:31.700Z level=INFO msg=ReadDir component=system name=$WORK/home/user/.local/share/chezmoi/dot_local
        time=2026-07-20T20:42:31.700Z level=INFO msg=ReadDir component=system name=$WORK/home/user/.local/share/chezmoi/dot_local/exact_bin
        time=2026-07-20T20:42:31.700Z level=INFO msg=ReadDir component=system name=$WORK/home/user/.local/bin
        time=2026-07-20T20:42:31.700Z level=INFO msg=Lstat component=system name=$WORK/home/user/.local
        time=2026-07-20T20:42:31.700Z level=INFO msg=Get component=persistentState bucket=entryState key=$WORK/home/user/.local value=""
        time=2026-07-20T20:42:31.700Z level=ERROR msg=Mkdir component=system err="mkdir $WORK/home/user/.config/chezmoi: no such file or directory" name=$WORK/home/user/.config/chezmoi perm=511
        time=2026-07-20T20:42:31.700Z level=INFO msg=Mkdir component=system name=$WORK/home/user/.config perm=511
        time=2026-07-20T20:42:31.700Z level=INFO msg=Mkdir component=system name=$WORK/home/user/.config/chezmoi perm=511
        time=2026-07-20T20:42:31.700Z level=INFO msg=Set component=persistentState bucket=entryState key=$WORK/home/user/.local value="{\n  \"type\": \"dir\",\n  \"mode\": 2147484141\n}\n"
        time=2026-07-20T20:42:31.700Z level=INFO msg=defaultPreApplyFunc targetRelPath=.local targetEntryState.Type=dir targetEntryState.Mode=2147484141 targetEntryState.ContentsSHA256="" lastWrittenEntryState.Type=dir lastWrittenEntryState.Mode=2147484141 lastWrittenEntryState.ContentsSHA256="" actualEntryState.Type=dir actualEntryState.Mode=2147484141 actualEntryState.ContentsSHA256=""
        time=2026-07-20T20:42:31.700Z level=INFO msg=Lstat component=system name=$WORK/home/user/.local/bin
        time=2026-07-20T20:42:31.700Z level=INFO msg=Get component=persistentState bucket=entryState key=$WORK/home/user/.local/bin value=""
        time=2026-07-20T20:42:31.700Z level=INFO msg=Set component=persistentState bucket=entryState key=$WORK/home/user/.local/bin value="{\n  \"type\": \"dir\",\n  \"mode\": 2147484141\n}\n"
        time=2026-07-20T20:42:31.700Z level=INFO msg=defaultPreApplyFunc targetRelPath=.local/bin targetEntryState.Type=dir targetEntryState.Mode=2147484141 targetEntryState.ContentsSHA256="" lastWrittenEntryState.Type=dir lastWrittenEntryState.Mode=2147484141 lastWrittenEntryState.ContentsSHA256="" actualEntryState.Type=dir actualEntryState.Mode=2147484141 actualEntryState.ContentsSHA256=""
        time=2026-07-20T20:42:31.700Z level=ERROR msg=Stat component=system err="stat $WORK/home/user/.cache/chezmoi/external/1f030d9d5d3d7ab88bda3434ba35b682ef4fb6da410acc2130242af80632d592: no such file or directory" name=$WORK/home/user/.cache/chezmoi/external/1f030d9d5d3d7ab88bda3434ba35b682ef4fb6da410acc2130242af80632d592
        time=2026-07-20T20:42:31.731Z level=INFO msg=HTTPRequest component=sourceState duration=30.712579ms method=GET url=http://127.0.0.1:40781/file statusCode=200 status="200 OK" contentLength=19
        time=2026-07-20T20:42:31.731Z level=INFO msg=Mkdir component=system name=$WORK/home/user/.cache/chezmoi/external perm=448
        time=2026-07-20T20:42:31.731Z level=INFO msg=WriteFile component=system name=$WORK/home/user/.cache/chezmoi/external/1f030d9d5d3d7ab88bda3434ba35b682ef4fb6da410acc2130242af80632d592 size=19 data="# contents of file\n" perm=384
        time=2026-07-20T20:42:31.731Z level=INFO msg=Chtimes component=system name=$WORK/home/user/.cache/chezmoi/external/1f030d9d5d3d7ab88bda3434ba35b682ef4fb6da410acc2130242af80632d592 atime=2026-07-20T20:42:31.700Z mtime=2026-07-20T20:42:31.700Z
        time=2026-07-20T20:42:31.731Z level=ERROR msg=Lstat component=system err="lstat $WORK/home/user/.local/bin/file: no such file or directory" name=$WORK/home/user/.local/bin/file
        time=2026-07-20T20:42:31.731Z level=INFO msg=Get component=persistentState bucket=entryState key=$WORK/home/user/.local/bin/file value=""
        time=2026-07-20T20:42:31.731Z level=INFO msg=defaultPreApplyFunc targetRelPath=.local/bin/file targetEntryState.Type=file targetEntryState.Mode=420 targetEntryState.ContentsSHA256=989b88bea77292cfdbbb0ae73f66192ed6e4318bd7f3ec5edd809d359be6af43 targetEntryState.contents="# contents of file\n" lastWrittenEntryState=<nil> actualEntryState.Type=remove actualEntryState.Mode=0 actualEntryState.ContentsSHA256=""
        time=2026-07-20T20:42:31.731Z level=INFO msg=WriteFile component=system name=$WORK/home/user/.local/bin/file size=19 data="# contents of file\n" perm=420
        time=2026-07-20T20:42:31.731Z level=INFO msg=Set component=persistentState bucket=entryState key=$WORK/home/user/.local/bin/file value="{\n  \"type\": \"file\",\n  \"mode\": 420,\n  \"contentsSHA256\": \"989b88bea77292cfdbbb0ae73f66192ed6e4318bd7f3ec5edd809d359be6af43\"\n}\n"
        time=2026-07-20T20:42:31.731Z level=INFO msg=Lstat component=system name=$WORK/home/user/.local/bin/unmanaged
        time=2026-07-20T20:42:31.731Z level=INFO msg=Get component=persistentState bucket=entryState key=$WORK/home/user/.local/bin/unmanaged value=""
        time=2026-07-20T20:42:31.731Z level=INFO msg=ReadFile component=system name=$WORK/home/user/.local/bin/unmanaged size=0 data=""
        time=2026-07-20T20:42:31.731Z level=INFO msg=defaultPreApplyFunc targetRelPath=.local/bin/unmanaged targetEntryState.Type=remove targetEntryState.Mode=0 targetEntryState.ContentsSHA256="" lastWrittenEntryState=<nil> actualEntryState.Type=file actualEntryState.Mode=420 actualEntryState.ContentsSHA256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
        time=2026-07-20T20:42:31.731Z level=INFO msg=RemoveAll component=system name=$WORK/home/user/.local/bin/unmanaged
        time=2026-07-20T20:42:31.731Z level=INFO msg=Set component=persistentState bucket=entryState key=$WORK/home/user/.local/bin/unmanaged value="{\n  \"type\": \"remove\"\n}\n"
        time=2026-07-20T20:42:31.731Z level=INFO msg=Close component=persistentState
        > cmp $HOME/.local/bin/file www/file
        > ! exists $HOME/.local/bin/unmanaged
        PASS
        
=== CONT  TestScript/encryptiontemplatefuncs
    cmd.go:380: age not found in $PATH
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [!exec:age] skip 'age not found in $PATH'
        
=== CONT  TestScript/ejson
=== CONT  TestScript/addautotemplate
=== NAME  TestScript/modify_unix
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] skip 'UNIX only'
        > [!exec:sed] skip 'sed not found in $PATH'
        > [!umask:022] skip 'unsupported umask'
        > cp golden/.modify home/user
        # test that chezmoi cat prints the modified contents without modifying the file (0.126s)
        > exec chezmoi cat $HOME${/}.modify
        [stdout]
        beginning
        modified-middle
        end
        > cmp stdout golden/.modified
        > cmp home/user/.modify golden/.modify
        # test that chezmoi diff prints the diff without modifying the file (0.099s)
        > exec chezmoi diff
        [stdout]
        diff --git a/.modify b/.modify
        index f91830d4ecd80adfe9a6aea9dca579397aa86921..6b6d41aae5e8d64a54afd8b8ad5a38a3de1e1e35 100644
        --- a/.modify
        +++ b/.modify
        @@ -1,3 +1,3 @@
         beginning
        -middle
        +modified-middle
         end
        > cmp stdout golden/diff.diff
        > cmp home/user/.modify golden/.modify
        # test that chezmoi archive includes the modified file (0.166s)
        > exec chezmoi archive --output=archive.tar
        > exec tar xf archive.tar
        > cmp .modify golden/.modified
        > cmp home/user/.modify golden/.modify
        # test that chezmoi apply modifies the file (0.115s)
        > exec chezmoi apply --force
        > cmp home/user/.modify golden/.modified
        > chhome home2/user
        # test that chezmoi cat does not fail or generate output when the target does not exist (0.066s)
        > exec chezmoi cat $HOME${/}.not_exist
        > ! stdout .
        # test that chezmoi cat exits with an error when the modify script fails (0.190s)
        > ! exec chezmoi cat $HOME${/}.error
        [stderr]
        chezmoi: .error: exit status 1
        [exit status 1]
        > stderr error
        # test that chezmoi apply updates file permissions (0.203s)
        > cmpmod 666 $HOME/.file
        > exec chezmoi apply $HOME${/}.file
        > cmpmod 700 $HOME/.file
        > chhome home3/user
        # test that chezmoi apply always overwrites modified files without --force (0.355s)
        > exec chezmoi add $HOME${/}.modify
        > exec chezmoi apply
        > edit $HOME${/}.modify
        > rm $CHEZMOISOURCEDIR/dot_modify
        > cp home/user/.local/share/chezmoi/modify_dot_modify $CHEZMOISOURCEDIR
        > exec chezmoi apply
        > cmp $HOME${/}.modify golden/.edited-and-modified
        > chhome home4/user
        # test that modify scripts can be templates (0.066s)
        > exec chezmoi cat $HOME${/}.modify
        [stdout]
        beginning
        modified-middle
        end
        > cmp stdout golden/.modified
        > chhome home5/user
        # test that modify scripts can be modify-templates (0.092s)
        > exec chezmoi cat $HOME${/}.modify
        [stdout]
        beginning
        modified-middle
        end
        > cmp stdout golden/.modified
        > chhome home6/user
        # test that modify scripts can use modify-templates to modify JSON fields (0.117s)
        > exec chezmoi apply --force
        > cmp $HOME/.modify.json golden/.modified.json
        PASS
        
=== CONT  TestScript/addencrypted
=== NAME  TestScript/issue3666
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi add creates parent directories (0.092s)
        > exec chezmoi add $HOME${/}.config/helix/themes/ayu_custom.toml
        > exists $CHEZMOISOURCEDIR/dot_config/exact_helix/themes/ayu_custom.toml
        PASS
        
=== CONT  TestScript/issue3268
gpg: Warning: using insecure memory!
gpg: keybox '/tmp/test-gpg-homedir1902819335/pubring.kbx' created
=== NAME  TestScript/diffcommand_unix
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] skip 'UNIX only'
        > chmod 755 bin/diff-pager
        # test that chezmoi diff invokes diff.command when configured (0.062s)
        > exec chezmoi diff
        [stdout]
        $WORK/home/user/.file $WORK/.tmp/chezmoi-diff582506403/.file
        > stdout ^${HOME@R}/\.file\s+${WORK@R}/.*/\.file$
        # test that chezmoi diff --use-builtin-diff uses the builtin diff even if diff.command is configured (0.054s)
        > exec chezmoi diff --use-builtin-diff
        [stdout]
        diff --git a/.file b/.file
        index bd729e8ee3cc005444c67dc77eed60016886b5e0..b508963510528ab709627ec448026a10a64c72ef 100644
        --- a/.file
        +++ b/.file
        @@ -1 +1 @@
        -# destination contents of .file
        +# target contents of .file
        > [umask:002] cmp stdout golden/diff-umask-002.diff
        > [umask:022] cmp stdout golden/diff-umask-022.diff
        # test that chezmoi diff --reverse reverses the order of arguments (0.253s)
        > exec chezmoi diff --reverse
        [stdout]
        $WORK/.tmp/chezmoi-diff414187551/.file $WORK/home/user/.file
        > stdout ^${WORK@R}/.*/\.file\s+${HOME@R}/\.file$
        # test that chezmoi apply --verbose uses diff.command (0.118s)
        > exec chezmoi apply --verbose
        [stdout]
        $WORK/home/user/.file $WORK/.tmp/chezmoi-diff3961402166/.file
        > stdout ^${HOME@R}/\.file\s+${WORK@R}/.*/\.file$
        > chhome home2/user
        # test that chezmoi diff appends the destination and target paths if diff.args does not contain any templates (0.093s)
        > exec chezmoi diff
        [stdout]
        arg $WORK/home2/user/.file $WORK/.tmp/chezmoi-diff1336915191/.file
        > stdout ^arg\s+${HOME@R}/\.file\s+${WORK@R}/.*/\.file$
        # test that chezmoi apply --verbose uses diff.command (0.055s)
        > exec chezmoi apply --verbose
        [stdout]
        arg $WORK/home2/user/.file $WORK/.tmp/chezmoi-diff1969426482/.file
        > stdout ^arg\s+${HOME@R}/\.file\s+${WORK@R}/.*/\.file$
        > exists $HOME/.file
        > chhome home3/user
        # test that chezmoi diff ignores exit code 1 from diff.command if the files differ (0.123s)
        > exec chezmoi diff
        > chhome home4/user
        # test that chezmoi diff does not ignore exit code 2 from diff.command (0.068s)
        > ! exec chezmoi diff
        [stderr]
        chezmoi: .file: exit status 2
        [exit status 1]
        > stderr 'exit status 2'
        > chhome home5/user
        # test that chezmoi diff does not invoke diff.command for directories if directories are excluded (0.120s)
        > exec chezmoi diff
        [stdout]
        /dev/null $WORK/.tmp/chezmoi-diff1300362616/.file
        > stdout \.file
        > ! stdout \.dir
        > chhome home6/user
        # test that chezmoi diff does not invoke the diff pager when there is no diff (0.105s)
        > exec chezmoi diff
        > ! stdout .
        # test that chezmoi diff does invoke the diff pager when there is a diff (0.103s)
        > cp golden/dot_file $CHEZMOISOURCEDIR
        > exec chezmoi diff
        [stdout]
        diff-pager
        > stdout diff-pager
        PASS
        
=== CONT  TestScript/issue3630
=== NAME  TestScript/onepassword2
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > mockcommand bin/op
        # test onepassword template function (0.117s)
        > exec chezmoi execute-template '{{ (onepassword "ExampleLogin").id }}'
        [stdout]
        wxcplh5udshnonkzg2n4qx262y> stdout '^wxcplh5udshnonkzg2n4qx262y$'
        # test onepassword template function with vault and account (0.106s)
        > exec chezmoi execute-template '{{ (onepassword "ExampleLogin" "vault" "account").id }}'
        [stdout]
        wxcplh5udshnonkzg2n4qx262y> stdout '^wxcplh5udshnonkzg2n4qx262y$'
        # test onepassword template function with empty vault (0.099s)
        > exec chezmoi execute-template '{{ (onepassword "ExampleLogin" "" "account").id }}'
        [stdout]
        wxcplh5udshnonkzg2n4qx262y> stdout '^wxcplh5udshnonkzg2n4qx262y$'
        # test onepassword template function with account alias (0.085s)
        > exec chezmoi execute-template '{{ (onepassword "ExampleLogin" "" "chezmoi").id }}'
        [stdout]
        wxcplh5udshnonkzg2n4qx262y> stdout '^wxcplh5udshnonkzg2n4qx262y$'
        # test onepasswordDetailsFields template function (0.108s)
        > exec chezmoi execute-template '{{ (onepasswordDetailsFields "ExampleLogin").password.value }}'
        [stdout]
        L8rm1JXJIE1b8YUDWq7h> stdout '^L8rm1JXJIE1b8YUDWq7h$'
        # test onepasswordItemFields template function (0.091s)
        > exec chezmoi execute-template '{{ (onepasswordItemFields "ExampleLogin").exampleLabel.value }}'
        [stdout]
        exampleValue> stdout exampleValue
        # test onepasswordRead template function (0.118s)
        > exec chezmoi execute-template '{{ onepasswordRead "op://vault/item/field" }}'
        [stdout]
        exampleField
        > stdout exampleField
        # test onepasswordRead template function with account (0.216s)
        > exec chezmoi execute-template '{{ onepasswordRead "op://vault/item/field" "account" }}'
        [stdout]
        exampleAccountField
        > stdout exampleAccountField
        # test onepasswordDocument template function (0.120s)
        > exec chezmoi execute-template '{{ onepasswordDocument "exampleDocument" }}'
        [stdout]
        OK-COMPUTER
        > stdout 'OK-COMPUTER'
        # test onepasswordDocument template function with vault (0.068s)
        > exec chezmoi execute-template '{{ onepasswordDocument "exampleDocument" "vault" }}'
        [stdout]
        OK-VAULT
        > stdout 'OK-VAULT'
        # test onepasswordDocument template function with vault and account (0.079s)
        > exec chezmoi execute-template '{{ onepasswordDocument "exampleDocument" "vault" "account" }}'
        [stdout]
        OK-VAULT-ACCOUNT
        > stdout 'OK-VAULT-ACCOUNT'
        # test onepasswordDocument template function with account (0.172s)
        > exec chezmoi execute-template '{{ onepasswordDocument "exampleDocument" "" "account" }}'
        [stdout]
        OK-ACCOUNT
        > stdout 'OK-ACCOUNT'
        # test onepassword template function (insufficient parameters) (0.091s)
        > ! exec chezmoi execute-template '{{ (onepassword).id }}'
        [stderr]
        chezmoi: template: arg1:1:4: executing "arg1" at <onepassword>: error calling onepassword: expected 1..3 arguments in account mode, got 0
        [exit status 1]
        > stderr 'expected 1..3 arguments in account mode, got 0'
        # test onepassword template function (too many parameters) (0.108s)
        > ! exec chezmoi execute-template '{{ (onepassword "ExampleLogin" "vault" "account" "extra").id }}'
        [stderr]
        chezmoi: template: arg1:1:4: executing "arg1" at <onepassword "ExampleLogin" "vault" "account" "extra">: error calling onepassword: expected 1..3 arguments in account mode, got 4
        [exit status 1]
        > stderr 'expected 1..3 arguments in account mode, got 4'
        # test onepasswordRead template function (too many parameters) (0.110s)
        > ! exec chezmoi execute-template '{{ onepasswordRead "op://vault/item/field" "account" "extra" }}'
        [stderr]
        chezmoi: template: arg1:1:3: executing "arg1" at <onepasswordRead "op://vault/item/field" "account" "extra">: error calling onepasswordRead: expected 1..2 arguments, got 3
        [exit status 1]
        > stderr 'expected 1..2 arguments, got 3'
        # test failure with OP_SERVICE_ACCOUNT_TOKEN set (0.106s)
        > env OP_SERVICE_ACCOUNT_TOKEN=x
        > ! exec chezmoi execute-template '{{ (onepassword "ExampleLogin").id }}'
        [stderr]
        chezmoi: template: arg1:1:4: executing "arg1" at <onepassword "ExampleLogin">: error calling onepassword: onepassword.mode is account, but OP_SERVICE_ACCOUNT_TOKEN is set
        [exit status 1]
        > stderr 'OP_SERVICE_ACCOUNT_TOKEN is set'
        # test failure with OP_CONNECT_HOST and OP_CONNECT_TOKEN set (0.036s)
        > env OP_SERVICE_ACCOUNT_TOKEN=
        > env OP_CONNECT_HOST=x
        > env OP_CONNECT_TOKEN=y
        > ! exec chezmoi execute-template '{{ (onepassword "ExampleLogin").id }}'
        [stderr]
        chezmoi: template: arg1:1:4: executing "arg1" at <onepassword "ExampleLogin">: error calling onepassword: onepassword.mode is account, but OP_CONNECT_HOST and OP_CONNECT_TOKEN are set
        [exit status 1]
        > stderr 'OP_CONNECT_HOST and OP_CONNECT_TOKEN'
        PASS
        
=== CONT  TestScript/issue3602
=== NAME  TestScript/issue3630
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi add does not traverse into ignored directories (0.076s)
        > chmod 000 $HOME/.dir/private
        > exec chezmoi add $HOME${/}.dir
        [stderr]
        chezmoi: warning: ignoring .dir/private
        > stderr 'warning: ignoring .dir/private'
        > cmp $CHEZMOISOURCEDIR/dot_dir/public/file golden/file
        PASS
        
=== CONT  TestScript/issue3590
=== NAME  TestScript/issue3602
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that the .chezmoi.config.destDir template variable is compatible with the replace template function (0.038s)
        > exec chezmoi execute-template '{{ .chezmoi.config.destDir | replace "abc" "def "}}'
        [stdout]
        $WORK/home/userPASS
        
=== CONT  TestScript/issue3582
=== NAME  TestScript/issue3772
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi add adds a symlink to a file (0.080s)
        > symlink $HOME/a -> test/a
        > exec chezmoi add $HOME/a
        > cmp $CHEZMOISOURCEDIR/symlink_a golden/symlink_a
        # test that chezmoi add --follow adds a file without the symlink (0.169s)
        > symlink $HOME/b -> test/b
        > exec chezmoi add --follow $HOME/b
        > cmp $CHEZMOISOURCEDIR/b golden/b
        # test that chezmoi add --follow returns an error when adding a symlink to a directory (0.072s)
        > symlink $HOME/abc -> test
        > ! exec chezmoi add --follow $HOME/abc
        [stderr]
        chezmoi: $WORK/home/user/abc: follow and recursive are mutually exclusive for directories
        [exit status 1]
        > stderr 'follow and recursive are mutually exclusive for directories'
        PASS
        
=== CONT  TestScript/issue3525
=== NAME  TestScript/issue3268
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [unix] chmod 755 bin/chezmoi-test-command
        # test that chezmoi sets CHEZMOI_ environment variables (0.104s)
        > exec chezmoi execute-template '{{ output "chezmoi-test-command" }}'
        [stdout]
        CHEZMOI_SOURCE_DIR=$WORK/home/user/.local/share/chezmoi
        > stdout 'CHEZMOI_SOURCE_DIR=.*/\.local/share/chezmoi\s?$'
        > chhome home2/user
        # test that chezmoi sets environment variables from env (0.073s)
        > exec chezmoi execute-template '{{ env "VAR" }}'
        [stdout]
        VALUE> stdout VALUE
        > chhome home3/user
        # test that env and scriptEnv cannot both be set (0.035s)
        > ! exec chezmoi execute-template ''
        [stderr]
        chezmoi: only one of env or scriptEnv may be set
        [exit status 1]
        > stderr 'only one of env or scriptEnv may be set'
        PASS
        
=== CONT  TestScript/issue3510
=== NAME  TestScript/issue4927
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > httpd www
        # test that chezmoi only downloads externals once if refreshPeriod is zero (0.060s)
        > exec chezmoi apply
        > cmp $HOME/.file golden/.file
        # sleep is needed to ensure that www/file has a different mtime after being edited
        # HTTP's Last-Modified headers have only single second resolution (1.048s)
        > sleep 1s
        > edit www/file
        > exec chezmoi apply
        > cmp $HOME/.file golden/.file
        # test that chezmoi apply re-downloads the file if the cache is cleared (0.124s)
        > rmdir $CHEZMOICACHEDIR
        > modifyfile '[0-9a-f]{64}' '7fd151a85844480c7d5dde3fb06f359ccaa5964871ea63d4e19048f983905124' $CHEZMOISOURCEDIR/.chezmoiexternal.yaml.tmpl
        > exec chezmoi apply
        > cmp $HOME/.file golden/.file-edited
        > exists $CHEZMOICACHEDIR
        # test that chezmoi apply --refresh-externals=always checks the checksum (0.237s)
        > modifyfile '[0-9a-f]{64}' 'deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef' $CHEZMOISOURCEDIR/.chezmoiexternal.yaml.tmpl
        > ! exec chezmoi apply --refresh-externals=always
        [stderr]
        chezmoi: .file: SHA256 mismatch: expected deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef, got 7fd151a85844480c7d5dde3fb06f359ccaa5964871ea63d4e19048f983905124
        [exit status 1]
        > stderr 'chezmoi: .file: SHA256 mismatch: expected deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef, got 7fd151a85844480c7d5dde3fb06f359ccaa5964871ea63d4e19048f983905124'
        > cmp $HOME/.file golden/.file-edited
        PASS
        
=== CONT  TestScript/issue3421
=== NAME  TestScript/update
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [!exec:git] skip 'git not found in $PATH'
        > mkgitconfig
        > mkhomedir golden
        > mkhomedir
        > exec git init --bare $WORK/dotfiles.git
        [stdout]
        Initialized empty Git repository in $WORK/dotfiles.git/
        > exec chezmoi init file://$WORK/dotfiles.git
        [stderr]
        Cloning into '$WORK/home/user/.local/share/chezmoi'...
        warning: You appear to have cloned an empty repository.
        # create a commit (0.708s)
        > exec chezmoi add $HOME${/}.file
        > exec chezmoi git add dot_file
        > exec chezmoi git commit -- --message 'Add dot_file'
        [stdout]
        [master (root-commit) cbc70b8] Add dot_file
         1 file changed, 1 insertion(+)
         create mode 100644 dot_file
        > exec chezmoi git push
        [stderr]
        To file://$WORK/dotfiles.git
         * [new branch]      master -> master
        > chhome home2/user
        # test that chezmoi init --apply inits and applies (0.378s)
        > mkgitconfig
        > exec chezmoi init --apply --force file://$WORK/dotfiles.git
        [stderr]
        Cloning into '$WORK/home2/user/.local/share/chezmoi'...
        > cmp $HOME/.file golden/.file
        > chhome home/user
        # create and push a new commit (0.349s)
        > edit $CHEZMOISOURCEDIR/dot_file
        > exec chezmoi git -- add dot_file
        > exec chezmoi git -- commit -m 'Update dot_file'
        [stdout]
        [master c940db3] Update dot_file
         1 file changed, 1 insertion(+)
        > exec chezmoi git -- push
        [stderr]
        To file://$WORK/dotfiles.git
           cbc70b8..c940db3  master -> master
        > chhome home2/user
        # test chezmoi update (0.423s)
        > exec chezmoi update
        [stdout]
        Updating cbc70b8..c940db3
        Fast-forward
         dot_file | 1 +
         1 file changed, 1 insertion(+)
        [stderr]
        From file://$WORK/dotfiles
           cbc70b8..c940db3  master     -> origin/master
        > grep -count=1 '# edited' $HOME/.file
        > chhome home/user
        # create and push a new commit (0.328s)
        > edit $CHEZMOISOURCEDIR/dot_file
        > exec chezmoi git -- add dot_file
        > exec chezmoi git -- commit -m 'Update dot_file'
        [stdout]
        [master e24ae4b] Update dot_file
         1 file changed, 1 insertion(+)
        > exec chezmoi git -- push
        [stderr]
        To file://$WORK/dotfiles.git
           c940db3..e24ae4b  master -> master
        > chhome home2/user
        # test chezmoi update --apply=false (0.584s)
        > exec chezmoi update --apply=false
        [stdout]
        Updating c940db3..e24ae4b
        Fast-forward
         dot_file | 1 +
         1 file changed, 1 insertion(+)
        [stderr]
        From file://$WORK/dotfiles
           c940db3..e24ae4b  master     -> origin/master
        > grep -count=1 '# edited' $HOME/.file
        > exec chezmoi apply --force
        > grep -count=2 '# edited' $HOME/.file
        # test chezmoi update --init (0.695s)
        > cp golden/.chezmoi.toml.tmpl $CHEZMOISOURCEDIR
        > exec chezmoi update --init
        [stdout]
        Already up to date.
        > exec chezmoi execute-template '{{ .key }}'
        [stdout]
        value> stdout value
        PASS
        
=== NAME  TestScript/issue3590
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi data does not include default sentinels (0.060s)
        > exec chezmoi data
        [stdout]
        {
          "chezmoi": {
            "arch": "amd64",
            "args": [
              "chezmoi",
              "data"
            ],
            "cacheDir": "$WORK/home/user/.cache/chezmoi",
            "command": "data",
            "commandDir": "$WORK",
            "config": {
              "add": {
                "encrypt": false,
                "secrets": "warning",
                "templateSymlinks": false
              },
              "age": {
                "args": null,
                "command": "age",
                "identities": null,
                "identity": "",
                "passphrase": false,
                "recipient": "",
                "recipients": null,
                "recipientsFile": "",
                "recipientsFiles": null,
                "suffix": ".age",
                "symmetric": false,
                "useBuiltin": false
              },
              "awsSecretsManager": {
                "profile": "",
                "region": ""
              },
              "azureKeyVault": {
                "defaultVault": ""
              },
              "bitwarden": {
                "command": "bw",
                "unlock": false
              },
              "bitwardenSecrets": {
                "command": "bws"
              },
              "cacheDir": "$WORK/home/user/.cache/chezmoi",
              "cd": {
                "args": null,
                "command": ""
              },
              "color": "auto",
              "completion": {
                "custom": false
              },
              "dashlane": {
                "args": null,
                "command": "dcli"
              },
              "data": {},
              "destDir": "$WORK/home/user",
              "diff": {
                "args": null,
                "command": "",
                "exclude": [],
                "pager": "",
                "pagerArgs": null,
                "reverse": false,
                "scriptContents": true
              },
              "docker": {
                "command": "docker"
              },
              "doppler": {
                "args": null,
                "command": "doppler",
                "config": "",
                "project": ""
              },
              "edit": {
                "apply": false,
                "args": null,
                "command": "",
                "hardlink": true,
                "minDuration": 1000000000,
                "watch": false
              },
              "ejson": {
                "key": "",
                "keyDir": "/opt/ejson/keys"
              },
              "encryption": "",
              "env": null,
              "format": "json",
              "git": {
                "autoadd": false,
                "autocommit": false,
                "autopush": false,
                "command": "git",
                "commitMessageTemplate": "",
                "commitMessageTemplateFile": "",
                "lfs": false
              },
              "gitHub": {
                "refreshPeriod": 60000000000
              },
              "gopass": {
                "command": "gopass",
                "mode": ""
              },
              "gpg": {
                "args": null,
                "command": "gpg",
                "recipient": "",
                "recipients": null,
                "suffix": ".asc",
                "symmetric": false
              },
              "hooks": null,
              "interactive": false,
              "interpreters": {
                "bat": {
                  "args": null,
                  "command": ""
                },
                "cmd": {
                  "args": null,
                  "command": ""
                },
                "com": {
                  "args": null,
                  "command": ""
                },
                "exe": {
                  "args": null,
                  "command": ""
                },
                "nu": {
                  "args": null,
                  "command": "nu"
                },
                "pl": {
                  "args": null,
                  "command": "perl"
                },
                "ps1": {
                  "args": null,
                  "command": ""
                },
                "py": {
                  "args": null,
                  "command": "python3"
                },
                "rb": {
                  "args": null,
                  "command": "ruby"
                }
              },
              "keepassxc": {
                "args": null,
                "command": "keepassxc-cli",
                "database": "",
                "mode": "cache-password",
                "prompt": true
              },
              "keeper": {
                "args": null,
                "command": "keeper"
              },
              "lastpass": {
                "command": "lpass"
              },
              "lessInteractive": false,
              "merge": {
                "args": null,
                "command": "vimdiff"
              },
              "mode": "file",
              "onepassword": {
                "command": "op",
                "mode": "account",
                "prompt": true
              },
              "pager": "",
              "pagerArgs": null,
              "pass": {
                "command": "pass"
              },
              "passhole": {
                "args": null,
                "command": "ph",
                "prompt": true
              },
              "persistentState": "",
              "pinentry": {
                "args": null,
                "command": "",
                "options": [
                  "allow-external-password-cache"
                ]
              },
              "progress": "auto",
              "protonPass": {
                "command": "pass-cli"
              },
              "rbw": {
                "command": "rbw"
              },
              "safe": true,
              "scriptEnv": null,
              "scriptTempDir": "",
              "secret": {
                "args": null,
                "command": ""
              },
              "sourceDir": "$WORK/home/user/.local/share/chezmoi",
              "status": {
                "exclude": [],
                "pathStyle": "relative"
              },
              "tempDir": "$WORK/.tmp",
              "template": {
                "options": [
                  "missingkey=error"
                ]
              },
              "textConv": null,
              "umask": 18,
              "update": {
                "apply": true,
                "args": null,
                "command": "",
                "recurseSubmodules": true
              },
              "useBuiltinAge": "auto",
              "useBuiltinGit": "auto",
              "vault": {
                "command": "vault"
              },
              "verbose": false,
              "verify": {
                "exclude": []
              },
              "warnings": {
                "configFileTemplateHasChanged": true
              },
              "workingTree": "$WORK/home/user/.local/share/chezmoi"
            },
            "configFile": "$WORK/home/user/.config/chezmoi/chezmoi.toml",
            "destDir": "$WORK/home/user",
            "executable": "/tmp/testscript-main23456104/bin/chezmoi",
            "flags": {
              "dryRun": false,
              "force": false,
              "keepGoing": false,
              "noPager": false,
              "noTTY": false
            },
            "fqdnHostname": "arch-nspawn-4102825",
            "gid": "1002",
            "group": "builduser",
            "homeDir": "$WORK/home/user",
            "hostname": "arch-nspawn-4102825",
            "kernel": {
              "osrelease": "6.18.31-1-lts",
              "ostype": "Linux",
              "version": "#1 SMP PREEMPT_DYNAMIC Fri, 15 May 2026 15:01:51 +0000"
            },
            "os": "linux",
            "osRelease": {
              "ansiColor": "38;2;23;147;209",
              "bugReportURL": "https://gitlab.archlinux.org/groups/archlinux/-/issues",
              "buildID": "rolling",
              "documentationURL": "https://wiki.archlinux.org/",
              "homeURL": "https://archlinux.org/",
              "id": "arch",
              "logo": "archlinux-logo",
              "name": "Arch Linux",
              "prettyName": "Arch Linux",
              "privacyPolicyURL": "https://terms.archlinux.org/docs/privacy-policy/",
              "supportURL": "https://bbs.archlinux.org/"
            },
            "pathListSeparator": ":",
            "pathSeparator": "/",
            "rawHomeDir": "$WORK/home/user",
            "sourceDir": "$WORK/home/user/.local/share/chezmoi",
            "uid": "1002",
            "username": "builduser",
            "version": {
              "builtBy": "testscript",
              "commit": "HEAD",
              "date": "2026-07-20T20:42:31Z",
              "version": "v2.0.0+test"
            },
            "windowsVersion": {},
            "workingTree": "$WORK/home/user/.local/share/chezmoi"
          }
        }
        > ! stdout '"\\u0000"'
        PASS
        
=== CONT  TestScript/issue3418
=== NAME  TestScript/issue4634
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi --override-data overrides data (0.271s)
        > exec chezmoi execute-template '{{ .foo }}'
        [stdout]
        bar> stdout ^bar$
        > exec chezmoi execute-template --override-data '{"foo":"baz"}' '{{ .foo }}'
        [stdout]
        baz> stdout ^baz$
        # test that chezmoi --override-data overrides even chezmoi's builtin data (0.099s)
        > exec chezmoi execute-template --override-data '{"chezmoi":{"os":"test"}}' '{{ .chezmoi.os }}'
        [stdout]
        test> stdout ^test$
        # test that chezmoi --override-data-file overrides data from a file (0.160s)
        > exec chezmoi execute-template --override-data-file golden/override.yaml '{{ .foo }}'
        [stdout]
        bar> stdout ^bar$
        # that that if both --override-data and --override-data-file are passed then --override-data is preferred (0.077s)
        > exec chezmoi execute-template --override-data '{"foo":"baz"}' --override-data-file golden/override.yaml '{{ .foo }}'
        [stdout]
        baz> stdout ^baz$
        PASS
        
=== CONT  TestScript/issue3415
=== NAME  TestScript/addsecrets
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi add --secrets=ignore does not generate a warning when adding a file with a secret (0.031s)
        > exec chezmoi add --secrets=ignore $HOME${/}.secret
        > ! stderr .
        > exists $CHEZMOISOURCEDIR/dot_secret
        # test that chezmoi add --secrets=warning generates a warning when adding a file with a secret but still adds the file (0.316s)
        > rm $CHEZMOISOURCEDIR/dot_secret
        > exec chezmoi add --secrets=warning $HOME${/}.secret
        [stderr]
        chezmoi: $WORK/home/user/.secret:1: Uncovered a SumoLogic Access Token, which could lead to unauthorized access to log data and analytics insights.
        > stderr 'Uncovered a SumoLogic Access Token'
        > exists $CHEZMOISOURCEDIR/dot_secret
        # test that chezmoi add --secrets=error generates an error when adding a file with a secret and does not add the file (0.237s)
        > rm $CHEZMOISOURCEDIR/dot_secret
        > ! exec chezmoi add --secrets=error $HOME${/}.secret
        [stderr]
        chezmoi: $WORK/home/user/.secret:1: Uncovered a SumoLogic Access Token, which could lead to unauthorized access to log data and analytics insights.
        [exit status 1]
        > stderr 'Uncovered a SumoLogic Access Token'
        > ! exists $CHEZMOISOURCEDIR/dot_secret
        # test that chezmoi add --force --secrets=error generates an error when adding a file with a secret but still adds the file (0.211s)
        > rm $CHEZMOISOURCEDIR/dot_secret
        > exec chezmoi add --force --secrets=error $HOME${/}.secret
        [stderr]
        chezmoi: $WORK/home/user/.secret:1: Uncovered a SumoLogic Access Token, which could lead to unauthorized access to log data and analytics insights.
        > stderr 'Uncovered a SumoLogic Access Token'
        > exists $CHEZMOISOURCEDIR/dot_secret
        # test that chezmoi re-add does not generate a warning when an added file already contains a secret (0.097s)
        > exec chezmoi re-add
        > ! stderr .
        # test that chezmoi re-add generates a warning when adding a file with a new secret (0.099s)
        > cp golden/.secret2 $HOME/.secret
        > exec chezmoi re-add
        [stderr]
        chezmoi: $WORK/home/user/.secret:1: Uncovered a SumoLogic Access Token, which could lead to unauthorized access to log data and analytics insights.
        > stderr 'Uncovered a SumoLogic Access Token'
        PASS
        
=== CONT  TestScript/issue3414
=== NAME  TestScript/edithardlink
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] skip 'Windows does not support hardlinks'
        # test that chezmoi edit uses a hardlink by default (0.044s)
        > exec chezmoi edit $HOME${/}.file
        [stdout]
        $WORK/.tmp/chezmoi-edit2626528215/.file
        [stderr]
        chezmoi: warning: echo $WORK/.tmp/chezmoi-edit2626528215/.file: returned in less than 1s
        > stdout /\.file$
        # test that chezmoi edit --hardlink=false does not use a hardlink (0.287s)
        > exec chezmoi edit --hardlink=false $HOME${/}.file
        [stdout]
        $WORK/home/user/.local/share/chezmoi/dot_file
        [stderr]
        chezmoi: warning: echo $WORK/home/user/.local/share/chezmoi/dot_file: returned in less than 1s
        > stdout ${CHEZMOISOURCEDIR@R}/dot_file$
        PASS
        
=== CONT  TestScript/issue3374
=== CONT  TestScript/issue3371
=== NAME  TestScript/issue3582
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi data shows data read from TOML config files (0.119s)
        > exec chezmoi data --format=json
        [stdout]
        {
          "chezmoi": {
            "arch": "amd64",
            "args": [
              "chezmoi",
              "data",
              "--format=json"
            ],
            "cacheDir": "$WORK/home/user/.cache/chezmoi",
            "command": "data",
            "commandDir": "$WORK",
            "config": {
              "add": {
                "encrypt": false,
                "secrets": "warning",
                "templateSymlinks": false
              },
              "age": {
                "args": null,
                "command": "age",
                "identities": null,
                "identity": "$WORK/my-age-identity",
                "passphrase": false,
                "recipient": "",
                "recipients": null,
                "recipientsFile": "",
                "recipientsFiles": null,
                "suffix": ".age",
                "symmetric": false,
                "useBuiltin": true
              },
              "awsSecretsManager": {
                "profile": "",
                "region": ""
              },
              "azureKeyVault": {
                "defaultVault": ""
              },
              "bitwarden": {
                "command": "bw",
                "unlock": false
              },
              "bitwardenSecrets": {
                "command": "bws"
              },
              "cacheDir": "$WORK/home/user/.cache/chezmoi",
              "cd": {
                "args": null,
                "command": ""
              },
              "color": "auto",
              "completion": {
                "custom": false
              },
              "dashlane": {
                "args": null,
                "command": "dcli"
              },
              "data": {},
              "destDir": "$WORK/home/user",
              "diff": {
                "args": null,
                "command": "",
                "exclude": [],
                "pager": "my-diff-pager",
                "pagerArgs": null,
                "reverse": false,
                "scriptContents": true
              },
              "docker": {
                "command": "docker"
              },
              "doppler": {
                "args": null,
                "command": "doppler",
                "config": "",
                "project": ""
              },
              "edit": {
                "apply": false,
                "args": null,
                "command": "",
                "hardlink": true,
                "minDuration": 1000000000,
                "watch": false
              },
              "ejson": {
                "key": "",
                "keyDir": "/opt/ejson/keys"
              },
              "encryption": "age",
              "env": null,
              "format": "json",
              "git": {
                "autoadd": false,
                "autocommit": false,
                "autopush": false,
                "command": "git",
                "commitMessageTemplate": "",
                "commitMessageTemplateFile": "",
                "lfs": false
              },
              "gitHub": {
                "refreshPeriod": 60000000000
              },
              "gopass": {
                "command": "gopass",
                "mode": ""
              },
              "gpg": {
                "args": null,
                "command": "gpg",
                "recipient": "",
                "recipients": null,
                "suffix": ".asc",
                "symmetric": false
              },
              "hooks": null,
              "interactive": false,
              "interpreters": {
                "bat": {
                  "args": null,
                  "command": ""
                },
                "cmd": {
                  "args": null,
                  "command": ""
                },
                "com": {
                  "args": null,
                  "command": ""
                },
                "exe": {
                  "args": null,
                  "command": ""
                },
                "nu": {
                  "args": null,
                  "command": "nu"
                },
                "pl": {
                  "args": null,
                  "command": "perl"
                },
                "ps1": {
                  "args": null,
                  "command": ""
                },
                "py": {
                  "args": null,
                  "command": "python3"
                },
                "rb": {
                  "args": null,
                  "command": "ruby"
                }
              },
              "keepassxc": {
                "args": null,
                "command": "keepassxc-cli",
                "database": "",
                "mode": "cache-password",
                "prompt": true
              },
              "keeper": {
                "args": null,
                "command": "keeper"
              },
              "lastpass": {
                "command": "lpass"
              },
              "lessInteractive": false,
              "merge": {
                "args": null,
                "command": "vimdiff"
              },
              "mode": "file",
              "onepassword": {
                "command": "op",
                "mode": "account",
                "prompt": true
              },
              "pager": "my-pager",
              "pagerArgs": null,
              "pass": {
                "command": "pass"
              },
              "passhole": {
                "args": null,
                "command": "ph",
                "prompt": true
              },
              "persistentState": "",
              "pinentry": {
                "args": null,
                "command": "",
                "options": [
                  "allow-external-password-cache"
                ]
              },
              "progress": "auto",
              "protonPass": {
                "command": "pass-cli"
              },
              "rbw": {
                "command": "rbw"
              },
              "safe": true,
              "scriptEnv": null,
              "scriptTempDir": "",
              "secret": {
                "args": null,
                "command": ""
              },
              "sourceDir": "$WORK/home/user/.local/share/chezmoi",
              "status": {
                "exclude": [],
                "pathStyle": "relative"
              },
              "tempDir": "$WORK/.tmp",
              "template": {
                "options": [
                  "missingkey=error"
                ]
              },
              "textConv": null,
              "umask": 18,
              "update": {
                "apply": true,
                "args": null,
                "command": "",
                "recurseSubmodules": true
              },
              "useBuiltinAge": true,
              "useBuiltinGit": "auto",
              "vault": {
                "command": "vault"
              },
              "verbose": false,
              "verify": {
                "exclude": []
              },
              "warnings": {
                "configFileTemplateHasChanged": true
              },
              "workingTree": "$WORK/home/user/.local/share/chezmoi"
            },
            "configFile": "$WORK/home/user/.config/chezmoi/chezmoi.toml",
            "destDir": "$WORK/home/user",
            "executable": "/tmp/testscript-main23456104/bin/chezmoi",
            "flags": {
              "dryRun": false,
              "force": false,
              "keepGoing": false,
              "noPager": false,
              "noTTY": false
            },
            "fqdnHostname": "arch-nspawn-4102825",
            "gid": "1002",
            "group": "builduser",
            "homeDir": "$WORK/home/user",
            "hostname": "arch-nspawn-4102825",
            "kernel": {
              "osrelease": "6.18.31-1-lts",
              "ostype": "Linux",
              "version": "#1 SMP PREEMPT_DYNAMIC Fri, 15 May 2026 15:01:51 +0000"
            },
            "os": "linux",
            "osRelease": {
              "ansiColor": "38;2;23;147;209",
              "bugReportURL": "https://gitlab.archlinux.org/groups/archlinux/-/issues",
              "buildID": "rolling",
              "documentationURL": "https://wiki.archlinux.org/",
              "homeURL": "https://archlinux.org/",
              "id": "arch",
              "logo": "archlinux-logo",
              "name": "Arch Linux",
              "prettyName": "Arch Linux",
              "privacyPolicyURL": "https://terms.archlinux.org/docs/privacy-policy/",
              "supportURL": "https://bbs.archlinux.org/"
            },
            "pathListSeparator": ":",
            "pathSeparator": "/",
            "rawHomeDir": "$WORK/home/user",
            "sourceDir": "$WORK/home/user/.local/share/chezmoi",
            "uid": "1002",
            "username": "builduser",
            "version": {
              "builtBy": "testscript",
              "commit": "HEAD",
              "date": "2026-07-20T20:42:32Z",
              "version": "v2.0.0+test"
            },
            "windowsVersion": {},
            "workingTree": "$WORK/home/user/.local/share/chezmoi"
          }
        }
        > stdout '"mode": "file"'
        > stdout '"pager": "my-pager"'
        > stdout '"pager": "my-diff-pager"'
        > stdout '"identity": ".*/my-age-identity"'
        PASS
        
=== CONT  TestScript/issue3349
=== NAME  TestScript/issue3525
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi add does not add files in external_ directories (0.050s)
        > exec chezmoi add $HOME${/}.external/file
        [stderr]
        chezmoi: .external: skipping entries in external_ directory
        > stderr '.external: skipping entries in external_ directory'
        # test that chezmoi add does not add files in subdirectories of external_ directories (0.077s)
        > exec chezmoi add $HOME${/}.external/dir/file
        [stderr]
        chezmoi: .external: skipping entries in external_ directory
        > stderr '.external: skipping entries in external_ directory'
        PASS
        
=== CONT  TestScript/issue3344
=== NAME  TestScript/issue3510
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] skip 'UNIX only'
        > expandenv $CHEZMOISOURCEDIR/.chezmoiexternal.toml
        # test that chezmoi apply does not cache the absence of git in $PATH at startup (0.116s)
        > exec chezmoi apply
        [stdout]
        using newly-installed git
        > stdout 'using newly-installed git'
        PASS
        
=== CONT  TestScript/issue3325
=== NAME  TestScript/issue3374
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi copes with extra slashes in path arguments (0.072s)
        > exec chezmoi cat $HOME//.file
        [stdout]
        # contents of .file
        > cmp stdout golden/.file
        PASS
        
=== CONT  TestScript/issue3113
=== NAME  TestScript/issue3744
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [!exec:git] skip 'git not found in $PATH'
        > mkgitconfig
        # create a repo (0.200s)
        > exec git init --bare $WORK/dotfiles.git
        [stdout]
        Initialized empty Git repository in $WORK/dotfiles.git/
        > exec chezmoi init file://$WORK/dotfiles.git
        [stderr]
        Cloning into '$WORK/home/user/.local/share/chezmoi'...
        warning: You appear to have cloned an empty repository.
        # test that chezmoi add creates and pushes a commit with a custom message template (0.293s)
        > stdin golden/stdin
        > exec chezmoi add --no-tty $HOME${/}.file
        [stdout]
        message? [master (root-commit) 9e1d5db] Custom commit message
         1 file changed, 1 insertion(+)
         create mode 100644 dot_file
        [stderr]
        To file://$WORK/dotfiles.git
         * [new branch]      master -> master
        > exec git --git-dir=$WORK/dotfiles.git show HEAD
        [stdout]
        commit 9e1d5dbaca89ebd21a054689fb21a0b280e2a9a7
        Author: User <user@example.com>
        Date:   Mon Jul 20 20:42:31 2026 +0000
        
            Custom commit message
        
        diff --git a/dot_file b/dot_file
        new file mode 100644
        index 0000000..8a52cb9
        --- /dev/null
        +++ b/dot_file
        @@ -0,0 +1 @@
        +# contents of .file
        > stdout 'Custom commit message'
        PASS
        
=== CONT  TestScript/issue3257
=== NAME  TestScript/diff
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [!umask:022] skip
        > mkhomedir golden
        > mkhomedir
        > mksourcedir
        # test that chezmoi diff generates no output when the source and destination states are equal (0.077s)
        > exec chezmoi diff
        > ! stdout .
        # test that chezmoi diff generates a diff when a file is added to the source state (0.077s)
        > cp golden/dot_newfile $CHEZMOISOURCEDIR/dot_newfile
        > exec chezmoi diff
        [stdout]
        diff --git a/.newfile b/.newfile
        new file mode 100644
        index 0000000000000000000000000000000000000000..06e05235fdd12fd5c367b6d629fef94536c85525
        --- /dev/null
        +++ b/.newfile
        @@ -0,0 +1 @@
        +# contents of .newfile
        > [unix] cmp stdout golden/add-newfile-diff-unix.diff
        > [windows] cmp stdout golden/add-newfile-diff-windows.diff
        > rm $CHEZMOISOURCEDIR/dot_newfile
        # test that chezmoi diff generates a diff when a file is edited (0.260s)
        > edit $HOME/.file
        > exec chezmoi diff
        [stdout]
        diff --git a/.file b/.file
        index 5d2730a8850a2db479af83de87cc8345437aef06..8a52cb9ce9551221716a53786ad74104c5902362 100644
        --- a/.file
        +++ b/.file
        @@ -1,2 +1 @@
         # contents of .file
        -# edited
        > [unix] cmp stdout golden/modify-file-diff-unix.diff
        > [windows] cmp stdout golden/modify-file-diff-windows.diff
        > exec chezmoi apply --force $HOME${/}.file
        # test chezmoi diff --reverse (0.318s)
        > edit $HOME/.file
        > exec chezmoi diff --reverse
        [stdout]
        diff --git a/.file b/.file
        index 8a52cb9ce9551221716a53786ad74104c5902362..5d2730a8850a2db479af83de87cc8345437aef06 100644
        --- a/.file
        +++ b/.file
        @@ -1 +1,2 @@
         # contents of .file
        +# edited
        > [unix] cmp stdout golden/modify-file-diff-reverse-unix.diff
        > [windows] cmp stdout golden/modify-file-diff-reverse-windows.diff
        > exec chezmoi apply --force $HOME${/}.file
        # test that chezmoi diff generates a diff when a file is removed from the destination directory (0.168s)
        > rm $HOME/.file
        > exec chezmoi diff
        [stdout]
        diff --git a/.file b/.file
        new file mode 100644
        index 0000000000000000000000000000000000000000..8a52cb9ce9551221716a53786ad74104c5902362
        --- /dev/null
        +++ b/.file
        @@ -0,0 +1 @@
        +# contents of .file
        > [unix] cmp stdout golden/restore-file-diff-unix.diff
        > [windows] cmp stdout golden/restore-file-diff-windows.diff
        > exec chezmoi apply --force $HOME${/}.file
        # test that chezmoi diff generates a diff when a directory is removed from the destination directory (0.199s)
        > rm $HOME/.dir
        > exec chezmoi diff --recursive=false $HOME${/}.dir
        [stdout]
        diff --git a/.dir b/.dir
        new file mode 40755
        index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
        --- /dev/null
        +++ b/.dir
        > [unix] cmp stdout golden/restore-dir-diff-unix.diff
        > [windows] cmp stdout golden/restore-dir-diff-windows.diff
        > exec chezmoi apply --force $HOME${/}.dir
        # test that chezmoi diff generates a diff when the actual state is a file and the target state is a symlink (0.100s)
        > rm $HOME/.symlink
        > cp golden/.file $HOME/.symlink
        > exec chezmoi diff
        [stdout]
        diff --git a/.symlink b/.symlink
        deleted file mode 100644
        index 8a52cb9ce9551221716a53786ad74104c5902362..0000000000000000000000000000000000000000
        --- a/.symlink
        +++ /dev/null
        @@ -1 +0,0 @@
        -# contents of .file
        diff --git a/.symlink b/.symlink
        old mode 100644
        new mode 120000
        index 8a52cb9ce9551221716a53786ad74104c5902362..9b91fdbb83798a67fbbc5cc4f120c3f7726c0d70
        --- a/.symlink
        +++ b/.symlink
        @@ -1 +1 @@
        -# contents of .file
        +.dir/subdir/file
        > [unix] cmp stdout golden/symlink-file-diff-unix.diff
        # [windows] cmp stdout golden/symlink-file-diff-windows # FIXME (0.063s)
        > exec chezmoi apply --force $HOME${/}.symlink
        > [windows] stop 'remaining tests use file modes'
        # test that chezmoi diff generates a diff when a file's permissions are changed (0.114s)
        > chmod 777 $HOME/.file
        > exec chezmoi diff
        [stdout]
        diff --git a/.file b/.file
        old mode 100777
        new mode 100644
        > cmp stdout golden/chmod-file-diff.diff
        > exec chezmoi apply --force $HOME${/}.file
        # test that chezmoi diff generates a diff when a directory's permissions are changed (0.103s)
        > chmod 700 $HOME/.dir
        > exec chezmoi diff
        [stdout]
        diff --git a/.dir b/.dir
        old mode 40700
        new mode 40755
        > cmp stdout golden/chmod-dir-diff.diff
        > exec chezmoi apply --force --recursive=false $HOME${/}.dir
        PASS
        
=== CONT  TestScript/issue3240
=== NAME  TestScript/issue3349
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > symlink $CHEZMOISOURCEDIR/home/dot_symlink_to_file -> dot_file
        > symlink $CHEZMOISOURCEDIR/home/dot_symlink_to_dir -> dot_dir
        # test that chezmoi apply follows symlinks to files but not symlinks to directories (0.117s)
        > exec chezmoi apply
        > cmp $HOME/.file golden/.file
        > cmp $HOME/.symlink_to_file golden/.file
        > cmp $HOME/.dir/file golden/.dir/file
        > isdir $HOME/.symlink_to_dir
        > ! exists $HOME/.symlink_to_dir/file
        PASS
        
=== CONT  TestScript/issue3232
=== NAME  TestScript/issue3418
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi execute-template --init does read .chezmoitemplates (0.043s)
        > stdin $CHEZMOISOURCEDIR/.chezmoi.toml.tmpl
        > exec chezmoi execute-template
        [stdout]
        # contents of template
        
        > stdout 'contents of template'
        # test that chezmoi execute-template --init does not read .chezmoitemplates (0.144s)
        > stdin $CHEZMOISOURCEDIR/.chezmoi.toml.tmpl
        > ! exec chezmoi execute-template --init
        [stderr]
        chezmoi: template: stdin:1:12: executing "stdin" at <{{template "template"}}>: template "template" not defined
        [exit status 1]
        > ! stdout 'contents of template'
        PASS
        
=== CONT  TestScript/issue3206
=== NAME  TestScript/managed
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > mksourcedir
        # test chezmoi managed (0.109s)
        > exec chezmoi managed
        [stdout]
        .create
        .dir
        .dir/file
        .dir/subdir
        .dir/subdir/file
        .empty
        .encrypted
        .executable
        .file
        .private
        .readonly
        .remove
        .symlink
        .template
        > cmp stdout golden/managed
        # test chezmoi managed --exclude-encrypted (0.051s)
        > exec chezmoi managed --exclude=encrypted
        [stdout]
        .create
        .dir
        .dir/file
        .dir/subdir
        .dir/subdir/file
        .empty
        .executable
        .file
        .private
        .readonly
        .remove
        .symlink
        .template
        > cmp stdout golden/managed-exclude-encrypted
        # test chezmoi managed --exclude=files (0.091s)
        > exec chezmoi managed --exclude=files
        [stdout]
        .dir
        .dir/subdir
        .symlink
        > cmp stdout golden/managed-exclude-files
        # test chezmoi managed --exclude=files,templates (0.086s)
        > exec chezmoi managed --exclude=files,templates
        [stdout]
        .dir
        .dir/subdir
        .symlink
        > cmp stdout golden/managed-exclude-files-and-templates
        # test chezmoi managed --include=all (0.062s)
        > exec chezmoi managed --include=all
        [stdout]
        .create
        .dir
        .dir/file
        .dir/subdir
        .dir/subdir/file
        .empty
        .encrypted
        .executable
        .file
        .private
        .readonly
        .remove
        .symlink
        .template
        > cmp stdout golden/managed-include-all
        # test chezmoi managed --include=dirs (0.032s)
        > exec chezmoi managed --include=dirs
        [stdout]
        .dir
        .dir/subdir
        > cmp stdout golden/managed-include-dirs
        # test chezmoi managed --include=encrypted (0.141s)
        > exec chezmoi managed --include=encrypted
        [stdout]
        .encrypted
        > cmp stdout golden/managed-include-encrypted
        # test chezmoi managed --include=files (0.136s)
        > exec chezmoi managed --include=files
        [stdout]
        .create
        .dir/file
        .dir/subdir/file
        .empty
        .encrypted
        .executable
        .file
        .private
        .readonly
        .remove
        .template
        > cmp stdout golden/managed-include-files
        # test chezmoi managed --include=files --exclude=templates (0.124s)
        > exec chezmoi managed --include=files --exclude=templates
        [stdout]
        .create
        .dir/file
        .dir/subdir/file
        .empty
        .encrypted
        .executable
        .file
        .private
        .readonly
        .remove
        > cmp stdout golden/managed-include-files-exclude-templates
        # test chezmoi managed --include=symlinks (0.108s)
        > exec chezmoi managed --include=symlinks
        [stdout]
        .symlink
        > cmp stdout golden/managed-include-symlinks
        # test chezmoi managed --include=templates (0.057s)
        > exec chezmoi managed --include=templates
        [stdout]
        .template
        > cmp stdout golden/managed-include-templates
        # test chezmoi managed with arguments (0.075s)
        > exec chezmoi managed $HOME${/}.dir $HOME${/}.create
        [stdout]
        .create
        .dir
        .dir/file
        .dir/subdir
        .dir/subdir/file
        > cmp stdout golden/managed-with-args
        # test chezmoi managed with child of managed dir as argument (0.072s)
        > exec chezmoi managed $HOME${/}.dir/subdir
        [stdout]
        .dir/subdir
        .dir/subdir/file
        > cmp stdout golden/managed-in-managed
        # test chezmoi managed --exclude=dir with arguments (0.196s)
        > exec chezmoi managed --exclude=dirs $HOME${/}.dir $HOME${/}.create
        [stdout]
        .create
        .dir/file
        .dir/subdir/file
        > cmp stdout golden/managed-with-nodir-args
        # test chezmoi managed with absent arguments (0.059s)
        > exec chezmoi managed $HOME${/}.dir $HOME${/}.non-exist
        [stdout]
        .dir
        .dir/file
        .dir/subdir
        .dir/subdir/file
        > cmp stdout golden/managed-with-absent-args
        # test chezmoi managed --path-style=absolute (0.076s)
        > [unix] exec chezmoi managed --path-style=absolute
        [stdout]
        $WORK/home/user/.create
        $WORK/home/user/.dir
        $WORK/home/user/.dir/file
        $WORK/home/user/.dir/subdir
        $WORK/home/user/.dir/subdir/file
        $WORK/home/user/.empty
        $WORK/home/user/.encrypted
        $WORK/home/user/.executable
        $WORK/home/user/.file
        $WORK/home/user/.private
        $WORK/home/user/.readonly
        $WORK/home/user/.remove
        $WORK/home/user/.symlink
        $WORK/home/user/.template
        > [unix] cmpenv stdout golden/managed-absolute
        # test chezmoi managed --path-style=source-absolute (0.051s)
        > exec chezmoi managed --path-style=source-absolute
        [stdout]
        $WORK/home/user/.local/share/chezmoi/create_dot_create
        $WORK/home/user/.local/share/chezmoi/dot_dir
        $WORK/home/user/.local/share/chezmoi/dot_dir/exact_subdir
        $WORK/home/user/.local/share/chezmoi/dot_dir/exact_subdir/file
        $WORK/home/user/.local/share/chezmoi/dot_dir/file
        $WORK/home/user/.local/share/chezmoi/dot_file
        $WORK/home/user/.local/share/chezmoi/dot_remove
        $WORK/home/user/.local/share/chezmoi/dot_template.tmpl
        $WORK/home/user/.local/share/chezmoi/empty_dot_empty
        $WORK/home/user/.local/share/chezmoi/encrypted_dot_encrypted
        $WORK/home/user/.local/share/chezmoi/executable_dot_executable
        $WORK/home/user/.local/share/chezmoi/private_dot_private
        $WORK/home/user/.local/share/chezmoi/readonly_dot_readonly
        $WORK/home/user/.local/share/chezmoi/symlink_dot_symlink
        > cmpenv stdout golden/managed-source-absolute
        # test chezmoi managed --path-style=source-relative (0.093s)
        > exec chezmoi managed --path-style=source-relative
        [stdout]
        create_dot_create
        dot_dir
        dot_dir/exact_subdir
        dot_dir/exact_subdir/file
        dot_dir/file
        dot_file
        dot_remove
        dot_template.tmpl
        empty_dot_empty
        encrypted_dot_encrypted
        executable_dot_executable
        private_dot_private
        readonly_dot_readonly
        symlink_dot_symlink
        > cmp stdout golden/managed-source-relative
        > chhome home2/user
        # test that chezmoi managed does not evaluate templates (0.085s)
        > exec chezmoi managed --include=all
        [stdout]
        .create
        .file
        .symlink
        .template
        script
        > cmp stdout golden/managed2
        # test chezmoi managed --path-style=all (0.133s)
        > [!windows] exec chezmoi managed --path-style=all
        [stdout]
        {
          ".create": {
            "absolute": "$WORK/home2/user/.create",
            "sourceAbsolute": "$WORK/home2/user/.local/share/chezmoi/create_dot_create.tmpl",
            "sourceRelative": "create_dot_create.tmpl"
          },
          ".file": {
            "absolute": "$WORK/home2/user/.file",
            "sourceAbsolute": "$WORK/home2/user/.local/share/chezmoi/modify_dot_file.tmpl",
            "sourceRelative": "modify_dot_file.tmpl"
          },
          ".symlink": {
            "absolute": "$WORK/home2/user/.symlink",
            "sourceAbsolute": "$WORK/home2/user/.local/share/chezmoi/symlink_dot_symlink.tmpl",
            "sourceRelative": "symlink_dot_symlink.tmpl"
          },
          ".template": {
            "absolute": "$WORK/home2/user/.template",
            "sourceAbsolute": "$WORK/home2/user/.local/share/chezmoi/dot_template.tmpl",
            "sourceRelative": "dot_template.tmpl"
          },
          "script": {
            "absolute": "$WORK/home2/user/script",
            "sourceAbsolute": "$WORK/home2/user/.local/share/chezmoi/run_script.tmpl",
            "sourceRelative": "run_script.tmpl"
          }
        }
        > [!windows] cmpenv stdout golden/managed-all.json
        # test chezmoi managed --path-style=all --format=yaml (0.074s)
        > [!windows] exec chezmoi managed --path-style=all --format=yaml
        [stdout]
        .create:
          absolute: $WORK/home2/user/.create
          sourceAbsolute: $WORK/home2/user/.local/share/chezmoi/create_dot_create.tmpl
          sourceRelative: create_dot_create.tmpl
        .file:
          absolute: $WORK/home2/user/.file
          sourceAbsolute: $WORK/home2/user/.local/share/chezmoi/modify_dot_file.tmpl
          sourceRelative: modify_dot_file.tmpl
        .symlink:
          absolute: $WORK/home2/user/.symlink
          sourceAbsolute: $WORK/home2/user/.local/share/chezmoi/symlink_dot_symlink.tmpl
          sourceRelative: symlink_dot_symlink.tmpl
        .template:
          absolute: $WORK/home2/user/.template
          sourceAbsolute: $WORK/home2/user/.local/share/chezmoi/dot_template.tmpl
          sourceRelative: dot_template.tmpl
        script:
          absolute: $WORK/home2/user/script
          sourceAbsolute: $WORK/home2/user/.local/share/chezmoi/run_script.tmpl
          sourceRelative: run_script.tmpl
        > [!windows] cmpenv stdout golden/managed-all.yaml
        PASS
        
=== CONT  TestScript/issue3163
=== NAME  TestScript/issue3414
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > exec tar czf www/archive.tar.gz archive
        > httpd www
        # test that running chezmoi apply twice does not complain about modified files (0.152s)
        > exec chezmoi apply
        > exec chezmoi apply --no-tty
        PASS
        
=== CONT  TestScript/issue3127
=== NAME  TestScript/issue3415
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi apply does not remove remove_ directories if they are not empty (0.044s)
        > exec chezmoi apply
        > exists $HOME/.dir/file
        # test that chezmoi apply does remove remove_ directories if they are empty (0.070s)
        > rm $HOME/.dir/file
        > exec chezmoi apply
        > ! exists $HOME/.dir
        > chhome home2/user
        # test that chezmoi apply does not remove remove_ directories if they are not empty, recursively (0.097s)
        > exec chezmoi apply
        > exists $HOME/.dir/subdir/file
        # test that chezmoi apply does remove remove_ directories if they are empty, recursively (0.051s)
        > rm $HOME/.dir/subdir/file
        > exec chezmoi apply
        > ! exists $HOME/.dir
        PASS
        
=== CONT  TestScript/issue3126
gpg: Warning: using insecure memory!
gpg: keybox '/tmp/test-gpg-homedir3738720362/pubring.kbx' created
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that template executions are independent (0.034s)
        > exec chezmoi apply
        > ! grep bar $HOME/file1
        > ! grep foo $HOME/file2
        PASS
        
=== CONT  TestScript/sourcedir
=== NAME  TestScript/issue3206
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi apply sees .chezmoidata files in a subdirectory when a .chezmoiignore file is present (0.134s)
        > exec chezmoi apply --debug
        [stderr]
        time=2026-07-20T20:42:32.292Z level=INFO msg=persistentPreRunRootE version.version=v2.0.0+test version.commit=HEAD version.date=2026-07-20T20:42:32Z version.builtBy=testscript args="[chezmoi apply --debug]" goVersion=go1.26.5-X:nodwarf5
        time=2026-07-20T20:42:32.292Z level=ERROR msg=Stat component=system err="stat $WORK/home/user/.config/chezmoi/chezmoistate.boltdb: no such file or directory" name=$WORK/home/user/.config/chezmoi/chezmoistate.boltdb
        time=2026-07-20T20:42:32.292Z level=INFO msg=Stat component=system name=$WORK/home/user/.local/share/chezmoi
        time=2026-07-20T20:42:32.292Z level=ERROR msg=Stat component=system err="stat $WORK/home/user/.local/share/chezmoi/.git: no such file or directory" name=$WORK/home/user/.local/share/chezmoi/.git
        time=2026-07-20T20:42:32.292Z level=ERROR msg=Stat component=system err="stat $WORK/home/user/.local/share/.git: no such file or directory" name=$WORK/home/user/.local/share/.git
        time=2026-07-20T20:42:32.292Z level=ERROR msg=Stat component=system err="stat $WORK/home/user/.local/.git: no such file or directory" name=$WORK/home/user/.local/.git
        time=2026-07-20T20:42:32.294Z level=ERROR msg=ReadFile component=system err="open $WORK/home/user/.local/share/chezmoi/.chezmoiroot: no such file or directory" name=$WORK/home/user/.local/share/chezmoi/.chezmoiroot size=0 data=""
        time=2026-07-20T20:42:32.298Z level=INFO msg=ReadDir component=system name=$WORK/home/user/.local/share/chezmoi
        time=2026-07-20T20:42:32.298Z level=INFO msg=Get component=persistentState bucket=configState key=configState value=""
        time=2026-07-20T20:42:32.298Z level=ERROR msg=ReadFile component=system err="open $WORK/home/user/.local/share/chezmoi/.chezmoiversion: no such file or directory" name=$WORK/home/user/.local/share/chezmoi/.chezmoiversion size=0 data=""
        time=2026-07-20T20:42:32.298Z level=INFO msg=Stat component=system name=$WORK/home/user/.local/share/chezmoi
        time=2026-07-20T20:42:32.298Z level=INFO msg=Stat component=system name=$WORK/home/user/.local/share/chezmoi
        time=2026-07-20T20:42:32.298Z level=INFO msg=ReadDir component=system name=$WORK/home/user/.local/share/chezmoi
        time=2026-07-20T20:42:32.298Z level=INFO msg=ReadFile component=system name=$WORK/home/user/.local/share/chezmoi/.chezmoiignore size=0 data=""
        time=2026-07-20T20:42:32.301Z level=INFO msg=ReadDir component=system name=$WORK/home/user/.local/share/chezmoi/dot_config
        time=2026-07-20T20:42:32.301Z level=INFO msg=ReadDir component=system name=$WORK/home/user/.local/share/chezmoi/dot_config/private_expanso
        time=2026-07-20T20:42:32.301Z level=INFO msg=ReadDir component=system name=$WORK/home/user/.local/share/chezmoi/dot_config/private_expanso/match
        time=2026-07-20T20:42:32.301Z level=INFO msg=ReadFile component=system name=$WORK/home/user/.local/share/chezmoi/dot_config/private_expanso/match/.chezmoidata.yaml size=261 data="greek_alphabet: {alpha: α, beta: β, chi: χ, delta: δ, epsilo..."
        time=2026-07-20T20:42:32.301Z level=ERROR msg=Lstat component=system err="lstat $WORK/home/user/.config: no such file or directory" name=$WORK/home/user/.config
        time=2026-07-20T20:42:32.301Z level=INFO msg=Get component=persistentState bucket=entryState key=$WORK/home/user/.config value=""
        time=2026-07-20T20:42:32.301Z level=INFO msg=defaultPreApplyFunc targetRelPath=.config targetEntryState.Type=dir targetEntryState.Mode=2147484141 targetEntryState.ContentsSHA256="" lastWrittenEntryState=<nil> actualEntryState.Type=remove actualEntryState.Mode=0 actualEntryState.ContentsSHA256=""
        time=2026-07-20T20:42:32.301Z level=INFO msg=Mkdir component=system name=$WORK/home/user/.config perm=493
        time=2026-07-20T20:42:32.301Z level=INFO msg=Mkdir component=system name=$WORK/home/user/.config/chezmoi perm=511
        time=2026-07-20T20:42:32.301Z level=INFO msg=Set component=persistentState bucket=entryState key=$WORK/home/user/.config value="{\n  \"type\": \"dir\",\n  \"mode\": 2147484141\n}\n"
        time=2026-07-20T20:42:32.301Z level=ERROR msg=Lstat component=system err="lstat $WORK/home/user/.config/expanso: no such file or directory" name=$WORK/home/user/.config/expanso
        time=2026-07-20T20:42:32.301Z level=INFO msg=Get component=persistentState bucket=entryState key=$WORK/home/user/.config/expanso value=""
        time=2026-07-20T20:42:32.301Z level=INFO msg=defaultPreApplyFunc targetRelPath=.config/expanso targetEntryState.Type=dir targetEntryState.Mode=2147484096 targetEntryState.ContentsSHA256="" lastWrittenEntryState=<nil> actualEntryState.Type=remove actualEntryState.Mode=0 actualEntryState.ContentsSHA256=""
        time=2026-07-20T20:42:32.301Z level=INFO msg=Mkdir component=system name=$WORK/home/user/.config/expanso perm=448
        time=2026-07-20T20:42:32.301Z level=INFO msg=Set component=persistentState bucket=entryState key=$WORK/home/user/.config/expanso value="{\n  \"type\": \"dir\",\n  \"mode\": 2147484096\n}\n"
        time=2026-07-20T20:42:32.301Z level=ERROR msg=Lstat component=system err="lstat $WORK/home/user/.config/expanso/match: no such file or directory" name=$WORK/home/user/.config/expanso/match
        time=2026-07-20T20:42:32.301Z level=INFO msg=Get component=persistentState bucket=entryState key=$WORK/home/user/.config/expanso/match value=""
        time=2026-07-20T20:42:32.301Z level=INFO msg=defaultPreApplyFunc targetRelPath=.config/expanso/match targetEntryState.Type=dir targetEntryState.Mode=2147484141 targetEntryState.ContentsSHA256="" lastWrittenEntryState=<nil> actualEntryState.Type=remove actualEntryState.Mode=0 actualEntryState.ContentsSHA256=""
        time=2026-07-20T20:42:32.301Z level=INFO msg=Mkdir component=system name=$WORK/home/user/.config/expanso/match perm=493
        time=2026-07-20T20:42:32.302Z level=INFO msg=Set component=persistentState bucket=entryState key=$WORK/home/user/.config/expanso/match value="{\n  \"type\": \"dir\",\n  \"mode\": 2147484141\n}\n"
        time=2026-07-20T20:42:32.302Z level=INFO msg=ReadFile component=system name=$WORK/home/user/.local/share/chezmoi/dot_config/private_expanso/match/greek.yml.tmpl size=255 data="# `propagate_case` allows e.g.:\n# alpha^ => α\n# ALPHA^ => Α [o..."
        time=2026-07-20T20:42:32.303Z level=ERROR msg=Lstat component=system err="lstat $WORK/home/user/.config/expanso/match/greek.yml: no such file or directory" name=$WORK/home/user/.config/expanso/match/greek.yml
        time=2026-07-20T20:42:32.303Z level=INFO msg=Get component=persistentState bucket=entryState key=$WORK/home/user/.config/expanso/match/greek.yml value=""
        time=2026-07-20T20:42:32.303Z level=INFO msg=defaultPreApplyFunc targetRelPath=.config/expanso/match/greek.yml targetEntryState.Type=file targetEntryState.Mode=420 targetEntryState.ContentsSHA256=aadb376a3b662ac3d5eceb4fbcfa133ac6855cca2302a0ef9f106a6b7f441028 targetEntryState.contents="# `propagate_case` allows e.g.:\n# alpha^ => α\n# ALPHA^ => Α [o..." lastWrittenEntryState=<nil> actualEntryState.Type=remove actualEntryState.Mode=0 actualEntryState.ContentsSHA256=""
        time=2026-07-20T20:42:32.303Z level=INFO msg=WriteFile component=system name=$WORK/home/user/.config/expanso/match/greek.yml size=1647 data="# `propagate_case` allows e.g.:\n# alpha^ => α\n# ALPHA^ => Α [o..." perm=420
        time=2026-07-20T20:42:32.303Z level=INFO msg=Set component=persistentState bucket=entryState key=$WORK/home/user/.config/expanso/match/greek.yml value="{\n  \"type\": \"file\",\n  \"mode\": 420,\n  \"contentsSHA256\": \"aadb376a3b662ac3d5eceb4fbcfa133ac6855cca2302a0ef9f106a6b7f441028\"\n}\n"
        time=2026-07-20T20:42:32.303Z level=INFO msg=Close component=persistentState
        > cmp $HOME/.config/expanso/match/greek.yml golden/greek.yml
        PASS
        
=== CONT  TestScript/transparentencryption
=== NAME  TestScript/addautotemplate
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi add --autotemplate on a file with a replacement creates a template in the source directory (0.119s)
        > exec chezmoi add --autotemplate $HOME${/}.template
        > cmp $CHEZMOISOURCEDIR/dot_template.tmpl golden/dot_template.tmpl
        # test that chezmoi add --autotemplate on a symlink with a replacement creates a template in the source directory (0.028s)
        > symlink $HOME/.symlink -> .target-value
        > exec chezmoi add --autotemplate $HOME${/}.symlink
        > cmp $CHEZMOISOURCEDIR/symlink_dot_symlink.tmpl golden/symlink_dot_symlink.tmpl
        # test that chezmoi add --autotemplate does not create a template if no replacements occurred (0.226s)
        > exec chezmoi add --autotemplate $HOME${/}.notatemplate
        > cmp $CHEZMOISOURCEDIR/dot_notatemplate golden/dot_notatemplate
        # test that chezmoi add --autotemplate escapes brackets (0.218s)
        > exec chezmoi add --autotemplate $HOME${/}.vimrc
        > cmp $CHEZMOISOURCEDIR/dot_vimrc.tmpl golden/dot_vimrc.tmpl
        PASS
        
=== CONT  TestScript/tilde
=== NAME  TestScript/issue3163
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi supports separate files via templates (0.129s)
        > exec chezmoi apply
        > cmp $HOME/.file1 golden/file1
        > cmp $HOME/.file2 golden/file2
        PASS
        
=== CONT  TestScript/textconv
=== NAME  TestScript/sourcedir
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > exec chezmoi execute-template '{{ .chezmoi.sourceDir }}'
        [stdout]
        /tmp/user> stdout '/tmp/user'
        PASS
        
=== CONT  TestScript/templatevars
=== NAME  TestScript/issue3344
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [!exec:git] skip 'git not found in $PATH'
        > mkgitconfig
        > exec chezmoi init
        # test that chezmoi generate git-commit-message warns about untracked files (0.122s)
        > cp golden/.file $CHEZMOISOURCEDIR
        > exec chezmoi generate git-commit-message
        [stderr]
        chezmoi: warning: untracked files
        > stderr 'chezmoi: warning: untracked files'
        PASS
        
=== CONT  TestScript/templatefuncs
=== NAME  TestScript/issue4002
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] skip 'windows line endings confuse cmp and diff'
        > [!exec:git] skip 'git not found in $PATH'
        > mkgitconfig
        # test that includeTemplate works with a file in .chezmoitemplates with a .chezmoiroot when re-initializing (0.182s)
        > exec chezmoi init
        > cmp ${CHEZMOICONFIGDIR}/chezmoi.toml golden/chezmoi.toml
        # create a commit (0.281s)
        > exec chezmoi git add .
        > exec chezmoi git commit -- --message 'Initial commit'
        [stdout]
        [master (root-commit) c1c7d96] Initial commit
         3 files changed, 3 insertions(+)
         create mode 100644 .chezmoiroot
         create mode 100644 home/.chezmoi.toml.tmpl
         create mode 100644 home/.chezmoitemplates/template
        > chhome home2/user
        # test that includeTemplate works with a file in .chezmoitemplates with a .chezmoiroot with a bare init (0.386s)
        > exec chezmoi init --apply --force file://$WORK/home/user/.local/share/chezmoi
        [stderr]
        Cloning into '$WORK/home2/user/.local/share/chezmoi'...
        > cmp ${CHEZMOICONFIGDIR}/chezmoi.toml golden/chezmoi.toml
        PASS
        
=== CONT  TestScript/templatedirectives
=== NAME  TestScript/issue3232
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > exec tar czf www/archive1.tar.gz archive1
        > exec tar czf www/archive2.tar.gz archive2
        > httpd www
        # test that chezmoi externals allow multiple non-conflicting archives (0.093s)
        > exec chezmoi apply
        > cmp $HOME/.dir/file1 archive1/file1
        > cmp $HOME/.dir/file2 archive2/file2
        > chhome home2/user
        # test that chezmoi externals do not allow multiple conflicting archives (0.053s)
        > ! exec chezmoi apply
        [stderr]
        chezmoi: .dir/file1: inconsistent state (http://127.0.0.1:34161/archive1.tar.gz defined in $WORK/home2/user/.local/share/chezmoi/.chezmoiexternals/archive1.toml.tmpl, http://127.0.0.1:34161/archive1.tar.gz defined in $WORK/home2/user/.local/share/chezmoi/.chezmoiexternals/archive2.toml.tmpl)
        [exit status 1]
        > stderr 'inconsistent state'
        > chhome home3/user
        # test that chezmoi externals do not allow multiple conflicting archives with different, equivalent, paths (0.072s)
        > ! exec chezmoi apply
        [stderr]
        chezmoi: .dir/file1: inconsistent state (http://127.0.0.1:34161/archive1.tar.gz defined in $WORK/home3/user/.local/share/chezmoi/.chezmoiexternals/archive1.toml.tmpl, http://127.0.0.1:34161/archive1.tar.gz defined in $WORK/home3/user/.local/share/chezmoi/.chezmoiexternals/archive2.toml.tmpl)
        [exit status 1]
        > stderr 'inconsistent state'
        PASS
        
=== CONT  TestScript/templatedata
=== NAME  TestScript/issue3240
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] skip 'UNIX only'
        > chmod 777 bin/custom-pager
        # test that chezmoi diff uses the custom pager if set (0.032s)
        > exec chezmoi diff
        [stdout]
        custom-pager
        > cmp stdout golden/stdout
        # test that chezmoi diff --verbose has identical output (0.123s)
        > exec chezmoi diff --verbose
        [stdout]
        custom-pager
        > cmp stdout golden/stdout
        # test that chezmoi apply uses the custom pager if set (0.109s)
        > exec chezmoi apply --dry-run --verbose
        [stdout]
        custom-pager
        > stdout custom-pager
        PASS
        
=== CONT  TestScript/targetpath
=== NAME  TestScript/ejson
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test ejsonDecrypt uses default parameters (0.032s)
        > ! exec chezmoi execute-template '{{ (ejsonDecrypt "golden/my-file.ejson") }}'
        [stderr]
        chezmoi: template: arg1:1:4: executing "arg1" at <ejsonDecrypt "golden/my-file.ejson">: error calling ejsonDecrypt: couldn't read key file (open /opt/ejson/keys/df82a403a3b58ebedd09758d3b131ff3113b39bdbfb92110940eb57832774345: no such file or directory)
        [exit status 1]
        > stderr 'couldn''t read key file'
        > stderr '/opt/ejson/keys/df82a403a3b58ebedd09758d3b131ff3113b39bdbfb92110940eb57832774345'
        # test ejsonDecrypt uses EJSON_KEYDIR when set (0.130s)
        > env EJSON_KEYDIR=golden/keys
        > exec chezmoi execute-template '{{ (ejsonDecrypt "golden/my-file.ejson").key1 }}'
        [stdout]
        value1> stdout ^value1$
        # test ejsonDecrypt uses configuration's keyDir when set (0.058s)
        > chhome home_set_valid_keydir/user
        > env EJSON_KEYDIR=invalid/keys
        > exec chezmoi execute-template '{{ (ejsonDecrypt "golden/my-file.ejson").key2 }}'
        [stdout]
        value2> stdout ^value2$
        # test ejsonDecrypt uses configuration's key when set, and succeeds if valid (0.133s)
        > chhome home_set_valid_key/user
        > exec chezmoi execute-template '{{ (ejsonDecrypt "golden/my-file.ejson").key1 }}'
        [stdout]
        value1> stdout ^value1$
        # test ejsonDecrypt uses configuration's key when set, and fails if invalid (0.168s)
        > chhome home_set_invalid_key/user
        > ! exec chezmoi execute-template '{{ (ejsonDecrypt "golden/my-file.ejson") }}'
        [stderr]
        chezmoi: template: arg1:1:4: executing "arg1" at <ejsonDecrypt "golden/my-file.ejson">: error calling ejsonDecrypt: encoding/hex: invalid byte: U+006F 'o'
        [exit status 1]
        # test ejsonDecryptWithKey uses the key passed as parameter, and succeeds if valid (0.036s)
        > chhome home_set_invalid_key/user
        > exec chezmoi execute-template '{{ (ejsonDecryptWithKey "golden/my-file.ejson" "4fed3b88a33a4621b30230f1ad17e175e10f8587e37e84da740711c9fecfe16d").key2 }}'
        [stdout]
        value2> stdout ^value2$
        # test ejsonDecryptWithKey uses the key passed as parameter, and fails if invalid (0.160s)
        > chhome home_set_valid_key/user
        > ! exec chezmoi execute-template '{{ (ejsonDecryptWithKey "golden/my-file.ejson" "invalid") }}'
        [stderr]
        chezmoi: template: arg1:1:4: executing "arg1" at <ejsonDecryptWithKey "golden/my-file.ejson" "invalid">: error calling ejsonDecryptWithKey: encoding/hex: invalid byte: U+0069 'i'
        [exit status 1]
        PASS
        
=== CONT  TestScript/symlinks_windows
    cmd.go:380: Windows only
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [unix] skip 'Windows only'
        
=== CONT  TestScript/symlinks
=== NAME  TestScript/issue3257
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] skip 'UNIX only'
        > chmod 755 bin/custom-pager
        # test that chezmoi add invokes the pager when verbose is set (0.134s)
        > exec chezmoi add $HOME${/}.file
        [stdout]
        custom-pager
        > stdout custom-pager
        # test chat chezmoi chattr invokes the pager when verbose is set (0.090s)
        > exec chezmoi chattr +private $HOME${/}.file
        [stdout]
        custom-pager
        > stdout custom-pager
        # test that chezmoi status does not invoke the pager when verbose is set (0.093s)
        > exec chezmoi status
        [stdout]
         M .file
        > ! stdout custom-pager
        PASS
        
=== CONT  TestScript/status
=== NAME  TestScript/executetemplate
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test reading args (0.163s)
        > exec chezmoi execute-template '{{ "arg-template" }}'
        [stdout]
        arg-template> stdout arg-template
        # test reading from stdin (0.110s)
        > stdin golden/stdin.tmpl
        > exec chezmoi execute-template
        [stdout]
        stdin-template
        > stdout stdin-template
        # test reading from stdin with an argument (0.040s)
        > stdin golden/stdin
        > exec chezmoi execute-template --with-stdin '{{ .chezmoi.stdin | upper }}'
        [stdout]
        # CONTENTS OF STDIN
        > stdout '# CONTENTS OF STDIN'
        # test partial templates work (0.072s)
        > exec chezmoi execute-template '{{ template "partial" }}'
        [stdout]
        hello world
        > stdout 'hello world'
        # test that symlinks are supported in .chezmoitemplates (0.143s)
        > symlink $CHEZMOISOURCEDIR/.chezmoitemplates/symlink -> partial
        > exec chezmoi execute-template '{{ template "symlink" }}'
        [stdout]
        hello world
        > stdout 'hello world'
        # FIXME merge the following tests into a single test (0.041s)
        > exec chezmoi execute-template '{{ .last.config }}'
        [stdout]
        chezmoi.toml> stdout 'chezmoi\.toml'
        # test that template data are read from .chezmoidata.json (0.055s)
        > exec chezmoi execute-template '{{ .last.json }}'
        [stdout]
        .chezmoidata.json> stdout '\.chezmoidata\.json'
        # test that template data are read from .chezmoidata.toml (0.168s)
        > exec chezmoi execute-template '{{ .last.toml }}'
        [stdout]
        .chezmoidata.toml> stdout '\.chezmoidata\.toml'
        # test that template data are read from .chezmoidata.yaml (0.062s)
        > exec chezmoi execute-template '{{ .last.yaml }}'
        [stdout]
        .chezmoidata.yaml> stdout '\.chezmoidata\.yaml'
        # test that the last .chezmoidata.<format> file read wins (0.134s)
        > exec chezmoi execute-template '{{ .last.format }}'
        [stdout]
        .chezmoidata.yaml> stdout '\.chezmoidata\.yaml'
        # test that the config file wins over .chezmoidata.<format> (0.059s)
        > exec chezmoi execute-template '{{ .last.global }}'
        [stdout]
        chezmoi.toml> stdout chezmoi.toml
        # test that chezmoi execute-template --init does not include .chezmoidata.<format> data (0.129s)
        > ! exec chezmoi execute-template --init '{{ .last.format }}'
        [stderr]
        chezmoi: template: arg1:1:8: executing "arg1" at <.last.format>: map has no entry for key "format"
        [exit status 1]
        > stderr 'map has no entry for key "format"'
        # test --init --promptBool (0.192s)
        > exec chezmoi execute-template --init --promptBool value=yes '{{ promptBool "value" }}'
        [stdout]
        true> stdout true
        > ! exec chezmoi execute-template --promptBool value=error
        [stderr]
        chezmoi: strconv.ParseBool: parsing "error": invalid syntax
        [exit status 1]
        > stderr 'invalid syntax'
        # test --init --promptBool with a default value (0.127s)
        > exec chezmoi execute-template --init '{{ promptBool "value" true }}'
        [stdout]
        true> stdout true
        # test --init --promptChoice (0.177s)
        > exec chezmoi execute-template --init --promptChoice value=one '{{ promptChoice "value" (list "one" "two" "three") }}'
        [stdout]
        one> stdout one
        # test --init --promptChoice with an invalid value (0.138s)
        > ! exec chezmoi execute-template --init --promptChoice value=four '{{ promptChoice "value" (list "one" "two" "three") }}'
        [stderr]
        chezmoi: template: arg1:1:3: executing "arg1" at <promptChoice "value" (list "one" "two" "three")>: error calling promptChoice: four: invalid choice
        [exit status 1]
        > stderr 'invalid choice'
        # test --init --promptChoice with a default value (0.056s)
        > exec chezmoi execute-template --init '{{ promptChoice "value" (list "one" "two" "three") "three" }}'
        [stdout]
        three> stdout three
        # test --init --promptMultichoice (0.139s)
        > exec chezmoi execute-template --init --promptMultichoice value=one/two '{{ promptMultichoice "value" (list "one" "two" "three") }}'
        [stdout]
        [one two]> stdout '[one two]'
        # test --init --promptMultichoice with an invalid value (0.100s)
        > ! exec chezmoi execute-template --init --promptMultichoice value=four '{{ promptMultichoice "value" (list "one" "two" "three") }}'
        [stderr]
        chezmoi: template: arg1:1:3: executing "arg1" at <promptMultichoice "value" (list "one" "two" "three")>: error calling promptMultichoice: four: invalid choice
        [exit status 1]
        > stderr 'invalid choice'
        # test --init --promptMultichoice with a default value (0.098s)
        > exec chezmoi execute-template --init '{{ promptMultichoice "value" (list "one" "two" "three") (list "two" "three") }}'
        [stdout]
        [two three]> stdout '[two three]'
        # test --init --promptInt (0.170s)
        > exec chezmoi execute-template --init --promptInt value=1 '{{ promptInt "value" }}'
        [stdout]
        1> stdout 1
        > ! exec chezmoi execute-template --promptInt value=error
        [stderr]
        chezmoi: invalid argument "value=error" for "--promptInt" flag: strconv.Atoi: parsing "error": invalid syntax
        [exit status 1]
        > stderr 'invalid syntax'
        # test --init --promptInt with a default value (0.041s)
        > exec chezmoi execute-template --init '{{ promptInt "value" 1 }}'
        [stdout]
        1> stdout 1
        # test --init --promptString (0.079s)
        > exec chezmoi execute-template --init --promptString email=user@example.com '{{ promptString "email" }}'
        [stdout]
        user@example.com> stdout 'user@example.com'
        # test --init --promptString without a default value (0.054s)
        > exec chezmoi execute-template --init '{{ promptString "value" }}'
        [stdout]
        value> stdout value
        # test --init --promptString with a default value (0.088s)
        > exec chezmoi execute-template --init '{{ promptString "value" "default" }}'
        [stdout]
        default> stdout default
        # test that chezmoi execute-template reads all files in the .chezmoidata subdirectory (0.174s)
        > exec chezmoi execute-template '{{ .a }}{{ .b }}'
        [stdout]
=== NAME  TestScript/issue3113
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] skip 'UNIX only'
        > chmod 777 bin/custom-pager
        > chmod 777 bin/default-pager
        # test that chezmoi diff uses the default pager by default (0.206s)
        > exec chezmoi diff
        [stdout]
        default-pager
        > stdout default-pager
        > chhome home2/user
        # test that setting diff.pager to a custom pager uses that pager (0.107s)
        > exec chezmoi diff
        [stdout]
        custom-pager
        > stdout custom-pager
        > chhome home3/user
        # test that setting diff.pager to the empty string disables the pager (0.058s)
        > exec chezmoi diff
        [stdout]
        diff --git a/.file b/.file
        new file mode 100644
        index 0000000000000000000000000000000000000000..8a52cb9ce9551221716a53786ad74104c5902362
        --- /dev/null
        +++ b/.file
        @@ -0,0 +1 @@
        +# contents of .file
        > stdout diff
        PASS
        
=== NAME  TestScript/executetemplate
        alphabeta> stdout 'alphabeta'
        # test chezmoi execute-template --file (0.072s)
        > exec chezmoi execute-template --file $HOME${/}file.tmpl
        [stdout]
        # contents of file.tmpl
        > stdout '# contents of file.tmpl'
        # test that .chezmoi.sourceFile is a relative path in the source dir (0.047s)
        > exec chezmoi execute-template --file $HOME${/}.local${/}share${/}chezmoi${/}path${/}to${/}template.tmpl
        [stdout]
        # contents of path/to/template.tmpl
        > stdout '# contents of path/to/template.tmpl'
        # test that .chezmoi.sourceFile is an absolute path outside the source dir (0.056s)
        > exec chezmoi execute-template --file $HOME${/}path${/}to${/}template.tmpl
        [stdout]
        # contents of $WORK/home/user/path/to/template.tmpl
        > stdout '# contents of .*/home/user/path/to/template.tmpl'
        > chhome home2/user
        # test that files in .chezmoidata must have known extensions (0.104s)
        > ! exec chezmoi execute-template
        [stderr]
        chezmoi: $WORK/home2/user/.local/share/chezmoi/.chezmoidata/unknown: : unknown format
        [exit status 1]
        > stderr 'unknown format'
        > chhome home3/user
        # test that .chezmoiignore files are not allowed in .chezmoidata (0.150s)
        > ! exec chezmoi execute-template
        [stderr]
        chezmoi: $WORK/home3/user/.local/share/chezmoi/.chezmoidata/.chezmoiignore: not allowed in .chezmoidata directory
        [exit status 1]
        > stderr 'not allowed in .chezmoidata directory'
        PASS
        
=== CONT  TestScript/state_windows
    cmd.go:380: Windows only
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [unix] skip 'Windows only'
        
=== CONT  TestScript/state_unix
=== CONT  TestScript/state
=== NAME  TestScript/issue3421
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] skip 'UNIX only'
        # test that chezmoi runs run_once_ and run_onchange_ scripts only once (0.188s)
        > exec chezmoi apply
        [stdout]
        once
        onchange
        > stdout once
        > stdout onchange
        > exec chezmoi apply
        > ! stdout .
        # test that chezmoi runs run_once_ scripts after chezmoi state delete-bucket --bucket=scriptState (0.179s)
        > exec chezmoi state delete-bucket --bucket=scriptState
        > exec chezmoi apply
        [stdout]
        once
        > stdout once
        > ! stdout onchange
        # test that chezmoi runs run_once_ scripts after chezmoi state delete-bucket --bucket=entryState (0.143s)
        > exec chezmoi state delete-bucket --bucket=entryState
        > exec chezmoi apply
        [stdout]
        onchange
        > ! stdout once
        > stdout onchange
        PASS
        
=== CONT  TestScript/sourcepath
=== NAME  TestScript/tilde
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
=== NAME  TestScript/issue3325
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that integer types are preserved in fromJson | toToml template function pipelines (0.121s)
        > exec chezmoi execute-template '{{ "{\"key\":1}" | fromJson | toToml }}'
        [stdout]
        key = 1
        > cmp stdout golden/stdout
        # test that integer types are preserved in the .data section of JSONC config files (0.148s)
        > exec chezmoi execute-template '{{ .data | toToml }}'
        [stdout]
        dataFloat64 = 1.1
        dataInt64 = 2
        > cmp stdout golden/config.toml
        # test that integer and floating point types are preserved from .chezmoidata.json files (0.062s)
        > exec chezmoi execute-template '{{ .json | toToml }}'
        [stdout]
        jsonFloat64 = 3.3
        jsonInt64 = 4
        > cmp stdout golden/json.toml
        # test that integer and floating point types are preserved from .chezmoidata.jsonc files (0.078s)
        > exec chezmoi execute-template '{{ .jsonc | toToml }}'
        [stdout]
        jsoncFloat64 = 5.5
        jsoncInt64 = 6
        > cmp stdout golden/jsonc.toml
        PASS
        
=== NAME  TestScript/tilde
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > mkhomedir
        > mksourcedir
        > exec chezmoi source-path ~/.file
        [stdout]
        $WORK/home/user/.local/share/chezmoi/dot_file
        > stdout $CHEZMOISOURCEDIR/dot_file
        > ! exec chezmoi source-path ~
        [stderr]
        chezmoi: ~: not managed
        [exit status 1]
        > stderr 'not managed'
        PASS
        
=== CONT  TestScript/scriptperl
=== CONT  TestScript/secret
=== NAME  TestScript/transparentencryption
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi add --encrypt with transparent encryption adds the encrypted_ attribute but does not encrypt the file (0.055s)
        > exec chezmoi add --encrypt $HOME${/}.file
        > cmp $CHEZMOISOURCEDIR/encrypted_dot_file golden/.file
        # test that chezmoi cat with transparent encryption returns the ciphertext (0.138s)
        > exec chezmoi cat $HOME${/}.file
        [stdout]
        # contents of .file
        > cmp stdout golden/.file
        PASS
        
=== CONT  TestScript/scripttempdir
=== NAME  TestScript/issue3127
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > mkdir $CHEZMOISOURCEDIR
        # test that chezmoi --config=path init --config-path=path writes the initial config into path (0.085s)
        > cp golden/config1.toml $CHEZMOISOURCEDIR/.chezmoi.toml.tmpl
        > exec chezmoi --config=$HOME/config/athome.toml init --config-path=$HOME/config/athome.toml
        > cmp $HOME/config/athome.toml golden/config1.toml
        # test that chezmoi --config=path init --config-path=path writes an updated config into path (0.156s)
        > cp golden/config2.toml $CHEZMOISOURCEDIR/.chezmoi.toml.tmpl
        > exec chezmoi --config=$HOME/config/athome.toml init --config-path=$HOME/config/athome.toml
        > cmp $HOME/config/athome.toml golden/config2.toml
        # test that chezmoi --config=path init writes an updated config into path (0.048s)
        > cp golden/config3.toml $CHEZMOISOURCEDIR/.chezmoi.toml.tmpl
        > exec chezmoi --config=$HOME/config/athome.toml init
        > cmp $HOME/config/athome.toml golden/config3.toml
        PASS
        
=== CONT  TestScript/scriptsubdir_windows
    cmd.go:380: Windows only
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [unix] skip 'Windows only'
        
=== CONT  TestScript/scriptsubdir_unix
=== NAME  TestScript/errors
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > mksourcedir
        # test duplicate source state entry detection (0.062s)
        > cp $CHEZMOISOURCEDIR/dot_file $CHEZMOISOURCEDIR/empty_dot_file
        > ! exec chezmoi verify
        [stderr]
        chezmoi: .file: inconsistent state ($WORK/home/user/.local/share/chezmoi/dot_file, $WORK/home/user/.local/share/chezmoi/empty_dot_file)
        [exit status 1]
        > stderr 'inconsistent state'
        > chhome home2/user
        # test invalid config (0.062s)
        > ! exec chezmoi verify
        [stderr]
        chezmoi: invalid config: $WORK/home2/user/.config/chezmoi/chezmoi.json: unexpected EOF
        [exit status 1]
        > stderr 'invalid config'
        > chhome home3/user
        # test source directory is not a directory (0.079s)
        > ! exec chezmoi verify
        [stderr]
        chezmoi: $WORK/home3/user/.local/share/chezmoi: not a directory
        [exit status 1]
        > stderr 'not a directory'
        > chhome home4/user
        # test that chezmoi checks .chezmoiversion (0.169s)
        > ! exec chezmoi verify
        [stderr]
        chezmoi: source state requires chezmoi version 3.0.0 or later, chezmoi is version 2.0.0+test
        [exit status 1]
        > stderr 'source state requires chezmoi version'
        > chhome home5/user
        # test that chezmoi checks .chezmoiversion when .chezmoiroot is used (0.054s)
        > ! exec chezmoi verify
        [stderr]
        chezmoi: source state requires chezmoi version 3.0.0 or later, chezmoi is version 2.0.0+test
        [exit status 1]
        > stderr 'source state requires chezmoi version'
        > chhome home6/user
        # test duplicate script detection (0.112s)
        > ! exec chezmoi verify
        [stderr]
        chezmoi: install_packages: inconsistent state ($WORK/home6/user/.local/share/chezmoi/run_install_packages, $WORK/home6/user/.local/share/chezmoi/run_once_install_packages)
        [exit status 1]
        > stderr 'inconsistent state'
        > chhome home7/user
        # test that chezmoi init returns an error if there are multiple config file templates (0.231s)
        > ! exec chezmoi init
        [stderr]
        chezmoi: multiple config file templates: $WORK/home7/user/.local/share/chezmoi/.chezmoi.json.tmpl and $WORK/home7/user/.local/share/chezmoi/.chezmoi.toml.tmpl 
        [exit status 1]
        > stderr 'multiple config file templates'
        > chhome home8/user
        # test that chezmoi verify returns an error if there are multiple config files (0.057s)
        > ! exec chezmoi verify
        [stderr]
        chezmoi: multiple config files: $WORK/home8/user/.config/chezmoi/chezmoi.json and $WORK/home8/user/.config/chezmoi/chezmoi.toml
        [exit status 1]
        > stderr 'multiple config files'
        PASS
        
=== CONT  TestScript/scriptsdir_unix
=== NAME  TestScript/scripttempdir
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] skip 'UNIX only'
        # test that chezmoi apply with a scriptTempDir set creates a temporary directory and runs scripts from that directory (0.103s)
        > expandenv $CHEZMOICONFIGDIR/chezmoi.toml
        > exec chezmoi apply
        [stdout]
        $WORK/script-tmp/700256422.script.sh/run_
        > stdout $WORK/script-tmp/.*script\.sh/run_$
        > grep $WORK/script-tmp/.*/modify_ $HOME/.file
        > exists $WORK/script-tmp
        PASS
        
=== CONT  TestScript/scriptruby
    cmd.go:380: ruby not found in $PATH
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [!exec:ruby] skip 'ruby not found in $PATH'
        
=== CONT  TestScript/scriptpython
=== NAME  TestScript/templatedirectives
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > hexdecode golden/encoding.hex
        # test --left-delimiter and --right-delimiter flags to chezmoi execute-template (0.063s)
        > exec chezmoi execute-template --left-delimiter=[[ --right-delimiter=]] '[[ "ok" ]]'
        [stdout]
        ok> stdout ^ok$
        # test that the encoding can be set in files (0.054s)
        > exec chezmoi cat $HOME${/}encoding
        [stdout]
        H e l l o ,   w o r l d ! 
         > cmp stdout golden/encoding
        # test that missing key behavior can be set in files (0.088s)
        > exec chezmoi cat $HOME${/}missing-key
        [stdout]
        <no value>
        > cmp stdout golden/missing-key
        # test that template delimiters can be set in files (0.101s)
        > exec chezmoi cat $HOME${/}nested-template
        [stdout]
        (nested)
        > cmp stdout golden/nested-template
        PASS
        
=== CONT  TestScript/archivezip
    cmd.go:380: unzip not found in $PATH
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] skip 'windows line endings confuse cmp and diff'
        > [!exec:unzip] skip 'unzip not found in $PATH'
        
=== CONT  TestScript/bitwardenunlock
=== NAME  TestScript/scriptperl
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [!exec:perl] skip 'perl not found in $PATH'
        > exec chezmoi apply
        [stdout]
        Hello from Perl
        > stdout 'Hello from Perl'
        PASS
        
=== CONT  TestScript/bitwarden
=== NAME  TestScript/scriptpython
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [!exec:python3] skip 'python3 not found in $PATH'
        > exec chezmoi apply
        [stdout]
        Hello from Python
        
        > stdout 'Hello from Python'
        PASS
        
=== CONT  TestScript/autopush
=== NAME  TestScript/textconv
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] skip 'UNIX only'
        > [!exec:tr] skip 'tr not found in $PATH'
        # test that chezmoi diff uses textconv (0.083s)
        > exec chezmoi diff
        [stdout]
        diff --git a/file.txt b/file.txt
        index b0ebb2af412bf3812b0bf8c5d7b950feb8a701be..4d977287915d918f15ef3df13146c1fa58914d30 100644
        --- a/file.txt
        +++ b/file.txt
        @@ -1 +1 @@
        -# PREVIOUS CONTENTS OF FILE.TXT
        +# CONTENTS OF FILE.TXT
        > [umask:002] cmp stdout golden/diff-umask-002
        > [umask:022] cmp stdout golden/diff-umask-022
        # test that chezmoi apply uses textconv (0.143s)
        > exec chezmoi apply --verbose
        [stdout]
        diff --git a/file.txt b/file.txt
        index b0ebb2af412bf3812b0bf8c5d7b950feb8a701be..4d977287915d918f15ef3df13146c1fa58914d30 100644
        --- a/file.txt
        +++ b/file.txt
        @@ -1 +1 @@
        -# PREVIOUS CONTENTS OF FILE.TXT
        +# CONTENTS OF FILE.TXT
        > [umask:002] cmp stdout golden/diff-umask-002
        > [umask:022] cmp stdout golden/diff-umask-022
        > cmp $HOME/file.txt golden/file.txt
        # test that chezmoi apply uses textconv in interactive diffs (0.220s)
        > edit $HOME/file.txt
        > stdin golden/diff-overwrite
        > exec chezmoi apply --no-tty
        [stdout]
        file.txt has changed since chezmoi last wrote it (diff/overwrite/all-overwrite/skip/quit)? diff --git a/file.txt b/file.txt
        index 6f0f7ad1723290ba1069a77e8eedbe212a876d87..4d977287915d918f15ef3df13146c1fa58914d30 100644
        --- a/file.txt
        +++ b/file.txt
        @@ -1,2 +1 @@
         # CONTENTS OF FILE.TXT
        -# EDITED
        file.txt has changed since chezmoi last wrote it (diff/overwrite/all-overwrite/skip/quit)? > stdout '^ # CONTENTS OF FILE.TXT'
        > stdout '^-# EDITED'
        PASS
        
=== CONT  TestScript/autocommit
=== NAME  TestScript/scriptsdir_unix
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] skip 'UNIX only'
        # test that chezmoi apply runs scripts in .chezmoiscripts (0.098s)
        > exec chezmoi apply
        [stdout]
        script
        script in subdir
        > cmp stdout golden/apply
        > chhome home2/user
        # test that chezmoi apply fails if .chezmoiscripts contains a non-script (0.072s)
        > ! exec chezmoi apply
        [stderr]
        chezmoi: $WORK/home2/user/.local/share/chezmoi/.chezmoiscripts/dot_file: not a script
        [exit status 1]
        > stderr ${CHEZMOISOURCEDIR@R}/\.chezmoiscripts/dot_file:\snot\sa\sscript$
        > chhome home3/user
        # test that chezmoi apply fails if .chezmoiscripts contains duplicate targets (0.049s)
        > ! exec chezmoi apply
        [stderr]
        chezmoi: .chezmoiscripts/script.sh: inconsistent state ($WORK/home3/user/.local/share/chezmoi/.chezmoiscripts/run_once_script.sh, $WORK/home3/user/.local/share/chezmoi/.chezmoiscripts/run_script.sh)
        [exit status 1]
        > stderr \.chezmoiscripts/script\.sh:\sinconsistent\sstate
        > chhome home4/user
        # test that chezmoi apply fails if .chezmoiscripts contains any .chezmoi* files (0.047s)
        > ! exec chezmoi apply
        [stderr]
        chezmoi: $WORK/home4/user/.local/share/chezmoi/.chezmoiscripts/.chezmoiignore: not allowed in .chezmoiscripts directory
        [exit status 1]
        > stderr 'not allowed in \.chezmoiscripts directory'
        PASS
        
=== CONT  TestScript/scriptonce_windows
    cmd.go:380: Windows only
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [unix] skip 'Windows only'
        
=== CONT  TestScript/scriptorder_windows
    cmd.go:380: Windows only
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [unix] skip 'Windows only'
        
=== CONT  TestScript/scriptorder_unix
=== NAME  TestScript/issue3371
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [!exec:git] skip 'git not found in $PATH'
        > [windows] unix2dos golden/.file
        > mkgitconfig
        # create a dotfile repo with a config file template (0.280s)
        > exec chezmoi init
        > exec chezmoi git add .
        > exec chezmoi git commit -- --message 'Initial commit'
        [stdout]
        [master (root-commit) f52f044] Initial commit
         2 files changed, 3 insertions(+)
         create mode 100644 .chezmoi.yaml.tmpl
         create mode 100644 dot_file.tmpl
        > chhome home2/user
        # test that chezmoi init --apply sets environment variables during apply from the config file (0.537s)
        > exec chezmoi init --apply file://$WORK/home/user/.local/share/chezmoi
        [stderr]
        Cloning into '$WORK/home2/user/.local/share/chezmoi'...
        > cmp $HOME/.file golden/.file
        PASS
        
=== CONT  TestScript/scriptonchange_unix
=== NAME  TestScript/secret
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [unix] chmod 755 bin/secret
        > [windows] unix2dos bin/secret.cmd
        # test secret template function (0.112s)
        > exec chezmoi execute-template '{{ secret "password" }}'
        [stdout]
        password> stdout ^password$
        # test secretJSON template function (0.102s)
        > exec chezmoi execute-template '{{ (secretJSON "{\"password\":\"secret\"}").password }}'
        [stdout]
        secret> stdout ^secret$
        > chhome home2/user
        # test secret.args (0.215s)
        > exec chezmoi execute-template '{{ secret "password" }}'
        [stdout]
        arg password> stdout '^arg password$'
        PASS
        
=== CONT  TestScript/addattributes
=== NAME  TestScript/state
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] mkdir $CHEZMOICONFIGDIR # FIXME remove this
        # test that chezmoi state get returns nothing for a non-existing bucket/key (0.058s)
        > exec chezmoi state get --bucket=bucket --key=key
        > ! stdout .
        # test that chezmoi state set sets a value that can be retrieved with chezmoi state get (0.233s)
        > exec chezmoi state set --bucket=bucket --key=key --value=value
        > exec chezmoi state get --bucket=bucket --key=key
        [stdout]
        value> stdout ^value$
        > exec chezmoi state data --format=yaml
        [stdout]
        bucket:
          key: value
        > cmp stdout golden/data.yaml
        # test that chezmoi state delete deletes a value (0.176s)
        > exec chezmoi state delete --bucket=bucket --key=key
        > ! stdout .
        > exec chezmoi state data --format=yaml
        [stdout]
        bucket: {}
        > cmp stdout golden/data-after-delete.yaml
        PASS
        
=== CONT  TestScript/scriptinterpreterstemplate
=== NAME  TestScript/symlinks
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi apply removes a symlink if the target is empty (0.074s)
        > symlink $HOME/.empty -> .file
        > exec chezmoi apply $HOME${/}.empty
        > ! exists $HOME/.empty
        # test that chezmoi apply evaluates symlink templates (0.059s)
        > exec chezmoi apply $HOME${/}.template
        > cmp $HOME/.template $HOME/.file
        # test that chezmoi add --template-symlinks replaces absolute symlinks, pointing to files inside home, with templates (0.149s)
        > symlink $HOME/.symlink_absolute -> $HOME/.dir/subdir/file
        > exec chezmoi add --template-symlinks $HOME${/}.symlink_absolute
        > cmp $CHEZMOISOURCEDIR/symlink_dot_symlink_absolute.tmpl golden/symlink_dot_symlink_absolute.tmpl
        # test that chezmoi add --template-symlinks replaces absolute symlinks, pointing to files inside the source directory, with templates (0.105s)
        > symlink $HOME/.symlink_source -> $CHEZMOISOURCEDIR/.dir/subdir/file
        > exec chezmoi add --template-symlinks $HOME${/}.symlink_source
        > cmp $CHEZMOISOURCEDIR/symlink_dot_symlink_source.tmpl golden/symlink_dot_symlink_source.tmpl
        > chhome home2/user
        # test that chezmoi add reads add.templateSymlinks from the config file (0.167s)
        > symlink $HOME/.symlink_absolute -> $HOME/.dir/subdir/file
        > exec chezmoi add --template-symlinks $HOME${/}.symlink_absolute
        > cmp $CHEZMOISOURCEDIR/symlink_dot_symlink_absolute.tmpl golden/symlink_dot_symlink_absolute.tmpl
        PASS
        
=== CONT  TestScript/scriptonce_unix
=== NAME  TestScript/sourcepath
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi source-path returns the source directory (0.099s)
        > exec chezmoi source-path
        [stdout]
        $WORK/home/user/.local/share/chezmoi
        > stdout ^${CHEZMOISOURCEDIR@R}$
        # test that chezmoi source-path target returns the path to a target's source file (0.125s)
        > exec chezmoi source-path $HOME${/}.file
        [stdout]
        $WORK/home/user/.local/share/chezmoi/dot_file
        > stdout ^${CHEZMOISOURCEDIR@R}/dot_file$
        # test that chezmoi source-path returns an error if the target is not in the source state (0.152s)
        > ! exec chezmoi source-path $HOME${/}.newfile
        [stderr]
        chezmoi: $WORK/home/user/.newfile: not managed
        [exit status 1]
        > stderr 'not managed'
        # test that chezmoi source-path returns an error if the target is not in the destination directory (0.100s)
        > ! exec chezmoi source-path $WORK${/}etc${/}passwd
        [stderr]
        chezmoi: $WORK/etc/passwd: not in destination directory ($WORK/home/user)
        [exit status 1]
        > stderr 'not in destination directory'
        > chhome home2/user
        # test that chezmoi source-path target returns the path the target's source file when .chezmoiroot is used (0.045s)
        > exec chezmoi source-path $HOME${/}.file
        [stdout]
        $WORK/home2/user/.local/share/chezmoi/home/dot_file
        > stdout /home/dot_file$
        PASS
        
=== CONT  TestScript/scriptinterpreters_windows
=== NAME  TestScript/templatevars
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > exec chezmoi execute-template '{{ .chezmoi.arch }}'
        [stdout]
        amd64> [386] stdout 386
        > [amd64] stdout amd64
        > [arm] stdout arm
        > [arm64] stdout arm64
        > [ppc64] stdout ppc64
        > [ppc64le] stdout ppc64le
        > exec chezmoi execute-template '{{ index .chezmoi.args 1 }}'
        [stdout]
        execute-template> stdout execute-template
        > exec chezmoi execute-template '{{ output "echo" .chezmoi.destDir }}'
        [stdout]
        $WORK/home/user
        > [!windows] stdout ${HOME@R}
        > exec chezmoi execute-template '{{ .chezmoi.executable }}'
        [stdout]
        /tmp/testscript-main23456104/bin/chezmoi> stdout [\\/]chezmoi(.exe)?$
        > [unix] exec chezmoi execute-template '{{ .chezmoi.homeDir }}'
        [stdout]
        $WORK/home/user> [unix] stdout ${HOME@R}
        > exec chezmoi execute-template '{{ .chezmoi.os }}'
        [stdout]
        linux> [darwin] stdout darwin
        > [freebsd] stdout freebsd
        > [linux] stdout linux
        > [openbsd] stdout openbsd
        > [windows] stdout windows
        > exec chezmoi execute-template '{{ .chezmoi.sourceDir }}'
        [stdout]
        $WORK/home/user/.local/share/chezmoi> stdout ${CHEZMOISOURCEDIR@R}
        PASS
        
=== NAME  TestScript/scriptsubdir_unix
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] skip 'UNIX only'
        > [!umask:022] skip
        # test that scripts in subdirectories are run in the subdirectory (0.494s)
        > exec chezmoi apply --force
        [stdout]
        $WORK/home/user
        $WORK/home/user/dir
        $WORK/home/user/anotherdir
        > cmpenv stdout golden/apply
        > exec chezmoi dump
        [stdout]
        {
          "anotherdir": {
            "type": "dir",
            "name": "anotherdir",
            "perm": 493
          },
          "anotherdir/script.sh": {
            "type": "script",
            "name": "anotherdir/script.sh",
            "contents": "#!/bin/sh\n\npwd\n",
            "condition": "always"
          },
          "dir": {
            "type": "dir",
            "name": "dir",
            "perm": 493
          },
          "dir/script.sh": {
            "type": "script",
            "name": "dir/script.sh",
            "contents": "#!/bin/sh\n\npwd\n",
            "condition": "always"
          },
          "otherdir": {
            "type": "dir",
            "name": "otherdir",
            "perm": 493
          },
          "otherdir/script.sh": {
            "type": "script",
            "name": "otherdir/script.sh",
            "contents": "#!/bin/sh\n\npwd\n",
            "condition": "always"
          }
        }
        > cmp stdout golden/dump.json
        > exec chezmoi archive --gzip --output=archive.tar.gz
        > exec tar -tzf archive.tar.gz
        [stdout]
        otherdir/script.sh
        anotherdir/
        dir/
        dir/script.sh
        otherdir/
        anotherdir/script.sh
        > [!openbsd] cmp stdout golden/archive
        > [openbsd] cmp stdout golden/archive-openbsd
        PASS
        
=== CONT  TestScript/configstate
=== CONT  TestScript/data
=== NAME  TestScript/scriptinterpreters_windows
    cmd.go:380: Windows only
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [unix] skip 'Windows only'
        
=== CONT  TestScript/dashlane
=== NAME  TestScript/scriptinterpreterstemplate
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [!exec:python3] skip 'python3 not found in $PATH'
        # test python3 scripts (0.111s)
        > exec chezmoi apply
        [stdout]
        Hello from Python
        
        > stdout 'Hello from Python'
        PASS
        
=== CONT  TestScript/create
=== NAME  TestScript/addattributes
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > mkhomedir
        # test that chezmoi add warns if adding a file would remove the template attribute (0.148s)
        > stdin golden/yes
        > exec chezmoi add --no-tty $HOME${/}.file
        [stdout]
        adding .file would remove template attribute, continue (yes/no/all/quit)? > stdout 'adding \.file would remove template attribute, continue'
        > cmp $CHEZMOISOURCEDIR/dot_file golden/.file
        > ! exists $CHEZMOISOURCEDIR/dot_file.tmpl
        PASS
        
=== CONT  TestScript/issue3051
=== NAME  TestScript/create
    cmd.go:380: age not found in $PATH
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi apply creates a file from a template (0.039s)
        > mkdir $CHEZMOISOURCEDIR
        > cp golden/create_dot_create.tmpl $CHEZMOISOURCEDIR
        > exec chezmoi apply --force
        > cmp $HOME/.create golden/.create
        > [windows] skip 'UNIX only'
        > [!exec:age] skip 'age not found in $PATH'
        
=== CONT  TestScript/issue3064
=== NAME  TestScript/bitwardenunlock
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > mockcommand bin/bw
        # test Bitwarden CLI automatic unlock without BW_SESSION set (0.272s)
        > exec chezmoi execute-template '{{ (bitwarden "item" "example.com").login.password }}'
        [stdout]
        password-value> stdout ^password-value$
        # test Bitwarden CLI automatic unlock with BW_SESSION set (0.141s)
        > env BW_SESSION=my-bitwarden-session-id
        > exec chezmoi execute-template '{{ (bitwarden "item" "example.com").login.password }}'
        [stdout]
        password-value> stdout ^password-value$
        # test Bitwarden CLI automatic unlock with BW_SESSION set to an incorrect value (0.042s)
        > env BW_SESSION=my-invalid-bitwarden-session-id
        > ! exec chezmoi execute-template '{{ (bitwarden "item" "example.com").login.password }}'
        [stderr]
        chezmoi: template: arg1:1:4: executing "arg1" at <bitwarden "item" "example.com">: error calling bitwarden: $WORK/bin/bw get item example.com: exit status 1
        BW_SESSION=my-invalid-bitwarden-session-id, expected my-bitwarden-session-id
        
        [exit status 1]
        PASS
        
=== CONT  TestScript/editconfigtemplate
=== NAME  TestScript/scriptorder_unix
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] skip 'UNIX only'
        # test that chezmoi apply runs scripts in the correct order (0.374s)
        > symlink home/user/.local/share/chezmoi/.chezmoiscripts/run_before_00-chezmoiscripts-before -> ../.script.sh
        > symlink home/user/.local/share/chezmoi/.chezmoiscripts/run_before_99-chezmoiscripts-before -> ../.script.sh
        > symlink home/user/.local/share/chezmoi/.chezmoiscripts/run_00-chezmoiscripts -> ../.script.sh
        > symlink home/user/.local/share/chezmoi/.chezmoiscripts/run_99-chezmoiscripts -> ../.script.sh
        > symlink home/user/.local/share/chezmoi/.chezmoiscripts/run_after_00-chezmoiscripts-after -> ../.script.sh
        > symlink home/user/.local/share/chezmoi/.chezmoiscripts/run_after_99-chezmoiscripts-after -> ../.script.sh
        > symlink home/user/.local/share/chezmoi/run_before_00-before -> .script.sh
        > symlink home/user/.local/share/chezmoi/run_before_99-before -> .script.sh
        > symlink home/user/.local/share/chezmoi/run_00 -> .script.sh
        > symlink home/user/.local/share/chezmoi/run_99 -> .script.sh
        > symlink home/user/.local/share/chezmoi/run_after_00-after -> .script.sh
        > symlink home/user/.local/share/chezmoi/run_after_99-after -> .script.sh
        > exec chezmoi apply --force
        [stdout]
        00-chezmoiscripts-before
        99-chezmoiscripts-before
        00-before
        99-before
        00-chezmoiscripts
        99-chezmoiscripts
        00
        99
        00-chezmoiscripts-after
        99-chezmoiscripts-after
        00-after
        99-after
        > cmp stdout golden/apply
        PASS
        
=== CONT  TestScript/editencrypted
=== NAME  TestScript/dashlane
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > mockcommand bin/dcli
        > [windows] unix2dos golden/dashlane-note
        # test dashlanePassword template function (0.120s)
        > exec chezmoi execute-template '{{ (index (dashlanePassword "filter") 0).password }}'
        [stdout]
        <password>> stdout ^<password>$
        # test dashlaneNote template function (0.057s)
        > exec chezmoi execute-template '{{ dashlaneNote "filter" }}'
        [stdout]
        <note>
        > cmp stdout golden/dashlane-note
        PASS
        
=== CONT  TestScript/hooks
=== NAME  TestScript/templatedata
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that .chezmoi.sourceDir can be used with joinPath (0.023s)
        > [unix] exec chezmoi execute-template '{{ joinPath .chezmoi.sourceDir ".file" }}'
        [stdout]
        $WORK/home/user/.local/share/chezmoi/.file> [unix] stdout ${CHEZMOISOURCEDIR@R}/.file
        # test that .chezmoi.sourceFile is set (0.103s)
        > exec chezmoi cat $HOME${/}.file
        [stdout]
        dot_file.tmpl
        > stdout dot_file.tmpl
        # test that .chezmoi.kernel is set on linux (0.110s)
        > [linux] exec chezmoi execute-template '{{ .chezmoi.kernel.ostype }}'
        [stdout]
        Linux> [linux] stdout Linux
        # test that .chezmoi.flags.force is set (0.161s)
        > exec chezmoi execute-template '{{ .chezmoi.flags.force }}'
        [stdout]
        false> stdout '^false$'
        > exec chezmoi execute-template --force '{{ .chezmoi.flags.force }}'
        [stdout]
        true> stdout '^true$'
        > chhome home2/user
        # test that .chezmoidata.<format> and .chezmoitemplates are available in .chezmoiignore (0.035s)
        > exec chezmoi apply
        > exists $HOME/.file1
        > ! exists $HOME/.file2
        > chhome home3/user
        # test that data execute-template ignores template errors (0.075s)
        > exec chezmoi data
        [stdout]
        {
          "chezmoi": {
            "arch": "amd64",
            "args": [
              "chezmoi",
              "data"
            ],
            "cacheDir": "$WORK/home3/user/.cache/chezmoi",
            "command": "data",
            "commandDir": "$WORK",
            "config": {
              "add": {
                "encrypt": false,
                "secrets": "warning",
                "templateSymlinks": false
              },
              "age": {
                "args": null,
                "command": "age",
                "identities": null,
                "identity": "",
                "passphrase": false,
                "recipient": "",
                "recipients": null,
                "recipientsFile": "",
                "recipientsFiles": null,
                "suffix": ".age",
                "symmetric": false,
                "useBuiltin": false
              },
              "awsSecretsManager": {
                "profile": "",
                "region": ""
              },
              "azureKeyVault": {
                "defaultVault": ""
              },
              "bitwarden": {
                "command": "bw",
                "unlock": false
              },
              "bitwardenSecrets": {
                "command": "bws"
              },
              "cacheDir": "$WORK/home3/user/.cache/chezmoi",
              "cd": {
                "args": null,
                "command": ""
              },
              "color": "auto",
              "completion": {
                "custom": false
              },
              "dashlane": {
                "args": null,
                "command": "dcli"
              },
              "data": {},
              "destDir": "$WORK/home3/user",
              "diff": {
                "args": null,
                "command": "",
                "exclude": [],
                "pager": "",
                "pagerArgs": null,
                "reverse": false,
                "scriptContents": true
              },
              "docker": {
                "command": "docker"
              },
              "doppler": {
                "args": null,
                "command": "doppler",
                "config": "",
                "project": ""
              },
              "edit": {
                "apply": false,
                "args": null,
                "command": "",
                "hardlink": true,
                "minDuration": 1000000000,
                "watch": false
              },
              "ejson": {
                "key": "",
                "keyDir": "/opt/ejson/keys"
              },
              "encryption": "",
              "env": null,
              "format": "json",
              "git": {
                "autoadd": false,
                "autocommit": false,
                "autopush": false,
                "command": "git",
                "commitMessageTemplate": "",
                "commitMessageTemplateFile": "",
                "lfs": false
              },
              "gitHub": {
                "refreshPeriod": 60000000000
              },
              "gopass": {
                "command": "gopass",
                "mode": ""
              },
              "gpg": {
                "args": null,
                "command": "gpg",
                "recipient": "",
                "recipients": null,
                "suffix": ".asc",
                "symmetric": false
              },
              "hooks": null,
              "interactive": false,
              "interpreters": {
                "bat": {
                  "args": null,
                  "command": ""
                },
                "cmd": {
                  "args": null,
                  "command": ""
                },
                "com": {
                  "args": null,
                  "command": ""
                },
                "exe": {
                  "args": null,
                  "command": ""
                },
                "nu": {
                  "args": null,
                  "command": "nu"
                },
                "pl": {
                  "args": null,
                  "command": "perl"
                },
                "ps1": {
                  "args": null,
                  "command": ""
                },
                "py": {
                  "args": null,
                  "command": "python3"
                },
                "rb": {
                  "args": null,
                  "command": "ruby"
                }
              },
              "keepassxc": {
                "args": null,
                "command": "keepassxc-cli",
                "database": "",
                "mode": "cache-password",
                "prompt": true
              },
              "keeper": {
                "args": null,
                "command": "keeper"
              },
              "lastpass": {
                "command": "lpass"
              },
              "lessInteractive": false,
              "merge": {
                "args": null,
                "command": "vimdiff"
              },
              "mode": "file",
              "onepassword": {
                "command": "op",
                "mode": "account",
                "prompt": true
              },
              "pager": "",
              "pagerArgs": null,
              "pass": {
                "command": "pass"
              },
              "passhole": {
                "args": null,
                "command": "ph",
                "prompt": true
              },
              "persistentState": "",
              "pinentry": {
                "args": null,
                "command": "",
                "options": [
                  "allow-external-password-cache"
                ]
              },
              "progress": "auto",
              "protonPass": {
                "command": "pass-cli"
              },
              "rbw": {
                "command": "rbw"
              },
              "safe": true,
              "scriptEnv": null,
              "scriptTempDir": "",
              "secret": {
                "args": null,
                "command": ""
              },
              "sourceDir": "$WORK/home3/user/.local/share/chezmoi",
              "status": {
                "exclude": [],
                "pathStyle": "relative"
              },
              "tempDir": "$WORK/.tmp",
              "template": {
                "options": [
                  "missingkey=error"
                ]
              },
              "textConv": null,
              "umask": 18,
              "update": {
                "apply": true,
                "args": null,
                "command": "",
                "recurseSubmodules": true
              },
              "useBuiltinAge": "auto",
              "useBuiltinGit": "auto",
              "vault": {
                "command": "vault"
              },
              "verbose": false,
              "verify": {
                "exclude": []
              },
              "warnings": {
                "configFileTemplateHasChanged": true
              },
              "workingTree": "$WORK/home3/user/.local/share/chezmoi"
            },
            "configFile": "$WORK/home3/user/.config/chezmoi/chezmoi.toml",
            "destDir": "$WORK/home3/user",
            "executable": "/tmp/testscript-main23456104/bin/chezmoi",
            "flags": {
              "dryRun": false,
              "force": false,
              "keepGoing": false,
              "noPager": false,
              "noTTY": false
            },
            "fqdnHostname": "arch-nspawn-4102825",
            "gid": "1002",
            "group": "builduser",
            "homeDir": "$WORK/home3/user",
            "hostname": "arch-nspawn-4102825",
            "kernel": {
              "osrelease": "6.18.31-1-lts",
              "ostype": "Linux",
              "version": "#1 SMP PREEMPT_DYNAMIC Fri, 15 May 2026 15:01:51 +0000"
            },
            "os": "linux",
            "osRelease": {
              "ansiColor": "38;2;23;147;209",
              "bugReportURL": "https://gitlab.archlinux.org/groups/archlinux/-/issues",
              "buildID": "rolling",
              "documentationURL": "https://wiki.archlinux.org/",
              "homeURL": "https://archlinux.org/",
              "id": "arch",
              "logo": "archlinux-logo",
              "name": "Arch Linux",
              "prettyName": "Arch Linux",
              "privacyPolicyURL": "https://terms.archlinux.org/docs/privacy-policy/",
              "supportURL": "https://bbs.archlinux.org/"
            },
            "pathListSeparator": ":",
            "pathSeparator": "/",
            "rawHomeDir": "$WORK/home3/user",
            "sourceDir": "$WORK/home3/user/.local/share/chezmoi",
            "uid": "1002",
            "username": "builduser",
            "version": {
              "builtBy": "testscript",
              "commit": "HEAD",
              "date": "2026-07-20T20:42:32Z",
              "version": "v2.0.0+test"
            },
            "windowsVersion": {},
            "workingTree": "$WORK/home3/user/.local/share/chezmoi"
          },
          "message": "ok"
        }
        > stdout ok
        # test that chezmoi execute-template ignores template errors (0.221s)
        > exec chezmoi execute-template '{{ template "template" . }}'
        [stdout]
        ok
        > stdout ok
        > [unix] chhome home4/user
        # test that .chezmoi.sourceFile is set (0.051s)
        > [unix] exec chezmoi cat $HOME${/}.file
        [stdout]
        dot_file.tmpl
        $WORK/home4/user/.file
        > [unix] cmpenv stdout golden/dot_file
        PASS
        
=== CONT  TestScript/issue1832
=== NAME  TestScript/issue3064
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] skip 'UNIX only'
        # test that chezmoi respects the persistentState config variable (0.093s)
        > exec chezmoi apply
        > exists test.boltdb
        PASS
        
=== CONT  TestScript/issue1794
    cmd.go:380: age not found in $PATH
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [!exec:age] skip 'age not found in $PATH'
        
=== CONT  TestScript/issue1666
=== NAME  TestScript/issue3051
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi add respects .chezmoiignore in the presence of protected paths (0.129s)
        > exec chezmoi add -r $HOME${/}.local
        [stderr]
        chezmoi: warning: ignoring .local/share/chezmoi
        > exists $CHEZMOISOURCEDIR/dot_local/bin/hello.sh
        PASS
        
=== CONT  TestScript/issue1365
=== NAME  TestScript/data
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi data includes data set in config file (0.109s)
        > exec chezmoi data
        [stdout]
        {
          "chezmoi": {
            "arch": "amd64",
            "args": [
              "chezmoi",
              "data"
            ],
            "cacheDir": "$WORK/home/user/.cache/chezmoi",
            "command": "data",
            "commandDir": "$WORK",
            "config": {
              "add": {
                "encrypt": false,
                "secrets": "warning",
                "templateSymlinks": false
              },
              "age": {
                "args": null,
                "command": "age",
                "identities": null,
                "identity": "",
                "passphrase": false,
                "recipient": "",
                "recipients": null,
                "recipientsFile": "",
                "recipientsFiles": null,
                "suffix": ".age",
                "symmetric": false,
                "useBuiltin": false
              },
              "awsSecretsManager": {
                "profile": "",
                "region": ""
              },
              "azureKeyVault": {
                "defaultVault": ""
              },
              "bitwarden": {
                "command": "bw",
                "unlock": false
              },
              "bitwardenSecrets": {
                "command": "bws"
              },
              "cacheDir": "$WORK/home/user/.cache/chezmoi",
              "cd": {
                "args": null,
                "command": ""
              },
              "color": "auto",
              "completion": {
                "custom": false
              },
              "dashlane": {
                "args": null,
                "command": "dcli"
              },
              "data": {
                "uniqueKey": "uniqueValue"
              },
              "destDir": "$WORK/home/user",
              "diff": {
                "args": null,
                "command": "",
                "exclude": [],
                "pager": "",
                "pagerArgs": null,
                "reverse": false,
                "scriptContents": true
              },
              "docker": {
                "command": "docker"
              },
              "doppler": {
                "args": null,
                "command": "doppler",
                "config": "",
                "project": ""
              },
              "edit": {
                "apply": false,
                "args": null,
                "command": "",
                "hardlink": true,
                "minDuration": 1000000000,
                "watch": false
              },
              "ejson": {
                "key": "",
                "keyDir": "/opt/ejson/keys"
              },
              "encryption": "",
              "env": null,
              "format": "json",
              "git": {
                "autoadd": false,
                "autocommit": false,
                "autopush": false,
                "command": "git",
                "commitMessageTemplate": "",
                "commitMessageTemplateFile": "",
                "lfs": false
              },
              "gitHub": {
                "refreshPeriod": 60000000000
              },
              "gopass": {
                "command": "gopass",
                "mode": ""
              },
              "gpg": {
                "args": null,
                "command": "gpg",
                "recipient": "",
                "recipients": null,
                "suffix": ".asc",
                "symmetric": false
              },
              "hooks": null,
              "interactive": false,
              "interpreters": {
                "bat": {
                  "args": null,
                  "command": ""
                },
                "cmd": {
                  "args": null,
                  "command": ""
                },
                "com": {
                  "args": null,
                  "command": ""
                },
                "exe": {
                  "args": null,
                  "command": ""
                },
                "nu": {
                  "args": null,
                  "command": "nu"
                },
                "pl": {
                  "args": null,
                  "command": "perl"
                },
                "ps1": {
                  "args": null,
                  "command": ""
                },
                "py": {
                  "args": null,
                  "command": "python3"
                },
                "rb": {
                  "args": null,
                  "command": "ruby"
                }
              },
              "keepassxc": {
                "args": null,
                "command": "keepassxc-cli",
                "database": "",
                "mode": "cache-password",
                "prompt": true
              },
              "keeper": {
                "args": null,
                "command": "keeper"
              },
              "lastpass": {
                "command": "lpass"
              },
              "lessInteractive": false,
              "merge": {
                "args": null,
                "command": "vimdiff"
              },
              "mode": "file",
              "onepassword": {
                "command": "op",
                "mode": "account",
                "prompt": true
              },
              "pager": "",
              "pagerArgs": null,
              "pass": {
                "command": "pass"
              },
              "passhole": {
                "args": null,
                "command": "ph",
                "prompt": true
              },
              "persistentState": "",
              "pinentry": {
                "args": null,
                "command": "",
                "options": [
                  "allow-external-password-cache"
                ]
              },
              "progress": "auto",
              "protonPass": {
                "command": "pass-cli"
              },
              "rbw": {
                "command": "rbw"
              },
              "safe": true,
              "scriptEnv": null,
              "scriptTempDir": "",
              "secret": {
                "args": null,
                "command": ""
              },
              "sourceDir": "$WORK/home/user/.local/share/chezmoi",
              "status": {
                "exclude": [],
                "pathStyle": "relative"
              },
              "tempDir": "$WORK/.tmp",
              "template": {
                "options": [
                  "missingkey=error"
                ]
              },
              "textConv": null,
              "umask": 18,
              "update": {
                "apply": true,
                "args": null,
                "command": "",
                "recurseSubmodules": true
              },
              "useBuiltinAge": "auto",
              "useBuiltinGit": "auto",
              "vault": {
                "command": "vault"
              },
              "verbose": false,
              "verify": {
                "exclude": []
              },
              "warnings": {
                "configFileTemplateHasChanged": true
              },
              "workingTree": "$WORK/home/user/.local/share/chezmoi"
            },
            "configFile": "$WORK/home/user/.config/chezmoi/chezmoi.toml",
            "destDir": "$WORK/home/user",
            "executable": "/tmp/testscript-main23456104/bin/chezmoi",
            "flags": {
              "dryRun": false,
              "force": false,
              "keepGoing": false,
              "noPager": false,
              "noTTY": false
            },
            "fqdnHostname": "arch-nspawn-4102825",
            "gid": "1002",
            "group": "builduser",
            "homeDir": "$WORK/home/user",
            "hostname": "arch-nspawn-4102825",
            "kernel": {
              "osrelease": "6.18.31-1-lts",
              "ostype": "Linux",
              "version": "#1 SMP PREEMPT_DYNAMIC Fri, 15 May 2026 15:01:51 +0000"
            },
            "os": "linux",
            "osRelease": {
              "ansiColor": "38;2;23;147;209",
              "bugReportURL": "https://gitlab.archlinux.org/groups/archlinux/-/issues",
              "buildID": "rolling",
              "documentationURL": "https://wiki.archlinux.org/",
              "homeURL": "https://archlinux.org/",
              "id": "arch",
              "logo": "archlinux-logo",
              "name": "Arch Linux",
              "prettyName": "Arch Linux",
              "privacyPolicyURL": "https://terms.archlinux.org/docs/privacy-policy/",
              "supportURL": "https://bbs.archlinux.org/"
            },
            "pathListSeparator": ":",
            "pathSeparator": "/",
            "rawHomeDir": "$WORK/home/user",
            "sourceDir": "$WORK/home/user/.local/share/chezmoi",
            "uid": "1002",
            "username": "builduser",
            "version": {
              "builtBy": "testscript",
              "commit": "HEAD",
              "date": "2026-07-20T20:42:33Z",
              "version": "v2.0.0+test"
            },
            "windowsVersion": {},
            "workingTree": "$WORK/home/user/.local/share/chezmoi"
          },
          "uniqueKey": "uniqueValue"
        }
        > stdout '"chezmoi":'
        > stdout '"uniqueKey": "uniqueValue"'
        # test that chezmoi data --format=json includes data set in config file (0.062s)
        > exec chezmoi data --format=json
        [stdout]
        {
          "chezmoi": {
            "arch": "amd64",
            "args": [
              "chezmoi",
              "data",
              "--format=json"
            ],
            "cacheDir": "$WORK/home/user/.cache/chezmoi",
            "command": "data",
            "commandDir": "$WORK",
            "config": {
              "add": {
                "encrypt": false,
                "secrets": "warning",
                "templateSymlinks": false
              },
              "age": {
                "args": null,
                "command": "age",
                "identities": null,
                "identity": "",
                "passphrase": false,
                "recipient": "",
                "recipients": null,
                "recipientsFile": "",
                "recipientsFiles": null,
                "suffix": ".age",
                "symmetric": false,
                "useBuiltin": false
              },
              "awsSecretsManager": {
                "profile": "",
                "region": ""
              },
              "azureKeyVault": {
                "defaultVault": ""
              },
              "bitwarden": {
                "command": "bw",
                "unlock": false
              },
              "bitwardenSecrets": {
                "command": "bws"
              },
              "cacheDir": "$WORK/home/user/.cache/chezmoi",
              "cd": {
                "args": null,
                "command": ""
              },
              "color": "auto",
              "completion": {
                "custom": false
              },
              "dashlane": {
                "args": null,
                "command": "dcli"
              },
              "data": {
                "uniqueKey": "uniqueValue"
              },
              "destDir": "$WORK/home/user",
              "diff": {
                "args": null,
                "command": "",
                "exclude": [],
                "pager": "",
                "pagerArgs": null,
                "reverse": false,
                "scriptContents": true
              },
              "docker": {
                "command": "docker"
              },
              "doppler": {
                "args": null,
                "command": "doppler",
                "config": "",
                "project": ""
              },
              "edit": {
                "apply": false,
                "args": null,
                "command": "",
                "hardlink": true,
                "minDuration": 1000000000,
                "watch": false
              },
              "ejson": {
                "key": "",
                "keyDir": "/opt/ejson/keys"
              },
              "encryption": "",
              "env": null,
              "format": "json",
              "git": {
                "autoadd": false,
                "autocommit": false,
                "autopush": false,
                "command": "git",
                "commitMessageTemplate": "",
                "commitMessageTemplateFile": "",
                "lfs": false
              },
              "gitHub": {
                "refreshPeriod": 60000000000
              },
              "gopass": {
                "command": "gopass",
                "mode": ""
              },
              "gpg": {
                "args": null,
                "command": "gpg",
                "recipient": "",
                "recipients": null,
                "suffix": ".asc",
                "symmetric": false
              },
              "hooks": null,
              "interactive": false,
              "interpreters": {
                "bat": {
                  "args": null,
                  "command": ""
                },
                "cmd": {
                  "args": null,
                  "command": ""
                },
                "com": {
                  "args": null,
                  "command": ""
                },
                "exe": {
                  "args": null,
                  "command": ""
                },
                "nu": {
                  "args": null,
                  "command": "nu"
                },
                "pl": {
                  "args": null,
                  "command": "perl"
                },
                "ps1": {
                  "args": null,
                  "command": ""
                },
                "py": {
                  "args": null,
                  "command": "python3"
                },
                "rb": {
                  "args": null,
                  "command": "ruby"
                }
              },
              "keepassxc": {
                "args": null,
                "command": "keepassxc-cli",
                "database": "",
                "mode": "cache-password",
                "prompt": true
              },
              "keeper": {
                "args": null,
                "command": "keeper"
              },
              "lastpass": {
                "command": "lpass"
              },
              "lessInteractive": false,
              "merge": {
                "args": null,
                "command": "vimdiff"
              },
              "mode": "file",
              "onepassword": {
                "command": "op",
                "mode": "account",
                "prompt": true
              },
              "pager": "",
              "pagerArgs": null,
              "pass": {
                "command": "pass"
              },
              "passhole": {
                "args": null,
                "command": "ph",
                "prompt": true
              },
              "persistentState": "",
              "pinentry": {
                "args": null,
                "command": "",
                "options": [
                  "allow-external-password-cache"
                ]
              },
              "progress": "auto",
              "protonPass": {
                "command": "pass-cli"
              },
              "rbw": {
                "command": "rbw"
              },
              "safe": true,
              "scriptEnv": null,
              "scriptTempDir": "",
              "secret": {
                "args": null,
                "command": ""
              },
              "sourceDir": "$WORK/home/user/.local/share/chezmoi",
              "status": {
                "exclude": [],
                "pathStyle": "relative"
              },
              "tempDir": "$WORK/.tmp",
              "template": {
                "options": [
                  "missingkey=error"
                ]
              },
              "textConv": null,
              "umask": 18,
              "update": {
                "apply": true,
                "args": null,
                "command": "",
                "recurseSubmodules": true
              },
              "useBuiltinAge": "auto",
              "useBuiltinGit": "auto",
              "vault": {
                "command": "vault"
              },
              "verbose": false,
              "verify": {
                "exclude": []
              },
              "warnings": {
                "configFileTemplateHasChanged": true
              },
              "workingTree": "$WORK/home/user/.local/share/chezmoi"
            },
            "configFile": "$WORK/home/user/.config/chezmoi/chezmoi.toml",
            "destDir": "$WORK/home/user",
            "executable": "/tmp/testscript-main23456104/bin/chezmoi",
            "flags": {
              "dryRun": false,
              "force": false,
              "keepGoing": false,
              "noPager": false,
              "noTTY": false
            },
            "fqdnHostname": "arch-nspawn-4102825",
            "gid": "1002",
            "group": "builduser",
            "homeDir": "$WORK/home/user",
            "hostname": "arch-nspawn-4102825",
            "kernel": {
              "osrelease": "6.18.31-1-lts",
              "ostype": "Linux",
              "version": "#1 SMP PREEMPT_DYNAMIC Fri, 15 May 2026 15:01:51 +0000"
            },
            "os": "linux",
            "osRelease": {
              "ansiColor": "38;2;23;147;209",
              "bugReportURL": "https://gitlab.archlinux.org/groups/archlinux/-/issues",
              "buildID": "rolling",
              "documentationURL": "https://wiki.archlinux.org/",
              "homeURL": "https://archlinux.org/",
              "id": "arch",
              "logo": "archlinux-logo",
              "name": "Arch Linux",
              "prettyName": "Arch Linux",
              "privacyPolicyURL": "https://terms.archlinux.org/docs/privacy-policy/",
              "supportURL": "https://bbs.archlinux.org/"
            },
            "pathListSeparator": ":",
            "pathSeparator": "/",
            "rawHomeDir": "$WORK/home/user",
            "sourceDir": "$WORK/home/user/.local/share/chezmoi",
            "uid": "1002",
            "username": "builduser",
            "version": {
              "builtBy": "testscript",
              "commit": "HEAD",
              "date": "2026-07-20T20:42:33Z",
              "version": "v2.0.0+test"
            },
            "windowsVersion": {},
            "workingTree": "$WORK/home/user/.local/share/chezmoi"
          },
          "uniqueKey": "uniqueValue"
        }
        > stdout '"chezmoi":'
        > stdout '"uniqueKey": "uniqueValue"'
        # test that chezmoi data --format=yaml includes data set in config file (0.077s)
        > exec chezmoi data --format=yaml
        [stdout]
        chezmoi:
          arch: amd64
          args:
          - chezmoi
          - data
          - --format=yaml
          cacheDir: $WORK/home/user/.cache/chezmoi
          command: data
          commandDir: $WORK
          config:
            add:
              encrypt: false
              secrets: warning
              templateSymlinks: false
            age:
              args: null
              command: age
              identities: null
              identity: ""
              passphrase: false
              recipient: ""
              recipients: null
              recipientsFile: ""
              recipientsFiles: null
              suffix: .age
              symmetric: false
              useBuiltin: false
            awsSecretsManager:
              profile: ""
              region: ""
            azureKeyVault:
              defaultVault: ""
            bitwarden:
              command: bw
              unlock: false
            bitwardenSecrets:
              command: bws
            cacheDir: $WORK/home/user/.cache/chezmoi
            cd:
              args: null
              command: ""
            color: auto
            completion:
              custom: false
            dashlane:
              args: null
              command: dcli
            data:
              uniqueKey: uniqueValue
            destDir: $WORK/home/user
            diff:
              args: null
              command: ""
              exclude: []
              pager: ""
              pagerArgs: null
              reverse: false
              scriptContents: true
            docker:
              command: docker
            doppler:
              args: null
              command: doppler
              config: ""
              project: ""
            edit:
              apply: false
              args: null
              command: ""
              hardlink: true
              minDuration: 1e+09
              watch: false
            ejson:
              key: ""
              keyDir: /opt/ejson/keys
            encryption: ""
            env: null
            format: json
            git:
              autoadd: false
              autocommit: false
              autopush: false
              command: git
              commitMessageTemplate: ""
              commitMessageTemplateFile: ""
              lfs: false
            gitHub:
              refreshPeriod: 6e+10
            gopass:
              command: gopass
              mode: ""
            gpg:
              args: null
              command: gpg
              recipient: ""
              recipients: null
              suffix: .asc
              symmetric: false
            hooks: null
            interactive: false
            interpreters:
              bat:
                args: null
                command: ""
              cmd:
                args: null
                command: ""
              com:
                args: null
                command: ""
              exe:
                args: null
                command: ""
              nu:
                args: null
                command: nu
              pl:
                args: null
                command: perl
              ps1:
                args: null
                command: ""
              py:
                args: null
                command: python3
              rb:
                args: null
                command: ruby
            keepassxc:
              args: null
              command: keepassxc-cli
              database: ""
              mode: cache-password
              prompt: true
            keeper:
              args: null
              command: keeper
            lastpass:
              command: lpass
            lessInteractive: false
            merge:
              args: null
              command: vimdiff
            mode: file
            onepassword:
              command: op
              mode: account
              prompt: true
            pager: ""
            pagerArgs: null
            pass:
              command: pass
            passhole:
              args: null
              command: ph
              prompt: true
            persistentState: ""
            pinentry:
              args: null
              command: ""
              options:
              - allow-external-password-cache
            progress: auto
            protonPass:
              command: pass-cli
            rbw:
              command: rbw
            safe: true
            scriptEnv: null
            scriptTempDir: ""
            secret:
              args: null
              command: ""
            sourceDir: $WORK/home/user/.local/share/chezmoi
            status:
              exclude: []
              pathStyle: relative
            tempDir: $WORK/.tmp
            template:
              options:
              - missingkey=error
            textConv: null
            umask: 18.0
            update:
              apply: true
              args: null
              command: ""
              recurseSubmodules: true
            useBuiltinAge: auto
            useBuiltinGit: auto
            vault:
              command: vault
            verbose: false
            verify:
              exclude: []
            warnings:
              configFileTemplateHasChanged: true
            workingTree: $WORK/home/user/.local/share/chezmoi
          configFile: $WORK/home/user/.config/chezmoi/chezmoi.toml
          destDir: $WORK/home/user
          executable: /tmp/testscript-main23456104/bin/chezmoi
          flags:
            dryRun: false
            force: false
            keepGoing: false
            noPager: false
            noTTY: false
          fqdnHostname: arch-nspawn-4102825
          gid: "1002"
          group: builduser
          homeDir: $WORK/home/user
          hostname: arch-nspawn-4102825
          kernel:
            osrelease: 6.18.31-1-lts
            ostype: Linux
            version: "#1 SMP PREEMPT_DYNAMIC Fri, 15 May 2026 15:01:51 +0000"
          os: linux
          osRelease:
            ansiColor: 38;2;23;147;209
            bugReportURL: https://gitlab.archlinux.org/groups/archlinux/-/issues
            buildID: rolling
            documentationURL: https://wiki.archlinux.org/
            homeURL: https://archlinux.org/
            id: arch
            logo: archlinux-logo
            name: Arch Linux
            prettyName: Arch Linux
            privacyPolicyURL: https://terms.archlinux.org/docs/privacy-policy/
            supportURL: https://bbs.archlinux.org/
          pathListSeparator: ":"
          pathSeparator: /
          rawHomeDir: $WORK/home/user
          sourceDir: $WORK/home/user/.local/share/chezmoi
          uid: "1002"
          username: builduser
          version:
            builtBy: testscript
            commit: HEAD
            date: "2026-07-20T20:42:33Z"
            version: v2.0.0+test
          windowsVersion: {}
          workingTree: $WORK/home/user/.local/share/chezmoi
        uniqueKey: uniqueValue
        > stdout 'chezmoi:'
        > stdout 'uniqueKey: uniqueValue'
        PASS
        
=== CONT  TestScript/issue1237
=== NAME  TestScript/issue1832
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] skip 'UNIX only'
        # test that chezmoi add succeeds when changing the permissions of an intermediate directory (0.096s)
        > exec chezmoi add $HOME/.config/fish/config
        > chmod 700 $HOME/.config
        > exec chezmoi add --force --recursive=false $HOME/.config
        PASS
        
=== CONT  TestScript/issue1213
=== NAME  TestScript/targetpath
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] skip 'test requires path separator to be forward slash'
        > mksourcedir
        # test that chezmoi target-path without arguments prints the target directory (0.064s)
        > exec chezmoi target-path
        [stdout]
        $WORK/home/user
        > stdout ^${HOME@R}$
        # test that chezmoi target-path prints the target path of a directory (0.104s)
        > exec chezmoi target-path $CHEZMOISOURCEDIR/dot_dir/exact_subdir
        [stdout]
        $WORK/home/user/.dir/subdir
        > stdout ^${HOME@R}/.dir/subdir$
        # test that chezmoi target-path prints the target path of a file (0.119s)
        > exec chezmoi target-path $CHEZMOISOURCEDIR/dot_dir/exact_subdir/file
        [stdout]
        $WORK/home/user/.dir/subdir/file
        > stdout ^${HOME@R}/.dir/subdir/file$
        # test that chezmoi target-path prints the target path of a script (0.191s)
        > exec chezmoi target-path $CHEZMOISOURCEDIR/run_script
        [stdout]
        $WORK/home/user/script
        > stdout ^${HOME@R}/script$
        # test that chezmoi target-path prints the target path of a symlink (0.188s)
        > exec chezmoi target-path $CHEZMOISOURCEDIR/symlink_dot_symlink
        [stdout]
        $WORK/home/user/.symlink
        > stdout ^${HOME@R}/.symlink$
        > chhome home2/user
        # test that chezmoi target-path respects .chezmoiroot (0.109s)
        > exec chezmoi target-path $CHEZMOISOURCEDIR/home/dot_file
        [stdout]
        $WORK/home2/user/.file
        > stdout ^${HOME@R}/\.file$
        # test that chezmoi target-path respects .chezmoiscripts in .chezmoiroot (0.100s)
        > exec chezmoi target-path $CHEZMOISOURCEDIR/home/.chezmoiscripts/run_script.sh
        [stdout]
        $WORK/home2/user/.chezmoiscripts/script.sh
        > stdout ^${HOME@R}/\.chezmoiscripts/script\.sh$
        PASS
        
=== CONT  TestScript/issue1161
=== NAME  TestScript/state_unix
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] skip 'UNIX only'
        # test that the persistent state is only created on demand (0.107s)
        > exec chezmoi state dump --format=yaml
        [stdout]
        configState: {}
        entryState: {}
        gitHubKeysState: {}
        gitHubLatestReleaseState: {}
        gitHubReleasesState: {}
        gitHubTagsState: {}
        gitHubVersionReleaseState: {}
        gitRepoExternalState: {}
        scriptState: {}
        > cmp stdout golden/dump.yaml
        > ! exists $CHEZMOICONFIGDIR/chezmoistate.boltdb
        # test that chezmoi apply updates the persistent state (0.070s)
        > exec chezmoi apply --force
        [stdout]
        script
        > exists $CHEZMOICONFIGDIR/chezmoistate.boltdb
        # test that the persistent state records that script was run (0.073s)
        > exec chezmoi state dump --format=yaml
        [stdout]
        configState: {}
        entryState:
          $WORK/home/user/script.sh:
            contentsSHA256: 70396a619400b7f78dbb83ab8ddb76ffe0b8e31557e64bab2ca9677818a52135
            type: script
        gitHubKeysState: {}
        gitHubLatestReleaseState: {}
        gitHubReleasesState: {}
        gitHubTagsState: {}
        gitHubVersionReleaseState: {}
        gitRepoExternalState: {}
        scriptState:
          70396a619400b7f78dbb83ab8ddb76ffe0b8e31557e64bab2ca9677818a52135:
            name: script.sh
            runAt: "2026-07-20T20:42:32.634447788Z"
        > stdout 70396a619400b7f78dbb83ab8ddb76ffe0b8e31557e64bab2ca9677818a52135:
        > stdout runAt:
        # test that chezmoi get-bucket gets a bucket (0.071s)
        > exec chezmoi state get-bucket --bucket=scriptState
        [stdout]
        {
          "70396a619400b7f78dbb83ab8ddb76ffe0b8e31557e64bab2ca9677818a52135": {
            "name": "script.sh",
            "runAt": "2026-07-20T20:42:32.634447788Z"
          }
        }
        > stdout "runAt":
        # test that chezmoi delete-bucket deletes a bucket (0.258s)
        > exec chezmoi state delete-bucket --bucket=scriptState
        > exec chezmoi state dump --format=yaml
        [stdout]
        configState: {}
        entryState:
          $WORK/home/user/script.sh:
            contentsSHA256: 70396a619400b7f78dbb83ab8ddb76ffe0b8e31557e64bab2ca9677818a52135
            type: script
        gitHubKeysState: {}
        gitHubLatestReleaseState: {}
        gitHubReleasesState: {}
        gitHubTagsState: {}
        gitHubVersionReleaseState: {}
        gitRepoExternalState: {}
        scriptState: {}
        > ! stdout runAt:
        # test that chezmoi state reset removes the persistent state (0.075s)
        > exec chezmoi --force state reset
        > ! exists $CHEZMOICONFIGDIR/chezmoistate.boltdb
        # test that the --persistent-state option sets the persistent state file (0.183s)
        > exec chezmoi apply --force
        [stdout]
        script
        > stdout script
        > exec chezmoi apply --force --persistent-state=$CHEZMOICONFIGDIR${/}chezmoistate2.boltdb
        [stdout]
        script
        > exists $CHEZMOICONFIGDIR${/}chezmoistate2.boltdb
        > stdout script
        > exec chezmoi state dump --format=yaml --persistent-state=$CHEZMOICONFIGDIR${/}chezmoistate2.boltdb
        [stdout]
        configState: {}
        entryState:
          $WORK/home/user/script.sh:
            contentsSHA256: 70396a619400b7f78dbb83ab8ddb76ffe0b8e31557e64bab2ca9677818a52135
            type: script
        gitHubKeysState: {}
        gitHubLatestReleaseState: {}
        gitHubReleasesState: {}
        gitHubTagsState: {}
        gitHubVersionReleaseState: {}
        gitRepoExternalState: {}
        scriptState:
          70396a619400b7f78dbb83ab8ddb76ffe0b8e31557e64bab2ca9677818a52135:
            name: script.sh
            runAt: "2026-07-20T20:42:33.254115815Z"
        > stdout 70396a619400b7f78dbb83ab8ddb76ffe0b8e31557e64bab2ca9677818a52135:
        > stdout runAt:
        PASS
        
=== CONT  TestScript/inittemplatefuncs
=== NAME  TestScript/issue1365
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] skip 'UNIX only'
        # test that chezmoi diff generates the correct output when chezmoi's config file is managed by chezmoi (0.046s)
        > chmod 700 $CHEZMOICONFIGDIR
        > chmod 600 $CHEZMOICONFIGDIR/chezmoi.toml
        > exec chezmoi diff
        [stdout]
        diff --git a/.config/chezmoi/chezmoi.toml b/.config/chezmoi/chezmoi.toml
        index 63caeb2522e9320690143749a6aee71e8fddd300..b9495f6120fb36c4cbda33cb72700c80f1ebb979 100600
        --- a/.config/chezmoi/chezmoi.toml
        +++ b/.config/chezmoi/chezmoi.toml
        @@ -1 +1 @@
        -# dest contents of chezmoi.toml
        +# target contents of chezmoi.toml
        > cmp stdout golden/chezmoi.toml-diff.diff
        # test that chezmoi diff generates the correct output when a custom diff tool is set and the file is in a subdirectory (0.063s)
        > cp golden/chezmoi.toml-custom-diff $CHEZMOICONFIGDIR/chezmoi.toml
        > exec chezmoi diff
        [stdout]
        $WORK/home/user/.config/chezmoi/chezmoi.toml $WORK/.tmp/chezmoi-diff2816302037/.config/chezmoi/chezmoi.toml
        > stdout ^$HOME/\.config/chezmoi/chezmoi\.toml\s+$WORK/.*/\.config/chezmoi/chezmoi\.toml$
        PASS
        
=== CONT  TestScript/initgitlfs
=== NAME  TestScript/bitwarden
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > mockcommand bin/bw
        > mockcommand bin/bws
        > [windows] unix2dos golden/bitwarden-attachment
        # test bitwarden template function (0.193s)
        > exec chezmoi execute-template '{{ (bitwarden "item" "example.com").login.password }}'
        [stdout]
        password-value> stdout ^password-value$
        # test bitwardenFields template function (0.156s)
        > exec chezmoi execute-template '{{ (bitwardenFields "item" "example.com").Hidden.value }}'
        [stdout]
        hidden-value> stdout ^hidden-value$
        # test bitwardenAttachment template function (0.085s)
        > exec chezmoi execute-template '{{ (bitwardenAttachment "filename" "item-id") }}'
        [stdout]
        hidden-file-value
        > cmp stdout golden/bitwarden-attachment
        # test bitwardenAttachmentByRef template function (0.081s)
        > exec chezmoi execute-template '{{ (bitwardenAttachmentByRef "filename" "item" "example.com") }}'
        [stdout]
        hidden-file-value
        > cmp stdout golden/bitwarden-attachment
        # test bitwardenSecrets template function (0.118s)
        > exec chezmoi execute-template '{{ (bitwardenSecrets "be8e0ad8-d545-4017-a55a-b02f014d4158" "0.48c78342-1635-48a6-accd-afbe01336365.C0tMmQqHnAp1h0gL8bngprlPOYutt0:B3h5D+YgLvFiQhWkIq6Bow==").value }}'
        [stdout]
        0.982492bc-7f37-4475-9e60> stdout '^0\.982492bc-7f37-4475-9e60$'
        PASS
        
=== CONT  TestScript/initconfig
=== NAME  TestScript/hooks
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] unix2dos golden/stdout
        # test that chezmoi add runs pre and post hooks (0.131s)
        > exec chezmoi add $HOME${/}.file
        [stdout]
        pre-add-hook
        pre-read-source-state-hook
        post-read-source-state-hook
        post-add-hook
        > cmp stdout golden/stdout
        # test that chezmoi does not run irrelevant hooks (0.034s)
        > exec chezmoi help
        [stdout]
        Manage your dotfiles across multiple diverse machines, securely
        
        Usage:
          chezmoi [command]
        
        Documentation commands:
          doctor               Check your system for potential problems
          help                 Print help about a command
          license              Print license
        
        Daily commands:
          add                  Add an existing file, directory, or symlink to the source state
          apply                Update the destination directory to match the target state
          chattr               Change the attributes of a target in the source state
          diff                 Print the diff between the target state and the destination state
          edit                 Edit the source state of a target
          forget               Remove a target from the source state
          init                 Setup the source directory and update the destination directory to match the target state
          merge                Perform a three-way merge between the destination state, the source state, and the target state
          merge-all            Perform a three-way merge for each modified file
          re-add               Re-add modified files
          status               Show the status of targets
          update               Pull and apply any changes
        
        Template commands:
          cat                  Print the target contents of a file, script, or symlink
          data                 Print the template data
          execute-template     Execute the given template(s)
        
        Advanced commands:
          cd                   Launch a shell in the source directory
          edit-config          Edit the configuration file
          edit-config-template Edit the configuration file template
          generate             Generate a file for use with chezmoi
          git                  Run git in the source directory
          ignored              Print ignored targets
          managed              List the managed entries in the destination directory
          unmanaged            List the unmanaged files in the destination directory
          verify               Exit with success if the destination state matches the target state, fail otherwise
        
        Encryption commands:
          age                  Interact with age
          age-keygen           Generate an age identity or convert an age identity to an age recipient
          decrypt              Decrypt file or standard input
          edit-encrypted       Edit an encrypted file
          encrypt              Encrypt file or standard input
        
        Remote commands:
          docker               Use your dotfiles in a Docker container
          ssh                  SSH to a host and initialize dotfiles
        
        Migration commands:
          archive              Generate a tar archive of the target state
          destroy              Permanently delete an entry from the source state, the destination directory, and the state
          import               Import an archive into the source state
          purge                Purge chezmoi's configuration and data
          upgrade              Upgrade chezmoi to the latest released version
        
        Internal commands:
          cat-config           Print the configuration file
          completion           Generate shell completion code
          dump                 Generate a dump of the target state
          dump-config          Dump the configuration values
          secret               Interact with a secret manager
          source-path          Print the source path of a target
          state                Manipulate the persistent state
          target-path          Print the target path of a source path
        
        Flags:
              --age-recipient string                           Override age recipient
              --age-recipient-file string                      Override age recipient
              --cache path                                     Set cache directory (default $WORK/home/user/.cache/chezmoi)
              --color bool|auto                                Colorize output (default auto)
          -c, --config path                                    Set config file
              --config-format <none>|json|toml|yaml            Set config file format
              --debug                                          Include debug information in output
          -D, --destination path                               Set destination directory (default $WORK/home/user)
          -n, --dry-run                                        Do not make any modifications to the destination directory
              --error-on-conflict                              Error on conflict
              --force                                          Make all changes without prompting
              --interactive                                    Prompt for all changes
          -k, --keep-going                                     Keep going as far as possible after an error
              --less-interactive                               Prompt for changed or pre-existing targets
              --mode file|symlink                              Mode (default file)
              --no-pager                                       Do not use the pager
              --no-tty                                         Do not attempt to get a TTY for prompts
          -o, --output path                                    Write output to path instead of stdout
              --override-data string                           Override data
              --override-data-file path                        Override data with file
              --persistent-state path                          Set persistent state file
              --progress bool|auto                             Display progress bars (default auto)
          -R, --refresh-externals always|auto|never[=always]   Refresh external cache (default auto)
              --skip-secrets                                   Skip all templates containing secrets
          -S, --source path                                    Set source directory (default $WORK/home/user/.local/share/chezmoi)
              --source-path                                    Specify targets by source path
              --use-builtin-age bool|auto                      Use builtin age (default auto)
              --use-builtin-diff                               Use builtin diff
              --use-builtin-git bool|auto                      Use builtin git (default auto)
          -v, --verbose                                        Make output more verbose
          -W, --working-tree path                              Set working tree directory
        
        Use "chezmoi [command] --help" for more information about a command.
        > ! stdout add-hook
        > ! stdout source-state-hook
        PASS
        
=== CONT  TestScript/init
=== NAME  TestScript/issue1666
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] skip 'UNIX only'
        # test that chezmoi apply --verbose does not display scripts that are run always, but does run them (0.162s)
        > exec chezmoi apply --verbose
        [stdout]
        script
        > cmp stdout golden/apply
        > ! stderr .
        PASS
        
=== CONT  TestScript/importzip
=== NAME  TestScript/initgitlfs
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] skip 'UNIX only'
        > chmod 755 bin/git
        # test that chezmoi init --git-lfs runs git lfs pull after cloning (0.058s)
        > exec chezmoi init --git-lfs user
        [stdout]
        git clone --recurse-submodules https://github.com/user/dotfiles.git $WORK/home/user/.local/share/chezmoi
        git lfs pull
        > cmpenv stdout golden/init
        PASS
        
=== CONT  TestScript/importxz
=== NAME  TestScript/editencrypted
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > mkageconfig
        > [windows] unix2dos golden/edited-plaintext
        > [windows] unix2dos golden/plaintext
        # test that chezmoi edit-encrypted edits encrypted files (0.208s)
        > exec chezmoi encrypt -o $HOME/ciphertext golden/plaintext
        > exec chezmoi edit-encrypted $HOME/ciphertext
        [stderr]
        chezmoi: warning: $WORK/bin/editor $WORK/.tmp/chezmoi-edit-encrypted2863217109/ciphertext: returned in less than 1s
        > exec chezmoi decrypt $HOME/ciphertext
        [stdout]
        # contents of plaintext
        # edited
        > cmp stdout golden/edited-plaintext
        PASS
        
=== CONT  TestScript/importtarzst
=== NAME  TestScript/status
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # FIXME add more tests (0.000s)
        > mkhomedir golden
        > mksourcedir
        # test that chezmoi status lists all files to be added (0.095s)
        > exec chezmoi status
        [stdout]
         A .create
         A .dir
         A .dir/file
         A .dir/subdir
         A .dir/subdir/file
         A .empty
         A .executable
         A .file
         A .private
         A .readonly
         A .symlink
         A .template
        > cmp stdout golden/status
        # test that the --path-style=absolute works as expected (0.044s)
        > [unix] exec chezmoi status --path-style=absolute
        [stdout]
         A $WORK/home/user/.create
         A $WORK/home/user/.dir
         A $WORK/home/user/.dir/file
         A $WORK/home/user/.dir/subdir
         A $WORK/home/user/.dir/subdir/file
         A $WORK/home/user/.empty
         A $WORK/home/user/.executable
         A $WORK/home/user/.file
         A $WORK/home/user/.private
         A $WORK/home/user/.readonly
         A $WORK/home/user/.symlink
         A $WORK/home/user/.template
        > [unix] cmpenv stdout golden/status-absolute-flag
        # test that chezmoi status lists all files to be added (0.108s)
        > exec chezmoi status
        [stdout]
         A .create
         A .dir
         A .dir/file
         A .dir/subdir
         A .dir/subdir/file
         A .empty
         A .executable
         A .file
         A .private
         A .readonly
         A .symlink
         A .template
        > cmp stdout golden/status
        # test that chezmoi status omits applied files (0.317s)
        > exec chezmoi apply --force $HOME${/}.file
        > exec chezmoi status
        [stdout]
         A .create
         A .dir
         A .dir/file
         A .dir/subdir
         A .dir/subdir/file
         A .empty
         A .executable
         A .private
         A .readonly
         A .symlink
         A .template
        > cmp stdout golden/status-except-dot-file
        # test that chezmoi status is empty after apply (0.132s)
        > exec chezmoi apply --force
        > exec chezmoi status
        > ! stdout .
        # test that chezmoi status identifies files that have been modified in the destination directory (0.068s)
        > edit $HOME/.file
        > exec chezmoi status
        [stdout]
        MM .file
        > cmp stdout golden/status-modified-file
        # test that chezmoi status does not emit status for equivalent modifications (0.141s)
        > edit $CHEZMOISOURCEDIR/dot_file
        > exec chezmoi status
        > ! stdout .
        # test that the pathStyle config option works as expected (0.050s)
        > [unix] chhome home2/user
        > [unix] mksourcedir
        > [unix] exec chezmoi status
        [stdout]
         A $WORK/home2/user/.create
         A $WORK/home2/user/.dir
         A $WORK/home2/user/.dir/file
         A $WORK/home2/user/.dir/subdir
         A $WORK/home2/user/.dir/subdir/file
         A $WORK/home2/user/.empty
         A $WORK/home2/user/.executable
         A $WORK/home2/user/.file
         A $WORK/home2/user/.private
         A $WORK/home2/user/.readonly
         A $WORK/home2/user/.symlink
         A $WORK/home2/user/.template
        > [unix] cmpenv stdout golden/status-absolute-config
        PASS
        
=== CONT  TestScript/import
=== NAME  TestScript/importtarzst
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [(openbsd||windows)] skip 'tar does not support zstd compression'
        > [!exec:zstd] skip 'zstd not found in $PATH'
        > exec tar -c -f archive.tar.zst --use-compress-program zstd archive
        # test that chezmoi import imports a tar.zst archive (0.061s)
        > exec chezmoi import --destination=$HOME${/}.dir --strip-components=1 archive.tar.zst
        > cmp $CHEZMOISOURCEDIR/dot_dir/dir/file golden/dot_dir/dir/file
        PASS
        
=== NAME  TestScript/importzip
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [!exec:zip] skip 'zip not found in $PATH'
        > exec zip -r archive.zip archive
        [stdout]
          adding: archive/ (stored 0%)
          adding: archive/dir/ (stored 0%)
          adding: archive/dir/file (stored 0%)
        # test that chezmoi import imports a zip archive (0.099s)
        > exec chezmoi import --destination=$HOME${/}.dir --strip-components=1 archive.zip
        > cmp $CHEZMOISOURCEDIR/dot_dir/dir/file golden/dot_dir/dir/file
        PASS
        
=== CONT  TestScript/ignored
=== CONT  TestScript/ignore
=== NAME  TestScript/issue1237
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi add does not add ignored directories (0.203s)
        > exec chezmoi add ~/.config
        [stderr]
        chezmoi: warning: ignoring .config/Bitwarden CLI
        > exec chezmoi managed
        [stdout]
        .config
        > cmp stdout golden/managed
        > exists $CHEZMOISOURCEDIR/dot_config/.keep
        PASS
        
=== CONT  TestScript/hooks_windows
    cmd.go:380: Windows only
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [!windows] skip 'Windows only'
        
=== CONT  TestScript/applytype
=== NAME  TestScript/editconfigtemplate
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] unix2dos golden/edited
        > [windows] unix2dos golden/edited-chezmoi.yaml
        > [windows] unix2dos home3/user/.config/chezmoi/chezmoi.yaml
        > [windows] unix2dos home4/user/.local/share/chezmoi/home/.chezmoi.yaml.tmpl
        # test that chezmoi edit-config-template creates a new config file template (0.073s)
        > exec chezmoi edit-config-template
        [stderr]
        chezmoi: warning: $WORK/bin/editor $WORK/home/user/.local/share/chezmoi/.chezmoi.toml.tmpl: returned in less than 1s
        > cmp $CHEZMOISOURCEDIR/.chezmoi.toml.tmpl golden/edited
        > chhome home2/user
        # test that chezmoi edit-config-template creates a new config file template in .chezmoiroot (0.102s)
        > exec chezmoi edit-config-template
        [stderr]
        chezmoi: warning: $WORK/bin/editor $WORK/home2/user/.local/share/chezmoi/home/.chezmoi.toml.tmpl: returned in less than 1s
        > cmp $CHEZMOISOURCEDIR/home/.chezmoi.toml.tmpl golden/edited
        > chhome home3/user
        # test that chezmoi edit-config-template creates a new config file template from an existing config file (0.151s)
        > exec chezmoi edit-config-template
        [stderr]
        chezmoi: warning: $WORK/bin/editor $WORK/home3/user/.local/share/chezmoi/.chezmoi.yaml.tmpl: returned in less than 1s
        > cmp $CHEZMOISOURCEDIR/.chezmoi.yaml.tmpl golden/edited-chezmoi.yaml
        > chhome home4/user
        # test that chezmoi edit-config-template edits an existing config file template (0.057s)
        > exec chezmoi edit-config-template
        [stderr]
        chezmoi: warning: $WORK/bin/editor $WORK/home4/user/.local/share/chezmoi/home/.chezmoi.yaml.tmpl: returned in less than 1s
        > cmp $CHEZMOISOURCEDIR/home/.chezmoi.yaml.tmpl golden/edited-chezmoi.yaml
        PASS
        
=== CONT  TestScript/archivetar
=== NAME  TestScript/ignored
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > mksourcedir
        # test that chezmoi ignored prints the list of ignored paths (0.066s)
        > exec chezmoi ignored
        [stdout]
        .dir/file
        .dir/subdir
        .readonly
        .template
        > cmp stdout golden/ignored
        PASS
        
=== CONT  TestScript/applyverbose
=== NAME  TestScript/issue1161
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi does not follow symlinks in the source directory if the file should be ignored (0.159s)
        > symlink $CHEZMOISOURCEDIR/.HASH_dot_file -> non_existent_file
        > exec chezmoi status
        > rm $CHEZMOISOURCEDIR/.HASH_dot_file
        > exec chezmoi status
        # test that chezmoi does follow symlinks in the source directory if the file should not be ignored (0.100s)
        > symlink $CHEZMOISOURCEDIR/.chezmoifile -> non_existent_file
        > ! exec chezmoi status
        [stderr]
        chezmoi: stat $WORK/home/user/.local/share/chezmoi/.chezmoifile: no such file or directory
        [exit status 1]
        > [unix] stderr 'no such file or directory'
        > [windows] stderr 'The system cannot find the file specified'
        > rm $CHEZMOISOURCEDIR/.chezmoifile
        > exec chezmoi status
        PASS
        
=== CONT  TestScript/applystate
=== NAME  TestScript/importxz
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [(openbsd||windows)] skip 'tar does not support XZ compression'
        > [!exec:xz] skip 'xz not found in $PATH'
        > exec tar cJf archive.tar.xz archive
        # test that chezmoi import imports a tar.xz archive (0.162s)
        > exec chezmoi import --destination=$HOME${/}.dir --strip-components=1 archive.tar.xz
        > cmp $CHEZMOISOURCEDIR/dot_dir/dir/file golden/dot_dir/dir/file
        PASS
        
=== CONT  TestScript/generate
=== NAME  TestScript/applyverbose
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi apply --dry-run --verbose does not show scripts when scripts are excluded from diffs (0.095s)
        > exec chezmoi apply --dry-run --verbose
        [stdout]
        diff --git a/.file b/.file
        new file mode 100644
        index 0000000000000000000000000000000000000000..8a52cb9ce9551221716a53786ad74104c5902362
        --- /dev/null
        +++ b/.file
        @@ -0,0 +1 @@
        +# contents of .file
        > [unix] [umask:002] cmp stdout golden/apply-umask-002.diff
        > [unix] [umask:022] cmp stdout golden/apply-umask-022.diff
        > [windows] cmp stdout golden/apply-windows.diff
        > chhome home2/user
        # test that chezmoi apply --dry-run --force --verbose does not show removes when removes are excluded from diffs (0.062s)
        > exec chezmoi apply --dry-run --force --verbose
        > ! stdout .
        PASS
        
=== CONT  TestScript/help
=== NAME  TestScript/scriptonchange_unix
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] skip 'UNIX only'
        # test that chezmoi apply runs onchange scripts the first time (0.203s)
        > mkdir $CHEZMOISOURCEDIR
        > cp golden/script-one.sh $CHEZMOISOURCEDIR/run_onchange_script.sh
        > exec chezmoi apply
        [stdout]
        one
        > stdout one
        > exec chezmoi state get --bucket=entryState --key=$HOME/script.sh
        [stdout]
        {
          "type": "script",
          "contentsSHA256": "a07f0271151ee0271ed379ebbddc5ef49d0f625417c8fe23254179e56f98d2df"
        }
        > cmp stdout golden/script-one-state.json
        # test that chezmoi apply does not run onchange scripts when their contents are not changed (0.115s)
        > exec chezmoi apply
        > ! stdout .
        # test that chezmoi status does not print that it will run onchange scripts when their contents are not changed (0.170s)
        > exec chezmoi status
        > ! stdout .
        # test that chezmoi status does print that it will run onchange scripts when their contents are changed (0.055s)
        > cp golden/script-two.sh $CHEZMOISOURCEDIR/run_onchange_script.sh
        > exec chezmoi status
        [stdout]
         R script.sh
        > cmp stdout golden/status
        # test that chezmoi apply runs onchange scripts when their contents are changed (0.167s)
        > exec chezmoi apply
        [stdout]
        two
        > stdout two
        > exec chezmoi state get --bucket=entryState --key=$HOME/script.sh
        [stdout]
        {
          "type": "script",
          "contentsSHA256": "7c8d714586cecf4f0ffb735ad10334df98428bc5282c0d0a6b78f5c074365159"
        }
        > cmp stdout golden/script-two-state.json
        # test that chezmoi apply runs onchange scripts when their contents are reverted to a previous state (0.159s)
        > cp golden/script-one.sh $CHEZMOISOURCEDIR/run_onchange_script.sh
        > exec chezmoi apply
        [stdout]
        one
        > stdout one
        > exec chezmoi state get --bucket=entryState --key=$HOME/script.sh
        [stdout]
        {
          "type": "script",
          "contentsSHA256": "a07f0271151ee0271ed379ebbddc5ef49d0f625417c8fe23254179e56f98d2df"
        }
        > cmp stdout golden/script-one-state.json
        PASS
        
=== CONT  TestScript/gpgencryptionsymmetric
gpg: Warning: using insecure memory!
gpg: keybox '/tmp/test-gpg-homedir3796306874/pubring.kbx' created
=== NAME  TestScript/applystate
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [!exec:sha256sum] skip 'sha256sum not found in path'
        > mksourcedir
        # test that chezmoi apply does not modify the state if nothing needs to be done (0.186s)
        > exec chezmoi apply --force
        > exec sha256sum $CHEZMOICONFIGDIR/chezmoistate.boltdb
        [stdout]
        4077b7852cf0920ff177bf697410194c1a25a607f1e2ebe6243e1d9096421b6f  $WORK/home/user/.config/chezmoi/chezmoistate.boltdb
        > cp stdout chezmoistate.boltdb-sha256-pre-apply
        > exec chezmoi apply --force
        > exec sha256sum $CHEZMOICONFIGDIR/chezmoistate.boltdb
        [stdout]
        4077b7852cf0920ff177bf697410194c1a25a607f1e2ebe6243e1d9096421b6f  $WORK/home/user/.config/chezmoi/chezmoistate.boltdb
        > cmp stdout chezmoistate.boltdb-sha256-pre-apply
        PASS
        
=== CONT  TestScript/gpgencryption
gpg: Warning: using insecure memory!
gpg: keybox '/tmp/test-gpg-homedir333374838/pubring.kbx' created
=== NAME  TestScript/archivetar
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > mksourcedir
        > [windows] unix2dos golden/archive-tar
        > exec chezmoi archive --output=archive.tar
        > exec tar -tf archive.tar
        [stdout]
        .create
        .dir/
        .dir/file
        .dir/subdir/
        .dir/subdir/file
        .empty
        .executable
        .file
        .private
        .readonly
        .symlink
        .template
        > [!openbsd] cmp stdout golden/archive-tar
        > [openbsd] cmp stdout golden/archive-tar-openbsd
        > exec chezmoi archive --gzip --output=archive.tar.gz
        > exec tar -tzf archive.tar.gz
        [stdout]
        .create
        .dir/
        .dir/file
        .dir/subdir/
        .dir/subdir/file
        .empty
        .executable
        .file
        .private
        .readonly
        .symlink
        .template
        > [!openbsd] cmp stdout golden/archive-tar
        > [openbsd] cmp stdout golden/archive-tar-openbsd
        PASS
        
=== CONT  TestScript/gpg
gpg: Warning: using insecure memory!
gpg: keybox '/tmp/test-gpg-homedir1473305067/pubring.kbx' created
=== NAME  TestScript/applytype
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > mkhomedir golden
        > mkhomedir
        > mksourcedir
        # test that chezmoi apply replaces a directory with a file (0.111s)
        > rm $HOME/.file
        > mkdir $HOME/.file
        > exec chezmoi apply --force
        > cmp $HOME/.file golden/.file
        # test that chezmoi apply replaces a file with a directory (0.056s)
        > rm $HOME/.dir
        > mkfile $HOME/.dir
        > exec chezmoi apply --force
        > cmp $HOME/.dir/file golden/.dir/file
        > cmp $HOME/.dir/subdir/file golden/.dir/subdir/file
        # test that chezmoi apply replaces a file with a symlink (0.110s)
        > rm $HOME/.symlink
        > mkfile $HOME/.symlink
        > exec chezmoi apply --force
        > cmp $HOME/.symlink golden/.symlink
        # test that chezmoi apply replaces a symlink with a directory (0.064s)
        > rm $HOME/.dir/subdir
        > symlink $HOME/.dir/subdir -> .file
        > exec chezmoi apply --force
        > cmp $HOME/.dir/file golden/.dir/file
        > cmp $HOME/.dir/subdir/file golden/.dir/subdir/file
        PASS
        
=== CONT  TestScript/gopass
=== NAME  TestScript/generate
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > mkgitconfig
        # test that chezmoi generate install.sh generates a shell script (0.032s)
        > exec chezmoi generate install.sh
        [stdout]
        #!/bin/sh
        
        # -e: exit on error
        # -u: exit on unset variables
        set -eu
        
        if ! chezmoi="$(command -v chezmoi)"; then
        	bin_dir="${HOME}/.local/bin"
        	chezmoi="${bin_dir}/chezmoi"
        	echo "Installing chezmoi to '${chezmoi}'" >&2
        	if command -v curl >/dev/null; then
        		chezmoi_install_script="$(curl -fsSL https://get.chezmoi.io)"
        	elif command -v wget >/dev/null; then
        		chezmoi_install_script="$(wget -qO- https://get.chezmoi.io)"
        	else
        		echo "To install chezmoi, you must have curl or wget installed." >&2
        		exit 1
        	fi
        	sh -c "${chezmoi_install_script}" -- -b "${bin_dir}"
        	unset chezmoi_install_script bin_dir
        fi
        
        # POSIX way to get script's dir: https://stackoverflow.com/a/29834779/12156188
        script_dir="$(cd -P -- "$(dirname -- "$(command -v -- "$0")")" && pwd -P)"
        
        set -- init --apply --source="${script_dir}"
        
        echo "Running 'chezmoi $*'" >&2
        # exec: replace current process with chezmoi
        exec "$chezmoi" "$@"
        > stdout '#!/bin/sh'
        > [!exec:git] skip 'git not found in $PATH'
        # test that chezmoi generate git-commit-message generates a git commit message (0.192s)
        > exec git --git-dir=$CHEZMOISOURCEDIR/.git init
        [stdout]
        Initialized empty Git repository in $WORK/home/user/.local/share/chezmoi/.git/
        > exec chezmoi git add .
        > exec chezmoi generate git-commit-message
        [stdout]
        Add .file
        > stdout '^Add .file$'
        PASS
        
=== CONT  TestScript/gitleaks
=== NAME  TestScript/help
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > exec chezmoi help
        [stdout]
        Manage your dotfiles across multiple diverse machines, securely
        
        Usage:
          chezmoi [command]
        
        Documentation commands:
          doctor               Check your system for potential problems
          help                 Print help about a command
          license              Print license
        
        Daily commands:
          add                  Add an existing file, directory, or symlink to the source state
          apply                Update the destination directory to match the target state
          chattr               Change the attributes of a target in the source state
          diff                 Print the diff between the target state and the destination state
          edit                 Edit the source state of a target
          forget               Remove a target from the source state
          init                 Setup the source directory and update the destination directory to match the target state
          merge                Perform a three-way merge between the destination state, the source state, and the target state
          merge-all            Perform a three-way merge for each modified file
          re-add               Re-add modified files
          status               Show the status of targets
          update               Pull and apply any changes
        
        Template commands:
          cat                  Print the target contents of a file, script, or symlink
          data                 Print the template data
          execute-template     Execute the given template(s)
        
        Advanced commands:
          cd                   Launch a shell in the source directory
          edit-config          Edit the configuration file
          edit-config-template Edit the configuration file template
          generate             Generate a file for use with chezmoi
          git                  Run git in the source directory
          ignored              Print ignored targets
          managed              List the managed entries in the destination directory
          unmanaged            List the unmanaged files in the destination directory
          verify               Exit with success if the destination state matches the target state, fail otherwise
        
        Encryption commands:
          age                  Interact with age
          age-keygen           Generate an age identity or convert an age identity to an age recipient
          decrypt              Decrypt file or standard input
          edit-encrypted       Edit an encrypted file
          encrypt              Encrypt file or standard input
        
        Remote commands:
          docker               Use your dotfiles in a Docker container
          ssh                  SSH to a host and initialize dotfiles
        
        Migration commands:
          archive              Generate a tar archive of the target state
          destroy              Permanently delete an entry from the source state, the destination directory, and the state
          import               Import an archive into the source state
          purge                Purge chezmoi's configuration and data
          upgrade              Upgrade chezmoi to the latest released version
        
        Internal commands:
          cat-config           Print the configuration file
          completion           Generate shell completion code
          dump                 Generate a dump of the target state
          dump-config          Dump the configuration values
          secret               Interact with a secret manager
          source-path          Print the source path of a target
          state                Manipulate the persistent state
          target-path          Print the target path of a source path
        
        Flags:
              --age-recipient string                           Override age recipient
              --age-recipient-file string                      Override age recipient
              --cache path                                     Set cache directory (default $WORK/home/user/.cache/chezmoi)
              --color bool|auto                                Colorize output (default auto)
          -c, --config path                                    Set config file
              --config-format <none>|json|toml|yaml            Set config file format
              --debug                                          Include debug information in output
          -D, --destination path                               Set destination directory (default $WORK/home/user)
          -n, --dry-run                                        Do not make any modifications to the destination directory
              --error-on-conflict                              Error on conflict
              --force                                          Make all changes without prompting
              --interactive                                    Prompt for all changes
          -k, --keep-going                                     Keep going as far as possible after an error
              --less-interactive                               Prompt for changed or pre-existing targets
              --mode file|symlink                              Mode (default file)
              --no-pager                                       Do not use the pager
              --no-tty                                         Do not attempt to get a TTY for prompts
          -o, --output path                                    Write output to path instead of stdout
              --override-data string                           Override data
              --override-data-file path                        Override data with file
              --persistent-state path                          Set persistent state file
              --progress bool|auto                             Display progress bars (default auto)
          -R, --refresh-externals always|auto|never[=always]   Refresh external cache (default auto)
              --skip-secrets                                   Skip all templates containing secrets
          -S, --source path                                    Set source directory (default $WORK/home/user/.local/share/chezmoi)
              --source-path                                    Specify targets by source path
              --use-builtin-age bool|auto                      Use builtin age (default auto)
              --use-builtin-diff                               Use builtin diff
              --use-builtin-git bool|auto                      Use builtin git (default auto)
          -v, --verbose                                        Make output more verbose
          -W, --working-tree path                              Set working tree directory
        
        Use "chezmoi [command] --help" for more information about a command.
        > stdout 'Manage your dotfiles across multiple diverse machines, securely'
        > exec chezmoi help add
        [stdout]
        Description
          Add targets to the source state. If any target is already in the source
          state, then its source state is replaced with its current state in the
          destination directory.
        
        Usage:
          chezmoi add targets... [flags]
        
        Aliases:
          add, manage
        
        Examples:
          chezmoi add ~/.bashrc
          chezmoi add ~/.gitconfig --template
          chezmoi add ~/.ssh/id_rsa --encrypt
          chezmoi add ~/.vim --recursive
          chezmoi add ~/.oh-my-zsh --exact --recursive
        
        Flags:
          -a, --autotemplate                   Generate the template when adding files as templates
              --create                         Add files that should exist, irrespective of their contents
              --encrypt                        Encrypt files
              --exact                          Add directories exactly
          -x, --exclude types                  Exclude entry types (default none)
          -f, --follow                         Add symlink targets instead of symlinks
          -i, --include types                  Include entry types (default all)
              --new                            Create new file if target does not exist
          -p, --prompt                         Prompt before adding each entry
          -q, --quiet                          Suppress warnings
          -r, --recursive                      Recurse into subdirectories (default true)
              --secrets error|ignore|warning   Scan for secrets when adding unencrypted files (default warning)
          -T, --template                       Add files as templates
              --template-symlinks              Add symlinks with target in source or home dirs as templates
        
        Global Flags:
              --age-recipient string                           Override age recipient
              --age-recipient-file string                      Override age recipient
              --cache path                                     Set cache directory (default $WORK/home/user/.cache/chezmoi)
              --color bool|auto                                Colorize output (default auto)
          -c, --config path                                    Set config file
              --config-format <none>|json|toml|yaml            Set config file format
              --debug                                          Include debug information in output
          -D, --destination path                               Set destination directory (default $WORK/home/user)
          -n, --dry-run                                        Do not make any modifications to the destination directory
              --error-on-conflict                              Error on conflict
              --force                                          Make all changes without prompting
              --interactive                                    Prompt for all changes
          -k, --keep-going                                     Keep going as far as possible after an error
              --less-interactive                               Prompt for changed or pre-existing targets
              --mode file|symlink                              Mode (default file)
              --no-pager                                       Do not use the pager
              --no-tty                                         Do not attempt to get a TTY for prompts
          -o, --output path                                    Write output to path instead of stdout
              --override-data string                           Override data
              --override-data-file path                        Override data with file
              --persistent-state path                          Set persistent state file
              --progress bool|auto                             Display progress bars (default auto)
          -R, --refresh-externals always|auto|never[=always]   Refresh external cache (default auto)
              --skip-secrets                                   Skip all templates containing secrets
          -S, --source path                                    Set source directory (default $WORK/home/user/.local/share/chezmoi)
              --source-path                                    Specify targets by source path
              --use-builtin-age bool|auto                      Use builtin age (default auto)
              --use-builtin-diff                               Use builtin diff
              --use-builtin-git bool|auto                      Use builtin git (default auto)
          -v, --verbose                                        Make output more verbose
          -W, --working-tree path                              Set working tree directory
        > stdout 'Add targets to the source state\.'
        PASS
        
=== CONT  TestScript/githubtemplatefuncs
    cmd.go:380: $CHEZMOI_GITHUB_TOKEN not set
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [!env:CHEZMOI_GITHUB_TOKEN] skip '$CHEZMOI_GITHUB_TOKEN not set'
        
=== CONT  TestScript/git
=== NAME  TestScript/issue1213
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [!exec:git] skip 'git not found in $PATH'
        > mkgitconfig
        # create a repo (0.234s)
        > exec chezmoi init
        > exists $CHEZMOISOURCEDIR/.git
        > cp golden/.chezmoi.toml.tmpl $CHEZMOISOURCEDIR
        > cp golden/dot_file.tmpl $CHEZMOISOURCEDIR
        > exec chezmoi git add .
        > exec chezmoi git commit -- --message 'Initial commit'
        [stdout]
        [master (root-commit) d99b380] Initial commit
         2 files changed, 3 insertions(+)
         create mode 100644 .chezmoi.toml.tmpl
         create mode 100644 dot_file.tmpl
        > chhome home2/user
        # test that chezmoi init --apply makes config template data available (0.359s)
        > mkgitconfig
        > exec chezmoi init --apply file://$WORK/home/user/.local/share/chezmoi
        [stderr]
        Cloning into '$WORK/home2/user/.local/share/chezmoi'...
        > cmp $HOME/.file golden/.file
        PASS
        
=== CONT  TestScript/editconfig
=== NAME  TestScript/configstate
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi init creates a config file and updates the state (0.129s)
        > exec chezmoi init
        > cmp $CHEZMOICONFIGDIR/chezmoi.toml golden/chezmoi.toml
        > exec chezmoi state dump --format=yaml
        [stdout]
        configState:
          configState:
            configTemplateContentsSHA256: af43121a524340707b84e390f510c949731177e6f2a25b3b6b11b2fc656cf8f2
        entryState: {}
        gitHubKeysState: {}
        gitHubLatestReleaseState: {}
        gitHubReleasesState: {}
        gitHubTagsState: {}
        gitHubVersionReleaseState: {}
        gitRepoExternalState: {}
        scriptState: {}
        > cmp stdout golden/state-dump.yaml
        > ! stderr .
        # test that chezmoi apply succeeds (0.112s)
        > exec chezmoi apply
        > ! stderr .
        # test that chezmoi apply prints a warning if the config file template has been changed (0.026s)
        > cp golden/.chezmoi.toml.tmpl $CHEZMOISOURCEDIR/.chezmoi.toml.tmpl
        > exec chezmoi apply
        [stderr]
        chezmoi: warning: config file template has changed, run chezmoi init to regenerate config file
        > stderr 'warning: config file template has changed'
        # test that chezmoi apply does not print the warning if it is suppressed (0.082s)
        > appendline $CHEZMOICONFIGDIR/chezmoi.toml '[warnings]'
        > appendline $CHEZMOICONFIGDIR/chezmoi.toml '  configFileTemplateHasChanged = false'
        > exec chezmoi apply
        > ! stderr .
        > cp golden/chezmoi.toml $CHEZMOICONFIGDIR
        # test that chezmoi init re-generates the config file (0.192s)
        > exec chezmoi init
        > cmp $CHEZMOICONFIGDIR/chezmoi.toml golden/chezmoi.toml
        > ! stderr .
        # test that chezmoi apply no longer prints a warning after the config file is regenerated (0.086s)
        > exec chezmoi apply
        > ! stderr .
        # test that chezmoi apply --force ignores config file changes and updates the state (0.062s)
        > edit $CHEZMOISOURCEDIR/.chezmoi.toml.tmpl
        > grep '# edited' $CHEZMOISOURCEDIR/.chezmoi.toml.tmpl
        > exec chezmoi apply --force
        > ! stderr .
        > ! grep '# edited' $CHEZMOICONFIGDIR/chezmoi.toml
        > chhome home2/user
        # test that chezmoi diff prints a warning when a config file template is added (0.174s)
        > exec chezmoi diff
        > ! stderr .
        > cp golden/chezmoi.toml $CHEZMOISOURCEDIR/.chezmoi.toml.tmpl
        > exec chezmoi diff
        [stderr]
        chezmoi: warning: config file template has changed, run chezmoi init to regenerate config file
        > stderr 'warning: config file template has changed'
        # test that chezmoi diff does not print a warning when the config file template is removed (0.040s)
        > rm $CHEZMOISOURCEDIR/.chezmoi.toml.tmpl
        > exec chezmoi diff
        > ! stderr .
        PASS
        
=== CONT  TestScript/externalgitrepo
gpg: /tmp/test-gpg-homedir1902819335/trustdb.gpg: trustdb created
gpg: directory '/tmp/test-gpg-homedir1902819335/openpgp-revocs.d' created
=== NAME  TestScript/scriptonce_unix
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] skip 'UNIX only'
        # test that chezmoi status prints that it will run the script (0.100s)
        > exec chezmoi status
        [stdout]
         R script.sh
        > cmp stdout golden/status
        # test that chezmoi diff includes the script (0.065s)
        > exec chezmoi diff
        [stdout]
        diff --git a/script.sh b/script.sh
        new file mode 100755
        index 0000000000000000000000000000000000000000..f9103e018df1bbc178e66b46d8f133f49c85225d
        --- /dev/null
        +++ b/script.sh
        @@ -0,0 +1,3 @@
        +#!/bin/sh
        +
        +pwd
        > cmp stdout golden/diff.diff
        # test that chezmoi apply runs the script (0.192s)
        > exec chezmoi apply --force
        [stdout]
        $WORK/home/user
        > stdout ${HOME@R}
        # test that the script is recorded in the state (0.076s)
        > exec chezmoi state dump
        [stdout]
        {
          "configState": {},
          "entryState": {
            "$WORK/home/user/script.sh": {
              "contentsSHA256": "bb29fcd5733098d4e391d85d487d84d1d64cf42eae34b53951ae470b98c9ca8d",
              "type": "script"
            }
          },
          "gitHubKeysState": {},
          "gitHubLatestReleaseState": {},
          "gitHubReleasesState": {},
          "gitHubTagsState": {},
          "gitHubVersionReleaseState": {},
          "gitRepoExternalState": {},
          "scriptState": {
            "bb29fcd5733098d4e391d85d487d84d1d64cf42eae34b53951ae470b98c9ca8d": {
              "name": "script.sh",
              "runAt": "2026-07-20T20:42:33.372976942Z"
            }
          }
        }
        > stdout bb29fcd5733098d4e391d85d487d84d1d64cf42eae34b53951ae470b98c9ca8d # sha256sum of script contents
        # test that chezmoi diff no longer includes the script (0.079s)
        > exec chezmoi diff
        > ! stdout .
        # test that chezmoi status will not print that it will run the script (0.056s)
        > exec chezmoi status
        > ! stdout .
        # test that chezmoi apply does not run the script a second time and does not prompt (0.067s)
        > exec chezmoi apply
        > ! stdout ${HOME@R}
        # test that chezmoi apply after the script is modified runs the script a second time and does not prompt (0.069s)
        > edit $CHEZMOISOURCEDIR/run_once_script.sh
        > exec chezmoi apply
        [stdout]
        $WORK/home/user
        > stdout ${HOME@R}
        # test that resetting the state causes the next chezmoi apply to run the script (0.204s)
        > exec chezmoi state reset --force
        > exec chezmoi apply --force
        [stdout]
        $WORK/home/user
        > stdout ${HOME@R}
        PASS
        
=== CONT  TestScript/forget
=== NAME  TestScript/import
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > mkhomedir
        > symlink archive/.dir/.symlink -> .file
        > exec tar czf archive.tar.gz archive
        # test that chezmoi import imports an archive (0.044s)
        > exec chezmoi import --strip-components=1 archive.tar.gz
        > cmp $CHEZMOISOURCEDIR/dot_dir/dot_file golden/dot_dir/dot_file
        > [unix] cmp $CHEZMOISOURCEDIR/dot_dir/symlink_dot_symlink golden/dot_dir/symlink_dot_symlink # FIXME this should pass on Windows
        # test that chezmoi import run a second time overwrites (0.086s)
        > exec chezmoi import --strip-components=1 archive.tar.gz
        > chhome home2/user
        # test chezmoi import --destination (0.123s)
        > exec chezmoi import --strip-components=1 --destination=$HOME${/}.subdir archive.tar.gz
        > cmp $CHEZMOISOURCEDIR/dot_subdir/dot_dir/dot_file golden/dot_dir/dot_file
        > [unix] cmp $CHEZMOISOURCEDIR/dot_subdir/dot_dir/symlink_dot_symlink golden/dot_dir/symlink_dot_symlink # FIXME this should pass on Windows
        > chhome home3/user
        # test chezmoi --import --exclude (0.205s)
        > exec chezmoi import --strip-components=1 --destination=$HOME${/}.subdir --exclude=symlinks archive.tar.gz
        > cmp $CHEZMOISOURCEDIR/dot_subdir/dot_dir/dot_file golden/dot_dir/dot_file
        > ! exists $CHEZMOISOURCEDIR/dot_subdir/dot_dir/symlink_dot_symlink
        PASS
        
=== CONT  TestScript/externalzip
gpg: /tmp/test-gpg-homedir3738720362/trustdb.gpg: trustdb created
gpg: directory '/tmp/test-gpg-homedir3738720362/openpgp-revocs.d' created
=== NAME  TestScript/git
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [unix] chmod 755 bin/git
        > [windows] unix2dos bin/git.cmd
        > exec chezmoi git hello
        [stdout]
        hello
        > exists $CHEZMOISOURCEDIR
        > stdout hello
        PASS
        
=== CONT  TestScript/externalrar
=== NAME  TestScript/externalzip
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] skip 'zip may not support the --symlinks option'
        > [!exec:zip] skip 'zip not found in $PATH'
        > symlink archive/dir/symlink -> file
        > exec zip -r --symlinks www/archive.zip archive
        [stdout]
          adding: archive/ (stored 0%)
          adding: archive/dir/ (stored 0%)
          adding: archive/dir/symlink (stored 0%)
          adding: archive/dir/file (stored 0%)
        > httpd www
        # test that chezmoi reads external zip archives from .chezmoiexternal.json (0.043s)
        > exec chezmoi apply --force
        > cmp $HOME/.dir/dir/file golden/dir/file
        > issymlink $HOME/.dir/dir/symlink
        PASS
        
=== CONT  TestScript/externalguess
=== NAME  TestScript/externalrar
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > hexdecode www/testfile.rar5.rar.hex
        > httpd www
        # test that chezmoi unpacks .rar externals (0.077s)
        > exec chezmoi apply
        > cmp $HOME/testfile.txt golden/testfile.txt
        PASS
        
=== CONT  TestScript/edit
=== NAME  TestScript/gopass
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > mockcommand bin/gopass
        > [windows] unix2dos golden/gopass-raw
        # test gopass template function (0.212s)
        > exec chezmoi execute-template '{{ gopass "misc/example.com" }}'
        [stdout]
        examplepassword> stdout ^examplepassword$
        # test gopass template function (0.075s)
        > exec chezmoi execute-template '{{ gopassRaw "misc/example.com" }}'
        [stdout]
        Secret: misc/example.com
        
        examplepassword
        key: value
        > cmp stdout golden/gopass-raw
        PASS
        
=== CONT  TestScript/externalfilter
gpg: revocation certificate stored as '/tmp/test-gpg-homedir3738720362/openpgp-revocs.d/AA52D0D141CD052BDAD9657F414578E5E842F9F0.rev'
gpg: revocation certificate stored as '/tmp/test-gpg-homedir1902819335/openpgp-revocs.d/DD7A00DF58C48388AC8415704557C2873077E462.rev'
=== NAME  TestScript/editconfig
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that edit-config creates a config file if needed (0.032s)
        > exec chezmoi edit-config
        [stderr]
        chezmoi: warning: $WORK/bin/editor $WORK/home/user/.config/chezmoi/chezmoi.toml: returned in less than 1s
        > grep -count=1 '# edited' $CHEZMOICONFIGDIR/chezmoi.toml
        # test that edit-config edits an existing config file (0.144s)
        > exec chezmoi edit-config
        [stderr]
        chezmoi: warning: $WORK/bin/editor $WORK/home/user/.config/chezmoi/chezmoi.toml: returned in less than 1s
        > grep -count=2 '# edited' $CHEZMOICONFIGDIR/chezmoi.toml
        > chhome home2/user
        # test that edit-config edits an existing YAML config file (0.040s)
        > exec chezmoi edit-config
        > grep -count=1 '# edited' $CHEZMOICONFIGDIR/chezmoi.yaml
        > ! stderr warning
        > chhome home3/user
        # test that edit-config reports a warning if the config is no longer valid (0.064s)
        > exec chezmoi edit-config
        [stderr]
        chezmoi: warning: $WORK/home3/user/.config/chezmoi/chezmoi.json: expected EOF
        > stderr warning
        > ! stderr 'returned in less than'
        > grep -count=1 '# edited' $CHEZMOICONFIGDIR/chezmoi.json
        PASS
        
=== CONT  TestScript/applysourcepath
=== NAME  TestScript/inittemplatefuncs
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test exit template function (0.109s)
        > exec chezmoi execute-template --init '{{ exit 0 }}'
        > ! exec chezmoi execute-template --init '{{ exit 1 }}'
        [exit status 1]
        # test promptBoolOnce template function with execute-template --init (0.082s)
        > exec chezmoi execute-template --init --promptBool bool=true '{{ promptBoolOnce . "bool" "bool" }}'
        [stdout]
        true> stdout true
        # test promptChoiceOnce template function with execute-template --init (0.072s)
        > exec chezmoi execute-template --init --promptChoice choice=one '{{ promptChoiceOnce . "choice" "choice" (list "one" "two" "three") }}'
        [stdout]
        one> stdout one
        # test promptMultichoiceOnce template function with execute-template --init (0.112s)
        > exec chezmoi execute-template --init --promptMultichoice multichoice=one/two '{{ promptMultichoiceOnce . "multichoice" "multichoice" (list "one" "two" "three") }}'
        [stdout]
        [one two]> stdout '[one two]'
        # test promptIntOnce template function with execute-template --init (0.066s)
        > exec chezmoi execute-template --init --promptInt int=1 '{{ promptIntOnce . "int" "int" }}'
        [stdout]
        1> stdout 1
        # test promptStringOnce template function with execute-template --init (0.134s)
        > exec chezmoi execute-template --init --promptString string=value '{{ promptStringOnce . "string" "string" }}'
        [stdout]
        value> stdout value
        # test writeToStdout template function (0.112s)
        > exec chezmoi execute-template --init '{{ writeToStdout "string" }}'
        [stdout]
        string> stdout string
        # test prompt*Once functions without existing data (0.054s)
        > stdin golden/input
        > exec chezmoi init --no-tty
        [stdout]
        bool? int? string? > cmp ${CHEZMOICONFIGDIR}/chezmoi.toml golden/chezmoi.toml
        > chhome home2/user
        # test prompt*Once functions with existing data (0.047s)
        > exec chezmoi init
        > cmp ${CHEZMOICONFIGDIR}/chezmoi.toml golden/chezmoi.toml
        > chhome home3/user
        # test prompt*Once functions with existing data and nested keys (0.113s)
        > exec chezmoi init
        > cmp ${CHEZMOICONFIGDIR}/chezmoi.toml golden/chezmoi.toml
        PASS
        
=== NAME  TestScript/externalfilter
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [!exec:base64] skip 'base64 not found in $PATH'
        > httpd www
        # test that chezmoi filters external files (0.109s)
        > exec chezmoi cat $HOME${/}.file
        [stdout]
        # contents of .file
        > cmp stdout golden/.file
        PASS
        
=== NAME  TestScript/gitleaks
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that there is no output when adding a complex file (0.500s)
        > exec chezmoi add $HOME${/}.karabiner.json
        > ! stderr .
        > ! stdout .
        PASS
        
=== NAME  TestScript/age
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi age encrypt encrypts a file with a passphrase (2.158s)
        > stdin $HOME/passphrases
        > exec chezmoi age encrypt --output $HOME${/}secret.txt.age --passphrase --no-tty $HOME${/}secret.txt
        [stdout]
        Enter passphrase: Confirm passphrase: > grep '-----BEGIN AGE ENCRYPTED FILE----' $HOME/secret.txt.age
        # test that chezmoi age decrypt decrypts a file with a passphrase (1.199s)
        > stdin $HOME/passphrase
        > exec chezmoi age decrypt --output $HOME${/}secret.txt.decrypted --passphrase --no-tty $HOME${/}secret.txt.age
        [stdout]
        Enter passphrase: > cmp $HOME/secret.txt.decrypted $HOME/secret.txt
        PASS
        
=== NAME  TestScript/externalguess
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] skip 'UNIX only'
        > httpd www
        # test that chezmoi sniffs the format of tar files (0.076s)
        > exec tar -cf www/archive.tar archive/
        > cp www/archive.tar www/archive
        > exec chezmoi apply --force --refresh-externals
        > cmp $HOME/.dir/dir/file golden/dir/file
        # test that chezmoi sniffs the format of tar.bz2 files (0.094s)
        > [exec:bzip2] exec tar -cjf www/archive.tar.bz2 archive/
        > [exec:bzip2] cp www/archive.tar.bz2 www/archive
        > [exec:bzip2] exec chezmoi apply --force --refresh-externals
        > [exec:bzip2] cmp $HOME/.dir/dir/file golden/dir/file
        # test that chezmoi sniffs the format of tar.gz files (0.082s)
        > exec tar -czf www/archive.tar.gz archive/
        > cp www/archive.tar.gz www/archive
        > exec chezmoi apply --force --refresh-externals
        > cmp $HOME/.dir/dir/file golden/dir/file
        # test that chezmoi sniffs the format of zip files (0.096s)
        > [exec:zip] exec zip -r www/archive.zip archive
        [stdout]
          adding: archive/ (stored 0%)
          adding: archive/dir/ (stored 0%)
          adding: archive/dir/file (stored 0%)
        > [exec:zip] cp www/archive.zip www/archive
        > [exec:zip] exec chezmoi apply --force --refresh-externals
        > [exec:zip] cmp $HOME/.dir/dir/file golden/dir/file
        > chhome home2/user
        # test that chezmoi allows the format to be overridden (0.033s)
        > [exec:zip] cp www/archive.zip www/archive2.tar.gz
        > [exec:zip] exec chezmoi apply --force
        > [exec:zip] cmp $HOME/.dir/dir/file golden/dir/file
        PASS
        
=== NAME  TestScript/ignore
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > mksourcedir
        # test that chezmoi apply does not write ignored files (0.141s)
        > ! exists $HOME/.file
        > exec chezmoi apply --force
        > exists $HOME/.file
        > ! exists $HOME/README.md
        > ! exists $HOME/.dir
        # test that chezmoi ignored lists the ignored entries (0.103s)
        > exec chezmoi ignored
        [stdout]
        .dir
        README.md
        > cmp stdout golden/ignored
        # test that chezmoi ignored --tree lists the ignored entries in a tree-like format (0.093s)
        > exec chezmoi ignored --tree
        [stdout]
        .dir
        README.md
        > cmp stdout golden/ignored-tree
        > chhome home2/user
        # test that chezmoi manage lists all managed files (0.137s)
        > exec chezmoi managed
        [stdout]
        .dir
        .dir/file.txt
        .dir/subdir
        .dir/subdir/file.txt
        .file.txt
        > cmp stdout golden/managed-all
        # test that chezmoiignore ignores all files in a directory (0.117s)
        > cp golden/.chezmoiignore-dir $CHEZMOISOURCEDIR/.chezmoiignore
        > exec chezmoi managed
        [stdout]
        .file.txt
        > cmp stdout golden/managed-ignore-dir
        # test that chezmoiignore ignores all files in a subdirectory (0.105s)
        > cp golden/.chezmoiignore-dir-subdir $CHEZMOISOURCEDIR/.chezmoiignore
        > exec chezmoi managed
        [stdout]
        .dir
        .dir/file.txt
        .file.txt
        > cmp stdout golden/managed-ignore-dir-subdir
        # test that chezmoiignore ignores all files matching a simple pattern (0.053s)
        > cp golden/.chezmoiignore-star-slash-star-dot-txt $CHEZMOISOURCEDIR/.chezmoiignore
        > exec chezmoi managed
        [stdout]
        .dir
        .dir/subdir
        .dir/subdir/file.txt
        .file.txt
        > cmp stdout golden/managed-ignore-star-slash-star-dot-txt
        # test that chezmoiignore ignores all files matching a doublestar pattern (0.215s)
        > cp golden/.chezmoiignore-star-star-slash-star-dot-txt $CHEZMOISOURCEDIR/.chezmoiignore
        > exec chezmoi managed
        [stdout]
        .dir
        .dir/subdir
        > cmp stdout golden/managed-ignore-star-star-slash-star-dot-txt
        PASS
        
=== NAME  TestScript/addencrypted
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] skip 'skipping gpg tests on Windows'
        > [!exec:gpg] skip 'gpg not found in $PATH'
        > mkgpgconfig
        > cp golden/.encrypted $HOME/.encrypted
        # test that chezmoi add adds a file unencrypted (0.114s)
        > exec chezmoi add $HOME${/}.encrypted
        > cmp $CHEZMOISOURCEDIR/dot_encrypted golden/.encrypted
        # test that chezmoi add --encrypt encrypts the file in the source state (0.125s)
        > exec chezmoi add --encrypt $HOME${/}.encrypted
        [stderr]
        gpg: Warning: using insecure memory!
        gpg: checking the trustdb
        gpg: marginals needed: 3  completes needed: 1  trust model: pgp
        gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
        gpg: next trustdb check due at 2029-07-19
        > ! exists $CHEZMOISOURCEDIR/dot_encrypted
        > exists $CHEZMOISOURCEDIR/encrypted_dot_encrypted.asc
        > grep '-----BEGIN PGP MESSAGE-----' $CHEZMOISOURCEDIR/encrypted_dot_encrypted.asc
        # test that chezmoi add without --encrypt replaces the source file (0.074s)
        > exec chezmoi add --force $HOME${/}.encrypted
        > ! exists $CHEZMOISOURCEDIR/encrypted_dot_encrypted.asc
        > cmp $CHEZMOISOURCEDIR/dot_encrypted golden/.encrypted
        # test that chezmoi add always encrypts when add.encrypt is true (0.052s)
        > appendline $CHEZMOICONFIGDIR/chezmoi.toml '[add]'
        > appendline $CHEZMOICONFIGDIR/chezmoi.toml '    encrypt = true'
        > cp golden/.encrypted $HOME/.encrypted2
        > exec chezmoi add $HOME/.encrypted2
        [stderr]
        gpg: Warning: using insecure memory!
        > exists $CHEZMOISOURCEDIR/encrypted_dot_encrypted2.asc
        PASS
        
=== NAME  TestScript/applysourcepath
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > mksourcedir
        # test that chezmoi apply --source-path only applies the target (0.125s)
        > exec chezmoi apply --source-path $CHEZMOISOURCEDIR/dot_file
        > ! exists $HOME/.empty
        > exists $HOME/.file
        > exec chezmoi apply --source-path $CHEZMOISOURCEDIR/empty_dot_empty
        > exists $HOME/.empty
        # test that chezmoi apply --source-path ignores other modified files (0.219s)
        > edit $HOME/.file
        > exec chezmoi status
        [stdout]
         A .create
         A .dir
         A .dir/file
         A .dir/subdir
         A .dir/subdir/file
         A .executable
        MM .file
         A .private
         A .readonly
         A .symlink
         A .template
        > stdout 'MM \.file'
        > exec chezmoi apply --source-path $CHEZMOISOURCEDIR/executable_dot_executable
        > exists $HOME/.executable
        PASS
        
=== NAME  TestScript/forget
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > mksourcedir
        # test that chezmoi apply sets the state (0.258s)
        > exec chezmoi apply --force
        > exists $CHEZMOISOURCEDIR/dot_file
        > exec chezmoi state get --bucket=entryState --key=$WORK/home/user/.dir
        [stdout]
        {
          "type": "dir",
          "mode": 2147484141
        }
        > [umask:002] cmp stdout golden/state-get-dir-umask-002.json
        > [umask:022] cmp stdout golden/state-get-dir-umask-022.json
        > exec chezmoi state get --bucket=entryState --key=$WORK/home/user/.file
        [stdout]
        {
          "type": "file",
          "mode": 420,
          "contentsSHA256": "634a4dd193c7b3b926d2e08026aa81a416fd41cec52854863b974af422495663"
        }
        > [umask:002] cmp stdout golden/state-get-file-umask-002.json
        > [umask:022] cmp stdout golden/state-get-file-umask-022.json
        # test that chezmoi forget forgets a dir (0.171s)
        > exists $CHEZMOISOURCEDIR/dot_dir
        > exec chezmoi forget --force $HOME${/}.dir
        > ! exists $CHEZMOISOURCEDIR/dot_dir
        > exec chezmoi state get --bucket=entryState --key=$WORK/home/user/.dir
        > ! stdout .
        # test that chezmoi forget forgets a file (0.110s)
        > exec chezmoi forget --force $HOME${/}.file
        > ! exists $CHEZMOISOURCEDIR/dot_file
        > exec chezmoi state get --bucket=entryState --key=$WORK/home/user/.file
        > ! stdout .
        > chhome home2/user
        # test that chezmoi forget forgets a file when .chezmoiroot is used (0.066s)
        > exec chezmoi forget --force $HOME${/}.file
        > ! exists $CHEZMOISOURCEDIR/home/dot_file
        PASS
        
=== NAME  TestScript/initconfig
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] skip 'test requires path separator to be forward slash'
        > mkdir $CHEZMOISOURCEDIR
        # test that chezmoi init writes the initial config into the default config dir (0.143s)
        > cp golden/chezmoi1.yaml $CHEZMOISOURCEDIR/.chezmoi.yaml.tmpl
        > exec chezmoi init
        > cmp $CHEZMOICONFIGDIR/chezmoi.yaml golden/chezmoi1.yaml
        # test that chezmoi init writes an updated config into the default config dir (0.086s)
        > cp golden/chezmoi2.yaml $CHEZMOISOURCEDIR/.chezmoi.yaml.tmpl
        > exec chezmoi init
        > cmp $CHEZMOICONFIGDIR/chezmoi.yaml golden/chezmoi2.yaml
        # test that chezmoi init writes a config of a new format into the default config dir (0.090s)
        > rm $CHEZMOISOURCEDIR/.chezmoi.yaml.tmpl
        > cp golden/chezmoi3.toml $CHEZMOISOURCEDIR/.chezmoi.toml.tmpl
        > exec chezmoi init
        > cmp $CHEZMOICONFIGDIR/chezmoi.yaml golden/chezmoi2.yaml
        > cmp $CHEZMOICONFIGDIR/chezmoi.toml golden/chezmoi3.toml
        # test that the last operation broke chezmoi (0.064s)
        > ! exec chezmoi status
        [stderr]
        chezmoi: multiple config files: $WORK/home/user/.config/chezmoi/chezmoi.toml and $WORK/home/user/.config/chezmoi/chezmoi.yaml
        [exit status 1]
        > ! stdout .
        > cmpenv stderr golden/error1.log
        # test that deleting the old config file fixes the issue (0.054s)
        > rm $CHEZMOICONFIGDIR/chezmoi.yaml
        > exec chezmoi status
        > ! stdout .
        > ! stderr .
        # test that the state file was written into the default config dir (0.000s)
        > exists $CHEZMOICONFIGDIR/chezmoistate.boltdb
        > chhome home2/user
        > mkdir $CHEZMOISOURCEDIR
        # test that chezmoi --config=path init writes the initial config into path (0.169s)
        > cp golden/chezmoi1.yaml $CHEZMOISOURCEDIR/.chezmoi.yaml.tmpl
        > exec chezmoi --config=$HOME/.chezmoi/athome.yaml init
        > cmp $HOME/.chezmoi/athome.yaml golden/chezmoi1.yaml
        # test that chezmoi --config=path init writes an updated config into path (0.060s)
        > cp golden/chezmoi2.yaml $CHEZMOISOURCEDIR/.chezmoi.yaml.tmpl
        > exec chezmoi --config=$HOME/.chezmoi/athome.yaml init
        > cmp $HOME/.chezmoi/athome.yaml golden/chezmoi2.yaml
        # test that chezmoi --config=path init writes a config of a new format into path (0.057s)
        > rm $CHEZMOISOURCEDIR/.chezmoi.yaml.tmpl
        > cp golden/chezmoi3.toml $CHEZMOISOURCEDIR/.chezmoi.toml.tmpl
        > exec chezmoi --config=$HOME/.chezmoi/athome.yaml init
        > cmp $HOME/.chezmoi/athome.yaml golden/chezmoi3.toml
        # test that the last operation broke chezmoi (0.018s)
        > ! exec chezmoi --config=$HOME/.chezmoi/athome.yaml status
        [stderr]
        chezmoi: invalid config: $WORK/home2/user/.chezmoi/athome.yaml: [2:3] value is not allowed in this context
           1 | [data]
        >  2 |   email = "mail3@example.com"
                 ^
        
        [exit status 1]
        > ! stdout .
        > cmpenv stderr golden/error2.log
        # test that renaming the file and updating the config path fixes the issue (0.034s)
        > mv $HOME/.chezmoi/athome.yaml $HOME/.chezmoi/athome.toml
        > exec chezmoi --config=$HOME/.chezmoi/athome.toml status
        > ! stdout .
        > ! stderr .
        # test that the state file was written next to the config file (0.000s)
        > exists $HOME/.chezmoi/chezmoistate.boltdb
        # test that nothing was ever written into the default config dir (0.000s)
        > ! exists $CHEZMOICONFIGDIR/chezmoi.toml
        > ! exists $CHEZMOICONFIGDIR/chezmoistate.boltdb
        > chhome home3/user
        > mkdir $CHEZMOISOURCEDIR
        # test that chezmoi --config=path --config-format=format init writes the initial config into path (0.121s)
        > cp golden/chezmoi1.yaml $CHEZMOISOURCEDIR/.chezmoi.yaml.tmpl
        > exec chezmoi --config=$HOME/.chezmoi/athome.txt --config-format=yaml init
        > cmp $HOME/.chezmoi/athome.txt golden/chezmoi1.yaml
        # test that chezmoi --config=path --config-format=format init writes an updated config into path (0.127s)
        > cp golden/chezmoi2.yaml $CHEZMOISOURCEDIR/.chezmoi.yaml.tmpl
        > exec chezmoi --config=$HOME/.chezmoi/athome.txt --config-format=yaml init
        > cmp $HOME/.chezmoi/athome.txt golden/chezmoi2.yaml
        # test that chezmoi --config=path --config-format=format init writes a config of a new format into path (0.059s)
        > rm $CHEZMOISOURCEDIR/.chezmoi.yaml.tmpl
        > cp golden/chezmoi3.toml $CHEZMOISOURCEDIR/.chezmoi.toml.tmpl
        > exec chezmoi --config=$HOME/.chezmoi/athome.txt --config-format=yaml init
        > cmp $HOME/.chezmoi/athome.txt golden/chezmoi3.toml
        # test that the last operation broke chezmoi (0.085s)
        > ! exec chezmoi --config=$HOME/.chezmoi/athome.txt --config-format=yaml status
        [stderr]
        chezmoi: invalid config: $WORK/home3/user/.chezmoi/athome.txt: [2:3] value is not allowed in this context
           1 | [data]
        >  2 |   email = "mail3@example.com"
                 ^
        
        [exit status 1]
        > ! stdout .
        > cmpenv stderr golden/error3.log
        # test that updating the config format fixes the issue (0.027s)
        > exec chezmoi --config=$HOME/.chezmoi/athome.txt --config-format=toml status
        > ! stdout .
        > ! stderr .
        # test that the state file was written next to the config file (0.000s)
        > exists $HOME/.chezmoi/chezmoistate.boltdb
        # test that nothing was ever written into the default config dir (0.000s)
        > ! exists $CHEZMOICONFIGDIR/chezmoi.toml
        > ! exists $CHEZMOICONFIGDIR/chezmoistate.boltdb
        PASS
        
=== NAME  TestScript/autopush
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [!exec:echo] skip 'echo not found in $PATH'
        > [!exec:git] skip 'git not found in $PATH'
        > mkgitconfig
        > mkhomedir golden
        > mkhomedir
        # create a repo (0.159s)
        > exec git init --bare $WORK/dotfiles.git
        [stdout]
        Initialized empty Git repository in $WORK/dotfiles.git/
        > exec chezmoi init file://$WORK/dotfiles.git
        [stderr]
        Cloning into '$WORK/home/user/.local/share/chezmoi'...
        warning: You appear to have cloned an empty repository.
        # test that chezmoi add creates and pushes a commit (0.463s)
        > exec chezmoi add $HOME${/}.file
        [stdout]
        git-auto-commit-pre
        [master (root-commit) c1c971e] Add .file
         1 file changed, 1 insertion(+)
         create mode 100644 dot_file
        git-auto-commit-post
        git-auto-push-pre
        git-auto-push-post
        [stderr]
        To file://$WORK/dotfiles.git
         * [new branch]      master -> master
        > stdout ^git-auto-commit-pre$
        > stdout ^git-auto-commit-post$
        > stdout ^git-auto-push-pre$
        > stdout ^git-auto-push-post$
        > exec git --git-dir=$WORK/dotfiles.git show HEAD
        [stdout]
        commit c1c971e40ec55470b7bd4429e515903a579f03ab
        Author: User <user@example.com>
        Date:   Mon Jul 20 20:42:33 2026 +0000
        
            Add .file
        
        diff --git a/dot_file b/dot_file
        new file mode 100644
        index 0000000..8a52cb9
        --- /dev/null
        +++ b/dot_file
        @@ -0,0 +1 @@
        +# contents of .file
        > stdout 'Add \.file'
        # test that chezmoi edit creates and pushes a commit (0.244s)
        > exec chezmoi edit $HOME${/}.file
        [stdout]
        git-auto-commit-pre
        [master f25eb5d] Update .file
         1 file changed, 1 insertion(+)
        git-auto-commit-post
        git-auto-push-pre
        git-auto-push-post
        [stderr]
        chezmoi: warning: $WORK/bin/editor $WORK/.tmp/chezmoi-edit1492541066/.file: returned in less than 1s
        To file://$WORK/dotfiles.git
           c1c971e..f25eb5d  master -> master
        > exec git --git-dir=$WORK/dotfiles.git show HEAD
        [stdout]
        commit f25eb5d4084d4e21741b4573d5f4d1aafdc50fba
        Author: User <user@example.com>
        Date:   Mon Jul 20 20:42:33 2026 +0000
        
            Update .file
        
        diff --git a/dot_file b/dot_file
        index 8a52cb9..5d2730a 100644
        --- a/dot_file
        +++ b/dot_file
        @@ -1 +1,2 @@
         # contents of .file
        +# edited
        > stdout 'Update \.file'
        # test that chezmoi chattr on a file creates and pushes a commit (0.360s)
        > exec chezmoi chattr +executable $HOME${/}.file
        [stdout]
        git-auto-commit-pre
        [master a5aa534] Change attributes of .file
         1 file changed, 0 insertions(+), 0 deletions(-)
         rename dot_file => executable_dot_file (100%)
        git-auto-commit-post
        git-auto-push-pre
        git-auto-push-post
        [stderr]
        To file://$WORK/dotfiles.git
           f25eb5d..a5aa534  master -> master
        > exec git --git-dir=$WORK/dotfiles.git show HEAD
        [stdout]
        commit a5aa534bf03c18f3feb885e114831ee7516ba596
        Author: User <user@example.com>
        Date:   Mon Jul 20 20:42:33 2026 +0000
        
            Change attributes of .file
        
        diff --git a/dot_file b/executable_dot_file
        similarity index 100%
        rename from dot_file
        rename to executable_dot_file
        > stdout 'Change attributes of \.file'
        # test that chezmoi add on a directory creates and pushes a commit (0.219s)
        > exec chezmoi add $HOME${/}.dir
        [stdout]
        git-auto-commit-pre
        [master 66aa312] Add .dir/file Add .dir/subdir/file
         2 files changed, 2 insertions(+)
         create mode 100644 dot_dir/file
         create mode 100644 dot_dir/subdir/file
        git-auto-commit-post
        git-auto-push-pre
        git-auto-push-post
        [stderr]
        To file://$WORK/dotfiles.git
           a5aa534..66aa312  master -> master
        > exec git --git-dir=$WORK/dotfiles.git show HEAD
        [stdout]
        commit 66aa3121724794cd46047e865fa80ed130a29388
        Author: User <user@example.com>
        Date:   Mon Jul 20 20:42:34 2026 +0000
        
            Add .dir/file
            Add .dir/subdir/file
        
        diff --git a/dot_dir/file b/dot_dir/file
        new file mode 100644
        index 0000000..501b590
        --- /dev/null
        +++ b/dot_dir/file
        @@ -0,0 +1 @@
        +# contents of .dir/file
        diff --git a/dot_dir/subdir/file b/dot_dir/subdir/file
        new file mode 100644
        index 0000000..1be5724
        --- /dev/null
        +++ b/dot_dir/subdir/file
        @@ -0,0 +1 @@
        +# contents of .dir/subdir/file
        > stdout 'Add \.dir/file'
        # test that chezmoi chattr on a file in a directory creates and pushes a commit (0.303s)
        > exec chezmoi chattr --debug +private $HOME${/}.dir/file
        [stdout]
        git-auto-commit-pre
        [master 55daee7] Change attributes of .dir/file
         1 file changed, 0 insertions(+), 0 deletions(-)
         rename dot_dir/{file => private_file} (100%)
        git-auto-commit-post
        git-auto-push-pre
        git-auto-push-post
        [stderr]
        time=2026-07-20T20:42:34.294Z level=INFO msg=persistentPreRunRootE version.version=v2.0.0+test version.commit=HEAD version.date=2026-07-20T20:42:34Z version.builtBy=testscript args="[chezmoi chattr --debug +private $WORK/home/user/.dir/file]" goVersion=go1.26.5-X:nodwarf5
        time=2026-07-20T20:42:34.295Z level=INFO msg=Stat component=system name=$WORK/home/user/.config/chezmoi/chezmoistate.boltdb
        time=2026-07-20T20:42:34.295Z level=INFO msg=Stat component=system name=$WORK/home/user/.local/share/chezmoi
        time=2026-07-20T20:42:34.295Z level=INFO msg=Stat component=system name=$WORK/home/user/.local/share/chezmoi/.git
        time=2026-07-20T20:42:34.295Z level=ERROR msg=ReadFile component=system err="open $WORK/home/user/.local/share/chezmoi/.chezmoiroot: no such file or directory" name=$WORK/home/user/.local/share/chezmoi/.chezmoiroot size=0 data=""
        time=2026-07-20T20:42:34.296Z level=ERROR msg=ReadFile component=system err="open $WORK/home/user/.local/share/chezmoi/.chezmoiversion: no such file or directory" name=$WORK/home/user/.local/share/chezmoi/.chezmoiversion size=0 data=""
        time=2026-07-20T20:42:34.296Z level=INFO msg=Stat component=system name=$WORK/home/user/.local/share/chezmoi
        time=2026-07-20T20:42:34.296Z level=INFO msg=Stat component=system name=$WORK/home/user/.local/share/chezmoi
        time=2026-07-20T20:42:34.296Z level=INFO msg=ReadDir component=system name=$WORK/home/user/.local/share/chezmoi
        time=2026-07-20T20:42:34.296Z level=INFO msg=ReadDir component=system name=$WORK/home/user/.local/share/chezmoi/dot_dir
        time=2026-07-20T20:42:34.296Z level=INFO msg=ReadDir component=system name=$WORK/home/user/.local/share/chezmoi/dot_dir/subdir
        time=2026-07-20T20:42:34.296Z level=INFO msg=RemoveAll component=system oldPath=$WORK/home/user/.local/share/chezmoi/dot_dir/file newPath=$WORK/home/user/.local/share/chezmoi/dot_dir/private_file
        time=2026-07-20T20:42:34.309Z level=INFO msg=Run cmd="/usr/bin/git add ." duration=12.659448ms err=<nil>
        time=2026-07-20T20:42:34.359Z level=INFO msg=Output cmd="/usr/bin/git status --porcelain=v2" duration=50.352499ms size=152 output="2 R. N... 100644 100644 100644 501b5909d11c6dc3c6db4d66138f0297c..." err=<nil>
        time=2026-07-20T20:42:34.391Z level=INFO msg=Run cmd="/usr/bin/echo git-auto-commit-pre" duration=31.631864ms err=<nil>
        time=2026-07-20T20:42:34.423Z level=INFO msg=Run cmd="/usr/bin/git commit --message Change attributes of .dir/file\n" duration=30.880447ms err=<nil>
        time=2026-07-20T20:42:34.430Z level=INFO msg=Run cmd="/usr/bin/echo git-auto-commit-post" duration=7.229228ms err=<nil>
        time=2026-07-20T20:42:34.439Z level=INFO msg=Run cmd="/usr/bin/echo git-auto-push-pre" duration=9.119309ms err=<nil>
        To file://$WORK/dotfiles.git
           66aa312..55daee7  master -> master
        time=2026-07-20T20:42:34.496Z level=INFO msg=Run cmd="/usr/bin/git push" duration=56.834368ms err=<nil>
        time=2026-07-20T20:42:34.504Z level=INFO msg=Run cmd="/usr/bin/echo git-auto-push-post" duration=8.076763ms err=<nil>
        time=2026-07-20T20:42:34.504Z level=INFO msg=Close component=persistentState
        > exec git --git-dir=$WORK/dotfiles.git show HEAD
        [stdout]
        commit 55daee7ad275494c8f19bf8a0df3a493b2b8f03d
        Author: User <user@example.com>
        Date:   Mon Jul 20 20:42:34 2026 +0000
        
            Change attributes of .dir/file
        
        diff --git a/dot_dir/file b/dot_dir/private_file
        similarity index 100%
        rename from dot_dir/file
        rename to dot_dir/private_file
        > stdout 'Change attributes of \.dir'
        # test that chezmoi forget creates and pushes a commit (0.182s)
        > exec chezmoi forget --force $HOME${/}.file
        [stdout]
        git-auto-commit-pre
        [master df240c2] Remove .file
         1 file changed, 2 deletions(-)
         delete mode 100644 executable_dot_file
        git-auto-commit-post
        git-auto-push-pre
        git-auto-push-post
        [stderr]
        To file://$WORK/dotfiles.git
           55daee7..df240c2  master -> master
        > exec git --git-dir=$WORK/dotfiles.git show HEAD
        [stdout]
        commit df240c25f1a16c1d1bb7481a7591fc61d3818edd
        Author: User <user@example.com>
        Date:   Mon Jul 20 20:42:34 2026 +0000
        
            Remove .file
        
        diff --git a/executable_dot_file b/executable_dot_file
        deleted file mode 100644
        index 5d2730a..0000000
        --- a/executable_dot_file
        +++ /dev/null
        @@ -1,2 +0,0 @@
        -# contents of .file
        -# edited
        > stdout 'Remove \.file'
        PASS
        
=== NAME  TestScript/autocommit
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [!exec:git] skip 'git not found in $PATH'
        > mkgitconfig
        > mkhomedir golden
        > mkhomedir
        > exec chezmoi init
        # test that chezmoi add creates a commit (0.231s)
        > exec chezmoi add $HOME${/}.file
        [stdout]
        [master (root-commit) eccc96e] Add .COMMIT_MESSAGE Add .file
         2 files changed, 2 insertions(+)
         create mode 100644 .COMMIT_MESSAGE.tmpl
         create mode 100644 dot_file
        > exec git -C $CHEZMOISOURCEDIR show HEAD
        [stdout]
        commit eccc96e43c3b2df08a6ef02e28bdaf42775d61a8
        Author: User <user@example.com>
        Date:   Mon Jul 20 20:42:33 2026 +0000
        
            Add .COMMIT_MESSAGE
            Add .file
        
        diff --git a/.COMMIT_MESSAGE.tmpl b/.COMMIT_MESSAGE.tmpl
        new file mode 100644
        index 0000000..996c784
        --- /dev/null
        +++ b/.COMMIT_MESSAGE.tmpl
        @@ -0,0 +1 @@
        +{{ .prefix }}my commit message file
        diff --git a/dot_file b/dot_file
        new file mode 100644
        index 0000000..8a52cb9
        --- /dev/null
        +++ b/dot_file
        @@ -0,0 +1 @@
        +# contents of .file
        > stdout 'Add \.file'
        # test that chezmoi edit createspushes a commit (0.105s)
        > exec chezmoi edit $HOME${/}.file
        [stdout]
        [master a6e23ac] Update .file
         1 file changed, 1 insertion(+)
        [stderr]
        chezmoi: warning: $WORK/bin/editor $WORK/.tmp/chezmoi-edit3563336718/.file: returned in less than 1s
        > exec git -C $CHEZMOISOURCEDIR show HEAD
        [stdout]
        commit a6e23acfd2bcdbf2a32509dde9a33c76ebfc2c50
        Author: User <user@example.com>
        Date:   Mon Jul 20 20:42:33 2026 +0000
        
            Update .file
        
        diff --git a/dot_file b/dot_file
        index 8a52cb9..5d2730a 100644
        --- a/dot_file
        +++ b/dot_file
        @@ -1 +1,2 @@
         # contents of .file
        +# edited
        > stdout 'Update \.file'
        # test that chezmoi chattr creates a commit (0.270s)
        > exec chezmoi chattr +executable $HOME${/}.file
        [stdout]
        [master f0812ad] Change attributes of .file
         1 file changed, 0 insertions(+), 0 deletions(-)
         rename dot_file => executable_dot_file (100%)
        > exec git -C $CHEZMOISOURCEDIR show HEAD
        [stdout]
        commit f0812ad596828c2d19562e26bbedc1591a8c13fa
        Author: User <user@example.com>
        Date:   Mon Jul 20 20:42:33 2026 +0000
        
            Change attributes of .file
        
        diff --git a/dot_file b/executable_dot_file
        similarity index 100%
        rename from dot_file
        rename to executable_dot_file
        > stdout 'Change attributes of \.file'
        # test that chezmoi add on a directory creates a commit (0.203s)
        > exec chezmoi add $HOME${/}.dir
        [stdout]
        [master 55e6fb1] Add .dir/file Add .dir/subdir/file
         2 files changed, 2 insertions(+)
         create mode 100644 dot_dir/file
         create mode 100644 dot_dir/subdir/file
        > exec git -C $CHEZMOISOURCEDIR show HEAD
        [stdout]
        commit 55e6fb1181bf80e43511c216f82ea037b454c0f3
        Author: User <user@example.com>
        Date:   Mon Jul 20 20:42:33 2026 +0000
        
            Add .dir/file
            Add .dir/subdir/file
        
        diff --git a/dot_dir/file b/dot_dir/file
        new file mode 100644
        index 0000000..501b590
        --- /dev/null
        +++ b/dot_dir/file
        @@ -0,0 +1 @@
        +# contents of .dir/file
        diff --git a/dot_dir/subdir/file b/dot_dir/subdir/file
        new file mode 100644
        index 0000000..1be5724
        --- /dev/null
        +++ b/dot_dir/subdir/file
        @@ -0,0 +1 @@
        +# contents of .dir/subdir/file
        > stdout 'Add \.dir/file'
        # test that copying a file creates a valid commit message (0.446s)
        > cp $CHEZMOISOURCEDIR/executable_dot_file $CHEZMOISOURCEDIR/executable_dot_file2
        > mv $CHEZMOISOURCEDIR/executable_dot_file $CHEZMOISOURCEDIR/executable_dot_file3
        > exec git -C $CHEZMOISOURCEDIR config --local diff.renames copies
        > exec git -C $CHEZMOISOURCEDIR add .
        > exec chezmoi edit $HOME${/}.dir${/}file
        [stdout]
        [master 6f06826] Update .dir/file Copy .file to .file2 Change attributes of .file3
         3 files changed, 3 insertions(+)
         rename executable_dot_file => executable_dot_file2 (100%)
         create mode 100644 executable_dot_file3
        [stderr]
        chezmoi: warning: $WORK/bin/editor $WORK/.tmp/chezmoi-edit2261118794/.dir/file: returned in less than 1s
        > exec git -C $CHEZMOISOURCEDIR show HEAD
        [stdout]
        commit 6f06826825c98ddbf357c312e3da9df475dc4bee
        Author: User <user@example.com>
        Date:   Mon Jul 20 20:42:34 2026 +0000
        
            Update .dir/file
            Copy .file to .file2
            Change attributes of .file3
        
        diff --git a/dot_dir/file b/dot_dir/file
        index 501b590..047eb87 100644
        --- a/dot_dir/file
        +++ b/dot_dir/file
        @@ -1 +1,2 @@
         # contents of .dir/file
        +# edited
        diff --git a/executable_dot_file b/executable_dot_file2
        similarity index 100%
        copy from executable_dot_file
        copy to executable_dot_file2
        diff --git a/executable_dot_file b/executable_dot_file3
        similarity index 100%
        rename from executable_dot_file
        rename to executable_dot_file3
        > stdout 'Copy \.file to \.file2'
        # test that chezmoi chattr on a file in a directory creates a commit (0.135s)
        > exec chezmoi chattr --debug +private $HOME${/}.dir/file
        [stdout]
        [master 5a36bc2] Change attributes of .dir/file
         1 file changed, 0 insertions(+), 0 deletions(-)
         rename dot_dir/{file => private_file} (100%)
        [stderr]
        time=2026-07-20T20:42:34.202Z level=INFO msg=persistentPreRunRootE version.version=v2.0.0+test version.commit=HEAD version.date=2026-07-20T20:42:34Z version.builtBy=testscript args="[chezmoi chattr --debug +private $WORK/home/user/.dir/file]" goVersion=go1.26.5-X:nodwarf5
        time=2026-07-20T20:42:34.202Z level=INFO msg=Stat component=system name=$WORK/home/user/.config/chezmoi/chezmoistate.boltdb
        time=2026-07-20T20:42:34.202Z level=INFO msg=Stat component=system name=$WORK/home/user/.local/share/chezmoi
        time=2026-07-20T20:42:34.202Z level=INFO msg=Stat component=system name=$WORK/home/user/.local/share/chezmoi/.git
        time=2026-07-20T20:42:34.203Z level=ERROR msg=ReadFile component=system err="open $WORK/home/user/.local/share/chezmoi/.chezmoiroot: no such file or directory" name=$WORK/home/user/.local/share/chezmoi/.chezmoiroot size=0 data=""
        time=2026-07-20T20:42:34.204Z level=ERROR msg=ReadFile component=system err="open $WORK/home/user/.local/share/chezmoi/.chezmoiversion: no such file or directory" name=$WORK/home/user/.local/share/chezmoi/.chezmoiversion size=0 data=""
        time=2026-07-20T20:42:34.204Z level=INFO msg=Stat component=system name=$WORK/home/user/.local/share/chezmoi
        time=2026-07-20T20:42:34.204Z level=INFO msg=Stat component=system name=$WORK/home/user/.local/share/chezmoi
        time=2026-07-20T20:42:34.204Z level=INFO msg=ReadDir component=system name=$WORK/home/user/.local/share/chezmoi
        time=2026-07-20T20:42:34.204Z level=INFO msg=ReadDir component=system name=$WORK/home/user/.local/share/chezmoi/dot_dir
        time=2026-07-20T20:42:34.204Z level=INFO msg=ReadDir component=system name=$WORK/home/user/.local/share/chezmoi/dot_dir/subdir
        time=2026-07-20T20:42:34.204Z level=INFO msg=RemoveAll component=system oldPath=$WORK/home/user/.local/share/chezmoi/dot_dir/file newPath=$WORK/home/user/.local/share/chezmoi/dot_dir/private_file
        time=2026-07-20T20:42:34.225Z level=INFO msg=Run cmd="/usr/bin/git add ." duration=21.602964ms err=<nil>
        time=2026-07-20T20:42:34.238Z level=INFO msg=Output cmd="/usr/bin/git status --porcelain=v2" duration=11.989399ms size=152 output="2 R. N... 100644 100644 100644 047eb8724ba06d1bb3b99a84c88b4efdc..." err=<nil>
        time=2026-07-20T20:42:34.262Z level=INFO msg=Run cmd="/usr/bin/git commit --message Change attributes of .dir/file\n" duration=23.521529ms err=<nil>
        time=2026-07-20T20:42:34.262Z level=INFO msg=Close component=persistentState
        > exec git -C $CHEZMOISOURCEDIR show HEAD
        [stdout]
        commit 5a36bc2eac557478cf2a40879aaaac0e0515b7fb
        Author: User <user@example.com>
        Date:   Mon Jul 20 20:42:34 2026 +0000
        
            Change attributes of .dir/file
        
        diff --git a/dot_dir/file b/dot_dir/private_file
        similarity index 100%
        rename from dot_dir/file
        rename to dot_dir/private_file
        > stdout 'Change attributes of \.dir'
        # test that chezmoi forget creates and commit (0.188s)
        > exec chezmoi forget --force $HOME${/}.file2
        [stdout]
        [master 9babf65] Remove .file2
         1 file changed, 2 deletions(-)
         delete mode 100644 executable_dot_file2
        > exec git -C $CHEZMOISOURCEDIR show HEAD
        [stdout]
        commit 9babf658a4ae407a493c8cea169e9c0cac454706
        Author: User <user@example.com>
        Date:   Mon Jul 20 20:42:34 2026 +0000
        
            Remove .file2
        
        diff --git a/executable_dot_file2 b/executable_dot_file2
        deleted file mode 100644
        index 5d2730a..0000000
        --- a/executable_dot_file2
        +++ /dev/null
        @@ -1,2 +0,0 @@
        -# contents of .file
        -# edited
        > stdout 'Remove \.file2'
        # test that chezmoi edit uses a custom commit message template (0.073s)
        > appendline $CHEZMOICONFIGDIR/chezmoi.toml '    commitMessageTemplate = "{{ .prefix }}my commit message"'
        > exec chezmoi edit $HOME${/}.dir${/}file
        [stdout]
        [master 1978ef1] feat: my commit message
         1 file changed, 1 insertion(+)
        [stderr]
        chezmoi: warning: $WORK/bin/editor $WORK/.tmp/chezmoi-edit324476493/.dir/file: returned in less than 1s
        > exec git -C $CHEZMOISOURCEDIR show HEAD
        [stdout]
        commit 1978ef17e8c30dbc9ce36cb5282d0d73e51dd6b9
        Author: User <user@example.com>
        Date:   Mon Jul 20 20:42:34 2026 +0000
        
            feat: my commit message
        
        diff --git a/dot_dir/private_file b/dot_dir/private_file
        index 047eb87..24bdc30 100644
        --- a/dot_dir/private_file
        +++ b/dot_dir/private_file
        @@ -1,2 +1,3 @@
         # contents of .dir/file
         # edited
        +# edited
        > stdout 'feat: my commit message'
        # test that only one of git.commitMessageTemplate and git.commitMessageTemplateFile can be set (0.078s)
        > appendline $CHEZMOICONFIGDIR/chezmoi.toml '    commitMessageTemplateFile = ".COMMIT_MESSAGE.tmpl"'
        > ! exec chezmoi edit $HOME${/}.dir${/}file
        [stderr]
        chezmoi: invalid config: $WORK/home/user/.config/chezmoi/chezmoi.toml: cannot specify both git.commitMessageTemplate and git.commitMessageTemplateFile
        [exit status 1]
        > stderr 'cannot specify both git.commitMessageTemplate and git.commitMessageTemplateFile'
        > removeline $CHEZMOICONFIGDIR/chezmoi.toml '    commitMessageTemplate = "{{ .prefix }}my commit message"'
        # test that chezmoi edit uses a custom commit message template file (0.113s)
        > exec chezmoi edit $HOME${/}.dir${/}file
        [stdout]
        [master c14563a] feat: my commit message file
         1 file changed, 1 insertion(+)
        [stderr]
        chezmoi: warning: $WORK/bin/editor $WORK/.tmp/chezmoi-edit3796751436/.dir/file: returned in less than 1s
        > exec git -C $CHEZMOISOURCEDIR show HEAD
        [stdout]
        commit c14563afd4c5734845ae9e23989cf29748389203
        Author: User <user@example.com>
        Date:   Mon Jul 20 20:42:34 2026 +0000
        
            feat: my commit message file
        
        diff --git a/dot_dir/private_file b/dot_dir/private_file
        index 24bdc30..fb90848 100644
        --- a/dot_dir/private_file
        +++ b/dot_dir/private_file
        @@ -1,3 +1,4 @@
         # contents of .dir/file
         # edited
         # edited
        +# edited
        > stdout 'feat: my commit message file'
        > removeline $CHEZMOICONFIGDIR/chezmoi.toml '    commitMessageTemplateFile = ".COMMIT_MESSAGE.tmpl"'
        PASS
        
=== NAME  TestScript/edit
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > mkhomedir
        > mksourcedir
        # test that chezmoi edit edits a single file (0.061s)
        > exec chezmoi edit $HOME${/}.file
        [stderr]
        chezmoi: warning: $WORK/bin/editor $WORK/.tmp/chezmoi-edit2414089772/.file: returned in less than 1s
        > grep -count=1 '# edited' $CHEZMOISOURCEDIR/dot_file
        > ! grep '# edited' $HOME/.file
        # test that chezmoi edit --apply applies the edit. (0.220s)
        > exec chezmoi edit --apply --force $HOME${/}.file
        [stderr]
        chezmoi: warning: $WORK/bin/editor $WORK/.tmp/chezmoi-edit2867235629/.file: returned in less than 1s
        > grep -count=2 '# edited' $CHEZMOISOURCEDIR/dot_file
        > grep -count=2 '# edited' $HOME/.file
        # test that chezmoi edit edits a symlink (0.041s)
        > exec chezmoi edit $HOME${/}.symlink
        [stderr]
        chezmoi: warning: $WORK/bin/editor $WORK/.tmp/chezmoi-edit2413147727/.symlink: returned in less than 1s
        > grep -count=1 '# edited' $CHEZMOISOURCEDIR/symlink_dot_symlink
        # test that chezmoi edit edits a script (0.062s)
        > exec chezmoi edit $HOME${/}script.sh
        [stderr]
        chezmoi: warning: $WORK/bin/editor $WORK/.tmp/chezmoi-edit3419204574/script.sh: returned in less than 1s
        > grep -count=1 '# edited' $CHEZMOISOURCEDIR/run_script.sh
        # test that chezmoi edit edits a file and a symlink (0.066s)
        > exec chezmoi edit $HOME${/}.file $HOME${/}.symlink
        [stderr]
        chezmoi: warning: $WORK/bin/editor $WORK/.tmp/chezmoi-edit3768432600/.file $WORK/.tmp/chezmoi-edit3768432600/.symlink: returned in less than 1s
        > grep -count=3 '# edited' $CHEZMOISOURCEDIR/dot_file
        > grep -count=2 '# edited' $CHEZMOISOURCEDIR/symlink_dot_symlink
        # test that chezmoi edit edits the working tree (0.075s)
        > exec chezmoi edit
        [stderr]
        chezmoi: warning: $WORK/bin/editor $WORK/home/user/.local/share/chezmoi: returned in less than 1s
        > exists $CHEZMOISOURCEDIR/.edited
        # test that chezmoi edit edits a directory (0.056s)
        > [unix] exec chezmoi edit $HOME${/}.dir
        [stderr]
        chezmoi: warning: $WORK/bin/editor $WORK/home/user/.local/share/chezmoi/dot_dir: returned in less than 1s
        > [unix] exists $CHEZMOISOURCEDIR/dot_dir/.edited
        > chhome home2/user
        # test that chezmoi edit edits a file when the working tree and the source dir are different (0.047s)
        > exec chezmoi edit $HOME${/}.file
        [stderr]
        chezmoi: warning: $WORK/bin/editor $WORK/.tmp/chezmoi-edit1820625983/.file: returned in less than 1s
        > grep -count=1 '# edited' $CHEZMOISOURCEDIR/home/dot_file
        # test that chezmoi edit edits the working tree when working tree and the source dir are different (0.050s)
        > exec chezmoi edit
        [stderr]
        chezmoi: warning: $WORK/bin/editor $WORK/home2/user/.local/share/chezmoi: returned in less than 1s
        > exists $CHEZMOISOURCEDIR/.edited
        > ! exists $CHEZMOISOURCEDIR/home/.edited
        PASS
        
=== NAME  TestScript/mergeencryptedgpg_unix
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] skip 'UNIX only'
        > [!exec:gpg] skip 'gpg not found in $PATH'
        > chmod 755 bin/edit-source
        > mkgpgconfig
        > appendline $CHEZMOICONFIGDIR/chezmoi.toml '[merge]'
        > appendline $CHEZMOICONFIGDIR/chezmoi.toml '    command = "cat"'
        # test that chezmoi merge transparently decrypts the source (2.467s)
        > cp golden/source $HOME/.file
        > exec chezmoi add --encrypt $HOME${/}.file
        [stderr]
        gpg: Warning: using insecure memory!
        gpg: checking the trustdb
        gpg: marginals needed: 3  completes needed: 1  trust model: pgp
        gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
        gpg: next trustdb check due at 2029-07-19
        > exec chezmoi chattr +template $HOME${/}.file
        > cp golden/destination $HOME/.file
        > exec chezmoi merge $HOME${/}.file
        [stdout]
        destination
        {{ "target" }}
        target
        [stderr]
        gpg: Warning: using insecure memory!
        gpg: encrypted with cv25519 key, ID C73283F5E2E9DF2E, created 2026-07-20
              "chezmoi-test-gpg-key"
        gpg: Warning: using insecure memory!
        > cmp stdout golden/expected
        > chhome home2/user
        > mkgpgconfig
        > appendline $CHEZMOICONFIGDIR/chezmoi.toml '[merge]'
        > appendline $CHEZMOICONFIGDIR/chezmoi.toml '    command = "edit-source"'
        # test that chezmoi merge transparently re-encrypts the source if it is edited (0.702s)
        > cp golden/source $HOME/.file
        > exec chezmoi add --encrypt $HOME${/}.file
        [stderr]
        gpg: Warning: using insecure memory!
        gpg: checking the trustdb
        gpg: marginals needed: 3  completes needed: 1  trust model: pgp
        gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
        gpg: next trustdb check due at 2029-07-19
        > exec chezmoi chattr +template $HOME${/}.file
        > cp golden/destination $HOME/.file
        > exec chezmoi merge $HOME${/}.file
        [stderr]
        gpg: Warning: using insecure memory!
        gpg: encrypted with cv25519 key, ID 3C6259A839F9D247, created 2026-07-20
              "chezmoi-test-gpg-key"
        gpg: Warning: using insecure memory!
        > exec chezmoi cat $HOME${/}.file
        [stdout]
        target
        # edited
        [stderr]
        gpg: Warning: using insecure memory!
        gpg: encrypted with cv25519 key, ID 3C6259A839F9D247, created 2026-07-20
              "chezmoi-test-gpg-key"
        > cmp stdout golden/edited-target
        PASS
        
=== NAME  TestScript/externalgitrepo
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] skip 'UNIX only'
        > [!exec:git] skip 'git not found in $PATH'
        > mkgitconfig
        > expandenv $WORK/home/user/.local/share/chezmoi/.chezmoiexternal.toml
        # test that chezmoi managed lists the directory (0.029s)
        > exec chezmoi managed
        [stdout]
        .dir
        > stdout ^\.dir$
        # create a git repo (0.110s)
        > cd $WORK/repo
        $WORK/repo
        > exec git init
        [stdout]
        Initialized empty Git repository in $WORK/repo/.git/
        > exec git add .
        > exec git commit --message 'initial commit'
        [stdout]
        [master (root-commit) 16333df] initial commit
         1 file changed, 1 insertion(+)
         create mode 100644 .file
        > cd $WORK
        $WORK
        # test that chezmoi apply clones the git repo (0.343s)
        > exec chezmoi apply
        [stderr]
        Cloning into '$WORK/home/user/.dir'...
        > cmp $HOME/.dir/.file golden/.file
        # test that chezmoi archive --format=tar creates an archive (0.050s)
        > exec chezmoi archive --format=tar
        [stdout]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        # test that chezmoi archive --format=zip creates an archive (0.069s)
        > exec chezmoi archive --format=zip
        [stdout]
        PK                  > chhome home2/user
        > mkgitconfig
        > expandenv $WORK/home2/user/.local/share/chezmoi/.chezmoiexternal.toml
        # test that chezmoi apply clones the git repo (0.063s)
        > exec chezmoi apply
        [stderr]
        Cloning into '$WORK/home2/user/.dir'...
        > cmp $HOME/.dir/.file golden/.file
        # update the git repo (0.010s)
        > cd $WORK/repo
        $WORK/repo
        > edit $WORK/repo/.file
        > exec git commit --message 'edit .file' .
        [stdout]
        [master 66b2c68] edit .file
         1 file changed, 1 insertion(+)
        > cd $WORK
        $WORK
        > chhome home/user
        # test that chezmoi apply does not pull from the git repo when refreshPeriod is zero (0.039s)
        > exec chezmoi apply
        > ! grep '# edited' $HOME/.dir/.file
        # test that chezmoi apply --refresh-externals does pull from the git repo (0.140s)
        > exec chezmoi apply --refresh-externals
        [stdout]
        Updating 16333df..66b2c68
        Fast-forward
         .file | 1 +
         1 file changed, 1 insertion(+)
        [stderr]
        From file://$WORK/repo
           16333df..66b2c68  master     -> origin/master
        > grep '# edited' $HOME/.dir/.file
        > chhome home2/user
        # test that chezmoi apply does not pull from the git repo within the refresh period (0.042s)
        > exec chezmoi apply
        > ! grep '# edited' $HOME/.dir/.file
        # test that chezmoi dump prints the git command (0.031s)
        > exec chezmoi dump --format=yaml
        [stdout]
        $WORK/home2/user/.dir:
          type: command
          path: /usr/bin/git
          args:
          - git
          - pull
        > stdout 'type: command'
        PASS
        
gpg: /tmp/test-gpg-homedir1473305067/trustdb.gpg: trustdb created
gpg: directory '/tmp/test-gpg-homedir1473305067/openpgp-revocs.d' created
gpg: /tmp/test-gpg-homedir333374838/trustdb.gpg: trustdb created
gpg: directory '/tmp/test-gpg-homedir333374838/openpgp-revocs.d' created
gpg: /tmp/test-gpg-homedir3796306874/trustdb.gpg: trustdb created
gpg: directory '/tmp/test-gpg-homedir3796306874/openpgp-revocs.d' created
gpg: revocation certificate stored as '/tmp/test-gpg-homedir1473305067/openpgp-revocs.d/35E43E5D5A548EF20769E3736FE39AD8E763D45E.rev'
gpg: revocation certificate stored as '/tmp/test-gpg-homedir3796306874/openpgp-revocs.d/A17A5E1D23A89A760F5F0BEF9546F82A33B38304.rev'
gpg: revocation certificate stored as '/tmp/test-gpg-homedir333374838/openpgp-revocs.d/A3D9F7F982AB91A1C9E449572A7DD2A913E8E133.rev'
=== NAME  TestScript/templatefuncs
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [unix] chmod 755 bin/chezmoi-output-test
        > [unix] chmod 755 bin/generate-color-formats
        > [unix] chmod 755 bin/ioreg
        > [unix] chmod 755 bin/executable
        > [windows] unix2dos bin/chezmoi-output-test.cmd
        > symlink $HOME/symlink -> dir
        # test comment template function (0.106s)
        > exec chezmoi execute-template '{{ "line1\nline2" | comment "# " }}'
        [stdout]
        # line1
        # line2> rmfinalnewline golden/comment
        > cmp stdout golden/comment
        # test completion template function (0.083s)
        > exec chezmoi execute-template '{{ completion "zsh" }}'
        [stdout]
        #compdef chezmoi
        compdef _chezmoi chezmoi
        
        # zsh completion for chezmoi                              -*- shell-script -*-
        
        __chezmoi_debug()
        {
            local file="$BASH_COMP_DEBUG_FILE"
            if [[ -n ${file} ]]; then
                echo "$*" >> "${file}"
            fi
        }
        
        _chezmoi()
        {
            local shellCompDirectiveError=1
            local shellCompDirectiveNoSpace=2
            local shellCompDirectiveNoFileComp=4
            local shellCompDirectiveFilterFileExt=8
            local shellCompDirectiveFilterDirs=16
            local shellCompDirectiveKeepOrder=32
        
            local lastParam lastChar flagPrefix requestComp out directive comp lastComp noSpace keepOrder
            local -a completions
        
            __chezmoi_debug "\n========= starting completion logic =========="
            __chezmoi_debug "CURRENT: ${CURRENT}, words[*]: ${words[*]}"
        
            # The user could have moved the cursor backwards on the command-line.
            # We need to trigger completion from the $CURRENT location, so we need
            # to truncate the command-line ($words) up to the $CURRENT location.
            # (We cannot use $CURSOR as its value does not work when a command is an alias.)
            words=("${=words[1,CURRENT]}")
            __chezmoi_debug "Truncated words[*]: ${words[*]},"
        
            lastParam=${words[-1]}
            lastChar=${lastParam[-1]}
            __chezmoi_debug "lastParam: ${lastParam}, lastChar: ${lastChar}"
        
            # For zsh, when completing a flag with an = (e.g., chezmoi -n=<TAB>)
            # completions must be prefixed with the flag
            setopt local_options BASH_REMATCH
            if [[ "${lastParam}" =~ '-.*=' ]]; then
                # We are dealing with a flag with an =
                flagPrefix="-P ${BASH_REMATCH}"
            fi
        
            # Prepare the command to obtain completions
            requestComp="${words[1]} __complete ${words[2,-1]}"
            if [ "${lastChar}" = "" ]; then
                # If the last parameter is complete (there is a space following it)
                # We add an extra empty parameter so we can indicate this to the go completion code.
                __chezmoi_debug "Adding extra empty parameter"
                requestComp="${requestComp} \"\""
            fi
        
            __chezmoi_debug "About to call: eval ${requestComp}"
        
            # Use eval to handle any environment variables and such
            out=$(eval ${requestComp} 2>/dev/null)
            __chezmoi_debug "completion output: ${out}"
        
            # Extract the directive integer following a : from the last line
            local lastLine
            while IFS='\n' read -r line; do
                lastLine=${line}
            done < <(printf "%s\n" "${out[@]}")
            __chezmoi_debug "last line: ${lastLine}"
        
            if [ "${lastLine[1]}" = : ]; then
                directive=${lastLine[2,-1]}
                # Remove the directive including the : and the newline
                local suffix
                (( suffix=${#lastLine}+2))
                out=${out[1,-$suffix]}
            else
                # There is no directive specified.  Leave $out as is.
                __chezmoi_debug "No directive found.  Setting do default"
                directive=0
            fi
        
            __chezmoi_debug "directive: ${directive}"
            __chezmoi_debug "completions: ${out}"
            __chezmoi_debug "flagPrefix: ${flagPrefix}"
        
            if [ $((directive & shellCompDirectiveError)) -ne 0 ]; then
                __chezmoi_debug "Completion received error. Ignoring completions."
                return
            fi
        
            local activeHelpMarker="_activeHelp_ "
            local endIndex=${#activeHelpMarker}
            local startIndex=$((${#activeHelpMarker}+1))
            local hasActiveHelp=0
            while IFS='\n' read -r comp; do
                # Check if this is an activeHelp statement (i.e., prefixed with $activeHelpMarker)
                if [ "${comp[1,$endIndex]}" = "$activeHelpMarker" ];then
                    __chezmoi_debug "ActiveHelp found: $comp"
                    comp="${comp[$startIndex,-1]}"
                    if [ -n "$comp" ]; then
                        compadd -x "${comp}"
                        __chezmoi_debug "ActiveHelp will need delimiter"
                        hasActiveHelp=1
                    fi
        
                    continue
                fi
        
                if [ -n "$comp" ]; then
                    # If requested, completions are returned with a description.
                    # The description is preceded by a TAB character.
                    # For zsh's _describe, we need to use a : instead of a TAB.
                    # We first need to escape any : as part of the completion itself.
                    comp=${comp//:/\\:}
        
                    local tab="$(printf '\t')"
                    comp=${comp//$tab/:}
        
                    __chezmoi_debug "Adding completion: ${comp}"
                    completions+=${comp}
                    lastComp=$comp
                fi
            done < <(printf "%s\n" "${out[@]}")
        
            # Add a delimiter after the activeHelp statements, but only if:
            # - there are completions following the activeHelp statements, or
            # - file completion will be performed (so there will be choices after the activeHelp)
            if [ $hasActiveHelp -eq 1 ]; then
                if [ ${#completions} -ne 0 ] || [ $((directive & shellCompDirectiveNoFileComp)) -eq 0 ]; then
                    __chezmoi_debug "Adding activeHelp delimiter"
                    compadd -x "--"
                    hasActiveHelp=0
                fi
            fi
        
            if [ $((directive & shellCompDirectiveNoSpace)) -ne 0 ]; then
                __chezmoi_debug "Activating nospace."
                noSpace="-S ''"
            fi
        
            if [ $((directive & shellCompDirectiveKeepOrder)) -ne 0 ]; then
                __chezmoi_debug "Activating keep order."
                keepOrder="-V"
            fi
        
            if [ $((directive & shellCompDirectiveFilterFileExt)) -ne 0 ]; then
                # File extension filtering
                local filteringCmd
                filteringCmd='_files'
                for filter in ${completions[@]}; do
                    if [ ${filter[1]} != '*' ]; then
                        # zsh requires a glob pattern to do file filtering
                        filter="\*.$filter"
                    fi
                    filteringCmd+=" -g $filter"
                done
                filteringCmd+=" ${flagPrefix}"
        
                __chezmoi_debug "File filtering command: $filteringCmd"
                _arguments '*:filename:'"$filteringCmd"
            elif [ $((directive & shellCompDirectiveFilterDirs)) -ne 0 ]; then
                # File completion for directories only
                local subdir
                subdir="${completions[1]}"
                if [ -n "$subdir" ]; then
                    __chezmoi_debug "Listing directories in $subdir"
                    pushd "${subdir}" >/dev/null 2>&1
                else
                    __chezmoi_debug "Listing directories in ."
                fi
        
                local result
                _arguments '*:dirname:_files -/'" ${flagPrefix}"
                result=$?
                if [ -n "$subdir" ]; then
                    popd >/dev/null 2>&1
                fi
                return $result
            else
                __chezmoi_debug "Calling _describe"
                if eval _describe $keepOrder "completions" completions $flagPrefix $noSpace; then
                    __chezmoi_debug "_describe found some completions"
        
                    # Return the success of having called _describe
                    return 0
                else
                    __chezmoi_debug "_describe did not find completions."
                    __chezmoi_debug "Checking if we should do file completion."
                    if [ $((directive & shellCompDirectiveNoFileComp)) -ne 0 ]; then
                        __chezmoi_debug "deactivating file completion"
        
                        # We must return an error code here to let zsh know that there were no
                        # completions found by _describe; this is what will trigger other
                        # matching algorithms to attempt to find completions.
                        # For example zsh can match letters in the middle of words.
                        return 1
                    else
                        # Perform file completion
                        __chezmoi_debug "Activating file completion"
        
                        # We must return the result of this command, so it must be the
                        # last command, or else we must store its result to return it.
                        _arguments '*:filename:_files'" ${flagPrefix}"
                    fi
                fi
            fi
        }
        
        # don't run the completion function when being source-ed or eval-ed
        if [ "$funcstack[1]" = "_chezmoi" ]; then
            _chezmoi
        fi
        > stdout '^# zsh completion for chezmoi'
        # test deleteValueAtPath template function (0.131s)
        > exec chezmoi execute-template '{{ dict "a" (dict "b" (dict "c" 1 "d" 2)) | deleteValueAtPath "a.b.c" | toJson }}'
        [stdout]
        {"a":{"b":{"d":2}}}> rmfinalnewline golden/deleteValueAtPath
        > cmp stdout golden/deleteValueAtPath
        # test ensureLinePrefix template function with two arguments (0.214s)
        > exec chezmoi execute-template '{{ "### Heading\nBody\n" | ensureLinePrefix "#" }}'
        [stdout]
        ### Heading
        #Body
        > cmp stdout golden/ensureLinePrefix2
        # test ensureLinePrefix template function with three arguments (0.042s)
        > exec chezmoi execute-template '{{ "### Heading\nBody\n" | ensureLinePrefix "#" "# " }}'
        [stdout]
        ### Heading
        # Body
        > cmp stdout golden/ensureLinePrefix3
        # test eqFold template function (0.110s)
        > exec chezmoi execute-template '{{ eqFold "foo" "Foo" "FOO" }}'
        [stdout]
        true> stdout '^true$'
        # test that the fromJson template function can deserialize JSON values (0.090s)
        > exec chezmoi execute-template '{{ fromJson "1" }}'
        [stdout]
        1> stdout '^1$'
        # test that the fromJson template function can deserialize JSON arrays (0.051s)
        > exec chezmoi execute-template '{{ fromJson "[1, 2]" }}'
        [stdout]
        [1 2]> stdout '^\[1 2\]$'
        # test fromJsonc template function (0.047s)
        > stdin golden/example.jsonc
        > exec chezmoi execute-template --with-stdin '{{ fromJsonc .chezmoi.stdin | toJson }}'
        [stdout]
        {"key":1}> stdout '{"key":1}'
        # test glob template function (0.030s)
        > exec chezmoi execute-template '{{ glob "*.txt" | join "\n" }}{{ "\n" }}'
        [stdout]
        file1.txt
        file2.txt
        > cmp stdout golden/glob
        # test globCaseInsensitive template function (0.040s)
        > exec chezmoi execute-template '{{ globCaseInsensitive "*.TXT" | join "\n" }}{{ "\n" }}'
        [stdout]
        file1.txt
        file2.txt
        > cmp stdout golden/glob
        # test hexDecode template function (0.104s)
        > exec chezmoi execute-template '{{ "6578616d706c65" | hexDecode }}'
        [stdout]
        example> stdout '^example$'
        # test hexEncode template function (0.124s)
        > exec chezmoi execute-template '{{ "example" | hexEncode }}'
        [stdout]
        6578616d706c65> stdout '^6578616d706c65$'
        # test ioreg template function (0.000s)
        > [darwin] exec chezmoi execute-template '{{ index ioreg "IOKitBuildVersion" }}'
        > [darwin] stdout 'Darwin Kernel Version'
        # test include template function with absolute path (0.057s)
        > exec chezmoi execute-template '{{ joinPath (env "HOME") ".include" | include }}'
        [stdout]
        # contents of .include
        > cmp stdout golden/include-abspath
        # test include template function with relative paths (0.050s)
        > exec chezmoi execute-template '{{ include ".include" }}'
        [stdout]
        # contents of .local/share/chezmoi/.include
        > cmp stdout golden/include-relpath
        # test includeTemplate template function (0.105s)
        > exec chezmoi execute-template '{{ includeTemplate ".template" "data" }}'
        [stdout]
        data
        > stdout ^data$
        # test includeTemplate template function searches .chezmoitemplates (0.060s)
        > exec chezmoi execute-template '{{ includeTemplate "template" "data" }}'
        [stdout]
        data
        > stdout ^data$
        # test joinPath template function (0.159s)
        > exec chezmoi execute-template '{{ joinPath "a" "b" }}'
        [stdout]
        a/b> stdout a${/}b
        > exec chezmoi execute-template '{{ joinPath .chezmoi.destDir "string" }}'
        [stdout]
        $WORK/home/user/string> stdout home${/@R}user${/@R}string
        # test jq template function (0.064s)
        > exec chezmoi execute-template '{{ dict "key" "value" | jq ".key" | first }}'
        [stdout]
        value> stdout ^value$
        # test isExecutable template function positive test case (0.051s)
        > [unix] exec chezmoi execute-template '{{ isExecutable "bin/executable" }}'
        [stdout]
        true> [windows] exec chezmoi execute-template '{{ isExecutable "bin/executable.cmd" }}'
        > stdout ^true$
        # test isExecutable template function negative test case (0.092s)
        > exec chezmoi execute-template '{{ isExecutable "bin/not-executable" }}'
        [stdout]
        false> stdout ^false$
        # test findExecutable template function to find in specified script varargs - success (0.066s)
        > [!windows] exec chezmoi execute-template '{{ findExecutable "echo" (list "/lib" "/bin" "/usr/bin") }}'
        [stdout]
        /bin/echo> [!windows] stdout ^/bin/echo$
        # test findOneExecutable template function to find in specified script varargs - success (0.126s)
        > [!windows] exec chezmoi execute-template '{{ findOneExecutable (list "chezmoish" "echo") (list "/lib" "/bin" "/usr/bin") }}'
        [stdout]
        /bin/echo> [!windows] stdout ^/bin/echo$
        # test findExecutable template function to find in specified script varargs - failure (0.042s)
        > [!windows] exec chezmoi execute-template '{{ findExecutable "echo" (list "/lib") }}'
        > [!windows] stdout ^$
        # test findExecutable template function to find in specified script - success (0.048s)
        > [!windows] exec chezmoi execute-template '{{ findExecutable "echo" (list "/lib" "/bin" "/usr/bin") }}'
        [stdout]
        /bin/echo> [!windows] stdout ^/bin/echo$
        # test findExecutable template function to find in specified script - failure (0.104s)
        > [!windows] exec chezmoi execute-template '{{ findExecutable "echo" (list "/lib") }}'
        > [!windows] stdout ^$
        # test findExecutable template function to find in specified script - success with extension (0.000s)
        > [windows] exec chezmoi execute-template '{{ findExecutable "git.exe" (list "c:\\windows\\system32" "c:\\windows\\system64" "C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0" "C:\\Program Files\\Git\\cmd") }}'
        > [windows] stdout 'git'
        # test findExecutable template function to find in specified script - success without extension (0.000s)
        > [windows] exec chezmoi execute-template '{{ findExecutable "git" (list "c:\\windows\\system32" "c:\\windows\\system64" "C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0" "C:\\Program Files\\Git\\cmd") }}'
        > [windows] stdout 'git'
        # test findExecutable template function to find in specified script - failure (0.000s)
        > [windows] exec chezmoi execute-template '{{ findExecutable "asdf" (list "c:\\windows\\system32" "c:\\windows\\system64" "C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0" "C:\\Program Files\\Git\\cmd") }}'
        > [windows] stdout '^$'
        # test lookPath template function to find in PATH (0.052s)
        > exec chezmoi execute-template '{{ lookPath "go" }}'
        [stdout]
        /usr/lib/go/bin/go> stdout go$exe
        # test lookPath template function to check if file exists (0.058s)
        > exec chezmoi execute-template '{{ lookPath "/non-existing-file" }}'
        > ! stdout .
        # test lstat template function (0.042s)
        > exec chezmoi execute-template '{{ (joinPath .chezmoi.homeDir "symlink" | lstat).type }}'
        [stdout]
        symlink> stdout ^symlink$
        # test mozillaInstallHash template function (0.041s)
        > exec chezmoi execute-template '{{ mozillaInstallHash "/Applications/Firefox.app/Contents/MacOS" }}'
        [stdout]
        2656FF1E876E9973> stdout 2656FF1E876E9973
        # test the output and fromJson template functions (0.046s)
        > [unix] exec chezmoi execute-template '{{ $red := output "generate-color-formats" "#ff0000" | fromJson }}{{ $red.rgb.r }}'
        [stdout]
        255> [unix] stdout '^255$'
        # test the outputList and fromJson template functions (0.035s)
        > [unix] exec chezmoi execute-template '{{ $red := outputList "generate-color-formats" (list "#ff0000" ) | fromJson }}{{ $red.rgb.r }}'
        [stdout]
        255> [unix] stdout '^255$'
        # test that the output function returns an error if the command fails (0.042s)
        > [unix] ! exec chezmoi execute-template '{{ output "false" }}'
        [stderr]
        chezmoi: template: arg1:1:3: executing "arg1" at <output "false">: error calling output: /usr/bin/false: exit status 1
        [exit status 1]
        > [unix] stderr 'error calling output: .*/false: exit status 1'
        # test pruneEmptyDicts template function (0.020s)
        > exec chezmoi execute-template '{{ dict "key1" "value1" "key2" (dict) | pruneEmptyDicts | toJson }}'
        [stdout]
        {"key1":"value1"}> rmfinalnewline golden/pruneEmptyDicts
        > cmp stdout golden/pruneEmptyDicts
        # test replaceAllRegex template function (0.034s)
        > exec chezmoi execute-template '{{ "foo bar baz" | replaceAllRegex "ba" "BA" }}'
        [stdout]
        foo BAr BAz> stdout 'foo BAr BAz'
        # test the abortEmpty template function (0.020s)
        > exec chezmoi execute-template 'before {{ abortEmpty }} after'
        > ! stdout .
        # test setValueAtPath template function (0.059s)
        > exec chezmoi execute-template '{{ dict | setValueAtPath "key1.key2" "value2" | toJson }}'
        [stdout]
        {"key1":{"key2":"value2"}}> rmfinalnewline golden/setValueAtPath
        > cmp stdout golden/setValueAtPath
        # test stdinIsATTY template function (0.031s)
        > exec chezmoi execute-template '{{ stdinIsATTY }}'
        [stdout]
        false> stdout false
        # test toIni template function (0.052s)
        > exec chezmoi execute-template '{{ dict "key" "value" "section" (dict "subkey" "subvalue") | toIni }}'
        [stdout]
        key = value
        
        [section]
        subkey = subvalue
        > cmp stdout golden/toIni
        # test stat template function (0.022s)
        > exec chezmoi execute-template '{{ (joinPath .chezmoi.homeDir "symlink" | stat).isDir }}'
        [stdout]
        true> stdout true
        # test that the output template function returns a command's output (0.021s)
        > exec chezmoi execute-template '{{ output "chezmoi-output-test" "arg" | trim }}'
        [stdout]
        arg> stdout arg
        # test that the output template function fails if the command fails (0.045s)
        > ! exec chezmoi execute-template '{{ output "false" }}'
        [stderr]
        chezmoi: template: arg1:1:3: executing "arg1" at <output "false">: error calling output: /usr/bin/false: exit status 1
        [exit status 1]
        # test fromToml template function (0.035s)
        > exec chezmoi execute-template '{{ (fromToml "[section]\nkey = \"value\"").section.key }}'
        [stdout]
        value> stdout '^value$'
        # test toToml template function (0.021s)
        > exec chezmoi execute-template '{{ dict "key" "value" | toToml }}'
        [stdout]
        key = "value"
        > stdout '^key = .value.$'
        # test that the toPrettyJson template function does not escape HTML characters, see https://github.com/golang/go/blob/7a6ddbb425218b2f4866478d0c673ba82c8438e6/src/encoding/json/encode.go#L48-L55 (0.019s)
        > exec chezmoi execute-template '{{ dict "a" (dict "b" "&") | toPrettyJson "    " }}'
        [stdout]
        {
            "a": {
                "b": "&"
            }
        }
        > cmp stdout golden/toPrettyJson
        # test that toStrings flattens nested lists (0.022s)
        > exec chezmoi execute-template '{{ toStrings (list "a" "b" (list "c" "d")) }}'
        [stdout]
        [a b c d]> stdout '\[a b c d\]'
        # test fromYaml template function (0.031s)
        > exec chezmoi execute-template '{{ (fromYaml "key1: value1\nkey2: value2").key2 }}'
        [stdout]
        value2> stdout '^value2$'
        # test toYaml template function (0.020s)
        > exec chezmoi execute-template '{{ dict "key" "value" | toYaml }}'
        [stdout]
        key: value
        > stdout '^key: value$'
        # test that the overridden splitList function's output is compatible with quoteList (0.040s)
        > exec chezmoi execute-template '{{ "a b" | splitList " " | quoteList }}'
        [stdout]
        ["a" "b"]> stdout '["a" "b"]'
        PASS
        
=== NAME  TestScript/gpg
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] skip 'skipping gpg tests on Windows'
        > [!exec:gpg] skip 'gpg not found in $PATH'
        > mkhomedir
        > mkgpgconfig
        # test that chezmoi add --encrypt encrypts (0.028s)
        > cp golden/.encrypted $HOME
        > exec chezmoi add --encrypt $HOME${/}.encrypted
        [stderr]
        gpg: Warning: using insecure memory!
        gpg: checking the trustdb
        gpg: marginals needed: 3  completes needed: 1  trust model: pgp
        gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
        gpg: next trustdb check due at 2029-07-19
        > exists $CHEZMOISOURCEDIR/encrypted_dot_encrypted.asc
        > grep '-----BEGIN PGP MESSAGE-----' $CHEZMOISOURCEDIR/encrypted_dot_encrypted.asc
        # test that chezmoi apply decrypts (0.146s)
        > rm $HOME/.encrypted
        > exec chezmoi apply --force
        [stderr]
        gpg: Warning: using insecure memory!
        gpg: encrypted with cv25519 key, ID BF3933E94BD05A31, created 2026-07-20
              "chezmoi-test-gpg-key"
        > cmp golden/.encrypted $HOME/.encrypted
        # test that chezmoi edit --apply transparently decrypts and re-encrypts (0.228s)
        > exec chezmoi edit --apply --force $HOME${/}.encrypted
        [stderr]
        gpg: Warning: using insecure memory!
        gpg: encrypted with cv25519 key, ID BF3933E94BD05A31, created 2026-07-20
              "chezmoi-test-gpg-key"
        chezmoi: warning: $WORK/bin/editor $WORK/.tmp/chezmoi-encrypted1221465821/.encrypted: returned in less than 1s
        gpg: Warning: using insecure memory!
        gpg: Warning: using insecure memory!
        gpg: encrypted with cv25519 key, ID BF3933E94BD05A31, created 2026-07-20
              "chezmoi-test-gpg-key"
        > grep '# edited' $HOME/.encrypted
        PASS
        
=== NAME  TestScript/init
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [!exec:git] skip 'git not found in $PATH'
        > mkgitconfig
        > mkhomedir golden
        > mkhomedir
        # test that chezmoi init creates a git repo (0.175s)
        > exec chezmoi init
        > exists $CHEZMOISOURCEDIR/.git
        # create a commit (0.244s)
        > cp golden/chezmoi.toml $CHEZMOISOURCEDIR/.chezmoi.toml.tmpl
        > cp golden/.file $CHEZMOISOURCEDIR/dot_file
        > exec chezmoi git add .
        > exec chezmoi git commit -- --message 'Initial commit'
        [stdout]
        [master (root-commit) 8c3a44f] Initial commit
         2 files changed, 3 insertions(+)
         create mode 100644 .chezmoi.toml.tmpl
         create mode 100644 dot_file
        > chhome home2/user
        # test that chezmoi init fetches git repo but does not apply (0.473s)
        > mkgitconfig
        > exec chezmoi init file://$WORK/home/user/.local/share/chezmoi
        [stderr]
        Cloning into '$WORK/home2/user/.local/share/chezmoi'...
        > exists $CHEZMOISOURCEDIR/.git
        > ! exists $HOME/.file
        > chhome home3/user
        # test that chezmoi init --apply fetches a git repo and runs chezmoi apply (0.365s)
        > mkgitconfig
        > exec chezmoi init --apply --force file://$WORK/home/user/.local/share/chezmoi
        [stderr]
        Cloning into '$WORK/home3/user/.local/share/chezmoi'...
        > exists $CHEZMOISOURCEDIR/.git
        > cmp $HOME/.file golden/.file
        > chhome home4/user
        # test that chezmoi init --apply --depth 1 --force --purge clones, applies, and purges (0.223s)
        > mkgitconfig
        > exists $CHEZMOICONFIGDIR
        > ! exists $CHEZMOISOURCEDIR
        > exec chezmoi init --apply --depth 1 --force --purge file://$WORK/home/user/.local/share/chezmoi
        [stderr]
        Cloning into '$WORK/home4/user/.local/share/chezmoi'...
        > cmp $HOME/.file golden/.file
        > ! exists $CHEZMOICONFIGDIR
        > ! exists $CHEZMOISOURCEDIR
        > chhome home5/user
        # test that chezmoi init does not clone the repo if it is already checked out but does create the config file (0.027s)
        > mkgitconfig
        > exec chezmoi init --source=$HOME/dotfiles file://$WORK/nonexistentrepo
        > exists $CHEZMOICONFIGDIR/chezmoi.toml
        > chhome home6/user
        # test chezmoi init --one-shot (0.185s)
        > mkgitconfig
        > exec chezmoi init --one-shot file://$WORK/home/user/.local/share/chezmoi
        [stderr]
        Cloning into '$WORK/home6/user/.local/share/chezmoi'...
        > cmp $HOME/.file golden/.file
        > ! exists $CHEZMOICONFIGDIR
        > ! exists $CHEZMOISOURCEDIR
        > chhome home7/user
        # test chezmoi init --data=true (0.046s)
        > mkgitconfig
        > exec chezmoi init --data=true file://$WORK/home/user/.local/share/chezmoi
        > cmp $CHEZMOICONFIGDIR/chezmoi.toml golden/chezmoi.toml
        # test chezmoi init --data=false (0.026s)
        > exec chezmoi init --data=false file://$WORK/home/user/.local/share/chezmoi
        > cmp $CHEZMOICONFIGDIR/chezmoi.toml golden/chezmoi.toml-no-data
        > chhome home8/user
        # test that chezmoi init fails if the generated config is not valid (0.031s)
        > mkgitconfig
        > ! exec chezmoi init
        [stderr]
        chezmoi: $WORK/home8/user/.local/share/chezmoi/.chezmoi.toml.tmpl: toml: line 2 (last key "diff"): expected '.' or '=', but got ':' instead
        [exit status 1]
        > stderr 'expected'
        > ! exists .config/chezmoi
        > chhome home/user
        # create a new branch (0.127s)
        > exec chezmoi git checkout -- -b new-branch
        [stderr]
        Switched to a new branch 'new-branch'
        > edit $CHEZMOISOURCEDIR/dot_file
        > exec chezmoi git add dot_file
        > exec chezmoi git commit -- --message 'Edit .file'
        [stdout]
        [new-branch d64ff9f] Edit .file
         1 file changed, 1 insertion(+)
        > exec chezmoi git checkout master
        [stderr]
        Switched to branch 'master'
        > chhome home9/user
        # test chezmoi init --branch (0.126s)
        > mkgitconfig
        > exec chezmoi init --apply --branch=new-branch file://$WORK/home/user/.local/share/chezmoi
        [stderr]
        Cloning into '$WORK/home9/user/.local/share/chezmoi'...
        > grep '# edited' $HOME/.file
        > chhome home10/user
        # test chezmoi --config init (0.118s)
        > mkgitconfig
        > exec chezmoi --config=$HOME/.chezmoi.toml init file://$WORK/home/user/.local/share/chezmoi
        [stderr]
        Cloning into '$WORK/home10/user/.local/share/chezmoi'...
        > cmp $HOME/.chezmoi.toml golden/chezmoi.toml
        > ! exists $CHEZMOICONFIGDIR/chezmoi.toml
        > chhome home11/user
        # test chezmoi init --config-path (0.096s)
        > mkgitconfig
        > exec chezmoi init --config-path=$HOME/.chezmoi.toml file://$WORK/home/user/.local/share/chezmoi
        [stderr]
        Cloning into '$WORK/home11/user/.local/share/chezmoi'...
        > cmp $HOME/.chezmoi.toml golden/chezmoi.toml
        > ! exists $CHEZMOICONFIGDIR/chezmoi.toml
        > chhome home12/user
        # test chezmoi init when the source dir is already in a git working copy (0.018s)
        > mkgitconfig
        > exec git init $HOME/.local/share
        [stdout]
        Initialized empty Git repository in $WORK/home12/user/.local/share/.git/
        > exec chezmoi init
        > ! exists $CHEZMOISOURCEDIR/.git
        > chhome home13/user
        # test chezmoi init --prompt* (0.025s)
        > exec chezmoi init --promptBool bool=true,boolOncePrompt=true --promptChoice=choice=one,choiceOncePrompt=two --promptInt int=1,intOncePrompt=2 --promptString string=string,stringOncePrompt=once --promptMultichoice multichoice=one/two,multichoiceOncePrompt=two/three
        > cmp $CHEZMOICONFIGDIR/chezmoi.yaml golden/chezmoi.yaml
        > chhome home14/user
        # test that chezmoi init creates a config file with a .yml extension (0.018s)
        > exec chezmoi init
        > exists $CHEZMOICONFIGDIR/chezmoi.yml
        # test that chezmoi reads a config file with a .yml extension (0.019s)
        > exec chezmoi execute-template '{{ .key }}'
        [stdout]
        value> stdout ^value$
        PASS
        
=== NAME  TestScript/gpgencryption
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] skip 'skipping gpg tests on Windows'
        > [!exec:gpg] skip 'gpg not found in $PATH'
        > mkhomedir
        > mkgpgconfig
        # test that chezmoi add --encrypt encrypts (0.048s)
        > cp golden/.encrypted $HOME
        > exec chezmoi add --encrypt $HOME${/}.encrypted
        [stderr]
        gpg: Warning: using insecure memory!
        gpg: checking the trustdb
        gpg: marginals needed: 3  completes needed: 1  trust model: pgp
        gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
        gpg: next trustdb check due at 2029-07-19
        > exists $CHEZMOISOURCEDIR/encrypted_dot_encrypted.asc
        > grep '-----BEGIN PGP MESSAGE-----' $CHEZMOISOURCEDIR/encrypted_dot_encrypted.asc
        # test that chezmoi apply decrypts (0.131s)
        > rm $HOME/.encrypted
        > exec chezmoi apply --force
        [stderr]
        gpg: Warning: using insecure memory!
        gpg: encrypted with cv25519 key, ID ADFD4C6A82401C63, created 2026-07-20
              "chezmoi-test-gpg-key"
        > cmp golden/.encrypted $HOME/.encrypted
        # test that chezmoi apply --exclude=encrypted does not apply encrypted files (0.156s)
        > rm $HOME/.encrypted
        > exec chezmoi apply --exclude=encrypted --force
        > ! exists $HOME/.encrypted
        > exec chezmoi apply --force
        [stderr]
        gpg: Warning: using insecure memory!
        gpg: encrypted with cv25519 key, ID ADFD4C6A82401C63, created 2026-07-20
              "chezmoi-test-gpg-key"
        > cmp $HOME/.encrypted golden/.encrypted
        # test that chezmoi detects gpg encryption if gpg is configured but encryption = "gpg" is not set (0.114s)
        > removeline $CHEZMOICONFIGDIR/chezmoi.toml 'encryption = "gpg"'
        > exec chezmoi cat $HOME${/}.encrypted
        [stdout]
        # contents of .encrypted
        [stderr]
        chezmoi: warning: 'encryption' not set, using gpg configuration. Check if 'encryption' is correctly set as the top-level key.
        gpg: Warning: using insecure memory!
        gpg: encrypted with cv25519 key, ID ADFD4C6A82401C63, created 2026-07-20
              "chezmoi-test-gpg-key"
        > cmp stdout golden/.encrypted
        > stderr 'chezmoi: warning: ''encryption'' not set, using gpg configuration. Check if ''encryption'' is correctly set as the top-level key.'
        > prependline $CHEZMOICONFIGDIR/chezmoi.toml 'encryption = "gpg"'
        # test that chezmoi decrypt decrypts stdin (0.118s)
        > stdin $CHEZMOISOURCEDIR${/}encrypted_dot_encrypted.asc
        > exec chezmoi decrypt
        [stdout]
        # contents of .encrypted
        [stderr]
        gpg: Warning: using insecure memory!
        gpg: encrypted with cv25519 key, ID ADFD4C6A82401C63, created 2026-07-20
              "chezmoi-test-gpg-key"
        > cmp stdout golden/.encrypted
        # test that chezmoi decrypt decrypts a file (0.106s)
        > exec chezmoi decrypt $CHEZMOISOURCEDIR${/}encrypted_dot_encrypted.asc
        [stdout]
        # contents of .encrypted
        [stderr]
        gpg: Warning: using insecure memory!
        gpg: encrypted with cv25519 key, ID ADFD4C6A82401C63, created 2026-07-20
              "chezmoi-test-gpg-key"
        > cmp stdout golden/.encrypted
        # test chezmoi encrypt/chezmoi decrypt round trip (0.118s)
        > exec chezmoi encrypt golden/.encrypted
        [stdout]
        -----BEGIN PGP MESSAGE-----
        
        hF4Drf1MaoJAHGMSAQdA4qwLjSrE0rfx6dsU6g/5o2LOhl+wiak/2rHwnGO+/hEw
        0FQXwvYD1OGDjerKBW8llWjDEqa01AsTDW8C6Up5dLm7a7ReQFFhVMBDK9Dxu/7r
        0lwBBa5Ik2CxBOOvc8VVlvM5RNUzmijQJ9GeWk2ZWprksgVajJbajxVsZsfWng5t
        9Pd/q2Ysn9a6G72p0Xu/oHsYCFbV40lkT0NE2HHFmovgeKJg71pSRgQYd3Bc9Q==
        =n9+P
        -----END PGP MESSAGE-----
        [stderr]
        gpg: Warning: using insecure memory!
        > stdout '-----BEGIN PGP MESSAGE-----'
        > stdin stdout
        > exec chezmoi decrypt
        [stdout]
        # contents of .encrypted
        [stderr]
        gpg: Warning: using insecure memory!
        gpg: encrypted with cv25519 key, ID ADFD4C6A82401C63, created 2026-07-20
              "chezmoi-test-gpg-key"
        > cmp stdout golden/.encrypted
        # test that chezmoi edit --apply transparently decrypts and re-encrypts (0.198s)
        > exec chezmoi edit --apply --force $HOME${/}.encrypted
        [stderr]
        gpg: Warning: using insecure memory!
        gpg: encrypted with cv25519 key, ID ADFD4C6A82401C63, created 2026-07-20
              "chezmoi-test-gpg-key"
        chezmoi: warning: $WORK/bin/editor $WORK/.tmp/chezmoi-encrypted3322289004/.encrypted: returned in less than 1s
        gpg: Warning: using insecure memory!
        gpg: Warning: using insecure memory!
        gpg: encrypted with cv25519 key, ID ADFD4C6A82401C63, created 2026-07-20
              "chezmoi-test-gpg-key"
        > grep '# edited' $HOME/.encrypted
        # test that chezmoi files in subdirectories can be encrypted and that suffix can be set (0.192s)
        > appendline $CHEZMOICONFIGDIR/chezmoi.toml '  suffix = ".gpg"'
        > mkdir $HOME/.dir
        > cp golden/.encrypted $HOME/.dir
        > exec chezmoi add --encrypt $HOME${/}.dir${/}.encrypted
        [stderr]
        gpg: Warning: using insecure memory!
        > grep '-----BEGIN PGP MESSAGE-----' $CHEZMOISOURCEDIR/dot_dir/encrypted_dot_encrypted.gpg
        > exec chezmoi edit --apply $HOME${/}.dir${/}.encrypted
        [stderr]
        gpg: Warning: using insecure memory!
        gpg: encrypted with cv25519 key, ID ADFD4C6A82401C63, created 2026-07-20
              "chezmoi-test-gpg-key"
        chezmoi: warning: $WORK/bin/editor $WORK/.tmp/chezmoi-encrypted3469893107/.dir/.encrypted: returned in less than 1s
        gpg: Warning: using insecure memory!
        gpg: Warning: using insecure memory!
        gpg: encrypted with cv25519 key, ID ADFD4C6A82401C63, created 2026-07-20
              "chezmoi-test-gpg-key"
        > grep '# edited' $HOME/.dir/.encrypted
        # test that chezmoi edit strips the encrypted suffix (0.076s)
        > [unix] env EDITOR=echo
        > [windows] env EDITOR=printargs
        > exec chezmoi edit $HOME${/}.dir${/}.encrypted
        [stdout]
        $WORK/.tmp/chezmoi-encrypted1053005720/.dir/.encrypted
        [stderr]
        gpg: Warning: using insecure memory!
        gpg: encrypted with cv25519 key, ID ADFD4C6A82401C63, created 2026-07-20
              "chezmoi-test-gpg-key"
        chezmoi: warning: /usr/bin/echo $WORK/.tmp/chezmoi-encrypted1053005720/.dir/.encrypted: returned in less than 1s
        > stdout '\.dir/\.encrypted\r?$'
        PASS
        
=== NAME  TestScript/gpgencryptionsymmetric
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] skip 'skipping gpg tests on Windows'
        > [!exec:gpg] skip 'gpg not found in $PATH'
        > mkhomedir
        > mkgpgconfig -symmetric
        # test that chezmoi add --encrypt encrypts (0.176s)
        > cp golden/.encrypted $HOME
        > exec chezmoi add --encrypt $HOME${/}.encrypted
        [stderr]
        gpg: Warning: using insecure memory!
        > exists $CHEZMOISOURCEDIR/encrypted_dot_encrypted.asc
        > grep '-----BEGIN PGP MESSAGE-----' $CHEZMOISOURCEDIR/encrypted_dot_encrypted.asc
        # test that chezmoi apply decrypts (0.165s)
        > rm $HOME/.encrypted
        > exec chezmoi apply --force
        [stderr]
        gpg: Warning: using insecure memory!
        gpg: AES256.CFB encrypted data
        gpg: encrypted with 1 passphrase
        > cmp golden/.encrypted $HOME/.encrypted
        # test that chezmoi apply --exclude=encrypted does not apply encrypted files (0.198s)
        > rm $HOME/.encrypted
        > exec chezmoi apply --exclude=encrypted --force
        > ! exists $HOME/.encrypted
        > exec chezmoi apply --force
        [stderr]
        gpg: Warning: using insecure memory!
        gpg: AES256.CFB encrypted data
        gpg: encrypted with 1 passphrase
        > cmp $HOME/.encrypted golden/.encrypted
        # test that chezmoi detects gpg encryption if gpg is configured but encryption = "gpg" is not set (0.149s)
        > removeline $CHEZMOICONFIGDIR/chezmoi.toml 'encryption = "gpg"'
        > exec chezmoi cat $HOME${/}.encrypted
        [stdout]
        # contents of .encrypted
        [stderr]
        chezmoi: warning: 'encryption' not set, using gpg configuration. Check if 'encryption' is correctly set as the top-level key.
        gpg: Warning: using insecure memory!
        gpg: AES256.CFB encrypted data
        gpg: encrypted with 1 passphrase
        > cmp stdout golden/.encrypted
        > stderr 'chezmoi: warning: ''encryption'' not set, using gpg configuration. Check if ''encryption'' is correctly set as the top-level key.'
        > prependline $CHEZMOICONFIGDIR/chezmoi.toml 'encryption = "gpg"'
        # test that chezmoi edit --apply transparently decrypts and re-encrypts (0.396s)
        > exec chezmoi edit --apply --force $HOME${/}.encrypted
        [stderr]
        gpg: Warning: using insecure memory!
        gpg: AES256.CFB encrypted data
        gpg: encrypted with 1 passphrase
        chezmoi: warning: $WORK/bin/editor $WORK/.tmp/chezmoi-encrypted1733576108/.encrypted: returned in less than 1s
        gpg: Warning: using insecure memory!
        gpg: Warning: using insecure memory!
        gpg: AES256.CFB encrypted data
        gpg: encrypted with 1 passphrase
        > grep '# edited' $HOME/.encrypted
        # test that chezmoi files in subdirectories can be encrypted and that suffix can be set (0.447s)
        > appendline $CHEZMOICONFIGDIR/chezmoi.toml '  suffix = ".gpg"'
        > mkdir $HOME/.dir
        > cp golden/.encrypted $HOME/.dir
        > exec chezmoi add --encrypt $HOME${/}.dir${/}.encrypted
        [stderr]
        gpg: Warning: using insecure memory!
        > grep '-----BEGIN PGP MESSAGE-----' $CHEZMOISOURCEDIR/dot_dir/encrypted_dot_encrypted.gpg
        > exec chezmoi edit --apply $HOME${/}.dir${/}.encrypted
        [stderr]
        gpg: Warning: using insecure memory!
        gpg: AES256.CFB encrypted data
        gpg: encrypted with 1 passphrase
        chezmoi: warning: $WORK/bin/editor $WORK/.tmp/chezmoi-encrypted1889991670/.dir/.encrypted: returned in less than 1s
        gpg: Warning: using insecure memory!
        gpg: Warning: using insecure memory!
        gpg: AES256.CFB encrypted data
        gpg: encrypted with 1 passphrase
        > grep '# edited' $HOME/.dir/.encrypted
        PASS
        
=== NAME  TestScript/issue2695
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi status returns an error when the JSON config file is invalid (0.077s)
        > ! exec chezmoi status
        [stderr]
        chezmoi: invalid config: $WORK/home/user/.config/chezmoi/chezmoi.json: invalid character 'u' looking for beginning of value
        [exit status 1]
        > stderr 'invalid config'
        > ! stderr 'json.*json'
        # test that chezmoi doctor warns about invalid JSON config files (11.435s)
        > ! exec chezmoi doctor
        [stdout]
        RESULT    CHECK                       MESSAGE
        ok        version                     v2.0.0+test, commit HEAD, built at 2026-07-20T20:42:28Z, built by testscript
        warning   latest-version              v2.71.1
        ok        os-arch                     linux/amd64 (Arch Linux)
        ok        build-info                  CGO_ENABLED=1, CGO_CFLAGS=-march=x86-64-v2 -O3 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -mpclmul -g -ffile-prefix-map=/startdir/src=/usr/src/debug/chezmoi, CGO_CXXFLAGS=-march=x86-64-v2 -O3 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -mpclmul -Wp,-D_GLIBCXX_ASSERTIONS -g -ffile-prefix-map=/startdir/src=/usr/src/debug/chezmoi, CGO_LDFLAGS=-Wl,-O1 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now          -Wl,-z,pack-relative-relocs, GOEXPERIMENT=nodwarf5, GOAMD64=v2
        ok        uname                       Linux arch-nspawn-4102825 6.18.31-1-lts #1 SMP PREEMPT_DYNAMIC Fri, 15 May 2026 15:01:51 +0000 x86_64 GNU/Linux
        ok        go-version                  go1.26.5-X:nodwarf5 (gc)
        ok        executable                  /tmp/testscript-main23456104/bin/chezmoi
        ok        upgrade-method              replace-executable
        error     config-file                 ~/.config/chezmoi/chezmoi.json: ~/.config/chezmoi/chezmoi.json: invalid character 'u' looking for beginning of value
        error     source-dir                  open ~/.local/share/chezmoi: no such file or directory
        ok        suspicious-entries          ~/.local/share/chezmoi: no such file or directory
        error     working-tree                open ~/.local/share/chezmoi: no such file or directory
        ok        dest-dir                    ~ is a directory
        failed    hardlink                    stat ~/.local/share/chezmoi: no such file or directory
        ok        symlink                     created symlink from .new-name to .old-name
        ok        umask                       022
        failed    cd-command                  exec: "$WORK/bin/shell": stat $WORK/bin/shell: no such file or directory
        ok        cd-args                     $WORK/bin/shell
        info      diff-command                not set
        ok        edit-command                found $WORK/bin/editor
        ok        edit-args                   $WORK/bin/editor
        ok        git-command                 found /usr/bin/git, version 2.55.0
        warning   merge-command               vimdiff not found in $PATH
        failed    shell-command               exec: "$WORK/bin/shell": stat $WORK/bin/shell: no such file or directory
        ok        shell-args                  $WORK/bin/shell
        info      age-command                 age not found in $PATH
        ok        gpg-command                 found /usr/bin/gpg, version 2.4.9
        info      pinentry-command            not set
        info      1password-command           op not found in $PATH
        info      bitwarden-command           bw not found in $PATH
        info      bitwarden-secrets-command   bws not found in $PATH
        info      dashlane-command            dcli not found in $PATH
        info      doppler-command             doppler not found in $PATH
        info      gopass-command              gopass not found in $PATH
        info      keepassxc-command           keepassxc-cli not found in $PATH
        info      keepassxc-db                not set
        info      keeper-command              keeper not found in $PATH
        info      lastpass-command            lpass not found in $PATH
        info      pass-command                pass not found in $PATH
        info      passhole-command            ph not found in $PATH
        info      protonpass-command          pass-cli not found in $PATH
        info      rbw-command                 rbw not found in $PATH
        info      vault-command               vault not found in $PATH
        info      secret-command              not set
        [exit status 1]
        > stdout 'error\s+config-file\s+.*invalid character'
        > chhome home2/user
        # test that chezmoi status returns an error when the TOML config file is invalid (0.025s)
        > ! exec chezmoi status
        [stderr]
        chezmoi: invalid config: $WORK/home2/user/.config/chezmoi/chezmoi.toml: toml: line 1: expected '.' or '=', but got 'f' instead
        [exit status 1]
        > stderr 'invalid config'
        > ! stderr 'chezmoi\.toml.*chezmoi\.toml'
        # test that chezmoi doctor warns about invalid TOML config files (0.534s)
        > ! exec chezmoi doctor
        [stdout]
        RESULT    CHECK                       MESSAGE
        ok        version                     v2.0.0+test, commit HEAD, built at 2026-07-20T20:42:40Z, built by testscript
        warning   latest-version              v2.71.1
        ok        os-arch                     linux/amd64 (Arch Linux)
        ok        build-info                  CGO_ENABLED=1, CGO_CFLAGS=-march=x86-64-v2 -O3 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -mpclmul -g -ffile-prefix-map=/startdir/src=/usr/src/debug/chezmoi, CGO_CXXFLAGS=-march=x86-64-v2 -O3 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -mpclmul -Wp,-D_GLIBCXX_ASSERTIONS -g -ffile-prefix-map=/startdir/src=/usr/src/debug/chezmoi, CGO_LDFLAGS=-Wl,-O1 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now          -Wl,-z,pack-relative-relocs, GOEXPERIMENT=nodwarf5, GOAMD64=v2
        ok        uname                       Linux arch-nspawn-4102825 6.18.31-1-lts #1 SMP PREEMPT_DYNAMIC Fri, 15 May 2026 15:01:51 +0000 x86_64 GNU/Linux
        ok        go-version                  go1.26.5-X:nodwarf5 (gc)
        ok        executable                  /tmp/testscript-main23456104/bin/chezmoi
        ok        upgrade-method              replace-executable
        error     config-file                 ~/.config/chezmoi/chezmoi.toml: ~/.config/chezmoi/chezmoi.toml: toml: line 1: expected '.' or '=', but got 'f' instead
        error     source-dir                  open ~/.local/share/chezmoi: no such file or directory
        ok        suspicious-entries          ~/.local/share/chezmoi: no such file or directory
        error     working-tree                open ~/.local/share/chezmoi: no such file or directory
        ok        dest-dir                    ~ is a directory
        failed    hardlink                    stat ~/.local/share/chezmoi: no such file or directory
        ok        symlink                     created symlink from .new-name to .old-name
        ok        umask                       022
        failed    cd-command                  exec: "$WORK/bin/shell": stat $WORK/bin/shell: no such file or directory
        ok        cd-args                     $WORK/bin/shell
        info      diff-command                not set
        ok        edit-command                found $WORK/bin/editor
        ok        edit-args                   $WORK/bin/editor
        ok        git-command                 found /usr/bin/git, version 2.55.0
        warning   merge-command               vimdiff not found in $PATH
        failed    shell-command               exec: "$WORK/bin/shell": stat $WORK/bin/shell: no such file or directory
        ok        shell-args                  $WORK/bin/shell
        info      age-command                 age not found in $PATH
        ok        gpg-command                 found /usr/bin/gpg, version 2.4.9
        info      pinentry-command            not set
        info      1password-command           op not found in $PATH
        info      bitwarden-command           bw not found in $PATH
        info      bitwarden-secrets-command   bws not found in $PATH
        info      dashlane-command            dcli not found in $PATH
        info      doppler-command             doppler not found in $PATH
        info      gopass-command              gopass not found in $PATH
        info      keepassxc-command           keepassxc-cli not found in $PATH
        info      keepassxc-db                not set
        info      keeper-command              keeper not found in $PATH
        info      lastpass-command            lpass not found in $PATH
        info      pass-command                pass not found in $PATH
        info      passhole-command            ph not found in $PATH
        info      protonpass-command          pass-cli not found in $PATH
        info      rbw-command                 rbw not found in $PATH
        info      vault-command               vault not found in $PATH
        info      secret-command              not set
        [exit status 1]
        > stdout 'error\s+config-file'
        > chhome home3/user
        # test that chezmoi status returns an error when the YAML config file is invalid (0.030s)
        > ! exec chezmoi status
        [stderr]
        chezmoi: invalid config: $WORK/home3/user/.config/chezmoi/chezmoi.yaml: [1:1] string was used where mapping is expected
        >  1 | string
               ^
        
        [exit status 1]
        > stderr 'invalid config'
        > ! stderr 'chezmoi\.yaml.*chezmoi\.yaml'
        # test that chezmoi doctor warns about invalid YAML config files (1.020s)
        > ! exec chezmoi doctor
        [stdout]
        RESULT    CHECK            MESSAGE
        ok        version          v2.0.0+test, commit HEAD, built at 2026-07-20T20:42:40Z, built by testscript
        warning   latest-version   v2.71.1
        ok        os-arch          linux/amd64 (Arch Linux)
        ok        build-info       CGO_ENABLED=1, CGO_CFLAGS=-march=x86-64-v2 -O3 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -mpclmul -g -ffile-prefix-map=/startdir/src=/usr/src/debug/chezmoi, CGO_CXXFLAGS=-march=x86-64-v2 -O3 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -mpclmul -Wp,-D_GLIBCXX_ASSERTIONS -g -ffile-prefix-map=/startdir/src=/usr/src/debug/chezmoi, CGO_LDFLAGS=-Wl,-O1 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now          -Wl,-z,pack-relative-relocs, GOEXPERIMENT=nodwarf5, GOAMD64=v2
        ok        uname            Linux arch-nspawn-4102825 6.18.31-1-lts #1 SMP PREEMPT_DYNAMIC Fri, 15 May 2026 15:01:51 +0000 x86_64 GNU/Linux
        ok        go-version       go1.26.5-X:nodwarf5 (gc)
        ok        executable       /tmp/testscript-main23456104/bin/chezmoi
        ok        upgrade-method   replace-executable
        error     config-file      ~/.config/chezmoi/chezmoi.yaml: ~/.config/chezmoi/chezmoi.yaml: [1:1] string was used where mapping is expected
        >  1 | string
               ^
        
        error     source-dir                  open ~/.local/share/chezmoi: no such file or directory
        ok        suspicious-entries          ~/.local/share/chezmoi: no such file or directory
        error     working-tree                open ~/.local/share/chezmoi: no such file or directory
        ok        dest-dir                    ~ is a directory
        failed    hardlink                    stat ~/.local/share/chezmoi: no such file or directory
        ok        symlink                     created symlink from .new-name to .old-name
        ok        umask                       022
        failed    cd-command                  exec: "$WORK/bin/shell": stat $WORK/bin/shell: no such file or directory
        ok        cd-args                     $WORK/bin/shell
        info      diff-command                not set
        ok        edit-command                found $WORK/bin/editor
        ok        edit-args                   $WORK/bin/editor
        ok        git-command                 found /usr/bin/git, version 2.55.0
        warning   merge-command               vimdiff not found in $PATH
        failed    shell-command               exec: "$WORK/bin/shell": stat $WORK/bin/shell: no such file or directory
        ok        shell-args                  $WORK/bin/shell
        info      age-command                 age not found in $PATH
        ok        gpg-command                 found /usr/bin/gpg, version 2.4.9
        info      pinentry-command            not set
        info      1password-command           op not found in $PATH
        info      bitwarden-command           bw not found in $PATH
        info      bitwarden-secrets-command   bws not found in $PATH
        info      dashlane-command            dcli not found in $PATH
        info      doppler-command             doppler not found in $PATH
        info      gopass-command              gopass not found in $PATH
        info      keepassxc-command           keepassxc-cli not found in $PATH
        info      keepassxc-db                not set
        info      keeper-command              keeper not found in $PATH
        info      lastpass-command            lpass not found in $PATH
        info      pass-command                pass not found in $PATH
        info      passhole-command            ph not found in $PATH
        info      protonpass-command          pass-cli not found in $PATH
        info      rbw-command                 rbw not found in $PATH
        info      vault-command               vault not found in $PATH
        info      secret-command              not set
        [exit status 1]
        > stdout 'error\s+config-file\s+.*string was used where mapping is expected'
        PASS
        
=== NAME  TestScript/issue4181
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        # test that chezmoi doctor finds the specified config file (11.172s)
        > exec chezmoi --config $HOME${/}.second/che.yaml doctor
        [stdout]
        RESULT    CHECK                       MESSAGE
        ok        version                     v2.0.0+test, commit HEAD, built at 2026-07-20T20:42:31Z, built by testscript
        warning   latest-version              v2.71.1
        ok        os-arch                     linux/amd64 (Arch Linux)
        ok        build-info                  CGO_ENABLED=1, CGO_CFLAGS=-march=x86-64-v2 -O3 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -mpclmul -g -ffile-prefix-map=/startdir/src=/usr/src/debug/chezmoi, CGO_CXXFLAGS=-march=x86-64-v2 -O3 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -mpclmul -Wp,-D_GLIBCXX_ASSERTIONS -g -ffile-prefix-map=/startdir/src=/usr/src/debug/chezmoi, CGO_LDFLAGS=-Wl,-O1 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now          -Wl,-z,pack-relative-relocs, GOEXPERIMENT=nodwarf5, GOAMD64=v2
        ok        uname                       Linux arch-nspawn-4102825 6.18.31-1-lts #1 SMP PREEMPT_DYNAMIC Fri, 15 May 2026 15:01:51 +0000 x86_64 GNU/Linux
        ok        go-version                  go1.26.5-X:nodwarf5 (gc)
        ok        executable                  /tmp/testscript-main23456104/bin/chezmoi
        ok        upgrade-method              replace-executable
        ok        config-file                 found ~/.second/che.yaml, last modified 2026-07-20T20:42:31Z
        ok        source-dir                  ~/.local/share/chezmoi is a directory
        ok        suspicious-entries          no suspicious entries
        ok        working-tree                ~/.local/share/chezmoi is a directory
        ok        dest-dir                    ~ is a directory
        ok        hardlink                    created hardlink from ~/.local/share/chezmoi to $WORK/.tmp
        ok        symlink                     created symlink from .new-name to .old-name
        ok        umask                       022
        failed    cd-command                  exec: "$WORK/bin/shell": stat $WORK/bin/shell: no such file or directory
        ok        cd-args                     $WORK/bin/shell
        info      diff-command                not set
        ok        edit-command                found $WORK/bin/editor
        ok        edit-args                   $WORK/bin/editor
        ok        git-command                 found /usr/bin/git, version 2.55.0
        warning   merge-command               vimdiff not found in $PATH
        failed    shell-command               exec: "$WORK/bin/shell": stat $WORK/bin/shell: no such file or directory
        ok        shell-args                  $WORK/bin/shell
        info      age-command                 age not found in $PATH
        ok        gpg-command                 found /usr/bin/gpg, version 2.4.9
        info      pinentry-command            not set
        info      1password-command           op not found in $PATH
        info      bitwarden-command           bw not found in $PATH
        info      bitwarden-secrets-command   bws not found in $PATH
        info      dashlane-command            dcli not found in $PATH
        info      doppler-command             doppler not found in $PATH
        info      gopass-command              gopass not found in $PATH
        info      keepassxc-command           keepassxc-cli not found in $PATH
        info      keepassxc-db                not set
        info      keeper-command              keeper not found in $PATH
        info      lastpass-command            lpass not found in $PATH
        info      pass-command                pass not found in $PATH
        info      passhole-command            ph not found in $PATH
        info      protonpass-command          pass-cli not found in $PATH
        info      rbw-command                 rbw not found in $PATH
        info      vault-command               vault not found in $PATH
        info      secret-command              not set
        > stdout 'ok\s+config-file\s+found ~/\.second/che\.yaml'
        PASS
        
=== NAME  TestScript/doctor_unix
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [windows] skip 'UNIX only'
        > chmod 755 bin/age
        > chmod 755 bin/bw
        > chmod 755 bin/bws
        > chmod 755 bin/dcli
        > chmod 755 bin/doppler
        > chmod 755 bin/git
        > chmod 755 bin/gopass
        > chmod 755 bin/gpg
        > chmod 755 bin/keepassxc-cli
        > chmod 755 bin/keeper
        > chmod 755 bin/lpass
        > chmod 755 bin/op
        > chmod 755 bin/pass
        > chmod 755 bin/pass-cli
        > chmod 755 bin/ph
        > chmod 755 bin/pinentry
        > chmod 755 bin/rbw
        > chmod 755 bin/secret
        > chmod 755 bin/shell
        > chmod 755 bin/vault
        > chmod 755 bin/vimdiff
        > mkhomedir
        > mksourcedir
        # test that chezmoi doctor behaves as expected (11.017s)
        > exec chezmoi doctor
        [stdout]
        RESULT    CHECK                       MESSAGE
        ok        version                     v2.0.0+test, commit HEAD, built at 2026-07-20T20:42:29Z, built by testscript
        warning   latest-version              v2.71.1
        ok        os-arch                     linux/amd64 (Arch Linux)
        ok        build-info                  CGO_ENABLED=1, CGO_CFLAGS=-march=x86-64-v2 -O3 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -mpclmul -g -ffile-prefix-map=/startdir/src=/usr/src/debug/chezmoi, CGO_CXXFLAGS=-march=x86-64-v2 -O3 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -mpclmul -Wp,-D_GLIBCXX_ASSERTIONS -g -ffile-prefix-map=/startdir/src=/usr/src/debug/chezmoi, CGO_LDFLAGS=-Wl,-O1 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now          -Wl,-z,pack-relative-relocs, GOEXPERIMENT=nodwarf5, GOAMD64=v2
        ok        uname                       Linux arch-nspawn-4102825 6.18.31-1-lts #1 SMP PREEMPT_DYNAMIC Fri, 15 May 2026 15:01:51 +0000 x86_64 GNU/Linux
        ok        go-version                  go1.26.5-X:nodwarf5 (gc)
        ok        executable                  /tmp/testscript-main23456104/bin/chezmoi
        ok        upgrade-method              replace-executable
        ok        config-file                 found ~/.config/chezmoi/chezmoi.toml, last modified 2026-07-20T20:42:29Z
        ok        source-dir                  ~/.local/share/chezmoi is a directory
        warning   suspicious-entries          ~/.local/share/chezmoi/dot_config/chezmoi/chezmoi.toml.tmpl
        ok        working-tree                ~/.local/share/chezmoi is a directory
        ok        dest-dir                    ~ is a directory
        ok        hardlink                    created hardlink from ~/.local/share/chezmoi to $WORK/.tmp
        ok        symlink                     created symlink from .new-name to .old-name
        ok        umask                       022
        ok        cd-command                  found $WORK/bin/shell
        ok        cd-args                     $WORK/bin/shell
        info      diff-command                not set
        ok        edit-command                found $WORK/bin/editor
        ok        edit-args                   $WORK/bin/editor
        ok        git-command                 found $WORK/bin/git, version 2.29.2
        ok        merge-command               found $WORK/bin/vimdiff
        ok        shell-command               found $WORK/bin/shell
        ok        shell-args                  $WORK/bin/shell
        warning   age-command                 found $WORK/bin/age, cannot parse version from (devel)
        ok        gpg-command                 found $WORK/bin/gpg, version 2.2.23
        ok        pinentry-command            found $WORK/bin/pinentry, version 1.2.0
        ok        1password-command           found $WORK/bin/op, version 2.0.0
        ok        bitwarden-command           found $WORK/bin/bw, version 2023.10.0
        ok        bitwarden-secrets-command   found $WORK/bin/bws, version 0.3.0
        ok        dashlane-command            found $WORK/bin/dcli, version 1.0.0
        ok        doppler-command             found $WORK/bin/doppler, version 3.65.1
        ok        gopass-command              found $WORK/bin/gopass, version 1.10.1
        ok        keepassxc-command           found $WORK/bin/keepassxc-cli, version 2.7.0
        info      keepassxc-db                not set
        ok        keeper-command              found $WORK/bin/keeper, version 16.6.4
        ok        lastpass-command            found $WORK/bin/lpass, version 1.3.3
        ok        pass-command                found $WORK/bin/pass, version 1.7.3
        ok        passhole-command            found $WORK/bin/ph, version 1.10.0
        ok        protonpass-command          found $WORK/bin/pass-cli, version 1.2.0
        ok        rbw-command                 found $WORK/bin/rbw, version 1.7.0
        ok        vault-command               found $WORK/bin/vault, version 1.5.5
        ok        secret-command              found $WORK/bin/secret
        > stdout '^ok\s+version\s+'
        > stdout '^\w+\s+latest-version\s+'
        > stdout '^ok\s+os-arch\s+'
        > stdout '\s+build-info\s+'
        > ! stdout '^\S+\s+systeminfo\s+'
        > stdout '^ok\s+uname\s+'
        > stdout '^ok\s+config-file\s+'
        > stdout '^ok\s+source-dir\s+'
        > stdout '^warning\s+suspicious-entries\s+'
        > stdout '^ok\s+dest-dir\s+'
        > stdout '^ok\s+shell-command\s+'
        > stdout '^ok\s+shell-args\s+'
        > stdout '^ok\s+cd-command\s+'
        > stdout '^ok\s+cd-args\s+'
        > stdout '^ok\s+edit-command\s+'
        > stdout '^ok\s+edit-args\s+'
        > stdout '^ok\s+git-command\s+'
        > stdout '^ok\s+merge-command\s+'
        > stdout '^warning\s+age-command\s+'
        > stdout '^ok\s+gpg-command\s+'
        > stdout '^ok\s+pinentry-command\s+'
        > stdout '^ok\s+1password-command\s+'
        > stdout '^ok\s+bitwarden-command\s+'
        > stdout '^ok\s+bitwarden-secrets-command\s+'
        > stdout '^ok\s+dashlane-command\s+'
        > stdout '^ok\s+doppler-command\s+'
        > stdout '^ok\s+gopass-command\s+'
        > stdout '^ok\s+keepassxc-command\s+'
        > stdout '^info\s+keepassxc-db\s+'
        > stdout '^ok\s+keeper-command\s+'
        > stdout '^ok\s+passhole-command\s+'
        > stdout '^ok\s+lastpass-command\s+'
        > stdout '^ok\s+pass-command\s+'
        > stdout '^ok\s+protonpass-command\s+'
        > stdout '^ok\s+rbw-command\s+'
        > stdout '^ok\s+vault-command\s+'
        > stdout '^ok\s+secret-command\s+'
        > chhome home2/user
        # test that chezmoi doctor warns about missing directories on an empty system (0.591s)
        > ! exec chezmoi doctor
        [stdout]
        RESULT    CHECK                       MESSAGE
        ok        version                     v2.0.0+test, commit HEAD, built at 2026-07-20T20:42:40Z, built by testscript
        warning   latest-version              v2.71.1
        ok        os-arch                     linux/amd64 (Arch Linux)
        ok        build-info                  CGO_ENABLED=1, CGO_CFLAGS=-march=x86-64-v2 -O3 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -mpclmul -g -ffile-prefix-map=/startdir/src=/usr/src/debug/chezmoi, CGO_CXXFLAGS=-march=x86-64-v2 -O3 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -mpclmul -Wp,-D_GLIBCXX_ASSERTIONS -g -ffile-prefix-map=/startdir/src=/usr/src/debug/chezmoi, CGO_LDFLAGS=-Wl,-O1 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now          -Wl,-z,pack-relative-relocs, GOEXPERIMENT=nodwarf5, GOAMD64=v2
        ok        uname                       Linux arch-nspawn-4102825 6.18.31-1-lts #1 SMP PREEMPT_DYNAMIC Fri, 15 May 2026 15:01:51 +0000 x86_64 GNU/Linux
        ok        go-version                  go1.26.5-X:nodwarf5 (gc)
        ok        executable                  /tmp/testscript-main23456104/bin/chezmoi
        ok        upgrade-method              replace-executable
        info      config-file                 ~/.config/chezmoi/chezmoi.toml: not found
        error     source-dir                  open ~/.local/share/chezmoi: no such file or directory
        ok        suspicious-entries          ~/.local/share/chezmoi: no such file or directory
        error     working-tree                open ~/.local/share/chezmoi: no such file or directory
        ok        dest-dir                    ~ is a directory
        failed    hardlink                    stat ~/.local/share/chezmoi: no such file or directory
        ok        symlink                     created symlink from .new-name to .old-name
        ok        umask                       022
        ok        cd-command                  found $WORK/bin/shell
        ok        cd-args                     $WORK/bin/shell
        info      diff-command                not set
        ok        edit-command                found $WORK/bin/editor
        ok        edit-args                   $WORK/bin/editor
        ok        git-command                 found $WORK/bin/git, version 2.29.2
        ok        merge-command               found $WORK/bin/vimdiff
        ok        shell-command               found $WORK/bin/shell
        ok        shell-args                  $WORK/bin/shell
        warning   age-command                 found $WORK/bin/age, cannot parse version from (devel)
        ok        gpg-command                 found $WORK/bin/gpg, version 2.2.23
        info      pinentry-command            not set
        ok        1password-command           found $WORK/bin/op, version 2.0.0
        ok        bitwarden-command           found $WORK/bin/bw, version 2023.10.0
        ok        bitwarden-secrets-command   found $WORK/bin/bws, version 0.3.0
        ok        dashlane-command            found $WORK/bin/dcli, version 1.0.0
        ok        doppler-command             found $WORK/bin/doppler, version 3.65.1
        ok        gopass-command              found $WORK/bin/gopass, version 1.10.1
        ok        keepassxc-command           found $WORK/bin/keepassxc-cli, version 2.7.0
        info      keepassxc-db                not set
        ok        keeper-command              found $WORK/bin/keeper, version 16.6.4
        ok        lastpass-command            found $WORK/bin/lpass, version 1.3.3
        ok        pass-command                found $WORK/bin/pass, version 1.7.3
        ok        passhole-command            found $WORK/bin/ph, version 1.10.0
        ok        protonpass-command          found $WORK/bin/pass-cli, version 1.2.0
        ok        rbw-command                 found $WORK/bin/rbw, version 1.7.0
        ok        vault-command               found $WORK/bin/vault, version 1.5.5
        info      secret-command              not set
        [exit status 1]
        > stdout '^info\s+config-file\s+'
        > stdout '^error\s+source-dir\s+'
        > stdout '^ok\s+suspicious-entries\s+'
        > chhome home3/user
        # test that chezmoi doctor warns about suspicious entries (1.017s)
        > exec chezmoi doctor
        [stdout]
        RESULT    CHECK                       MESSAGE
        ok        version                     v2.0.0+test, commit HEAD, built at 2026-07-20T20:42:40Z, built by testscript
        warning   latest-version              v2.71.1
        ok        os-arch                     linux/amd64 (Arch Linux)
        ok        build-info                  CGO_ENABLED=1, CGO_CFLAGS=-march=x86-64-v2 -O3 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -mpclmul -g -ffile-prefix-map=/startdir/src=/usr/src/debug/chezmoi, CGO_CXXFLAGS=-march=x86-64-v2 -O3 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -mpclmul -Wp,-D_GLIBCXX_ASSERTIONS -g -ffile-prefix-map=/startdir/src=/usr/src/debug/chezmoi, CGO_LDFLAGS=-Wl,-O1 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now          -Wl,-z,pack-relative-relocs, GOEXPERIMENT=nodwarf5, GOAMD64=v2
        ok        uname                       Linux arch-nspawn-4102825 6.18.31-1-lts #1 SMP PREEMPT_DYNAMIC Fri, 15 May 2026 15:01:51 +0000 x86_64 GNU/Linux
        ok        go-version                  go1.26.5-X:nodwarf5 (gc)
        ok        executable                  /tmp/testscript-main23456104/bin/chezmoi
        ok        upgrade-method              replace-executable
        info      config-file                 ~/.config/chezmoi/chezmoi.toml: not found
        ok        source-dir                  ~/.local/share/chezmoi is a directory
        warning   suspicious-entries          ~/.local/share/chezmoi/.chezmoisuspicious
        ok        working-tree                ~/.local/share/chezmoi is a directory
        ok        dest-dir                    ~ is a directory
        ok        hardlink                    created hardlink from ~/.local/share/chezmoi to $WORK/.tmp
        ok        symlink                     created symlink from .new-name to .old-name
        ok        umask                       022
        ok        cd-command                  found $WORK/bin/shell
        ok        cd-args                     $WORK/bin/shell
        info      diff-command                not set
        ok        edit-command                found $WORK/bin/editor
        ok        edit-args                   $WORK/bin/editor
        ok        git-command                 found $WORK/bin/git, version 2.29.2
        ok        merge-command               found $WORK/bin/vimdiff
        ok        shell-command               found $WORK/bin/shell
        ok        shell-args                  $WORK/bin/shell
        warning   age-command                 found $WORK/bin/age, cannot parse version from (devel)
        ok        gpg-command                 found $WORK/bin/gpg, version 2.2.23
        info      pinentry-command            not set
        ok        1password-command           found $WORK/bin/op, version 2.0.0
        ok        bitwarden-command           found $WORK/bin/bw, version 2023.10.0
        ok        bitwarden-secrets-command   found $WORK/bin/bws, version 0.3.0
        ok        dashlane-command            found $WORK/bin/dcli, version 1.0.0
        ok        doppler-command             found $WORK/bin/doppler, version 3.65.1
        ok        gopass-command              found $WORK/bin/gopass, version 1.10.1
        ok        keepassxc-command           found $WORK/bin/keepassxc-cli, version 2.7.0
        info      keepassxc-db                not set
        ok        keeper-command              found $WORK/bin/keeper, version 16.6.4
        ok        lastpass-command            found $WORK/bin/lpass, version 1.3.3
        ok        pass-command                found $WORK/bin/pass, version 1.7.3
        ok        passhole-command            found $WORK/bin/ph, version 1.10.0
        ok        protonpass-command          found $WORK/bin/pass-cli, version 1.2.0
        ok        rbw-command                 found $WORK/bin/rbw, version 1.7.0
        ok        vault-command               found $WORK/bin/vault, version 1.5.5
        info      secret-command              not set
        > stdout '^warning\s+suspicious-entries\s+'
        > chhome home4/user
        # test that chezmoi doctor prints an error about multiple config files (0.773s)
        > ! exec chezmoi doctor
        [stdout]
        RESULT    CHECK                       MESSAGE
        ok        version                     v2.0.0+test, commit HEAD, built at 2026-07-20T20:42:41Z, built by testscript
        warning   latest-version              v2.71.1
        ok        os-arch                     linux/amd64 (Arch Linux)
        ok        build-info                  CGO_ENABLED=1, CGO_CFLAGS=-march=x86-64-v2 -O3 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -mpclmul -g -ffile-prefix-map=/startdir/src=/usr/src/debug/chezmoi, CGO_CXXFLAGS=-march=x86-64-v2 -O3 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -mpclmul -Wp,-D_GLIBCXX_ASSERTIONS -g -ffile-prefix-map=/startdir/src=/usr/src/debug/chezmoi, CGO_LDFLAGS=-Wl,-O1 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now          -Wl,-z,pack-relative-relocs, GOEXPERIMENT=nodwarf5, GOAMD64=v2
        ok        uname                       Linux arch-nspawn-4102825 6.18.31-1-lts #1 SMP PREEMPT_DYNAMIC Fri, 15 May 2026 15:01:51 +0000 x86_64 GNU/Linux
        ok        go-version                  go1.26.5-X:nodwarf5 (gc)
        ok        executable                  /tmp/testscript-main23456104/bin/chezmoi
        ok        upgrade-method              replace-executable
        error     config-file                 multiple config files: ~/.config/chezmoi/chezmoi.json and ~/.config/chezmoi/chezmoi.yaml
        error     source-dir                  open ~/.local/share/chezmoi: no such file or directory
        ok        suspicious-entries          ~/.local/share/chezmoi: no such file or directory
        error     working-tree                open ~/.local/share/chezmoi: no such file or directory
        ok        dest-dir                    ~ is a directory
        failed    hardlink                    stat ~/.local/share/chezmoi: no such file or directory
        ok        symlink                     created symlink from .new-name to .old-name
        ok        umask                       022
        ok        cd-command                  found $WORK/bin/shell
        ok        cd-args                     $WORK/bin/shell
        info      diff-command                not set
        ok        edit-command                found $WORK/bin/editor
        ok        edit-args                   $WORK/bin/editor
        ok        git-command                 found $WORK/bin/git, version 2.29.2
        ok        merge-command               found $WORK/bin/vimdiff
        ok        shell-command               found $WORK/bin/shell
        ok        shell-args                  $WORK/bin/shell
        warning   age-command                 found $WORK/bin/age, cannot parse version from (devel)
        ok        gpg-command                 found $WORK/bin/gpg, version 2.2.23
        info      pinentry-command            not set
        ok        1password-command           found $WORK/bin/op, version 2.0.0
        ok        bitwarden-command           found $WORK/bin/bw, version 2023.10.0
        ok        bitwarden-secrets-command   found $WORK/bin/bws, version 0.3.0
        ok        dashlane-command            found $WORK/bin/dcli, version 1.0.0
        ok        doppler-command             found $WORK/bin/doppler, version 3.65.1
        ok        gopass-command              found $WORK/bin/gopass, version 1.10.1
        ok        keepassxc-command           found $WORK/bin/keepassxc-cli, version 2.7.0
        info      keepassxc-db                not set
        ok        keeper-command              found $WORK/bin/keeper, version 16.6.4
        ok        lastpass-command            found $WORK/bin/lpass, version 1.3.3
        ok        pass-command                found $WORK/bin/pass, version 1.7.3
        ok        passhole-command            found $WORK/bin/ph, version 1.10.0
        ok        protonpass-command          found $WORK/bin/pass-cli, version 1.2.0
        ok        rbw-command                 found $WORK/bin/rbw, version 1.7.0
        ok        vault-command               found $WORK/bin/vault, version 1.5.5
        info      secret-command              not set
        [exit status 1]
        > stdout '^error\s+config-file\s+multiple config files'
        > ! stderr .
        > chhome home5/user
        # test that chezmoi doctor warns about encrypted files (0.912s)
        > exec chezmoi doctor
        [stdout]
        RESULT    CHECK                       MESSAGE
        ok        version                     v2.0.0+test, commit HEAD, built at 2026-07-20T20:42:42Z, built by testscript
        warning   latest-version              v2.71.1
        ok        os-arch                     linux/amd64 (Arch Linux)
        ok        build-info                  CGO_ENABLED=1, CGO_CFLAGS=-march=x86-64-v2 -O3 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -mpclmul -g -ffile-prefix-map=/startdir/src=/usr/src/debug/chezmoi, CGO_CXXFLAGS=-march=x86-64-v2 -O3 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -mpclmul -Wp,-D_GLIBCXX_ASSERTIONS -g -ffile-prefix-map=/startdir/src=/usr/src/debug/chezmoi, CGO_LDFLAGS=-Wl,-O1 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now          -Wl,-z,pack-relative-relocs, GOEXPERIMENT=nodwarf5, GOAMD64=v2
        ok        uname                       Linux arch-nspawn-4102825 6.18.31-1-lts #1 SMP PREEMPT_DYNAMIC Fri, 15 May 2026 15:01:51 +0000 x86_64 GNU/Linux
        ok        go-version                  go1.26.5-X:nodwarf5 (gc)
        ok        executable                  /tmp/testscript-main23456104/bin/chezmoi
        ok        upgrade-method              replace-executable
        ok        config-file                 found ~/.config/chezmoi/chezmoi.toml, last modified 2026-07-20T20:42:29Z
        ok        source-dir                  ~/.local/share/chezmoi is a directory
        warning   suspicious-entries          ~/.local/share/chezmoi/dot_config/chezmoi/encrypted_chezmoi.toml.age-encrypted
        ok        working-tree                ~/.local/share/chezmoi is a directory
        ok        dest-dir                    ~ is a directory
        ok        hardlink                    created hardlink from ~/.local/share/chezmoi to $WORK/.tmp
        ok        symlink                     created symlink from .new-name to .old-name
        ok        umask                       022
        ok        cd-command                  found $WORK/bin/shell
        ok        cd-args                     $WORK/bin/shell
        info      diff-command                not set
        ok        edit-command                found $WORK/bin/editor
        ok        edit-args                   $WORK/bin/editor
        ok        git-command                 found $WORK/bin/git, version 2.29.2
        ok        merge-command               found $WORK/bin/vimdiff
        ok        shell-command               found $WORK/bin/shell
        ok        shell-args                  $WORK/bin/shell
        warning   age-command                 found $WORK/bin/age, cannot parse version from (devel)
        ok        gpg-command                 found $WORK/bin/gpg, version 2.2.23
        info      pinentry-command            not set
        ok        1password-command           found $WORK/bin/op, version 2.0.0
        ok        bitwarden-command           found $WORK/bin/bw, version 2023.10.0
        ok        bitwarden-secrets-command   found $WORK/bin/bws, version 0.3.0
        ok        dashlane-command            found $WORK/bin/dcli, version 1.0.0
        ok        doppler-command             found $WORK/bin/doppler, version 3.65.1
        ok        gopass-command              found $WORK/bin/gopass, version 1.10.1
        ok        keepassxc-command           found $WORK/bin/keepassxc-cli, version 2.7.0
        info      keepassxc-db                not set
        ok        keeper-command              found $WORK/bin/keeper, version 16.6.4
        ok        lastpass-command            found $WORK/bin/lpass, version 1.3.3
        ok        pass-command                found $WORK/bin/pass, version 1.7.3
        ok        passhole-command            found $WORK/bin/ph, version 1.10.0
        ok        protonpass-command          found $WORK/bin/pass-cli, version 1.2.0
        ok        rbw-command                 found $WORK/bin/rbw, version 1.7.0
        ok        vault-command               found $WORK/bin/vault, version 1.5.5
        info      secret-command              not set
        > stdout '^warning\s+suspicious-entries\s+'
        PASS
        
=== NAME  TestScript/issue4647
    testscript.go:584: WORK=$WORK
        PATH=$WORK/bin:/tmp/testscript-main23456104/bin:/usr/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
        GOTRACEBACK=system
        HOME=$WORK/home/user
        TMPDIR=$WORK/.tmp
        devnull=/dev/null
        /=/
        :=:
        $=$
        exe=
        CHEZMOICACHEDIR=$WORK/home/user/.cache/chezmoi
        CHEZMOICONFIGDIR=$WORK/home/user/.config/chezmoi
        CHEZMOISOURCEDIR=$WORK/home/user/.local/share/chezmoi
        CHEZMOI_GITHUB_TOKEN=
        EDITOR=$WORK/bin/editor
        SHELL=$WORK/bin/shell
        
        > [!exec:git] skip 'git not found in $PATH'
        # test that chezmoi init --use-builtin-git=true clones a repository correctly (11.760s)
        > exec chezmoi init --use-builtin-git=true https://github.com/chezmoi/test-dotfiles.git
        > exists $CHEZMOISOURCEDIR/dot_file
        # undo the last commit (0.013s)
        > exec git -C $CHEZMOISOURCEDIR reset --hard HEAD^
        [stdout]
        HEAD is now at 034b218 feat: add LICENSE
        > ! exists $CHEZMOISOURCEDIR/dot_file
        # test that chezmoi update --use-builtin-git=true updates the source directory correctly (11.181s)
        > exec chezmoi update --use-builtin-git=true
        [stderr]
        chezmoi: Get "https://github.com/chezmoi/test-dotfiles.git/info/refs?service=git-upload-pack": net/http: TLS handshake timeout
        [exit status 1]
        FAIL: testdata/scripts/issue4647.txtar:12: unexpected command failure
        
--- FAIL: TestScript (0.00s)
    --- SKIP: TestScript/cd_windows (0.01s)
    --- SKIP: TestScript/builtinage (0.01s)
    --- SKIP: TestScript/scriptinterpreters_unix_pwsh (0.03s)
    --- SKIP: TestScript/chattrencrypted (0.04s)
    --- PASS: TestScript/issue3005 (0.06s)
    --- SKIP: TestScript/upgrade (0.04s)
    --- PASS: TestScript/version (0.05s)
    --- PASS: TestScript/issue3008 (0.09s)
    --- PASS: TestScript/unmanagedtree (0.07s)
    --- PASS: TestScript/issue2995 (0.03s)
    --- PASS: TestScript/issue2964 (0.03s)
    --- PASS: TestScript/catconfig (0.09s)
    --- PASS: TestScript/issue2977 (0.06s)
    --- PASS: TestScript/scriptenv (0.17s)
    --- PASS: TestScript/issue1866 (0.11s)
    --- PASS: TestScript/vault (0.16s)
    --- PASS: TestScript/issue2954 (0.09s)
    --- PASS: TestScript/issue2942 (0.12s)
    --- PASS: TestScript/issue2752 (0.11s)
    --- PASS: TestScript/externalfileurl (0.31s)
    --- PASS: TestScript/workingtree (0.35s)
    --- PASS: TestScript/issue2858 (0.19s)
    --- PASS: TestScript/issue2934 (0.24s)
    --- PASS: TestScript/issue2609 (0.06s)
    --- PASS: TestScript/issue2861 (0.22s)
    --- PASS: TestScript/issue2937 (0.27s)
    --- PASS: TestScript/issue2573 (0.06s)
    --- PASS: TestScript/issue2599 (0.15s)
    --- PASS: TestScript/issue2380 (0.03s)
    --- PASS: TestScript/edgecasesumask (0.54s)
    --- PASS: TestScript/issue2500 (0.14s)
    --- PASS: TestScript/issue2597 (0.18s)
    --- PASS: TestScript/issue2628 (0.26s)
    --- PASS: TestScript/issue2577 (0.20s)
    --- PASS: TestScript/cat (0.55s)
    --- PASS: TestScript/issue2300 (0.08s)
    --- PASS: TestScript/issue2510 (0.25s)
    --- PASS: TestScript/issue2354 (0.10s)
    --- PASS: TestScript/completion_unix (0.63s)
    --- PASS: TestScript/issue2283 (0.13s)
    --- SKIP: TestScript/diffcommand_windows (0.00s)
    --- PASS: TestScript/issue2177 (0.13s)
    --- PASS: TestScript/issue2315 (0.17s)
    --- PASS: TestScript/issue2302 (0.21s)
    --- PASS: TestScript/issue2016 (0.12s)
    --- PASS: TestScript/issue2132 (0.13s)
    --- SKIP: TestScript/doctor_windows (0.00s)
    --- PASS: TestScript/issue2820 (0.59s)
    --- PASS: TestScript/issue2137 (0.20s)
    --- PASS: TestScript/dumpyaml (0.13s)
    --- PASS: TestScript/issue1869 (0.17s)
    --- PASS: TestScript/issue2427 (0.41s)
    --- PASS: TestScript/dumpconfig (0.11s)
    --- PASS: TestScript/issue2092 (0.24s)
    --- PASS: TestScript/config (0.88s)
    --- PASS: TestScript/cd_unix (0.85s)
    --- PASS: TestScript/externaldir (0.11s)
    --- PASS: TestScript/dumpjson (0.44s)
    --- PASS: TestScript/exclude (0.36s)
    --- PASS: TestScript/discussion4732 (0.38s)
    --- PASS: TestScript/issue2865 (1.02s)
    --- PASS: TestScript/umask_unix (1.15s)
    --- SKIP: TestScript/script_windows (0.01s)
    --- PASS: TestScript/issue4787 (0.06s)
    --- PASS: TestScript/exectemplatefunc (0.31s)
    --- PASS: TestScript/script (0.10s)
    --- SKIP: TestScript/edgecases (0.59s)
    --- PASS: TestScript/externalcompression (0.43s)
    --- PASS: TestScript/remove (0.13s)
    --- PASS: TestScript/removedir (0.21s)
    --- PASS: TestScript/runscriptdir_unix (0.28s)
    --- PASS: TestScript/readdreencrypt (0.22s)
    --- PASS: TestScript/unmanaged (1.51s)
    --- PASS: TestScript/externaldiff (0.69s)
    --- PASS: TestScript/passhole (0.08s)
    --- PASS: TestScript/protonpass (0.19s)
    --- PASS: TestScript/purge (0.27s)
    --- PASS: TestScript/plugin (0.22s)
    --- PASS: TestScript/externalarchiveinclude (0.85s)
    --- PASS: TestScript/pass (0.19s)
    --- PASS: TestScript/pager (0.16s)
    --- PASS: TestScript/applyskipencrypted (1.78s)
    --- SKIP: TestScript/modifypython_windows (0.00s)
    --- SKIP: TestScript/modifyencrypted (0.00s)
    --- SKIP: TestScript/modify_windows (0.00s)
    --- PASS: TestScript/nosourcedir (0.07s)
    --- PASS: TestScript/options (0.20s)
    --- PASS: TestScript/verify (1.80s)
    --- SKIP: TestScript/mergeencryptedage_unix (0.00s)
    --- PASS: TestScript/builtingit (1.77s)
    --- PASS: TestScript/rbw (0.51s)
    --- PASS: TestScript/modesymlink (0.15s)
    --- PASS: TestScript/noencryption (0.19s)
    --- SKIP: TestScript/mackuppipx_darwin (0.00s)
    --- SKIP: TestScript/mackuppip_darwin (0.00s)
    --- SKIP: TestScript/mackupmacports_darwin (0.00s)
    --- SKIP: TestScript/mackupbrew_darwin (0.00s)
    --- PASS: TestScript/managedtree (0.07s)
    --- PASS: TestScript/add (1.98s)
    --- PASS: TestScript/root (0.86s)
    --- PASS: TestScript/lastpass (0.08s)
    --- PASS: TestScript/re-add (0.77s)
    --- PASS: TestScript/license (0.11s)
    --- PASS: TestScript/literal (0.12s)
    --- PASS: TestScript/script_unix (0.94s)
    --- PASS: TestScript/issue796 (0.06s)
    --- PASS: TestScript/completion (2.12s)
    --- PASS: TestScript/merge_unix (0.32s)
    --- PASS: TestScript/mergeall_unix (0.36s)
    --- PASS: TestScript/keepgoing (0.24s)
    --- PASS: TestScript/issue5095 (0.19s)
    --- PASS: TestScript/issue4827 (0.11s)
    --- PASS: TestScript/keepassxc (0.24s)
    --- SKIP: TestScript/debug (0.01s)
    --- PASS: TestScript/keeper (0.27s)
    --- PASS: TestScript/issue4976 (0.21s)
    --- PASS: TestScript/issue4845 (0.19s)
    --- PASS: TestScript/issue4796 (0.12s)
    --- PASS: TestScript/issue5061 (0.43s)
    --- PASS: TestScript/issue4824 (0.31s)
    --- PASS: TestScript/applyremove (0.23s)
    --- PASS: TestScript/addnew (0.31s)
    --- PASS: TestScript/issue4816 (0.41s)
    --- PASS: TestScript/doppler (1.93s)
    --- SKIP: TestScript/ageencryption (0.00s)
    --- SKIP: TestScript/ageencryptionsymmetric (0.00s)
    --- PASS: TestScript/chattr (2.67s)
    --- PASS: TestScript/applychmod_unix (0.24s)
    --- PASS: TestScript/issue3652 (0.16s)
    --- PASS: TestScript/applyexact (0.37s)
    --- PASS: TestScript/externalencrypted (2.07s)
    --- PASS: TestScript/agekeygen (0.30s)
    --- PASS: TestScript/issue4727 (0.10s)
    --- PASS: TestScript/external (2.12s)
    --- PASS: TestScript/issue4662 (0.07s)
    --- PASS: TestScript/readd-exact (1.76s)
    --- PASS: TestScript/issue4703 (0.17s)
    --- PASS: TestScript/issue4745 (0.25s)
    --- PASS: TestScript/issue4656 (0.10s)
    --- PASS: TestScript/onepassword2connect (1.40s)
    --- PASS: TestScript/issue4743 (0.25s)
    --- PASS: TestScript/apply (0.49s)
    --- PASS: TestScript/issue4496 (0.07s)
    --- PASS: TestScript/destroy (0.80s)
    --- PASS: TestScript/onepassword2service (1.48s)
    --- PASS: TestScript/issue4104 (0.04s)
    --- PASS: TestScript/issue4027 (0.06s)
    --- PASS: TestScript/issue4315 (0.17s)
    --- SKIP: TestScript/issue3891 (0.00s)
    --- SKIP: TestScript/issue3887 (0.00s)
    --- PASS: TestScript/issue4012 (0.11s)
    --- PASS: TestScript/issue4479 (0.22s)
    --- PASS: TestScript/issue4500 (0.26s)
    --- PASS: TestScript/issue3987 (0.10s)
    --- PASS: TestScript/issue3693 (0.06s)
    --- PASS: TestScript/issue4454 (0.26s)
    --- PASS: TestScript/issue3703 (0.09s)
    --- SKIP: TestScript/encryptiontemplatefuncs (0.00s)
    --- PASS: TestScript/issue4024 (0.23s)
    --- PASS: TestScript/modify_unix (1.60s)
    --- PASS: TestScript/issue3666 (0.09s)
    --- PASS: TestScript/diffcommand_unix (1.18s)
    --- PASS: TestScript/onepassword2 (1.83s)
    --- PASS: TestScript/issue3630 (0.08s)
    --- PASS: TestScript/issue3602 (0.04s)
    --- PASS: TestScript/issue3772 (0.32s)
    --- PASS: TestScript/issue3268 (0.21s)
    --- PASS: TestScript/issue4927 (1.47s)
    --- PASS: TestScript/issue3590 (0.06s)
    --- PASS: TestScript/issue4634 (0.61s)
    --- PASS: TestScript/addsecrets (0.99s)
    --- PASS: TestScript/edithardlink (0.33s)
    --- PASS: TestScript/update (3.66s)
    --- PASS: TestScript/issue3582 (0.12s)
    --- PASS: TestScript/issue3525 (0.13s)
    --- PASS: TestScript/issue3510 (0.12s)
    --- PASS: TestScript/issue3374 (0.07s)
    --- PASS: TestScript/issue3744 (0.50s)
    --- PASS: TestScript/diff (1.49s)
    --- PASS: TestScript/issue3349 (0.12s)
    --- PASS: TestScript/issue3418 (0.19s)
    --- PASS: TestScript/managed (1.91s)
    --- PASS: TestScript/issue3414 (0.19s)
    --- PASS: TestScript/issue3415 (0.26s)
    --- PASS: TestScript/issue3126 (0.03s)
    --- PASS: TestScript/issue3206 (0.14s)
    --- PASS: TestScript/addautotemplate (0.59s)
    --- PASS: TestScript/issue3163 (0.13s)
    --- PASS: TestScript/sourcedir (0.06s)
    --- PASS: TestScript/issue3344 (0.30s)
    --- PASS: TestScript/issue4002 (0.85s)
    --- PASS: TestScript/issue3232 (0.24s)
    --- PASS: TestScript/issue3240 (0.26s)
    --- PASS: TestScript/ejson (0.72s)
    --- SKIP: TestScript/symlinks_windows (0.00s)
    --- PASS: TestScript/issue3257 (0.32s)
    --- PASS: TestScript/issue3113 (0.37s)
    --- PASS: TestScript/executetemplate (3.24s)
    --- SKIP: TestScript/state_windows (0.00s)
    --- PASS: TestScript/issue3421 (0.51s)
    --- PASS: TestScript/issue3325 (0.41s)
    --- PASS: TestScript/tilde (0.17s)
    --- PASS: TestScript/transparentencryption (0.19s)
    --- PASS: TestScript/issue3127 (0.29s)
    --- SKIP: TestScript/scriptsubdir_windows (0.00s)
    --- PASS: TestScript/errors (0.83s)
    --- PASS: TestScript/scripttempdir (0.10s)
    --- SKIP: TestScript/scriptruby (0.00s)
    --- PASS: TestScript/templatedirectives (0.31s)
    --- SKIP: TestScript/archivezip (0.00s)
    --- PASS: TestScript/scriptperl (0.23s)
    --- PASS: TestScript/scriptpython (0.15s)
    --- PASS: TestScript/textconv (0.45s)
    --- PASS: TestScript/scriptsdir_unix (0.27s)
    --- SKIP: TestScript/scriptonce_windows (0.00s)
    --- SKIP: TestScript/scriptorder_windows (0.00s)
    --- PASS: TestScript/issue3371 (0.82s)
    --- PASS: TestScript/secret (0.43s)
    --- PASS: TestScript/state (0.47s)
    --- PASS: TestScript/symlinks (0.56s)
    --- PASS: TestScript/sourcepath (0.52s)
    --- PASS: TestScript/templatevars (0.66s)
    --- PASS: TestScript/scriptsubdir_unix (0.49s)
    --- SKIP: TestScript/scriptinterpreters_windows (0.01s)
    --- PASS: TestScript/scriptinterpreterstemplate (0.11s)
    --- PASS: TestScript/addattributes (0.15s)
    --- SKIP: TestScript/create (0.04s)
    --- PASS: TestScript/bitwardenunlock (0.46s)
    --- PASS: TestScript/scriptorder_unix (0.37s)
    --- PASS: TestScript/dashlane (0.18s)
    --- PASS: TestScript/templatedata (0.78s)
    --- PASS: TestScript/issue3064 (0.09s)
    --- SKIP: TestScript/issue1794 (0.00s)
    --- PASS: TestScript/issue3051 (0.13s)
    --- PASS: TestScript/data (0.26s)
    --- PASS: TestScript/issue1832 (0.10s)
    --- PASS: TestScript/targetpath (0.88s)
    --- PASS: TestScript/state_unix (0.84s)
    --- PASS: TestScript/issue1365 (0.11s)
    --- PASS: TestScript/bitwarden (0.63s)
    --- PASS: TestScript/hooks (0.17s)
    --- PASS: TestScript/issue1666 (0.16s)
    --- PASS: TestScript/initgitlfs (0.06s)
    --- PASS: TestScript/editencrypted (0.21s)
    --- PASS: TestScript/status (0.96s)
    --- PASS: TestScript/importtarzst (0.08s)
    --- PASS: TestScript/importzip (0.12s)
    --- PASS: TestScript/issue1237 (0.21s)
    --- SKIP: TestScript/hooks_windows (0.00s)
    --- PASS: TestScript/editconfigtemplate (0.38s)
    --- PASS: TestScript/ignored (0.07s)
    --- PASS: TestScript/issue1161 (0.26s)
    --- PASS: TestScript/importxz (0.22s)
    --- PASS: TestScript/applyverbose (0.16s)
    --- PASS: TestScript/scriptonchange_unix (0.87s)
    --- PASS: TestScript/applystate (0.19s)
    --- PASS: TestScript/archivetar (0.25s)
    --- PASS: TestScript/applytype (0.34s)
    --- PASS: TestScript/generate (0.22s)
    --- PASS: TestScript/help (0.15s)
    --- SKIP: TestScript/githubtemplatefuncs (0.00s)
    --- PASS: TestScript/issue1213 (0.59s)
    --- PASS: TestScript/configstate (0.90s)
    --- PASS: TestScript/scriptonce_unix (0.91s)
    --- PASS: TestScript/import (0.57s)
    --- PASS: TestScript/git (0.15s)
    --- PASS: TestScript/externalzip (0.06s)
    --- PASS: TestScript/externalrar (0.08s)
    --- PASS: TestScript/gopass (0.30s)
    --- PASS: TestScript/editconfig (0.28s)
    --- PASS: TestScript/inittemplatefuncs (0.90s)
    --- PASS: TestScript/externalfilter (0.11s)
    --- PASS: TestScript/gitleaks (0.50s)
    --- PASS: TestScript/age (3.36s)
    --- PASS: TestScript/externalguess (0.38s)
    --- PASS: TestScript/ignore (0.97s)
    --- PASS: TestScript/addencrypted (2.77s)
    --- PASS: TestScript/applysourcepath (0.35s)
    --- PASS: TestScript/forget (0.61s)
    --- PASS: TestScript/initconfig (1.20s)
    --- PASS: TestScript/autopush (1.93s)
    --- PASS: TestScript/autocommit (1.92s)
    --- PASS: TestScript/edit (0.68s)
    --- PASS: TestScript/mergeencryptedgpg_unix (4.66s)
    --- PASS: TestScript/externalgitrepo (0.93s)
    --- PASS: TestScript/templatefuncs (3.01s)
    --- PASS: TestScript/gpg (1.75s)
    --- PASS: TestScript/init (2.35s)
    --- PASS: TestScript/gpgencryption (2.66s)
    --- PASS: TestScript/gpgencryptionsymmetric (2.96s)
    --- PASS: TestScript/issue2695 (13.12s)
    --- PASS: TestScript/issue4181 (11.17s)
    --- PASS: TestScript/doctor_unix (14.32s)
    --- FAIL: TestScript/issue4647 (22.96s)
FAIL
FAIL	chezmoi.io/chezmoi/v2/internal/cmd	26.483s
=== RUN   TestSlugify
=== RUN   TestSlugify/add
=== RUN   TestSlugify/*command*`.post.args`
--- PASS: TestSlugify (0.00s)
    --- PASS: TestSlugify/add (0.00s)
    --- PASS: TestSlugify/*command*`.post.args` (0.00s)
PASS
ok  	chezmoi.io/chezmoi/v2/internal/cmds/execute-template	0.009s
?   	chezmoi.io/chezmoi/v2/internal/cmds/generate-commit	[no test files]
?   	chezmoi.io/chezmoi/v2/internal/cmds/generate-helps	[no test files]
=== RUN   TestGoToolDistList
--- PASS: TestGoToolDistList (0.02s)
PASS
ok  	chezmoi.io/chezmoi/v2/internal/cmds/generate-install.sh	0.028s
?   	chezmoi.io/chezmoi/v2/internal/cmds/generate-license	[no test files]
?   	chezmoi.io/chezmoi/v2/internal/cmds/hexencode	[no test files]
=== RUN   TestCommitRx
--- PASS: TestCommitRx (0.00s)
PASS
ok  	chezmoi.io/chezmoi/v2/internal/cmds/lint-commit-messages	0.005s
?   	chezmoi.io/chezmoi/v2/internal/cmds/lint-txtar	[no test files]
=== RUN   TestLintData
=== RUN   TestLintData/0
=== RUN   TestLintData/1
=== RUN   TestLintData/2
=== RUN   TestLintData/3
=== RUN   TestLintData/4
--- PASS: TestLintData (0.00s)
    --- PASS: TestLintData/0 (0.00s)
    --- PASS: TestLintData/1 (0.00s)
    --- PASS: TestLintData/2 (0.00s)
    --- PASS: TestLintData/3 (0.00s)
    --- PASS: TestLintData/4 (0.00s)
PASS
ok  	chezmoi.io/chezmoi/v2/internal/cmds/lint-whitespace	0.019s
FAIL
==> ERROR: A failure occurred in check().
    Aborting...
==> ERROR: Build failed, check /home/alhp/workspace/chroot/build_846e0da8-d537-4a3e-9fc7-306f8f42af72/build
