bup 0.33.9 released

4 views
Skip to first unread message

Rob Browning

unread,
Aug 30, 2025, 2:28:04 PMAug 30
to bup-...@googlegroups.com

https://bup.github.io/
https://github.com/bup/bup/tags
https://codeberg.org//bup/bup/tags

This is a bugfix release. Please give it a try and let us know what's
broken. If you're new to bup, start with the README, and then HACKING
if you'd like to help further:

https://github.com/bup/bup/blob/main/README.md
https://github.com/bup/bup/blob/main/DESIGN.md
https://github.com/bup/bup/blob/main/HACKING.md

https://codeberg.org/bup/bup/src/branch/main/README.md
https://codeberg.org/bup/bup/src/branch/main/DESIGN.md
https://codeberg.org/bup/bup/src/branch/main/HACKING.md

(As usual, while we expect bup to work fairly well, I still wouldn't
recommend it as your sole backup strategy. I'd suggest a periodic
tar/rsync/etc. backstop.)

Notable changes in 0.33.9 since 0.33.8
======================================

Bugs
----

* Internal subcommands (all except `import-rdiff-backup` and
`import-rsnapshot`) should no longer truncate their output sometimes
when run interactively (e.g. `bup ls ...`) due to a problem
introduced in 0.33.8.

* External subcommands (i.e. `import-rdiff-backup` and
`import-rsnapshot`) should no longer crash when run interactively
due to a problem introduced in 0.33.8.

* When running interactively, `bup` should no longer lose exceptions
raised by the internal "output filter" thread.

Thanks to (at least)
====================

Christian Wolf, Johannes Berg, and Rob Browning

--
Rob Browning
rlb @defaultvalue.org and @debian.org
GPG as of 2011-07-10 E6A9 DA3C C9FD 1FF8 C676 D2C4 C0F0 39E9 ED1B 597A
GPG as of 2002-11-03 14DD 432F AE39 534D B592 F9A0 25C8 D377 8C7E 73A4

Greg Troxel

unread,
Aug 30, 2025, 3:19:36 PMAug 30
to Rob Browning, bup-...@googlegroups.com
I had started tests on 0.33.x and then got distracted.

Looks like nonportable usage has been added:

script: unknown option -- e
Usage: script [-c <command>][-adfpqr] [file]

According to the NetBSD man page, script appeared in 3.0BSD and has
invocation synopsis:
script [-adfpqr] [-c command] [file]

NetBSD 10 adds -e, and I can't find script in POSIX.



full log, but this seems to be 3 cases of script -e.

----------------------------------------
Warning: pandoc not found; skipping generation of related documents
mkdir test/tmp
./pylint
./pylint: doing nothing given ./configure --with-pylint=no
! bup version # Ensure we can't test the local bup (cf. dev/shadow-bin)
error: something ran "bup"; bup imposter intentionally failing
./bup features
bup 0.33.9~48206095a6fc4d772282aa29a1666799198ff451
Source 48206095a6fc4d772282aa29a1666799198ff451 2025-08-28 18:29:43 -0400
Python: 3.12.11
Command line editing (e.g. bup ftp): yes
Saving and restoring POSIX ACLs: no
Saving and restoring extended attributes (xattrs): no
if test yes = "$(dev/python -c 'import xdist; print("yes")' 2>/dev/null)"; then \
(set -x; ./pytest ;) \
else \
(set -x; ./pytest;) \
fi
+ ./pytest
============================= test session starts ==============================
platform netbsd9 -- Python 3.12.11, pytest-8.4.0, pluggy-1.6.0 -- /home/gdt/SOFTWARE/BUP/bup/dev/bup-python
cachedir: .pytest_cache
rootdir: /home/gdt/SOFTWARE/BUP/bup
configfile: pytest.ini
testpaths: test/int, test/ext
collecting ... collected 134 items / 1 deselected / 133 selected

test/ext/test_get.py::test_get[get-replace] PASSED [ 0%]
test/ext/test_get.py::test_get[get-universal] PASSED [ 1%]
test/ext/test_get.py::test_get[get-ff] PASSED [ 2%]
test/ext/test_get.py::test_get[get-append] PASSED [ 3%]
test/ext/test_get.py::test_get[get-pick_force] PASSED [ 3%]
test/ext/test_get.py::test_get[get-pick_noforce] PASSED [ 4%]
test/ext/test_get.py::test_get[get-new_tag] PASSED [ 5%]
test/ext/test_get.py::test_get[get-unnamed] PASSED [ 6%]
test/ext/test-cat-file:: PASSED [ 6%]
test/ext/test-command-without-init-fails:: PASSED [ 7%]
test/ext/test-comparative-split-join:: SKIPPED (! /home/gdt/SOFTWARE...) [ 8%]
test/ext/test-compression:: PASSED [ 9%]
test/ext/test-drecurse:: PASSED [ 9%]
test/ext/test-fsck:: PASSED [ 10%]
test/ext/test-fuse:: PASSED [ 11%]
test/ext/test-gc:: PASSED [ 12%]
test/ext/test-gc-removes-incomplete-trees:: PASSED [ 12%]
test/ext/test-get-missing:: PASSED [ 13%]
test/ext/test-help:: PASSED [ 14%]
test/ext/test-import-duplicity:: SKIPPED (! /home/gdt/SOFTWARE/BUP/b...) [ 15%]
test/ext/test-import-rdiff-backup:: SKIPPED (! /home/gdt/SOFTWARE/BU...) [ 15%]
test/ext/test-index:: PASSED [ 16%]
test/ext/test-index-check-device:: SKIPPED (! /home/gdt/SOFTWARE/BUP...) [ 17%]
test/ext/test-index-clear:: PASSED [ 18%]
test/ext/test-index-save-type-change:: PASSED [ 18%]
test/ext/test-list-idx:: PASSED [ 19%]
test/ext/test-ls:: FAILED [ 20%]
test/ext/test-ls-remote:: FAILED [ 21%]
test/ext/test-main:: PASSED [ 21%]
test/ext/test-meta:: PASSED [ 22%]
test/ext/test-meta-acls:: SKIPPED (! /home/gdt/SOFTWARE/BUP/bup/test...) [ 23%]
test/ext/test-misc:: FAILED [ 24%]
test/ext/test-on:: PASSED [ 24%]
test/ext/test-packsizelimit:: PASSED [ 25%]
test/ext/test-redundant-saves:: PASSED [ 26%]
test/ext/test-restore-map-owner:: SKIPPED (! /home/gdt/SOFTWARE/BUP/...) [ 27%]
test/ext/test-restore-single-file:: PASSED [ 27%]
test/ext/test-rm:: PASSED [ 28%]
test/ext/test-rm-between-index-and-save:: PASSED [ 29%]
test/ext/test-save-creates-no-unrefs:: PASSED [ 30%]
test/ext/test-save-data-race:: PASSED [ 30%]
test/ext/test-save-errors:: PASSED [ 31%]
test/ext/test-save-restore:: PASSED [ 32%]
test/ext/test-save-restore-excludes:: PASSED [ 33%]
test/ext/test-save-smaller:: PASSED [ 33%]
test/ext/test-save-strip-graft:: PASSED [ 34%]
test/ext/test-save-symlink-race:: PASSED [ 35%]
test/ext/test-save-with-valid-parent:: PASSED [ 36%]
test/ext/test-sparse-files:: PASSED [ 36%]
test/ext/test-split-join:: PASSED [ 37%]
test/ext/test-tz:: PASSED [ 38%]
test/ext/test-validate-object-links:: PASSED [ 39%]
test/ext/test-validate-ref-links:: PASSED [ 39%]
test/ext/test-walk-object-order:: PASSED [ 40%]
test/ext/test-web:: PASSED [ 41%]
test/ext/test-xdev:: SKIPPED (! /home/gdt/SOFTWARE/BUP/bup/test/ext/...) [ 42%]
test/ext/test_argv.py::test_argv PASSED [ 42%]
test/ext/test_ftp.py::test_ftp PASSED [ 43%]
test/ext/test_prune_older.py::test_prune_older PASSED [ 44%]
test/int/test_bloom.py::test_bloom PASSED [ 45%]
test/int/test_client.py::test_server_split_with_indexes PASSED [ 45%]
test/int/test_client.py::test_multiple_suggestions PASSED [ 46%]
test/int/test_client.py::test_dumb_client_server PASSED [ 47%]
test/int/test_client.py::test_midx_refreshing PASSED [ 48%]
test/int/test_client.py::test_remote_parsing PASSED [ 48%]
test/int/test_compat.py::test_pending_raise PASSED [ 49%]
test/int/test_git.py::test_git_version_detection PASSED [ 50%]
test/int/test_git.py::test_mangle PASSED [ 51%]
test/int/test_git.py::test_encode PASSED [ 51%]
test/int/test_git.py::test_packs PASSED [ 52%]
test/int/test_git.py::test_pack_name_lookup PASSED [ 53%]
test/int/test_git.py::test_long_index PASSED [ 54%]
test/int/test_git.py::test_check_repo_or_die PASSED [ 54%]
test/int/test_git.py::test_commit_parsing PASSED [ 55%]
test/int/test_git.py::test_commit_gpgsig_parsing PASSED [ 56%]
test/int/test_git.py::test_new_commit PASSED [ 57%]
test/int/test_git.py::test_list_refs PASSED [ 57%]
test/int/test_git.py::test_git_date_str PASSED [ 58%]
test/int/test_git.py::test_cat_pipe PASSED [ 59%]
test/int/test_git.py::test_midx_close PASSED [ 60%]
test/int/test_git.py::test_config PASSED [ 60%]
test/int/test_hashsplit.py::test_nonresident_page_regions PASSED [ 61%]
test/int/test_hashsplit.py::test_uncache_ours_upto PASSED [ 62%]
test/int/test_hashsplit.py::test_rolling_sums PASSED [ 63%]
test/int/test_hashsplit.py::test_fanout_behaviour PASSED [ 63%]
test/int/test_helpers.py::test_parse_num PASSED [ 64%]
test/int/test_helpers.py::test_detect_fakeroot PASSED [ 65%]
test/int/test_helpers.py::test_path_components PASSED [ 66%]
test/int/test_helpers.py::test_stripped_path_components PASSED [ 66%]
test/int/test_helpers.py::test_grafted_path_components PASSED [ 67%]
test/int/test_helpers.py::test_shstr PASSED [ 68%]
test/int/test_helpers.py::test_readpipe PASSED [ 69%]
test/int/test_helpers.py::test_batchpipe PASSED [ 69%]
test/int/test_helpers.py::test_atomically_replaced_file PASSED [ 70%]
test/int/test_helpers.py::test_utc_offset_str PASSED [ 71%]
test/int/test_helpers.py::test_valid_save_name PASSED [ 72%]
test/int/test_index.py::test_index_basic PASSED [ 72%]
test/int/test_index.py::test_index_writer PASSED [ 73%]
test/int/test_index.py::test_index_negative_timestamps PASSED [ 74%]
test/int/test_index.py::test_index_dirty PASSED [ 75%]
test/int/test_metadata.py::test_clean_up_archive_path PASSED [ 75%]
test/int/test_metadata.py::test_risky_path PASSED [ 76%]
test/int/test_metadata.py::test_clean_up_extract_path PASSED [ 77%]
test/int/test_metadata.py::test_metadata_method PASSED [ 78%]
test/int/test_metadata.py::test_from_path_error PASSED [ 78%]
test/int/test_metadata.py::test_apply_to_path_restricted_access PASSED [ 79%]
test/int/test_metadata.py::test_restore_over_existing_target PASSED [ 80%]
test/int/test_midx.py::test_missing_midx PASSED [ 81%]
test/int/test_options.py::test_optdict PASSED [ 81%]
test/int/test_options.py::test_invalid_optspec PASSED [ 82%]
test/int/test_options.py::test_options PASSED [ 83%]
test/int/test_resolve.py::test_local_resolve PASSED [ 84%]
test/int/test_resolve.py::test_remote_resolve PASSED [ 84%]
test/int/test_resolve.py::test_local_resolve_loop PASSED [ 85%]
test/int/test_resolve.py::test_remote_resolve_loop PASSED [ 86%]
test/int/test_shquote.py::test_shquote PASSED [ 87%]
test/int/test_vfs.py::test_default_modes PASSED [ 87%]
test/int/test_vfs.py::test_cache_behavior PASSED [ 88%]
test/int/test_vfs.py::test_item_mode PASSED [ 89%]
test/int/test_vfs.py::test_reverse_suffix_duplicates PASSED [ 90%]
test/int/test_vfs.py::test_misc PASSED [ 90%]
test/int/test_vfs.py::test_read_and_seek PASSED [ 91%]
test/int/test_vfs.py::test_contents_with_mismatched_bupm_git_ordering PASSED [ 92%]
test/int/test_vfs.py::test_duplicate_save_dates PASSED [ 93%]
test/int/test_vfs.py::test_item_read_write PASSED [ 93%]
test/int/test_vint.py::test_vuint PASSED [ 94%]
test/int/test_vint.py::test_vint PASSED [ 95%]
test/int/test_vint.py::test_bvec PASSED [ 96%]
test/int/test_vint.py::test_pack_and_unpack PASSED [ 96%]
test/int/test_xstat.py::test_fstime PASSED [ 97%]
test/int/test_xstat.py::test_bup_utimensat PASSED [ 98%]
test/int/test_xstat.py::test_bup_utimes PASSED [ 99%]
test/int/test_xstat.py::test_bup_lutimes PASSED [100%]

