kiln_ai.test_pytest_test_output
1from pathlib import Path 2from unittest.mock import Mock, patch 3 4import kiln_ai.pytest_test_output as pytest_test_output 5from kiln_ai.pytest_test_output import make_test_output_dir 6 7 8def test_test_output_root(): 9 root = pytest_test_output.test_output_root() 10 assert isinstance(root, Path) 11 assert root.name == "test_output" 12 13 14def test_make_test_output_dir_basic(tmp_path): 15 with patch("kiln_ai.pytest_test_output.test_output_root", lambda: tmp_path): 16 request = Mock() 17 request.node.name = "test_example" 18 request.node.callspec = None 19 20 out_dir = make_test_output_dir(request) 21 assert out_dir.exists() 22 assert out_dir.is_dir() 23 assert "test_example" in str(out_dir) 24 assert "default" in str(out_dir) 25 26 27def test_make_test_output_dir_with_param_id(tmp_path): 28 with patch("kiln_ai.pytest_test_output.test_output_root", lambda: tmp_path): 29 request = Mock() 30 request.node.name = "test_param[case1]" 31 request.node.callspec.id = "my-param" 32 33 out_dir = make_test_output_dir(request) 34 assert out_dir.exists() 35 assert "my-param" in str(out_dir) 36 37 38def test_make_test_output_dir_sanitizes_names(tmp_path): 39 with patch("kiln_ai.pytest_test_output.test_output_root", lambda: tmp_path): 40 request = Mock() 41 request.node.name = "test_with spaces/and:special!chars" 42 request.node.callspec.id = "param with spaces" 43 44 out_dir = make_test_output_dir(request) 45 assert out_dir.exists() 46 # Special chars replaced with underscores 47 assert " " not in out_dir.parts[-3] 48 assert "/" not in out_dir.parts[-3] 49 50 51def test_make_test_output_dir_node_without_callspec(tmp_path): 52 with patch("kiln_ai.pytest_test_output.test_output_root", lambda: tmp_path): 53 54 class NodeWithoutCallspec: 55 name = "test_no_callspec" 56 57 request = Mock() 58 request.node = NodeWithoutCallspec() 59 60 out_dir = make_test_output_dir(request) 61 assert out_dir.exists() 62 assert "default" in str(out_dir) 63 64 65def test_make_test_output_dir_callspec_without_id(tmp_path): 66 with patch("kiln_ai.pytest_test_output.test_output_root", lambda: tmp_path): 67 callspec = Mock() 68 callspec.id = None 69 70 request = Mock() 71 request.node.name = "test_param[case1]" 72 request.node.callspec = callspec 73 74 out_dir = make_test_output_dir(request) 75 assert out_dir.exists() 76 assert "default" in str(out_dir)
def
test_test_output_root():
def
test_make_test_output_dir_basic(tmp_path):
15def test_make_test_output_dir_basic(tmp_path): 16 with patch("kiln_ai.pytest_test_output.test_output_root", lambda: tmp_path): 17 request = Mock() 18 request.node.name = "test_example" 19 request.node.callspec = None 20 21 out_dir = make_test_output_dir(request) 22 assert out_dir.exists() 23 assert out_dir.is_dir() 24 assert "test_example" in str(out_dir) 25 assert "default" in str(out_dir)
def
test_make_test_output_dir_with_param_id(tmp_path):
28def test_make_test_output_dir_with_param_id(tmp_path): 29 with patch("kiln_ai.pytest_test_output.test_output_root", lambda: tmp_path): 30 request = Mock() 31 request.node.name = "test_param[case1]" 32 request.node.callspec.id = "my-param" 33 34 out_dir = make_test_output_dir(request) 35 assert out_dir.exists() 36 assert "my-param" in str(out_dir)
def
test_make_test_output_dir_sanitizes_names(tmp_path):
39def test_make_test_output_dir_sanitizes_names(tmp_path): 40 with patch("kiln_ai.pytest_test_output.test_output_root", lambda: tmp_path): 41 request = Mock() 42 request.node.name = "test_with spaces/and:special!chars" 43 request.node.callspec.id = "param with spaces" 44 45 out_dir = make_test_output_dir(request) 46 assert out_dir.exists() 47 # Special chars replaced with underscores 48 assert " " not in out_dir.parts[-3] 49 assert "/" not in out_dir.parts[-3]
def
test_make_test_output_dir_node_without_callspec(tmp_path):
52def test_make_test_output_dir_node_without_callspec(tmp_path): 53 with patch("kiln_ai.pytest_test_output.test_output_root", lambda: tmp_path): 54 55 class NodeWithoutCallspec: 56 name = "test_no_callspec" 57 58 request = Mock() 59 request.node = NodeWithoutCallspec() 60 61 out_dir = make_test_output_dir(request) 62 assert out_dir.exists() 63 assert "default" in str(out_dir)
def
test_make_test_output_dir_callspec_without_id(tmp_path):
66def test_make_test_output_dir_callspec_without_id(tmp_path): 67 with patch("kiln_ai.pytest_test_output.test_output_root", lambda: tmp_path): 68 callspec = Mock() 69 callspec.id = None 70 71 request = Mock() 72 request.node.name = "test_param[case1]" 73 request.node.callspec = callspec 74 75 out_dir = make_test_output_dir(request) 76 assert out_dir.exists() 77 assert "default" in str(out_dir)