Hi,
executing "make test" on Cygwin shows that most tests fail. To cut down on that a bit, I changed ./pytest to abort on the first failure (the -x argument to pytest) and I found that the failure is caused by
test/ext/test_get.py, line 339 (in _test_replace):
$ ./pytest
============== test session starts =============
platform cygwin -- Python 3.9.10, pytest-7.2.0, pluggy-1.0.0 -- /tmp/bup/dev/bup-python.exe
cachedir: .pytest_cache
rootdir: /tmp/bup, configfile: pytest.ini, testpaths: test/int, test/ext
collected 127 items / 1 deselected / 126 selected
test/ext/test_get.py::test_get[get-replace] FAILED [ 0%]
====== FAILURES ============
______ test_get[get-replace] _________
tmpdir = b'/tmp/bup/test/tmp/ext-test_get-py-test_getizfx_zpe'
disposition = 'get', category = 'replace'
@pytest.mark.parametrize("disposition,category", product(dispositions_to_test, categories))
def test_get(tmpdir, disposition, category):
chdir(tmpdir)
try:
src_info = create_get_src()
> globals().get('_test_' + category)(disposition, src_info)
test/ext/test_get.py:966:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
test/ext/test_get.py:339: in _test_replace
validate_tagged_save(b'obj', getcwd() + b'/src',
test/ext/test_get.py:198: in validate_tagged_save
_validate_save(orig_value, b'tmp-branch-for-tag/latest' + restore_subpath,
test/ext/test_get.py:149: in _validate_save
exr = verify_rcz((bup_cmd, b'-d', b'get-dest',
test/ext/test_get.py:58: in verify_rcz
wvcheck(rc == 0, 'process exit %d == 0' % rc)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cond = False, msg = 'process exit 1 == 0'
def WVCHECK(cond, msg):
> assert cond, msg
E AssertionError: process exit 1 == 0
test/lib/wvpytest.py:38: AssertionError
------------------------------ Captured stdout call ------------------------------
(.... large amout of output of previous tests....)
------------------------------ Captured stderr call ------------------------------
(.... large amout of output of previous tests....)
git --git-dir get-dest branch tmp-branch-for-tag refs/tags/obj
/tmp/bup/lib/cmd/bup -d get-dest restore -C restore tmp-branch-for-tag/latest/tmp/bup/test/tmp/ext-test_get-py-test_getizfx_zpe/src/.
POSIX1e ACL: can't create [b'u::rwx\ng::r-x\no::r-x', b'u::rwx\ng::r-x\no::r-x', b'u::rwx\ng::r-x\no::r-x', b'u::rwx\ng::r-x\no::r-x'] for 'y'
POSIX1e ACL: can't create [b'u::rwx\ng::r-x\no::r-x', b'u::rwx\ng::r-x\no::r-x', b'u::rwx\ng::r-x\no::r-x', b'u::rwx\ng::r-x\no::r-x'] for 'x'
POSIX1e ACL: can't create [b'u::rwx\ng::r-x\no::r-x', b'u::rwx\ng::r-x\no::r-x', b'u::rwx\ng::r-x\no::r-x', b'u::rwx\ng::r-x\no::r-x'] for '.'
warning: 3 errors encountered
---------------------------- Captured stderr teardown ----------------------------
Preserving: b'test/tmp/ext-test_get-py-test_getizfx_zpe'
(... some final output...)
The ACLs seem strange to me because they are repeated. So what I would understand is trying to set "u::rwx\ng::r-x\no::r-x", even though I am unsure about the newline characters in there. But what is shown in the error message is a python ist with three times this value.
The test repository (bup folder "get-dest") looks like this:
src/
src/1
src/tiny-file
src/x/
src/x/2
src/y/
The error happens when a directory is restored. For files, it works:
$ /tmp/bup/lib/cmd/bup -d get-dest restore -C restore tmp-branch-for-tag/latest/tmp/bup/test/tmp/ext-test_get-py-test_getizfx_zpe/src/x/y
POSIX1e ACL: can't create [b'u::rwx\ng::r-x\no::r-x', b'u::rwx\ng::r-x\no::r-x', b'u::rwx\ng::r-x\no::r-x', b'u::rwx\ng::r-x\no::r-x'] for 'y'
Restoring: 1, done.
warning: 1 errors encountered
$ /tmp/bup/lib/cmd/bup -d get-dest restore -C restore tmp-branch-for-tag/latest/tmp/bup/test/tmp/ext-test_get-py-test_getizfx_zpe/src/x/2
Restoring: 1, done.
I will try to dig into it, but still report it here in case you have hints where to look in the code and especially what the format of the ACLs in the error message mean (the fact that it is a list with (byte)strings that contain newlines)
Best,
Moritz