=================================== FAILURES ===================================
_________________ /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls __________________
Exit status: 1
Failures:
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:307 with-tty /home/gdt/SOFTWARE/BUP/bup/bup ls -l src/latest FAILED
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:308 '3000' = '0' FAILED
----------------------------- Captured stdout call -----------------------------
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:7 pwd ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:8 wvmktempdir ok
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint: git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: git branch -m <name>
hint:
hint: Disable this message with "git config set advice.defaultBranchName false"
Initialized empty Git repository in /home/gdt/SOFTWARE/BUP/bup/test/tmp/test-ls-SwLZVKR/bup/
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:33 bup init ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:34 cd /home/gdt/SOFTWARE/BUP/bup/test/tmp/test-ls-SwLZVKR ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:36 mkdir src ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:37 touch src/.dotfile src/executable ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:38 mkfifo src/fifo ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:39 /home/gdt/SOFTWARE/BUP/bup/dev/mksock src/socket ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:40 bup random 1k ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:41 chmod u+x src/executable ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:42 chmod -R u=rwX,g-rwx,o-rwx . ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:43 touch -t 200910032348 src/.dotfile src/executable src/fifo src/file src/socket ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:44 cd src ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:44 ln -s file symlink ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:45 cd src ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:45 ln -s not-there bad-symlink ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:46 touch -t 200910032348 src ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:47 touch -t 200910032348 . ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:48 bup index src ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:50 bup save -n src -d 242312159 --strip src ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:51 bup save -n src -d 242312160 --strip src ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:52 bup tag some-tag src ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:54 id -u ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:55 bup-cfg-py -c import os; print(os.stat("src").st_gid) ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:56 id -un ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:58 bup-cfg-py -c import grp, os; print(grp.getgrgid(os.stat("src").st_gid)[0]) ok

Testing "ls (short)" in /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:65 bup-ls ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:65 exactly 2 arguments ok
Comparing:
src
--
src
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:65 'src' = 'src' ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:67 bup-ls / ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:67 exactly 2 arguments ok
Comparing:
src
--
src
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:67 'src' = 'src' ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:69 bup-ls -A / ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:69 exactly 2 arguments ok
Comparing:
.tag
src
--
.tag
src
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:69 '.tag src' = '.tag src' ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:72 bup-ls -AF / ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:72 exactly 2 arguments ok
Comparing:
.tag/
src/
--
.tag/
src/
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:72 '.tag/ src/' = '.tag/ src/' ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:75 bup-ls -a / ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:75 exactly 2 arguments ok
Comparing:
.
..
.tag
src
--
.
..
.tag
src
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:75 '. .. .tag src' = '. .. .tag src' ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:80 bup-ls -aF / ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:80 exactly 2 arguments ok
Comparing:
./
../
.tag/
src/
--
./
../
.tag/
src/
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:80 './ ../ .tag/ src/' = './ ../ .tag/ src/' ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:85 bup-ls /.tag ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:85 exactly 2 arguments ok
Comparing:
some-tag
--
some-tag
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:85 'some-tag' = 'some-tag' ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:87 bup-ls /src ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:87 exactly 2 arguments ok
Comparing:
1977-09-05-125559
1977-09-05-125600
latest
--
1977-09-05-125559
1977-09-05-125600
latest
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:87 '1977-09-05-125559 1977-09-05-125600 latest' = '1977-09-05-125559 1977-09-05-125600 latest' ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:92 bup-ls src/latest ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:92 exactly 2 arguments ok
Comparing:
bad-symlink
executable
fifo
file
socket
symlink
--
bad-symlink
executable
fifo
file
socket
symlink
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:92 'bad-symlink executable fifo file socket symlink' = 'bad-symlink executable fifo file socket symlink' ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:99 bup-ls -A src/latest ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:99 exactly 2 arguments ok
Comparing:
.dotfile
bad-symlink
executable
fifo
file
socket
symlink
--
.dotfile
bad-symlink
executable
fifo
file
socket
symlink
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:99 '.dotfile bad-symlink executable fifo file socket symlink' = '.dotfile bad-symlink executable fifo file socket symlink' ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:107 bup-ls -a src/latest ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:107 exactly 2 arguments ok
Comparing:
.
..
.dotfile
bad-symlink
executable
fifo
file
socket
symlink
--
.
..
.dotfile
bad-symlink
executable
fifo
file
socket
symlink
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:107 '. .. .dotfile bad-symlink executable fifo file socket symlink' = '. .. .dotfile bad-symlink executable fifo file socket symlink' ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:117 bup-ls -F src/latest ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:117 exactly 2 arguments ok
Comparing:
bad-symlink@
executable*
fifo|
file
socket=
symlink@
--
bad-symlink@
executable*
fifo|
file
socket=
symlink@
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:117 'bad-symlink@ executable* fifo| file socket= symlink@' = 'bad-symlink@ executable* fifo| file socket= symlink@' ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:124 bup-ls --file-type src/latest ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:124 exactly 2 arguments ok
Comparing:
bad-symlink@
executable
fifo|
file
socket=
symlink@
--
bad-symlink@
executable
fifo|
file
socket=
symlink@
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:124 'bad-symlink@ executable fifo| file socket= symlink@' = 'bad-symlink@ executable fifo| file socket= symlink@' ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:131 bup-ls -d src/latest ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:131 exactly 2 arguments ok
Comparing:
src/latest
--
src/latest
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:131 'src/latest' = 'src/latest' ok

