Hit:1 http://archive.ubuntu.com/ubuntu noble InRelease
Hit:2 http://security.ubuntu.com/ubuntu noble-security InRelease
Hit:3 http://archive.ubuntu.com/ubuntu noble-updates InRelease
Hit:4 http://archive.ubuntu.com/ubuntu noble-backports InRelease
Reading package lists...
Reading package lists...
Building dependency tree...
Reading state information...
curl is already the newest version (8.5.0-2ubuntu10.8).
0 upgraded, 0 newly installed, 0 to remove and 13 not upgraded.
downloading uv 0.9.7 x86_64-unknown-linux-gnu
no checksums to verify
installing to /root/.local/bin
uv
uvx
everything's installed!
To add $HOME/.local/bin to your PATH, either restart your shell or run:
source $HOME/.local/bin/env (sh, bash, zsh)
source $HOME/.local/bin/env.fish (fish)
Downloading pygments (1.2MiB)
Downloading pygments
Installed 6 packages in 33ms
============================= test session starts ==============================
platform linux -- Python 3.12.3, pytest-8.4.1, pluggy-1.6.0
rootdir: /tests
plugins: json-ctrf-0.3.5
collected 8 items
../tests/test_outputs.py F.F.FFFF [100%]
=================================== FAILURES ===================================
___________________ test_feature_b_has_feature_a_as_ancestor ___________________
def test_feature_b_has_feature_a_as_ancestor():
result = run_jj(
["log", "--no-graph", "-r", "ancestors(feature-b)", "-T", 'description ++ "\n"']
)
assert result.returncode == 0, f"jj log failed: {result.stderr}"
> assert "feat: add users endpoint" in result.stdout, \
"feature-a commit not found in ancestry of feature-b (rebase not done)."
E AssertionError: feature-a commit not found in ancestry of feature-b (rebase not done).
E assert 'feat: add users endpoint' in 'feat: add products endpoint\n\ninit: base api\n\n\n'
E + where 'feat: add products endpoint\n\ninit: base api\n\n\n' = CompletedProcess(args=['jj', 'log', '--no-graph', '-r', 'ancestors(feature-b)', '-T', 'description ++ "\n"'], returncode=0, stdout='feat: add products endpoint\n\ninit: base api\n\n\n', stderr='').stdout
/tests/test_outputs.py:21: AssertionError
________________________ test_api_py_has_users_endpoint ________________________
def test_api_py_has_users_endpoint():
result = run_jj(["file", "show", "src/api.py", "-r", "feature-b"])
assert result.returncode == 0, f"Could not show src/api.py: {result.stderr}"
> assert "/users" in result.stdout, "Missing /users endpoint in resolved src/api.py."
E AssertionError: Missing /users endpoint in resolved src/api.py.
E assert '/users' in 'from flask import Flask\napp = Flask(__name__)\n\n@app.route("/")\ndef index():\n return "hello world"\n\n@app.route("/products")\ndef get_products():\n return {"products": []}\n'
E + where 'from flask import Flask\napp = Flask(__name__)\n\n@app.route("/")\ndef index():\n return "hello world"\n\n@app.route("/products")\ndef get_products():\n return {"products": []}\n' = CompletedProcess(args=['jj', 'file', 'show', 'src/api.py', '-r', 'feature-b'], returncode=0, stdout='from flask import...:\n return "hello world"\n\n@app.route("/products")\ndef get_products():\n return {"products": []}\n', stderr='').stdout
/tests/test_outputs.py:36: AssertionError
___________________ test_main_has_both_features_as_ancestors ___________________
def test_main_has_both_features_as_ancestors():
result = run_jj(
["log", "--no-graph", "-r", "ancestors(main)", "-T", 'description ++ "\n"']
)
assert result.returncode == 0, f"jj log ancestors(main) failed: {result.stderr}"
> assert "feat: add users endpoint" in result.stdout, \
"main ancestry missing feat: add users endpoint."
E AssertionError: main ancestry missing feat: add users endpoint.
E assert 'feat: add users endpoint' in 'init: base api\n\n\n'
E + where 'init: base api\n\n\n' = CompletedProcess(args=['jj', 'log', '--no-graph', '-r', 'ancestors(main)', '-T', 'description ++ "\n"'], returncode=0, stdout='init: base api\n\n\n', stderr='').stdout
/tests/test_outputs.py:50: AssertionError
__________________________ test_main_is_merge_commit ___________________________
def test_main_is_merge_commit():
result = run_jj(["log", "--no-graph", "-r", "main", "-T", 'parents.len() ++ "\n"'])
assert result.returncode == 0, f"jj log main failed: {result.stderr}"
> assert result.stdout.strip() == "2", \
f"main should be a merge commit with 2 parents, got: {result.stdout.strip()}"
E AssertionError: main should be a merge commit with 2 parents, got: 1
E assert '1' == '2'
E
E - 2
E + 1
/tests/test_outputs.py:59: AssertionError
_____________________________ test_log_file_exists _____________________________
def test_log_file_exists():
> assert os.path.isfile(LOG_FILE), f"{LOG_FILE} not found."
E AssertionError: /home/user/cross_boundary_log.txt not found.
E assert False
E + where False = <function isfile at 0x7267622e8220>('/home/user/cross_boundary_log.txt')
E + where <function isfile at 0x7267622e8220> = <module 'posixpath' (frozen)>.isfile
E + where <module 'posixpath' (frozen)> = os.path
/tests/test_outputs.py:64: AssertionError
____________________________ test_log_file_content _____________________________
def test_log_file_content():
> with open(LOG_FILE) as f:
^^^^^^^^^^^^^^
E FileNotFoundError: [Errno 2] No such file or directory: '/home/user/cross_boundary_log.txt'
/tests/test_outputs.py:68: FileNotFoundError
==================================== PASSES ====================================
=========================== short test summary info ============================
PASSED ../tests/test_outputs.py::test_api_py_at_feature_b_has_no_conflicts
PASSED ../tests/test_outputs.py::test_api_py_has_products_endpoint
FAILED ../tests/test_outputs.py::test_feature_b_has_feature_a_as_ancestor - A...
FAILED ../tests/test_outputs.py::test_api_py_has_users_endpoint - AssertionEr...
FAILED ../tests/test_outputs.py::test_main_has_both_features_as_ancestors - A...
FAILED ../tests/test_outputs.py::test_main_is_merge_commit - AssertionError: ...
FAILED ../tests/test_outputs.py::test_log_file_exists - AssertionError: /home...
FAILED ../tests/test_outputs.py::test_log_file_content - FileNotFoundError: [...
========================= 6 failed, 2 passed in 0.14s ==========================