Testing "ls (long)" in /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:136 bup-ls -l / ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:136 exactly 2 arguments ok
Comparing:
drwx------ gdt/lexort 0 2009-10-03 23:48 src
--
drwx------ gdt/lexort 0 2009-10-03 23:48 src
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:136 'drwx------ gdt/lexort 0 2009-10-03 23:48 src' = 'drwx------ gdt/lexort 0 2009-10-03 23:48 src' ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:139 bup-ls -lA / ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:139 exactly 2 arguments ok
Comparing:
drwxr-xr-x ?/? 0 1970-01-01 00:00 .tag
drwx------ gdt/lexort 0 2009-10-03 23:48 src
--
drwxr-xr-x ?/? 0 1970-01-01 00:00 .tag
drwx------ gdt/lexort 0 2009-10-03 23:48 src
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:139 'drwxr-xr-x ?/? 0 1970-01-01 00:00 .tag drwx------ gdt/lexort 0 2009-10-03 23:48 src' = 'drwxr-xr-x ?/? 0 1970-01-01 00:00 .tag drwx------ gdt/lexort 0 2009-10-03 23:48 src' ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:143 bup-ls -lAF / ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:143 exactly 2 arguments ok
Comparing:
drwxr-xr-x ?/? 0 1970-01-01 00:00 .tag/
drwx------ gdt/lexort 0 2009-10-03 23:48 src/
--
drwxr-xr-x ?/? 0 1970-01-01 00:00 .tag/
drwx------ gdt/lexort 0 2009-10-03 23:48 src/
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:143 'drwxr-xr-x ?/? 0 1970-01-01 00:00 .tag/ drwx------ gdt/lexort 0 2009-10-03 23:48 src/' = 'drwxr-xr-x ?/? 0 1970-01-01 00:00 .tag/ drwx------ gdt/lexort 0 2009-10-03 23:48 src/' ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:147 bup-ls -la / ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:147 exactly 2 arguments ok
Comparing:
drwxr-xr-x ?/? 0 1970-01-01 00:00 .
drwxr-xr-x ?/? 0 1970-01-01 00:00 ..
drwxr-xr-x ?/? 0 1970-01-01 00:00 .tag
drwx------ gdt/lexort 0 2009-10-03 23:48 src
--
drwxr-xr-x ?/? 0 1970-01-01 00:00 .
drwxr-xr-x ?/? 0 1970-01-01 00:00 ..
drwxr-xr-x ?/? 0 1970-01-01 00:00 .tag
drwx------ gdt/lexort 0 2009-10-03 23:48 src
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:147 'drwxr-xr-x ?/? 0 1970-01-01 00:00 . drwxr-xr-x ?/? 0 1970-01-01 00:00 .. drwxr-xr-x ?/? 0 1970-01-01 00:00 .tag drwx------ gdt/lexort 0 2009-10-03 23:48 src' = 'drwxr-xr-x ?/? 0 1970-01-01 00:00 . drwxr-xr-x ?/? 0 1970-01-01 00:00 .. drwxr-xr-x ?/? 0 1970-01-01 00:00 .tag drwx------ gdt/lexort 0 2009-10-03 23:48 src' ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:153 bup-ls -laF / ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:153 exactly 2 arguments ok
Comparing:
drwxr-xr-x ?/? 0 1970-01-01 00:00 ./
drwxr-xr-x ?/? 0 1970-01-01 00:00 ../
drwxr-xr-x ?/? 0 1970-01-01 00:00 .tag/
drwx------ gdt/lexort 0 2009-10-03 23:48 src/
--
drwxr-xr-x ?/? 0 1970-01-01 00:00 ./
drwxr-xr-x ?/? 0 1970-01-01 00:00 ../
drwxr-xr-x ?/? 0 1970-01-01 00:00 .tag/
drwx------ gdt/lexort 0 2009-10-03 23:48 src/
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:153 'drwxr-xr-x ?/? 0 1970-01-01 00:00 ./ drwxr-xr-x ?/? 0 1970-01-01 00:00 ../ drwxr-xr-x ?/? 0 1970-01-01 00:00 .tag/ drwx------ gdt/lexort 0 2009-10-03 23:48 src/' = 'drwxr-xr-x ?/? 0 1970-01-01 00:00 ./ drwxr-xr-x ?/? 0 1970-01-01 00:00 ../ drwxr-xr-x ?/? 0 1970-01-01 00:00 .tag/ drwx------ gdt/lexort 0 2009-10-03 23:48 src/' ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:159 ls -l src/socket ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:162 ls -l src/bad-symlink ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:164 bup-ls -l src/latest ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:167 echo lrwxr-xr-x gdt/lexort 9 2025-08-28 22:40 bad-symlink -> not-there ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:167 perl -ne m/.*? (\d+) (\d\d\d\d-\d\d-\d\d \d\d:\d\d)/ and print $2 ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:178 echo lrwxr-xr-x gdt/lexort 9 2025-08-28 22:40 bad-symlink -> not-there ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:178 perl -ne m/.*? (\d+) (\d\d\d\d-\d\d-\d\d \d\d:\d\d)/ and print $1 ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:183 ls -l src/symlink ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:185 bup-ls -l src/latest ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:188 echo lrwxr-xr-x gdt/lexort 4 2025-08-28 22:40 symlink -> file ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:188 perl -ne m/.*? (\d+) (\d\d\d\d-\d\d-\d\d \d\d:\d\d)/ and print $2 ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:199 echo lrwxr-xr-x gdt/lexort 4 2025-08-28 22:40 symlink -> file ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:199 perl -ne m/.*? (\d+) (\d\d\d\d-\d\d-\d\d \d\d:\d\d)/ and print $1 ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:203 exactly 2 arguments ok
Comparing:
lrwxr-xr-x gdt/lexort 9 2025-08-28 22:40 bad-symlink -> not-there
-rwx------ gdt/lexort 0 2009-10-03 23:48 executable
prw------- gdt/lexort 0 2009-10-03 23:48 fifo
-rw------- gdt/lexort 1024 2009-10-03 23:48 file
srwx------ gdt/lexort 0 2009-10-03 23:48 socket
lrwxr-xr-x gdt/lexort 4 2025-08-28 22:40 symlink -> file
--
lrwxr-xr-x gdt/lexort 9 2025-08-28 22:40 bad-symlink -> not-there
-rwx------ gdt/lexort 0 2009-10-03 23:48 executable
prw------- gdt/lexort 0 2009-10-03 23:48 fifo
-rw------- gdt/lexort 1024 2009-10-03 23:48 file
srwx------ gdt/lexort 0 2009-10-03 23:48 socket
lrwxr-xr-x gdt/lexort 4 2025-08-28 22:40 symlink -> file
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:203 'lrwxr-xr-x gdt/lexort 9 2025-08-28 22:40 bad-symlink -> not-there -rwx------ gdt/lexort 0 2009-10-03 23:48 executable prw------- gdt/lexort 0 2009-10-03 23:48 fifo -rw------- gdt/lexort 1024 2009-10-03 23:48 file srwx------ gdt/lexort 0 2009-10-03 23:48 socket lrwxr-xr-x gdt/lexort 4 2025-08-28 22:40 symlink -> file' = 'lrwxr-xr-x gdt/lexort 9 2025-08-28 22:40 bad-symlink -> not-there -rwx------ gdt/lexort 0 2009-10-03 23:48 executable prw------- gdt/lexort 0 2009-10-03 23:48 fifo -rw------- gdt/lexort 1024 2009-10-03 23:48 file srwx------ gdt/lexort 0 2009-10-03 23:48 socket lrwxr-xr-x gdt/lexort 4 2025-08-28 22:40 symlink -> file' ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:211 exactly 2 arguments ok
Comparing:
drwx------ gdt/lexort 0 2009-10-03 23:48 .
drwx------ gdt/lexort 0 2009-10-03 23:48 ..
-rw------- gdt/lexort 0 2009-10-03 23:48 .dotfile
lrwxr-xr-x gdt/lexort 9 2025-08-28 22:40 bad-symlink -> not-there
-rwx------ gdt/lexort 0 2009-10-03 23:48 executable
prw------- gdt/lexort 0 2009-10-03 23:48 fifo
-rw------- gdt/lexort 1024 2009-10-03 23:48 file
srwx------ gdt/lexort 0 2009-10-03 23:48 socket
lrwxr-xr-x gdt/lexort 4 2025-08-28 22:40 symlink -> file
--
drwx------ gdt/lexort 0 2009-10-03 23:48 .
drwx------ gdt/lexort 0 2009-10-03 23:48 ..
-rw------- gdt/lexort 0 2009-10-03 23:48 .dotfile
lrwxr-xr-x gdt/lexort 9 2025-08-28 22:40 bad-symlink -> not-there
-rwx------ gdt/lexort 0 2009-10-03 23:48 executable
prw------- gdt/lexort 0 2009-10-03 23:48 fifo
-rw------- gdt/lexort 1024 2009-10-03 23:48 file
srwx------ gdt/lexort 0 2009-10-03 23:48 socket
lrwxr-xr-x gdt/lexort 4 2025-08-28 22:40 symlink -> file
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:211 'drwx------ gdt/lexort 0 2009-10-03 23:48 . drwx------ gdt/lexort 0 2009-10-03 23:48 .. -rw------- gdt/lexort 0 2009-10-03 23:48 .dotfile lrwxr-xr-x gdt/lexort 9 2025-08-28 22:40 bad-symlink -> not-there -rwx------ gdt/lexort 0 2009-10-03 23:48 executable prw------- gdt/lexort 0 2009-10-03 23:48 fifo -rw------- gdt/lexort 1024 2009-10-03 23:48 file srwx------ gdt/lexort 0 2009-10-03 23:48 socket lrwxr-xr-x gdt/lexort 4 2025-08-28 22:40 symlink -> file' = 'drwx------ gdt/lexort 0 2009-10-03 23:48 . drwx------ gdt/lexort 0 2009-10-03 23:48 .. -rw------- gdt/lexort 0 2009-10-03 23:48 .dotfile lrwxr-xr-x gdt/lexort 9 2025-08-28 22:40 bad-symlink -> not-there -rwx------ gdt/lexort 0 2009-10-03 23:48 executable prw------- gdt/lexort 0 2009-10-03 23:48 fifo -rw------- gdt/lexort 1024 2009-10-03 23:48 file srwx------ gdt/lexort 0 2009-10-03 23:48 socket lrwxr-xr-x gdt/lexort 4 2025-08-28 22:40 symlink -> file' ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:222 exactly 2 arguments ok
Comparing:
-rw------- gdt/lexort 0 2009-10-03 23:48 .dotfile
lrwxr-xr-x gdt/lexort 9 2025-08-28 22:40 bad-symlink -> not-there
-rwx------ gdt/lexort 0 2009-10-03 23:48 executable
prw------- gdt/lexort 0 2009-10-03 23:48 fifo
-rw------- gdt/lexort 1024 2009-10-03 23:48 file
srwx------ gdt/lexort 0 2009-10-03 23:48 socket
lrwxr-xr-x gdt/lexort 4 2025-08-28 22:40 symlink -> file
--
-rw------- gdt/lexort 0 2009-10-03 23:48 .dotfile
lrwxr-xr-x gdt/lexort 9 2025-08-28 22:40 bad-symlink -> not-there
-rwx------ gdt/lexort 0 2009-10-03 23:48 executable
prw------- gdt/lexort 0 2009-10-03 23:48 fifo
-rw------- gdt/lexort 1024 2009-10-03 23:48 file
srwx------ gdt/lexort 0 2009-10-03 23:48 socket
lrwxr-xr-x gdt/lexort 4 2025-08-28 22:40 symlink -> file
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:222 '-rw------- gdt/lexort 0 2009-10-03 23:48 .dotfile lrwxr-xr-x gdt/lexort 9 2025-08-28 22:40 bad-symlink -> not-there -rwx------ gdt/lexort 0 2009-10-03 23:48 executable prw------- gdt/lexort 0 2009-10-03 23:48 fifo -rw------- gdt/lexort 1024 2009-10-03 23:48 file srwx------ gdt/lexort 0 2009-10-03 23:48 socket lrwxr-xr-x gdt/lexort 4 2025-08-28 22:40 symlink -> file' = '-rw------- gdt/lexort 0 2009-10-03 23:48 .dotfile lrwxr-xr-x gdt/lexort 9 2025-08-28 22:40 bad-symlink -> not-there -rwx------ gdt/lexort 0 2009-10-03 23:48 executable prw------- gdt/lexort 0 2009-10-03 23:48 fifo -rw------- gdt/lexort 1024 2009-10-03 23:48 file srwx------ gdt/lexort 0 2009-10-03 23:48 socket lrwxr-xr-x gdt/lexort 4 2025-08-28 22:40 symlink -> file' ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:231 exactly 2 arguments ok
Comparing:
lrwxr-xr-x gdt/lexort 9 2025-08-28 22:40 bad-symlink@ -> not-there
-rwx------ gdt/lexort 0 2009-10-03 23:48 executable*
prw------- gdt/lexort 0 2009-10-03 23:48 fifo|
-rw------- gdt/lexort 1024 2009-10-03 23:48 file
srwx------ gdt/lexort 0 2009-10-03 23:48 socket=
lrwxr-xr-x gdt/lexort 4 2025-08-28 22:40 symlink@ -> file
--
lrwxr-xr-x gdt/lexort 9 2025-08-28 22:40 bad-symlink@ -> not-there
-rwx------ gdt/lexort 0 2009-10-03 23:48 executable*
prw------- gdt/lexort 0 2009-10-03 23:48 fifo|
-rw------- gdt/lexort 1024 2009-10-03 23:48 file
srwx------ gdt/lexort 0 2009-10-03 23:48 socket=
lrwxr-xr-x gdt/lexort 4 2025-08-28 22:40 symlink@ -> file
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:231 'lrwxr-xr-x gdt/lexort 9 2025-08-28 22:40 bad-symlink@ -> not-there -rwx------ gdt/lexort 0 2009-10-03 23:48 executable* prw------- gdt/lexort 0 2009-10-03 23:48 fifo| -rw------- gdt/lexort 1024 2009-10-03 23:48 file srwx------ gdt/lexort 0 2009-10-03 23:48 socket= lrwxr-xr-x gdt/lexort 4 2025-08-28 22:40 symlink@ -> file' = 'lrwxr-xr-x gdt/lexort 9 2025-08-28 22:40 bad-symlink@ -> not-there -rwx------ gdt/lexort 0 2009-10-03 23:48 executable* prw------- gdt/lexort 0 2009-10-03 23:48 fifo| -rw------- gdt/lexort 1024 2009-10-03 23:48 file srwx------ gdt/lexort 0 2009-10-03 23:48 socket= lrwxr-xr-x gdt/lexort 4 2025-08-28 22:40 symlink@ -> file' ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:239 exactly 2 arguments ok
Comparing:
lrwxr-xr-x gdt/lexort 9 2025-08-28 22:40 bad-symlink@ -> not-there
-rwx------ gdt/lexort 0 2009-10-03 23:48 executable
prw------- gdt/lexort 0 2009-10-03 23:48 fifo|
-rw------- gdt/lexort 1024 2009-10-03 23:48 file
srwx------ gdt/lexort 0 2009-10-03 23:48 socket=
lrwxr-xr-x gdt/lexort 4 2025-08-28 22:40 symlink@ -> file
--
lrwxr-xr-x gdt/lexort 9 2025-08-28 22:40 bad-symlink@ -> not-there
-rwx------ gdt/lexort 0 2009-10-03 23:48 executable
prw------- gdt/lexort 0 2009-10-03 23:48 fifo|
-rw------- gdt/lexort 1024 2009-10-03 23:48 file
srwx------ gdt/lexort 0 2009-10-03 23:48 socket=
lrwxr-xr-x gdt/lexort 4 2025-08-28 22:40 symlink@ -> file
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:239 'lrwxr-xr-x gdt/lexort 9 2025-08-28 22:40 bad-symlink@ -> not-there -rwx------ gdt/lexort 0 2009-10-03 23:48 executable prw------- gdt/lexort 0 2009-10-03 23:48 fifo| -rw------- gdt/lexort 1024 2009-10-03 23:48 file srwx------ gdt/lexort 0 2009-10-03 23:48 socket= lrwxr-xr-x gdt/lexort 4 2025-08-28 22:40 symlink@ -> file' = 'lrwxr-xr-x gdt/lexort 9 2025-08-28 22:40 bad-symlink@ -> not-there -rwx------ gdt/lexort 0 2009-10-03 23:48 executable prw------- gdt/lexort 0 2009-10-03 23:48 fifo| -rw------- gdt/lexort 1024 2009-10-03 23:48 file srwx------ gdt/lexort 0 2009-10-03 23:48 socket= lrwxr-xr-x gdt/lexort 4 2025-08-28 22:40 symlink@ -> file' ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:247 exactly 2 arguments ok
Comparing:
lrwxr-xr-x 10853/700 9 2025-08-28 22:40 bad-symlink -> not-there
-rwx------ 10853/700 0 2009-10-03 23:48 executable
prw------- 10853/700 0 2009-10-03 23:48 fifo
-rw------- 10853/700 1024 2009-10-03 23:48 file
srwx------ 10853/700 0 2009-10-03 23:48 socket
lrwxr-xr-x 10853/700 4 2025-08-28 22:40 symlink -> file
--
lrwxr-xr-x 10853/700 9 2025-08-28 22:40 bad-symlink -> not-there
-rwx------ 10853/700 0 2009-10-03 23:48 executable
prw------- 10853/700 0 2009-10-03 23:48 fifo
-rw------- 10853/700 1024 2009-10-03 23:48 file
srwx------ 10853/700 0 2009-10-03 23:48 socket
lrwxr-xr-x 10853/700 4 2025-08-28 22:40 symlink -> file
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:247 'lrwxr-xr-x 10853/700 9 2025-08-28 22:40 bad-symlink -> not-there -rwx------ 10853/700 0 2009-10-03 23:48 executable prw------- 10853/700 0 2009-10-03 23:48 fifo -rw------- 10853/700 1024 2009-10-03 23:48 file srwx------ 10853/700 0 2009-10-03 23:48 socket lrwxr-xr-x 10853/700 4 2025-08-28 22:40 symlink -> file' = 'lrwxr-xr-x 10853/700 9 2025-08-28 22:40 bad-symlink -> not-there -rwx------ 10853/700 0 2009-10-03 23:48 executable prw------- 10853/700 0 2009-10-03 23:48 fifo -rw------- 10853/700 1024 2009-10-03 23:48 file srwx------ 10853/700 0 2009-10-03 23:48 socket lrwxr-xr-x 10853/700 4 2025-08-28 22:40 symlink -> file' ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:255 exactly 2 arguments ok
Comparing:
lrwxr-xr-x ?/? 17 1970-01-01 00:00 src/latest -> 1977-09-05-125600
--
lrwxr-xr-x ?/? 17 1970-01-01 00:00 src/latest -> 1977-09-05-125600
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:255 'lrwxr-xr-x ?/? 17 1970-01-01 00:00 src/latest -> 1977-09-05-125600' = 'lrwxr-xr-x ?/? 17 1970-01-01 00:00 src/latest -> 1977-09-05-125600' ok

Testing "ls (backup set - long)" in /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:260 exactly 2 arguments ok
Comparing:
drwx------ 10853/700
drwx------ 10853/700
lrwxr-xr-x ?/?
--
drwx------ 10853/700
drwx------ 10853/700
lrwxr-xr-x ?/?
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:260 'drwx------ 10853/700 drwx------ 10853/700 lrwxr-xr-x ?/?' = 'drwx------ 10853/700 drwx------ 10853/700 lrwxr-xr-x ?/?' ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:265 exactly 2 arguments ok
Comparing:
19b61df2ac6787bb156000234261211b83b1b209 src/1977-09-05-125600
--
19b61df2ac6787bb156000234261211b83b1b209 src/1977-09-05-125600
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:265 '19b61df2ac6787bb156000234261211b83b1b209 src/1977-09-05-125600' = '19b61df2ac6787bb156000234261211b83b1b209 src/1977-09-05-125600' ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:268 exactly 2 arguments ok
Comparing:
b0d19bda041dec663cc8d8281c16ed7452191482 src/1977-09-05-125600
--
b0d19bda041dec663cc8d8281c16ed7452191482 src/1977-09-05-125600
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:268 'b0d19bda041dec663cc8d8281c16ed7452191482 src/1977-09-05-125600' = 'b0d19bda041dec663cc8d8281c16ed7452191482 src/1977-09-05-125600' ok

Testing "ls (dates TZ != UTC)" in /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:280 exactly 2 arguments ok
Comparing:
lrwxr-xr-x 10853/700 9 2025-08-28 17:40 bad-symlink -> not-there
-rwx------ 10853/700 0 2009-10-03 18:48 executable
prw------- 10853/700 0 2009-10-03 18:48 fifo
-rw------- 10853/700 1024 2009-10-03 18:48 file
srwx------ 10853/700 0 2009-10-03 18:48 socket
lrwxr-xr-x 10853/700 4 2025-08-28 17:40 symlink -> file
--
lrwxr-xr-x 10853/700 9 2025-08-28 17:40 bad-symlink -> not-there
-rwx------ 10853/700 0 2009-10-03 18:48 executable
prw------- 10853/700 0 2009-10-03 18:48 fifo
-rw------- 10853/700 1024 2009-10-03 18:48 file
srwx------ 10853/700 0 2009-10-03 18:48 socket
lrwxr-xr-x 10853/700 4 2025-08-28 17:40 symlink -> file
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:280 'lrwxr-xr-x 10853/700 9 2025-08-28 17:40 bad-symlink -> not-there -rwx------ 10853/700 0 2009-10-03 18:48 executable prw------- 10853/700 0 2009-10-03 18:48 fifo -rw------- 10853/700 1024 2009-10-03 18:48 file srwx------ 10853/700 0 2009-10-03 18:48 socket lrwxr-xr-x 10853/700 4 2025-08-28 17:40 symlink -> file' = 'lrwxr-xr-x 10853/700 9 2025-08-28 17:40 bad-symlink -> not-there -rwx------ 10853/700 0 2009-10-03 18:48 executable prw------- 10853/700 0 2009-10-03 18:48 fifo -rw------- 10853/700 1024 2009-10-03 18:48 file srwx------ 10853/700 0 2009-10-03 18:48 socket lrwxr-xr-x 10853/700 4 2025-08-28 17:40 symlink -> file' ok

Testing "ls bad-symlink" in /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:291 exactly 2 arguments ok
Comparing:
src/latest/bad-symlink
--
src/latest/bad-symlink
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:291 'src/latest/bad-symlink' = 'src/latest/bad-symlink' ok

Testing "ls -l bad-symlink" in /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:294 exactly 2 arguments ok
Comparing:
lrwxr-xr-x gdt/lexort 9 2025-08-28 22:40 src/latest/bad-symlink -> not-there
--
lrwxr-xr-x gdt/lexort 9 2025-08-28 22:40 src/latest/bad-symlink -> not-there
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:294 'lrwxr-xr-x gdt/lexort 9 2025-08-28 22:40 src/latest/bad-symlink -> not-there' = 'lrwxr-xr-x gdt/lexort 9 2025-08-28 22:40 src/latest/bad-symlink -> not-there' ok
/usr/bin/script

Testing "output isn't truncated when isatty" in /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:302 rm -rf src ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:303 mkdir src ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:304 xargs touch ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:305 bup index src ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:306 bup save -n src --strip src ok
script: unknown option -- e
Usage: script [-c <command>][-adfpqr] [file]
script: unknown option -- e
Usage: script [-c <command>][-adfpqr] [file]
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:307 with-tty /home/gdt/SOFTWARE/BUP/bup/bup ls -l src/latest FAILED
called from /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:307 WVPASS with-tty /home/gdt/SOFTWARE/BUP/bup/bup ls -l src/latest
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:307 wc -l ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:308 exactly 2 arguments ok
Comparing:
3000
--
0
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:308 '3000' = '0' FAILED
called from /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls:308 WVPASSEQ 3000 0
______________ /home/gdt/SOFTWARE/BUP/bup/test/ext/test-ls-remote ______________
Exit status: 1
Failures:
! test/ext/test-ls:307 with-tty /home/gdt/SOFTWARE/BUP/bup/bup ls -l src/latest FAILED
! test/ext/test-ls:308 '3000' = '0' FAILED
----------------------------- Captured stdout call -----------------------------
! test/ext/test-ls:7 pwd ok
! test/ext/test-ls:8 wvmktempdir ok
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint: git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: git branch -m <name>
hint:
hint: Disable this message with "git config set advice.defaultBranchName false"
Initialized empty Git repository in /home/gdt/SOFTWARE/BUP/bup/test/tmp/test-ls-yb8kk8b/bup/
! test/ext/test-ls:33 bup init ok
! test/ext/test-ls:34 cd /home/gdt/SOFTWARE/BUP/bup/test/tmp/test-ls-yb8kk8b ok
! test/ext/test-ls:36 mkdir src ok
! test/ext/test-ls:37 touch src/.dotfile src/executable ok
! test/ext/test-ls:38 mkfifo src/fifo ok
! test/ext/test-ls:39 /home/gdt/SOFTWARE/BUP/bup/dev/mksock src/socket ok
! test/ext/test-ls:40 bup random 1k ok
! test/ext/test-ls:41 chmod u+x src/executable ok
! test/ext/test-ls:42 chmod -R u=rwX,g-rwx,o-rwx . ok
! test/ext/test-ls:43 touch -t 200910032348 src/.dotfile src/executable src/fifo src/file src/socket ok
! test/ext/test-ls:44 cd src ok
! test/ext/test-ls:44 ln -s file symlink ok
! test/ext/test-ls:45 cd src ok
! test/ext/test-ls:45 ln -s not-there bad-symlink ok
! test/ext/test-ls:46 touch -t 200910032348 src ok
! test/ext/test-ls:47 touch -t 200910032348 . ok
! test/ext/test-ls:48 bup index src ok
! test/ext/test-ls:50 bup save -n src -d 242312159 --strip src ok
! test/ext/test-ls:51 bup save -n src -d 242312160 --strip src ok
! test/ext/test-ls:52 bup tag some-tag src ok
! test/ext/test-ls:54 id -u ok
! test/ext/test-ls:55 bup-cfg-py -c import os; print(os.stat("src").st_gid) ok
! test/ext/test-ls:56 id -un ok
! test/ext/test-ls:58 bup-cfg-py -c import grp, os; print(grp.getgrgid(os.stat("src").st_gid)[0]) ok

Testing "ls -r (short)" in test/ext/test-ls:
! test/ext/test-ls:65 bup-ls ok
! test/ext/test-ls:65 exactly 2 arguments ok
Comparing:
src
--
src
! test/ext/test-ls:65 'src' = 'src' ok
! test/ext/test-ls:67 bup-ls / ok
! test/ext/test-ls:67 exactly 2 arguments ok
Comparing:
src
--
src
! test/ext/test-ls:67 'src' = 'src' ok
! test/ext/test-ls:69 bup-ls -A / ok
! test/ext/test-ls:69 exactly 2 arguments ok
Comparing:
.tag
src
--
.tag
src
! test/ext/test-ls:69 '.tag src' = '.tag src' ok
! test/ext/test-ls:72 bup-ls -AF / ok
! test/ext/test-ls:72 exactly 2 arguments ok
Comparing:
.tag/
src/
--
.tag/
src/
! test/ext/test-ls:72 '.tag/ src/' = '.tag/ src/' ok
! test/ext/test-ls:75 bup-ls -a / ok
! test/ext/test-ls:75 exactly 2 arguments ok
Comparing:
.
..
.tag
src
--
.
..
.tag
src
! test/ext/test-ls:75 '. .. .tag src' = '. .. .tag src' ok
! test/ext/test-ls:80 bup-ls -aF / ok
! test/ext/test-ls:80 exactly 2 arguments ok
Comparing:
./
../
.tag/
src/
--
./
../
.tag/
src/
! test/ext/test-ls:80 './ ../ .tag/ src/' = './ ../ .tag/ src/' ok
! test/ext/test-ls:85 bup-ls /.tag ok
! test/ext/test-ls:85 exactly 2 arguments ok
Comparing:
some-tag
--
some-tag
! test/ext/test-ls:85 'some-tag' = 'some-tag' ok
! test/ext/test-ls:87 bup-ls /src ok
! test/ext/test-ls:87 exactly 2 arguments ok
Comparing:
1977-09-05-125559
1977-09-05-125600
latest
--
1977-09-05-125559
1977-09-05-125600
latest
! test/ext/test-ls:87 '1977-09-05-125559 1977-09-05-125600 latest' = '1977-09-05-125559 1977-09-05-125600 latest' ok
! test/ext/test-ls:92 bup-ls src/latest ok
! test/ext/test-ls:92 exactly 2 arguments ok
Comparing:
bad-symlink
executable
fifo
file
socket
symlink
--
bad-symlink
executable
fifo
file
socket
symlink
! test/ext/test-ls:92 'bad-symlink executable fifo file socket symlink' = 'bad-symlink executable fifo file socket symlink' ok
! test/ext/test-ls:99 bup-ls -A src/latest ok
! test/ext/test-ls:99 exactly 2 arguments ok
Comparing:
.dotfile
bad-symlink
executable
fifo
file
socket
symlink
--
.dotfile
bad-symlink
executable
fifo
file
socket
symlink
! test/ext/test-ls:99 '.dotfile bad-symlink executable fifo file socket symlink' = '.dotfile bad-symlink executable fifo file socket symlink' ok
! test/ext/test-ls:107 bup-ls -a src/latest ok
! test/ext/test-ls:107 exactly 2 arguments ok
Comparing:
.
..
.dotfile
bad-symlink
executable
fifo
file
socket
symlink
--
.
..
.dotfile
bad-symlink
executable
fifo
file
socket
symlink
! test/ext/test-ls:107 '. .. .dotfile bad-symlink executable fifo file socket symlink' = '. .. .dotfile bad-symlink executable fifo file socket symlink' ok
! test/ext/test-ls:117 bup-ls -F src/latest ok
! test/ext/test-ls:117 exactly 2 arguments ok
Comparing:
bad-symlink@
executable*
fifo|
file
socket=
symlink@
--
bad-symlink@
executable*
fifo|
file
socket=
symlink@
! test/ext/test-ls:117 'bad-symlink@ executable* fifo| file socket= symlink@' = 'bad-symlink@ executable* fifo| file socket= symlink@' ok
! test/ext/test-ls:124 bup-ls --file-type src/latest ok
! test/ext/test-ls:124 exactly 2 arguments ok
Comparing:
bad-symlink@
executable
fifo|
file
socket=
symlink@
--
bad-symlink@
executable
fifo|
file
socket=
symlink@
! test/ext/test-ls:124 'bad-symlink@ executable fifo| file socket= symlink@' = 'bad-symlink@ executable fifo| file socket= symlink@' ok
! test/ext/test-ls:131 bup-ls -d src/latest ok
! test/ext/test-ls:131 exactly 2 arguments ok
Comparing:
src/latest
--
src/latest
! test/ext/test-ls:131 'src/latest' = 'src/latest' ok

Testing "ls -r (long)" in test/ext/test-ls:
! test/ext/test-ls:136 bup-ls -l / ok
! test/ext/test-ls:136 exactly 2 arguments ok
Comparing:
drwx------ gdt/lexort 0 2009-10-03 23:48 src
--
drwx------ gdt/lexort 0 2009-10-03 23:48 src
! test/ext/test-ls:136 'drwx------ gdt/lexort 0 2009-10-03 23:48 src' = 'drwx------ gdt/lexort 0 2009-10-03 23:48 src' ok
! test/ext/test-ls:139 bup-ls -lA / ok
! test/ext/test-ls:139 exactly 2 arguments ok
Comparing:
drwxr-xr-x ?/? 0 1970-01-01 00:00 .tag
drwx------ gdt/lexort 0 2009-10-03 23:48 src
--
drwxr-xr-x ?/? 0 1970-01-01 00:00 .tag
drwx------ gdt/lexort 0 2009-10-03 23:48 src
! test/ext/test-ls:139 'drwxr-xr-x ?/? 0 1970-01-01 00:00 .tag drwx------ gdt/lexort 0 2009-10-03 23:48 src' = 'drwxr-xr-x ?/? 0 1970-01-01 00:00 .tag drwx------ gdt/lexort 0 2009-10-03 23:48 src' ok
! test/ext/test-ls:143 bup-ls -lAF / ok
! test/ext/test-ls:143 exactly 2 arguments ok
Comparing:
drwxr-xr-x ?/? 0 1970-01-01 00:00 .tag/
drwx------ gdt/lexort 0 2009-10-03 23:48 src/
--
drwxr-xr-x ?/? 0 1970-01-01 00:00 .tag/
drwx------ gdt/lexort 0 2009-10-03 23:48 src/
! test/ext/test-ls:143 'drwxr-xr-x ?/? 0 1970-01-01 00:00 .tag/ drwx------ gdt/lexort 0 2009-10-03 23:48 src/' = 'drwxr-xr-x ?/? 0 1970-01-01 00:00 .tag/ drwx------ gdt/lexort 0 2009-10-03 23:48 src/' ok
! test/ext/test-ls:147 bup-ls -la / ok
! test/ext/test-ls:147 exactly 2 arguments ok
Comparing:
drwxr-xr-x ?/? 0 1970-01-01 00:00 .
drwxr-xr-x ?/? 0 1970-01-01 00:00 ..
drwxr-xr-x ?/? 0 1970-01-01 00:00 .tag
drwx------ gdt/lexort 0 2009-10-03 23:48 src
--
drwxr-xr-x ?/? 0 1970-01-01 00:00 .
drwxr-xr-x ?/? 0 1970-01-01 00:00 ..
drwxr-xr-x ?/? 0 1970-01-01 00:00 .tag
drwx------ gdt/lexort 0 2009-10-03 23:48 src
! test/ext/test-ls:147 'drwxr-xr-x ?/? 0 1970-01-01 00:00 . drwxr-xr-x ?/? 0 1970-01-01 00:00 .. drwxr-xr-x ?/? 0 1970-01-01 00:00 .tag drwx------ gdt/lexort 0 2009-10-03 23:48 src' = 'drwxr-xr-x ?/? 0 1970-01-01 00:00 . drwxr-xr-x ?/? 0 1970-01-01 00:00 .. drwxr-xr-x ?/? 0 1970-01-01 00:00 .tag drwx------ gdt/lexort 0 2009-10-03 23:48 src' ok
! test/ext/test-ls:153 bup-ls -laF / ok
! test/ext/test-ls:153 exactly 2 arguments ok
Comparing:
drwxr-xr-x ?/? 0 1970-01-01 00:00 ./
drwxr-xr-x ?/? 0 1970-01-01 00:00 ../
drwxr-xr-x ?/? 0 1970-01-01 00:00 .tag/
drwx------ gdt/lexort 0 2009-10-03 23:48 src/
--
drwxr-xr-x ?/? 0 1970-01-01 00:00 ./
drwxr-xr-x ?/? 0 1970-01-01 00:00 ../
drwxr-xr-x ?/? 0 1970-01-01 00:00 .tag/
drwx------ gdt/lexort 0 2009-10-03 23:48 src/
! test/ext/test-ls:153 'drwxr-xr-x ?/? 0 1970-01-01 00:00 ./ drwxr-xr-x ?/? 0 1970-01-01 00:00 ../ drwxr-xr-x ?/? 0 1970-01-01 00:00 .tag/ drwx------ gdt/lexort 0 2009-10-03 23:48 src/' = 'drwxr-xr-x ?/? 0 1970-01-01 00:00 ./ drwxr-xr-x ?/? 0 1970-01-01 00:00 ../ drwxr-xr-x ?/? 0 1970-01-01 00:00 .tag/ drwx------ gdt/lexort 0 2009-10-03 23:48 src/' ok
! test/ext/test-ls:159 ls -l src/socket ok
! test/ext/test-ls:162 ls -l src/bad-symlink ok
! test/ext/test-ls:164 bup-ls -l src/latest ok
! test/ext/test-ls:167 echo lrwxr-xr-x gdt/lexort 9 2025-08-28 22:41 bad-symlink -> not-there ok
! test/ext/test-ls:167 perl -ne m/.*? (\d+) (\d\d\d\d-\d\d-\d\d \d\d:\d\d)/ and print $2 ok
! test/ext/test-ls:178 echo lrwxr-xr-x gdt/lexort 9 2025-08-28 22:41 bad-symlink -> not-there ok
! test/ext/test-ls:178 perl -ne m/.*? (\d+) (\d\d\d\d-\d\d-\d\d \d\d:\d\d)/ and print $1 ok
! test/ext/test-ls:183 ls -l src/symlink ok
! test/ext/test-ls:185 bup-ls -l src/latest ok
! test/ext/test-ls:188 echo lrwxr-xr-x gdt/lexort 4 2025-08-28 22:41 symlink -> file ok
! test/ext/test-ls:188 perl -ne m/.*? (\d+) (\d\d\d\d-\d\d-\d\d \d\d:\d\d)/ and print $2 ok
! test/ext/test-ls:199 echo lrwxr-xr-x gdt/lexort 4 2025-08-28 22:41 symlink -> file ok
! test/ext/test-ls:199 perl -ne m/.*? (\d+) (\d\d\d\d-\d\d-\d\d \d\d:\d\d)/ and print $1 ok
! test/ext/test-ls:203 exactly 2 arguments ok
Comparing:
lrwxr-xr-x gdt/lexort 9 2025-08-28 22:41 bad-symlink -> not-there
-rwx------ gdt/lexort 0 2009-10-03 23:48 executable
prw------- gdt/lexort 0 2009-10-03 23:48 fifo
-rw------- gdt/lexort 1024 2009-10-03 23:48 file
srwx------ gdt/lexort 0 2009-10-03 23:48 socket
lrwxr-xr-x gdt/lexort 4 2025-08-28 22:41 symlink -> file
--
lrwxr-xr-x gdt/lexort 9 2025-08-28 22:41 bad-symlink -> not-there
-rwx------ gdt/lexort 0 2009-10-03 23:48 executable
prw------- gdt/lexort 0 2009-10-03 23:48 fifo
-rw------- gdt/lexort 1024 2009-10-03 23:48 file
srwx------ gdt/lexort 0 2009-10-03 23:48 socket
lrwxr-xr-x gdt/lexort 4 2025-08-28 22:41 symlink -> file
! test/ext/test-ls:203 'lrwxr-xr-x gdt/lexort 9 2025-08-28 22:41 bad-symlink -> not-there -rwx------ gdt/lexort 0 2009-10-03 23:48 executable prw------- gdt/lexort 0 2009-10-03 23:48 fifo -rw------- gdt/lexort 1024 2009-10-03 23:48 file srwx------ gdt/lexort 0 2009-10-03 23:48 socket lrwxr-xr-x gdt/lexort 4 2025-08-28 22:41 symlink -> file' = 'lrwxr-xr-x gdt/lexort 9 2025-08-28 22:41 bad-symlink -> not-there -rwx------ gdt/lexort 0 2009-10-03 23:48 executable prw------- gdt/lexort 0 2009-10-03 23:48 fifo -rw------- gdt/lexort 1024 2009-10-03 23:48 file srwx------ gdt/lexort 0 2009-10-03 23:48 socket lrwxr-xr-x gdt/lexort 4 2025-08-28 22:41 symlink -> file' ok
! test/ext/test-ls:211 exactly 2 arguments ok
Comparing:
drwx------ gdt/lexort 0 2009-10-03 23:48 .
drwx------ gdt/lexort 0 2009-10-03 23:48 ..
-rw------- gdt/lexort 0 2009-10-03 23:48 .dotfile
lrwxr-xr-x gdt/lexort 9 2025-08-28 22:41 bad-symlink -> not-there
-rwx------ gdt/lexort 0 2009-10-03 23:48 executable
prw------- gdt/lexort 0 2009-10-03 23:48 fifo
-rw------- gdt/lexort 1024 2009-10-03 23:48 file
srwx------ gdt/lexort 0 2009-10-03 23:48 socket
lrwxr-xr-x gdt/lexort 4 2025-08-28 22:41 symlink -> file
--
drwx------ gdt/lexort 0 2009-10-03 23:48 .
drwx------ gdt/lexort 0 2009-10-03 23:48 ..
-rw------- gdt/lexort 0 2009-10-03 23:48 .dotfile
lrwxr-xr-x gdt/lexort 9 2025-08-28 22:41 bad-symlink -> not-there
-rwx------ gdt/lexort 0 2009-10-03 23:48 executable
prw------- gdt/lexort 0 2009-10-03 23:48 fifo
-rw------- gdt/lexort 1024 2009-10-03 23:48 file
srwx------ gdt/lexort 0 2009-10-03 23:48 socket
lrwxr-xr-x gdt/lexort 4 2025-08-28 22:41 symlink -> file
! test/ext/test-ls:211 'drwx------ gdt/lexort 0 2009-10-03 23:48 . drwx------ gdt/lexort 0 2009-10-03 23:48 .. -rw------- gdt/lexort 0 2009-10-03 23:48 .dotfile lrwxr-xr-x gdt/lexort 9 2025-08-28 22:41 bad-symlink -> not-there -rwx------ gdt/lexort 0 2009-10-03 23:48 executable prw------- gdt/lexort 0 2009-10-03 23:48 fifo -rw------- gdt/lexort 1024 2009-10-03 23:48 file srwx------ gdt/lexort 0 2009-10-03 23:48 socket lrwxr-xr-x gdt/lexort 4 2025-08-28 22:41 symlink -> file' = 'drwx------ gdt/lexort 0 2009-10-03 23:48 . drwx------ gdt/lexort 0 2009-10-03 23:48 .. -rw------- gdt/lexort 0 2009-10-03 23:48 .dotfile lrwxr-xr-x gdt/lexort 9 2025-08-28 22:41 bad-symlink -> not-there -rwx------ gdt/lexort 0 2009-10-03 23:48 executable prw------- gdt/lexort 0 2009-10-03 23:48 fifo -rw------- gdt/lexort 1024 2009-10-03 23:48 file srwx------ gdt/lexort 0 2009-10-03 23:48 socket lrwxr-xr-x gdt/lexort 4 2025-08-28 22:41 symlink -> file' ok
! test/ext/test-ls:222 exactly 2 arguments ok
Comparing:
-rw------- gdt/lexort 0 2009-10-03 23:48 .dotfile
lrwxr-xr-x gdt/lexort 9 2025-08-28 22:41 bad-symlink -> not-there
-rwx------ gdt/lexort 0 2009-10-03 23:48 executable
prw------- gdt/lexort 0 2009-10-03 23:48 fifo
-rw------- gdt/lexort 1024 2009-10-03 23:48 file
srwx------ gdt/lexort 0 2009-10-03 23:48 socket
lrwxr-xr-x gdt/lexort 4 2025-08-28 22:41 symlink -> file
--
-rw------- gdt/lexort 0 2009-10-03 23:48 .dotfile
lrwxr-xr-x gdt/lexort 9 2025-08-28 22:41 bad-symlink -> not-there
-rwx------ gdt/lexort 0 2009-10-03 23:48 executable
prw------- gdt/lexort 0 2009-10-03 23:48 fifo
-rw------- gdt/lexort 1024 2009-10-03 23:48 file
srwx------ gdt/lexort 0 2009-10-03 23:48 socket
lrwxr-xr-x gdt/lexort 4 2025-08-28 22:41 symlink -> file
! test/ext/test-ls:222 '-rw------- gdt/lexort 0 2009-10-03 23:48 .dotfile lrwxr-xr-x gdt/lexort 9 2025-08-28 22:41 bad-symlink -> not-there -rwx------ gdt/lexort 0 2009-10-03 23:48 executable prw------- gdt/lexort 0 2009-10-03 23:48 fifo -rw------- gdt/lexort 1024 2009-10-03 23:48 file srwx------ gdt/lexort 0 2009-10-03 23:48 socket lrwxr-xr-x gdt/lexort 4 2025-08-28 22:41 symlink -> file' = '-rw------- gdt/lexort 0 2009-10-03 23:48 .dotfile lrwxr-xr-x gdt/lexort 9 2025-08-28 22:41 bad-symlink -> not-there -rwx------ gdt/lexort 0 2009-10-03 23:48 executable prw------- gdt/lexort 0 2009-10-03 23:48 fifo -rw------- gdt/lexort 1024 2009-10-03 23:48 file srwx------ gdt/lexort 0 2009-10-03 23:48 socket lrwxr-xr-x gdt/lexort 4 2025-08-28 22:41 symlink -> file' ok
! test/ext/test-ls:231 exactly 2 arguments ok
Comparing:
lrwxr-xr-x gdt/lexort 9 2025-08-28 22:41 bad-symlink@ -> not-there
-rwx------ gdt/lexort 0 2009-10-03 23:48 executable*
prw------- gdt/lexort 0 2009-10-03 23:48 fifo|
-rw------- gdt/lexort 1024 2009-10-03 23:48 file
srwx------ gdt/lexort 0 2009-10-03 23:48 socket=
lrwxr-xr-x gdt/lexort 4 2025-08-28 22:41 symlink@ -> file
--
lrwxr-xr-x gdt/lexort 9 2025-08-28 22:41 bad-symlink@ -> not-there
-rwx------ gdt/lexort 0 2009-10-03 23:48 executable*
prw------- gdt/lexort 0 2009-10-03 23:48 fifo|
-rw------- gdt/lexort 1024 2009-10-03 23:48 file
srwx------ gdt/lexort 0 2009-10-03 23:48 socket=
lrwxr-xr-x gdt/lexort 4 2025-08-28 22:41 symlink@ -> file
! test/ext/test-ls:231 'lrwxr-xr-x gdt/lexort 9 2025-08-28 22:41 bad-symlink@ -> not-there -rwx------ gdt/lexort 0 2009-10-03 23:48 executable* prw------- gdt/lexort 0 2009-10-03 23:48 fifo| -rw------- gdt/lexort 1024 2009-10-03 23:48 file srwx------ gdt/lexort 0 2009-10-03 23:48 socket= lrwxr-xr-x gdt/lexort 4 2025-08-28 22:41 symlink@ -> file' = 'lrwxr-xr-x gdt/lexort 9 2025-08-28 22:41 bad-symlink@ -> not-there -rwx------ gdt/lexort 0 2009-10-03 23:48 executable* prw------- gdt/lexort 0 2009-10-03 23:48 fifo| -rw------- gdt/lexort 1024 2009-10-03 23:48 file srwx------ gdt/lexort 0 2009-10-03 23:48 socket= lrwxr-xr-x gdt/lexort 4 2025-08-28 22:41 symlink@ -> file' ok
! test/ext/test-ls:239 exactly 2 arguments ok
Comparing:
lrwxr-xr-x gdt/lexort 9 2025-08-28 22:41 bad-symlink@ -> not-there
-rwx------ gdt/lexort 0 2009-10-03 23:48 executable
prw------- gdt/lexort 0 2009-10-03 23:48 fifo|
-rw------- gdt/lexort 1024 2009-10-03 23:48 file
srwx------ gdt/lexort 0 2009-10-03 23:48 socket=
lrwxr-xr-x gdt/lexort 4 2025-08-28 22:41 symlink@ -> file
--
lrwxr-xr-x gdt/lexort 9 2025-08-28 22:41 bad-symlink@ -> not-there
-rwx------ gdt/lexort 0 2009-10-03 23:48 executable
prw------- gdt/lexort 0 2009-10-03 23:48 fifo|
-rw------- gdt/lexort 1024 2009-10-03 23:48 file
srwx------ gdt/lexort 0 2009-10-03 23:48 socket=
lrwxr-xr-x gdt/lexort 4 2025-08-28 22:41 symlink@ -> file
! test/ext/test-ls:239 'lrwxr-xr-x gdt/lexort 9 2025-08-28 22:41 bad-symlink@ -> not-there -rwx------ gdt/lexort 0 2009-10-03 23:48 executable prw------- gdt/lexort 0 2009-10-03 23:48 fifo| -rw------- gdt/lexort 1024 2009-10-03 23:48 file srwx------ gdt/lexort 0 2009-10-03 23:48 socket= lrwxr-xr-x gdt/lexort 4 2025-08-28 22:41 symlink@ -> file' = 'lrwxr-xr-x gdt/lexort 9 2025-08-28 22:41 bad-symlink@ -> not-there -rwx------ gdt/lexort 0 2009-10-03 23:48 executable prw------- gdt/lexort 0 2009-10-03 23:48 fifo| -rw------- gdt/lexort 1024 2009-10-03 23:48 file srwx------ gdt/lexort 0 2009-10-03 23:48 socket= lrwxr-xr-x gdt/lexort 4 2025-08-28 22:41 symlink@ -> file' ok
! test/ext/test-ls:247 exactly 2 arguments ok
Comparing:
lrwxr-xr-x 10853/700 9 2025-08-28 22:41 bad-symlink -> not-there
-rwx------ 10853/700 0 2009-10-03 23:48 executable
prw------- 10853/700 0 2009-10-03 23:48 fifo
-rw------- 10853/700 1024 2009-10-03 23:48 file
srwx------ 10853/700 0 2009-10-03 23:48 socket
lrwxr-xr-x 10853/700 4 2025-08-28 22:41 symlink -> file
--
lrwxr-xr-x 10853/700 9 2025-08-28 22:41 bad-symlink -> not-there
-rwx------ 10853/700 0 2009-10-03 23:48 executable
prw------- 10853/700 0 2009-10-03 23:48 fifo
-rw------- 10853/700 1024 2009-10-03 23:48 file
srwx------ 10853/700 0 2009-10-03 23:48 socket
lrwxr-xr-x 10853/700 4 2025-08-28 22:41 symlink -> file
! test/ext/test-ls:247 'lrwxr-xr-x 10853/700 9 2025-08-28 22:41 bad-symlink -> not-there -rwx------ 10853/700 0 2009-10-03 23:48 executable prw------- 10853/700 0 2009-10-03 23:48 fifo -rw------- 10853/700 1024 2009-10-03 23:48 file srwx------ 10853/700 0 2009-10-03 23:48 socket lrwxr-xr-x 10853/700 4 2025-08-28 22:41 symlink -> file' = 'lrwxr-xr-x 10853/700 9 2025-08-28 22:41 bad-symlink -> not-there -rwx------ 10853/700 0 2009-10-03 23:48 executable prw------- 10853/700 0 2009-10-03 23:48 fifo -rw------- 10853/700 1024 2009-10-03 23:48 file srwx------ 10853/700 0 2009-10-03 23:48 socket lrwxr-xr-x 10853/700 4 2025-08-28 22:41 symlink -> file' ok
! test/ext/test-ls:255 exactly 2 arguments ok
Comparing:
lrwxr-xr-x ?/? 17 1970-01-01 00:00 src/latest -> 1977-09-05-125600
--
lrwxr-xr-x ?/? 17 1970-01-01 00:00 src/latest -> 1977-09-05-125600
! test/ext/test-ls:255 'lrwxr-xr-x ?/? 17 1970-01-01 00:00 src/latest -> 1977-09-05-125600' = 'lrwxr-xr-x ?/? 17 1970-01-01 00:00 src/latest -> 1977-09-05-125600' ok

Testing "ls -r (backup set - long)" in test/ext/test-ls:
! test/ext/test-ls:260 exactly 2 arguments ok
Comparing:
drwx------ 10853/700
drwx------ 10853/700
lrwxr-xr-x ?/?
--
drwx------ 10853/700
drwx------ 10853/700
lrwxr-xr-x ?/?
! test/ext/test-ls:260 'drwx------ 10853/700 drwx------ 10853/700 lrwxr-xr-x ?/?' = 'drwx------ 10853/700 drwx------ 10853/700 lrwxr-xr-x ?/?' ok
! test/ext/test-ls:265 exactly 2 arguments ok
Comparing:
682b101d0c95ddbb11279b9bd2abb763df2049a7 src/1977-09-05-125600
--
682b101d0c95ddbb11279b9bd2abb763df2049a7 src/1977-09-05-125600
! test/ext/test-ls:265 '682b101d0c95ddbb11279b9bd2abb763df2049a7 src/1977-09-05-125600' = '682b101d0c95ddbb11279b9bd2abb763df2049a7 src/1977-09-05-125600' ok
! test/ext/test-ls:268 exactly 2 arguments ok
Comparing:
33272cdda72e4d95643f7714cefac7c6743f85da src/1977-09-05-125600
--
33272cdda72e4d95643f7714cefac7c6743f85da src/1977-09-05-125600
! test/ext/test-ls:268 '33272cdda72e4d95643f7714cefac7c6743f85da src/1977-09-05-125600' = '33272cdda72e4d95643f7714cefac7c6743f85da src/1977-09-05-125600' ok

Testing "ls -r (dates TZ != UTC)" in test/ext/test-ls:
! test/ext/test-ls:280 exactly 2 arguments ok
Comparing:
lrwxr-xr-x 10853/700 9 2025-08-28 17:41 bad-symlink -> not-there
-rwx------ 10853/700 0 2009-10-03 18:48 executable
prw------- 10853/700 0 2009-10-03 18:48 fifo
-rw------- 10853/700 1024 2009-10-03 18:48 file
srwx------ 10853/700 0 2009-10-03 18:48 socket
lrwxr-xr-x 10853/700 4 2025-08-28 17:41 symlink -> file
--
lrwxr-xr-x 10853/700 9 2025-08-28 17:41 bad-symlink -> not-there
-rwx------ 10853/700 0 2009-10-03 18:48 executable
prw------- 10853/700 0 2009-10-03 18:48 fifo
-rw------- 10853/700 1024 2009-10-03 18:48 file
srwx------ 10853/700 0 2009-10-03 18:48 socket
lrwxr-xr-x 10853/700 4 2025-08-28 17:41 symlink -> file
! test/ext/test-ls:280 'lrwxr-xr-x 10853/700 9 2025-08-28 17:41 bad-symlink -> not-there -rwx------ 10853/700 0 2009-10-03 18:48 executable prw------- 10853/700 0 2009-10-03 18:48 fifo -rw------- 10853/700 1024 2009-10-03 18:48 file srwx------ 10853/700 0 2009-10-03 18:48 socket lrwxr-xr-x 10853/700 4 2025-08-28 17:41 symlink -> file' = 'lrwxr-xr-x 10853/700 9 2025-08-28 17:41 bad-symlink -> not-there -rwx------ 10853/700 0 2009-10-03 18:48 executable prw------- 10853/700 0 2009-10-03 18:48 fifo -rw------- 10853/700 1024 2009-10-03 18:48 file srwx------ 10853/700 0 2009-10-03 18:48 socket lrwxr-xr-x 10853/700 4 2025-08-28 17:41 symlink -> file' ok

Testing "ls -r bad-symlink" in test/ext/test-ls:
! test/ext/test-ls:291 exactly 2 arguments ok
Comparing:
src/latest/bad-symlink
--
src/latest/bad-symlink
! test/ext/test-ls:291 'src/latest/bad-symlink' = 'src/latest/bad-symlink' ok

Testing "ls -r -l bad-symlink" in test/ext/test-ls:
! test/ext/test-ls:294 exactly 2 arguments ok
Comparing:
lrwxr-xr-x gdt/lexort 9 2025-08-28 22:41 src/latest/bad-symlink -> not-there
--
lrwxr-xr-x gdt/lexort 9 2025-08-28 22:41 src/latest/bad-symlink -> not-there
! test/ext/test-ls:294 'lrwxr-xr-x gdt/lexort 9 2025-08-28 22:41 src/latest/bad-symlink -> not-there' = 'lrwxr-xr-x gdt/lexort 9 2025-08-28 22:41 src/latest/bad-symlink -> not-there' ok
/usr/bin/script

Testing "output isn't truncated when isatty" in test/ext/test-ls:
! test/ext/test-ls:302 rm -rf src ok
! test/ext/test-ls:303 mkdir src ok
! test/ext/test-ls:304 xargs touch ok
! test/ext/test-ls:305 bup index src ok
! test/ext/test-ls:306 bup save -n src --strip src ok
script: unknown option -- e
Usage: script [-c <command>][-adfpqr] [file]
script: unknown option -- e
Usage: script [-c <command>][-adfpqr] [file]
! test/ext/test-ls:307 with-tty /home/gdt/SOFTWARE/BUP/bup/bup ls -l src/latest FAILED
called from test/ext/test-ls:307 WVPASS with-tty /home/gdt/SOFTWARE/BUP/bup/bup ls -l src/latest
! test/ext/test-ls:307 wc -l ok
! test/ext/test-ls:308 exactly 2 arguments ok
Comparing:
3000
--
0
! test/ext/test-ls:308 '3000' = '0' FAILED
called from test/ext/test-ls:308 WVPASSEQ 3000 0
________________ /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc _________________
Exit status: 1
Failures:
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:152 with-tty /home/gdt/SOFTWARE/BUP/bup/bup import-rsnapshot rsnapshot/ FAILED
----------------------------- Captured stdout call -----------------------------
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:8 pwd ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:9 wvmktempdir ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:18 cd /home/gdt/SOFTWARE/BUP/bup/test/tmp/test-misc-iCChYZw ok

Testing "init" in /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint: git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: git branch -m <name>
hint:
hint: Disable this message with "git config set advice.defaultBranchName false"
Initialized empty Git repository in /home/gdt/SOFTWARE/BUP/bup/test/tmp/test-misc-iCChYZw/bup/
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:21 bup init ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:25 force-delete bupdata.tmp ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:26 mkdir bupdata.tmp ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:27 touch bupdata.tmp/a ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:28 bup random 128k ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:29 mkdir bupdata.tmp/d bupdata.tmp/d/e ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:30 bup random 512 ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:31 touch bupdata.tmp/d/z ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:32 touch bupdata.tmp/d/z ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:33 bup index bupdata.tmp ok
e0d88d7bc370b3b92709015934169d9039010df7
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:34 bup save -t bupdata.tmp ok

Testing "bloom" in /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:
bloom: bloom file: objects/pack/bup.bloom
bloom: checking objects/pack/pack-17472f8*.idx
All tests passed.
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:38 bup bloom -c /home/gdt/SOFTWARE/BUP/bup/test/tmp/test-misc-iCChYZw/bup/objects/pack/pack-17472f84d3afc5fc0654b1b20e3fb7b2cada407e.idx ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:39 rm /home/gdt/SOFTWARE/BUP/bup/test/tmp/test-misc-iCChYZw/bup/objects/pack/bup.bloom ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:40 bup bloom -k 4 ok
bloom: bloom file: objects/pack/bup.bloom
bloom: checking objects/pack/pack-17472f8*.idx
All tests passed.
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:41 bup bloom -c /home/gdt/SOFTWARE/BUP/bup/test/tmp/test-misc-iCChYZw/bup/objects/pack/pack-17472f84d3afc5fc0654b1b20e3fb7b2cada407e.idx ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:42 bup bloom -d /home/gdt/SOFTWARE/BUP/bup/test/tmp/test-misc-iCChYZw/bup/objects/pack --ruin --force ok
bloom: bloom file: objects/pack/bup.bloom
bloom: checking objects/pack/pack-17472f8*.idx
bloom: ERROR: object 05c8d2275ffed38663a170b35c07250e1949eb4d missing
bloom: ERROR: object 0bb2f8ed6f673d26a3576a7098a7c443e820d059 missing
bloom: ERROR: object 0c70d04e4515eca399f4b4d11b1ce69b540e4079 missing
bloom: ERROR: object 15b6bc03477248644637cc1e4ed1970f8bf3a3a4 missing
bloom: ERROR: object 1d7f47dce1d6a91c527d9c613f7a9ba7e4c0003b missing
bloom: ERROR: object 1dde11220a351a8bb57a62cad9f14765ebeeb337 missing
bloom: ERROR: object 24febd32bf5623bd42d9cd2f66d583df689c8541 missing
bloom: ERROR: object 25ab5cab83d3978328bec3eb7cea0f95b6da6b24 missing
bloom: ERROR: object 281113839badfe79d766b0c1af63438aa602f796 missing
bloom: ERROR: object 2e6eda190f111b6555eaaba9d60448a1e2967533 missing
bloom: ERROR: object 36a022cbd0b72e1d84e35b3f11f0975fa4a157c6 missing
bloom: ERROR: object 3c83229cf6e9866b1534fa43f0b2ba175e75aaec missing
bloom: ERROR: object 3f373a8a2d3f040b8a1c4101525ed0b56eeb332a missing
bloom: ERROR: object 4500114e5570fbae05e6cae001328fdbebfe78b8 missing
bloom: ERROR: object 454e93cc2fde2d7b1bec70f7ba4e016e4a25575f missing
bloom: ERROR: object 4e605327571165cb605eedef9c68a749d100a24a missing
bloom: ERROR: object 4fad5eb1b523269ecd5c50938d8a8ce099c5bd0d missing
bloom: ERROR: object 5360ea1303408d7abe1f790757940c5004e09de3 missing
bloom: ERROR: object 569b8e5f08b55b19276acda9889c2772cdb20f13 missing
bloom: ERROR: object 6bed77b4bd13f019b8c8a5175cee4a0c19bf8876 missing
bloom: ERROR: object 765f2b8404f54ce31b00430a6d081fe0a3b4ccd2 missing
bloom: ERROR: object 803c7eb29e15117e211e8aa1ab2e3849d8dad0f5 missing
bloom: ERROR: object 88e10c52ce3465b4c66fe4bfa239f22ffaa2c6db missing
bloom: ERROR: object 90852950a51c52363c14d9748644e8e2d6fa330c missing
bloom: ERROR: object 95edb4187960901028826e97983a174657eff6f9 missing
bloom: ERROR: object 99611c0002390e1e8b3e35e0ce88a4fcda7cbfe0 missing
bloom: ERROR: object 999b67aa8a1d4cae6fd364630478f76723807536 missing
bloom: ERROR: object 9ba532cb22f0e0226329426fe59c2bc228e7011a missing
bloom: ERROR: object 9d44370566170e7d41642a9d93fef1920a8f1cae missing
bloom: ERROR: object a1f92426baa78e791c7c6700c2027e691f901b20 missing
bloom: ERROR: object b78729f3e6a9c43418760dd5c77271fce0bc5e48 missing
bloom: ERROR: object bd1ecc014ad1c00387bd2fcdc530dd1c466ccb88 missing
bloom: ERROR: object bdd1f8af8825379fadef83823589b87edf076cad missing
bloom: ERROR: object c1440e4bef359314836152772dcbe208351c64ae missing
bloom: ERROR: object c3fac85a1491daac2bc335186e7ac3968bad1b49 missing
bloom: ERROR: object d0274696301eb616ffd37a76e4baa5d2ae253dbb missing
bloom: ERROR: object d36123fa891301528a90e4afe7d23874e8067a1b missing
bloom: ERROR: object d3dcee4e00d1bf0ae16baf6cf7faa9213350eee3 missing
bloom: ERROR: object d601182c33fae51102a28ae49afdaa841d53b6ca missing
bloom: ERROR: object d7c5193066912298bb96600d6132e4cebc050559 missing
bloom: ERROR: object d8e2083c2ae9539cc42e276a2219532a887587a1 missing
bloom: ERROR: object e0d88d7bc370b3b92709015934169d9039010df7 missing
bloom: ERROR: object e21cd37805eadcf64ca77c7c3e17e07815b4441b missing
bloom: ERROR: object e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 missing
bloom: ERROR: object e9b4f44a5881a4618ee8ecdc4ff7df177e47685f missing
bloom: ERROR: object eee049b98904b54bd95af76ba5e5e6ca3a9f8358 missing
bloom: ERROR: object fa85758990e28e4af9f2a8bd6aacf46ee557957b missing
bloom: ERROR: object fae8ee52aa51e88addad062a51748e70ae5decd1 missing
bloom: ERROR: object fdecd991956170b99b93d4ea2c1368a0994043a5 missing
WARNING: 49 errors encountered during bloom.
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:43 NOT(bup bloom -c /home/gdt/SOFTWARE/BUP/bup/test/tmp/test-misc-iCChYZw/bup/objects/pack/pack-17472f84d3afc5fc0654b1b20e3fb7b2cada407e.idx) ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:44 bup bloom --force -k 5 ok
bloom: bloom file: objects/pack/bup.bloom
bloom: checking objects/pack/pack-17472f8*.idx
All tests passed.
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:45 bup bloom -c /home/gdt/SOFTWARE/BUP/bup/test/tmp/test-misc-iCChYZw/bup/objects/pack/pack-17472f84d3afc5fc0654b1b20e3fb7b2cada407e.idx ok

Testing "memtest" in /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:
RSS MajFlt user sys ms
0 36 0 0 0 0
100 36 0 0 0 1
bloom: 100 objects searched in 124 steps: avg 1.240 steps/object
Total time: 0.001s
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:49 bup memtest -c1 -n100 ok
RSS MajFlt user sys ms
0 36 0 0 0 0
100 36 0 1 0 1
bloom: 1 objects searched in 5 steps: avg 5.000 steps/object
idx: 100 objects searched in 212 steps: avg 2.120 steps/object
Total time: 0.002s
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:50 bup memtest -c1 -n100 --existing ok

Testing "save/git-fsck" in /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:55 cd /home/gdt/SOFTWARE/BUP/bup/test/tmp/test-misc-iCChYZw/bup ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:58 bup random 4k ok
80c5fc2d6acff2bfdf230d1629db57b4cc96f305
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:58 bup split -b ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:59 cd /home/gdt/SOFTWARE/BUP/bup/test/sampledata ok
/home/gdt/SOFTWARE/BUP/bup/test/tmp/test-misc-iCChYZw/bupdata.tmp/
A /home/gdt/SOFTWARE/BUP/bup/test/tmp/test-misc-iCChYZw/
A /home/gdt/SOFTWARE/BUP/bup/test/tmp/
A /home/gdt/SOFTWARE/BUP/bup/test/
A /home/gdt/SOFTWARE/BUP/bup/
A /home/gdt/SOFTWARE/BUP/
A /home/gdt/SOFTWARE/
A /home/gdt/
A /home/
A /
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:59 bup save -vvn main / ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:64 NOT(egrep -v dangling (commit|tree|blob)) ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:64 tee -a /dev/stderr ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:64 wc -l ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:65 [ 0 -eq 0 ] ok

Testing "pack name and idx same as git" in /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:72 cd /home/gdt/SOFTWARE/BUP/bup/test/tmp/test-misc-iCChYZw/bup/objects/pack/ ok
pack-17472f84d3afc5fc0654b1b20e3fb7b2cada407e.pack
pack-4b2662bca0919e8db124b1325244b057108f6fc8.pack
pack-db9f4fe44f635cb31e52231b29d9495d81830309.pack
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:73 ls pack-17472f84d3afc5fc0654b1b20e3fb7b2cada407e.pack pack-4b2662bca0919e8db124b1325244b057108f6fc8.pack pack-db9f4fe44f635cb31e52231b29d9495d81830309.pack ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:78 exactly 2 arguments ok
Comparing:
pack-17472f84d3afc5fc0654b1b20e3fb7b2cada407e.pack
--
pack-17472f84d3afc5fc0654b1b20e3fb7b2cada407e.pack
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:78 'pack-17472f84d3afc5fc0654b1b20e3fb7b2cada407e.pack' = 'pack-17472f84d3afc5fc0654b1b20e3fb7b2cada407e.pack' ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:81 exactly 2 arguments ok
Comparing:
36aacaeb62746877a79c548146412da3f3307c1e
--
36aacaeb62746877a79c548146412da3f3307c1e
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:81 '36aacaeb62746877a79c548146412da3f3307c1e' = '36aacaeb62746877a79c548146412da3f3307c1e' ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:78 exactly 2 arguments ok
Comparing:
pack-4b2662bca0919e8db124b1325244b057108f6fc8.pack
--
pack-4b2662bca0919e8db124b1325244b057108f6fc8.pack
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:78 'pack-4b2662bca0919e8db124b1325244b057108f6fc8.pack' = 'pack-4b2662bca0919e8db124b1325244b057108f6fc8.pack' ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:81 exactly 2 arguments ok
Comparing:
0b702e93746f71b54313230c3a4852c16dfd518f
--
0b702e93746f71b54313230c3a4852c16dfd518f
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:81 '0b702e93746f71b54313230c3a4852c16dfd518f' = '0b702e93746f71b54313230c3a4852c16dfd518f' ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:78 exactly 2 arguments ok
Comparing:
pack-db9f4fe44f635cb31e52231b29d9495d81830309.pack
--
pack-db9f4fe44f635cb31e52231b29d9495d81830309.pack
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:78 'pack-db9f4fe44f635cb31e52231b29d9495d81830309.pack' = 'pack-db9f4fe44f635cb31e52231b29d9495d81830309.pack' ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:81 exactly 2 arguments ok
Comparing:
6effb67e1c4454d377999c473912a51652abd967
--
6effb67e1c4454d377999c473912a51652abd967
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:81 '6effb67e1c4454d377999c473912a51652abd967' = '6effb67e1c4454d377999c473912a51652abd967' ok

Testing "ftp" in /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:87 bup ftp cat /main/latest//home/gdt/SOFTWARE/BUP/bup/test/tmp/test-misc-iCChYZw/bupdata.tmp/b ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:88 bup ftp cat /main/latest//home/gdt/SOFTWARE/BUP/bup/test/tmp/test-misc-iCChYZw/bupdata.tmp/f ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:89 bup ftp cat /main/latest//home/gdt/SOFTWARE/BUP/bup/test/tmp/test-misc-iCChYZw/bupdata.tmp/f cat /main/latest//home/gdt/SOFTWARE/BUP/bup/test/tmp/test-misc-iCChYZw/bupdata.tmp/f ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:90 bup ftp cat /main/latest//home/gdt/SOFTWARE/BUP/bup/test/tmp/test-misc-iCChYZw/bupdata.tmp/a ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:91 exactly 2 arguments ok
Comparing:
4cc8f8579959018aefa169428ae64674e2a30535
--
4cc8f8579959018aefa169428ae64674e2a30535
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:91 '4cc8f8579959018aefa169428ae64674e2a30535' = '4cc8f8579959018aefa169428ae64674e2a30535' ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:92 exactly 2 arguments ok
Comparing:
70b04310f07664befbbf11cb4b89b8e3751f7817
--
70b04310f07664befbbf11cb4b89b8e3751f7817
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:92 '70b04310f07664befbbf11cb4b89b8e3751f7817' = '70b04310f07664befbbf11cb4b89b8e3751f7817' ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:93 exactly 2 arguments ok
Comparing:
28d307696ddb4a92342db63dbb2743a5662dd41f
--
28d307696ddb4a92342db63dbb2743a5662dd41f
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:93 '28d307696ddb4a92342db63dbb2743a5662dd41f' = '28d307696ddb4a92342db63dbb2743a5662dd41f' ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:94 exactly 2 arguments ok
Comparing:
da39a3ee5e6b4b0d3255bfef95601890afd80709
--
da39a3ee5e6b4b0d3255bfef95601890afd80709
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:94 'da39a3ee5e6b4b0d3255bfef95601890afd80709' = 'da39a3ee5e6b4b0d3255bfef95601890afd80709' ok

Testing "tag" in /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:100 exactly 2 arguments ok
Comparing:

--

! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:100 '' = '' ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:101 bup tag v0.1 main ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:102 exactly 2 arguments ok
Comparing:
v0.1
--
v0.1
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:102 'v0.1' = 'v0.1' ok
bup: error: tag 'v0.1' already exists
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:103 NOT(bup tag v0.1 main) ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:104 bup tag -f v0.1 main ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:105 bup tag -d v0.1 ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:106 bup tag -f -d v0.1 ok
error: tag 'v0.1' doesn't exist
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:107 NOT(bup tag -d v0.1) ok

Testing "indexfile" in /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:113 rm -f tmpindexfile.tmp ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:114 force-delete indexfile.tmp ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:115 mkdir indexfile.tmp ok
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint: git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: git branch -m <name>
hint:
hint: Disable this message with "git config set advice.defaultBranchName false"
Initialized empty Git repository in /home/gdt/SOFTWARE/BUP/bup/test/tmp/test-misc-iCChYZw/indexfile.tmp/.bup/
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:117 bup init ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:118 touch indexfile.tmp/a ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:119 touch indexfile.tmp/b ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:120 mkdir indexfile.tmp/c ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:121 bup index -ux indexfile.tmp ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:122 bup save --strip -n bupdir indexfile.tmp ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:123 exactly 2 arguments ok
Comparing:
a
b
c/
--
a
b
c/
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:123 'a b c/' = 'a b c/' ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:126 bup index -f tmpindexfile.tmp --exclude=indexfile.tmp/c -ux indexfile.tmp ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:127 bup save --strip -n indexfile -f tmpindexfile.tmp indexfile.tmp ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:128 exactly 2 arguments ok
Comparing:
a
b
--
a
b
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:128 'a b' = 'a b' ok

Testing "import-rsnapshot" in /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:137 rm -rf rsnapshot ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:138 mkdir rsnapshot ok
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint: git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: git branch -m <name>
hint:
hint: Disable this message with "git config set advice.defaultBranchName false"
Initialized empty Git repository in /home/gdt/SOFTWARE/BUP/bup/test/tmp/test-misc-iCChYZw/rsnapshot/.bup/
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:139 bup init ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:140 mkdir -p rsnapshot/hourly.0/buptest/a ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:141 touch rsnapshot/hourly.0/buptest/a/b ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:142 mkdir -p rsnapshot/hourly.0/buptest/c/d ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:143 touch rsnapshot/hourly.0/buptest/c/d/e ok
snapshot='hourly.0'
snapshot='hourly.0' branch='buptest'
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:144 bup import-rsnapshot rsnapshot/ ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:145 exactly 2 arguments ok
Comparing:
a/
c/
--
a/
c/
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:145 'a/ c/' = 'a/ c/' ok
/usr/bin/script
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:150 rm -rf /home/gdt/SOFTWARE/BUP/bup/test/tmp/test-misc-iCChYZw/rsnapshot/.bup ok
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint: git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: git branch -m <name>
hint:
hint: Disable this message with "git config set advice.defaultBranchName false"
Initialized empty Git repository in /home/gdt/SOFTWARE/BUP/bup/test/tmp/test-misc-iCChYZw/rsnapshot/.bup/
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:151 bup init ok
script: unknown option -- e
Usage: script [-c <command>][-adfpqr] [file]
script: unknown option -- e
Usage: script [-c <command>][-adfpqr] [file]
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:152 with-tty /home/gdt/SOFTWARE/BUP/bup/bup import-rsnapshot rsnapshot/ FAILED
called from /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:152 WVPASS with-tty /home/gdt/SOFTWARE/BUP/bup/bup import-rsnapshot rsnapshot/
=========================== short test summary info ============================
FAILED test/ext/test-ls::
FAILED test/ext/test-ls-remote::
FAILED test/ext/test-misc::
===== 3 failed, 123 passed, 7 skipped, 1 deselected in 1051.50s (0:17:31) ======
gmake: *** [GNUmakefile:257: test] Error 1

Rob Browning

unread,
Aug 30, 2025, 4:33:40 PMAug 30
to Greg Troxel, bup-...@googlegroups.com
Greg Troxel <g...@lexort.com> writes:

> NetBSD 10 adds -e, and I can't find script in POSIX.

It's not POSIX.

> full log, but this seems to be 3 cases of script -e.

Yep - I did check the manpages, but guess, as you say, it's newer. I
might fix it in 0.33.x, though how important do you think it is relative
to the affected versions?

It's also very likely to be fine to just disable those tests
there. Before now, there were no forced tty tests.

Though really, it sounded like -e is only for compatibility with
util-linux, so I should have just omitted it on the dev/with-tty *bsd
branch.

Thanks

Greg Troxel

unread,
Aug 30, 2025, 6:33:14 PMAug 30
to Rob Browning, bup-...@googlegroups.com
Rob Browning <r...@defaultvalue.org> writes:

> Greg Troxel <g...@lexort.com> writes:
>
>> NetBSD 10 adds -e, and I can't find script in POSIX.
>
> It's not POSIX.
>
>> full log, but this seems to be 3 cases of script -e.
>
> Yep - I did check the manpages, but guess, as you say, it's newer. I
> might fix it in 0.33.x, though how important do you think it is relative
> to the affected versions?

NetBSD 9 is a supported system until 11 is released, and backup
software in my book should be more compatible beyond that as it's so
critical.

It's likely that other systems have trouble too, and we just don't know.

> It's also very likely to be fine to just disable those tests
> there. Before now, there were no forced tty tests.

Having 3 tests fail vs disabled is operationally similar, except the
first provokes me to complain :-)

> Though really, it sounded like -e is only for compatibility with
> util-linux, so I should have just omitted it on the dev/with-tty *bsd
> branch.

I will test that and see how it goes.
Reply all
Reply to author
Forward
0 new messages