Skip to content

Commit 905e395

Browse files
committed
tests(start_directory) Improve across multiple test files
what: - Removed expected_in_cmd and expected_not_in_cmd from StartDirectoryTestFixture. - Updated test cases to handle user_path and relative_path scenarios. - Enhanced logic for formatting start_directory with actual paths in tests. - Ensured compatibility with pathlib.Path for start_directory input across tests in test_pane.py, test_server.py, test_session.py, and test_window.py.
1 parent 62840ed commit 905e395

File tree

4 files changed

+208
-136
lines changed

4 files changed

+208
-136
lines changed

tests/test_pane.py

Lines changed: 49 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -345,39 +345,29 @@ class StartDirectoryTestFixture(t.NamedTuple):
345345

346346
test_id: str
347347
start_directory: StrPath | None
348-
expected_in_cmd: list[str]
349-
expected_not_in_cmd: list[str]
350348
description: str
351349

352350

353351
START_DIRECTORY_TEST_FIXTURES: list[StartDirectoryTestFixture] = [
354352
StartDirectoryTestFixture(
355353
test_id="none_value",
356354
start_directory=None,
357-
expected_in_cmd=[],
358-
expected_not_in_cmd=["-c"],
359355
description="None should not add -c flag",
360356
),
361357
StartDirectoryTestFixture(
362358
test_id="empty_string",
363359
start_directory="",
364-
expected_in_cmd=[],
365-
expected_not_in_cmd=["-c"],
366360
description="Empty string should not add -c flag",
367361
),
368362
StartDirectoryTestFixture(
369-
test_id="absolute_path_string",
370-
start_directory="/tmp/test",
371-
expected_in_cmd=["-c"],
372-
expected_not_in_cmd=[],
373-
description="Absolute path string should add -c flag",
363+
test_id="user_path",
364+
start_directory="{user_path}",
365+
description="User path should add -c flag",
374366
),
375367
StartDirectoryTestFixture(
376-
test_id="pathlib_absolute",
377-
start_directory=pathlib.Path("/tmp/test"),
378-
expected_in_cmd=["-c"],
379-
expected_not_in_cmd=[],
380-
description="pathlib.Path absolute should add -c flag",
368+
test_id="relative_path",
369+
start_directory="./relative/path",
370+
description="Relative path should add -c flag",
381371
),
382372
]
383373

@@ -390,37 +380,63 @@ class StartDirectoryTestFixture(t.NamedTuple):
390380
def test_split_start_directory(
391381
test_id: str,
392382
start_directory: StrPath | None,
393-
expected_in_cmd: list[str],
394-
expected_not_in_cmd: list[str],
395383
description: str,
396384
session: Session,
385+
tmp_path: pathlib.Path,
386+
user_path: pathlib.Path,
397387
) -> None:
398388
"""Test Pane.split start_directory parameter handling."""
399389
window = session.new_window(window_name=f"test_split_{test_id}")
400390
pane = window.active_pane
401391
assert pane is not None
402392

403-
# Split pane with start_directory parameter
404-
new_pane = pane.split(start_directory=start_directory)
393+
# Format path placeholders with actual fixture values
394+
actual_start_directory = start_directory
395+
expected_path = None
396+
397+
if start_directory and str(start_directory) not in ["", "None"]:
398+
if "{user_path}" in str(start_directory):
399+
# Replace placeholder with actual user_path
400+
actual_start_directory = str(start_directory).format(user_path=user_path)
401+
expected_path = str(user_path)
402+
elif str(start_directory).startswith("./"):
403+
# For relative paths, use tmp_path as base
404+
temp_dir = tmp_path / "relative" / "path"
405+
temp_dir.mkdir(parents=True, exist_ok=True)
406+
actual_start_directory = str(temp_dir)
407+
expected_path = str(temp_dir.resolve())
408+
409+
# Should not raise an error
410+
new_pane = pane.split(start_directory=actual_start_directory)
405411

406-
# Verify pane was created successfully
407412
assert new_pane in window.panes
408413
assert len(window.panes) == 2
409414

415+
# Verify working directory if we have an expected path
416+
if expected_path:
417+
new_pane.refresh()
418+
if new_pane.pane_current_path:
419+
actual_path = str(pathlib.Path(new_pane.pane_current_path).resolve())
420+
assert actual_path == expected_path
410421

411-
def test_split_start_directory_pathlib(session: Session) -> None:
412-
"""Test Pane.split accepts pathlib.Path for start_directory."""
413-
import tempfile
414422

415-
with tempfile.TemporaryDirectory() as temp_dir:
416-
path_obj = pathlib.Path(temp_dir)
423+
def test_split_start_directory_pathlib(
424+
session: Session, user_path: pathlib.Path
425+
) -> None:
426+
"""Test Pane.split accepts pathlib.Path for start_directory."""
427+
window = session.new_window(window_name="test_split_pathlib")
428+
pane = window.active_pane
429+
assert pane is not None
417430

418-
window = session.new_window(window_name="test_split_pathlib")
419-
pane = window.active_pane
420-
assert pane is not None
431+
# Pass pathlib.Path directly to test pathlib.Path acceptance
432+
new_pane = pane.split(start_directory=user_path)
421433

422-
# Should accept pathlib.Path without error
423-
new_pane = pane.split(start_directory=path_obj)
434+
assert new_pane in window.panes
435+
assert len(window.panes) == 2
424436

425-
assert new_pane in window.panes
426-
assert len(window.panes) == 2
437+
# Verify working directory
438+
new_pane.refresh()
439+
if new_pane.pane_current_path:
440+
actual_path = str(pathlib.Path(new_pane.pane_current_path).resolve())
441+
expected_path = str(user_path.resolve())
442+
assert actual_path == expected_path

tests/test_server.py

Lines changed: 57 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -317,39 +317,29 @@ class StartDirectoryTestFixture(t.NamedTuple):
317317

318318
test_id: str
319319
start_directory: StrPath | None
320-
expected_in_cmd: list[str]
321-
expected_not_in_cmd: list[str]
322320
description: str
323321

324322

325323
START_DIRECTORY_TEST_FIXTURES: list[StartDirectoryTestFixture] = [
326324
StartDirectoryTestFixture(
327325
test_id="none_value",
328326
start_directory=None,
329-
expected_in_cmd=[],
330-
expected_not_in_cmd=["-c"],
331327
description="None should not add -c flag",
332328
),
333329
StartDirectoryTestFixture(
334330
test_id="empty_string",
335331
start_directory="",
336-
expected_in_cmd=[],
337-
expected_not_in_cmd=["-c"],
338332
description="Empty string should not add -c flag",
339333
),
340334
StartDirectoryTestFixture(
341-
test_id="absolute_path_string",
342-
start_directory="/tmp/test",
343-
expected_in_cmd=["-c", "/tmp/test"],
344-
expected_not_in_cmd=[],
345-
description="Absolute path string should add -c flag",
335+
test_id="user_path",
336+
start_directory="{user_path}",
337+
description="User path should add -c flag",
346338
),
347339
StartDirectoryTestFixture(
348-
test_id="pathlib_absolute",
349-
start_directory=pathlib.Path("/tmp/test"),
350-
expected_in_cmd=["-c", "/tmp/test"],
351-
expected_not_in_cmd=[],
352-
description="pathlib.Path absolute should add -c flag",
340+
test_id="relative_path",
341+
start_directory="./relative/path",
342+
description="Relative path should add -c flag",
353343
),
354344
]
355345

@@ -362,35 +352,65 @@ class StartDirectoryTestFixture(t.NamedTuple):
362352
def test_new_session_start_directory(
363353
test_id: str,
364354
start_directory: StrPath | None,
365-
expected_in_cmd: list[str],
366-
expected_not_in_cmd: list[str],
367355
description: str,
368356
server: Server,
357+
tmp_path: pathlib.Path,
358+
user_path: pathlib.Path,
369359
) -> None:
370360
"""Test Server.new_session start_directory parameter handling."""
371-
# Create session with start_directory parameter
361+
# Format path placeholders with actual fixture values
362+
actual_start_directory = start_directory
363+
expected_path = None
364+
365+
if start_directory and str(start_directory) not in ["", "None"]:
366+
if "{user_path}" in str(start_directory):
367+
# Replace placeholder with actual user_path
368+
actual_start_directory = str(start_directory).format(user_path=user_path)
369+
expected_path = str(user_path)
370+
elif str(start_directory).startswith("./"):
371+
# For relative paths, use tmp_path as base
372+
temp_dir = tmp_path / "relative" / "path"
373+
temp_dir.mkdir(parents=True, exist_ok=True)
374+
actual_start_directory = str(temp_dir)
375+
expected_path = str(temp_dir.resolve())
376+
377+
# Should not raise an error
372378
session = server.new_session(
373-
session_name=f"test_start_dir_{test_id}",
374-
start_directory=start_directory,
379+
session_name=f"test_session_{test_id}",
380+
start_directory=actual_start_directory,
375381
)
376382

377-
# Verify session was created successfully
378-
assert session.session_name == f"test_start_dir_{test_id}"
379-
assert server.has_session(f"test_start_dir_{test_id}")
383+
assert session.session_name == f"test_session_{test_id}"
384+
assert server.has_session(f"test_session_{test_id}")
380385

386+
# Verify working directory if we have an expected path
387+
if expected_path:
388+
active_pane = session.active_window.active_pane
389+
assert active_pane is not None
390+
active_pane.refresh()
391+
if active_pane.pane_current_path:
392+
actual_path = str(pathlib.Path(active_pane.pane_current_path).resolve())
393+
assert actual_path == expected_path
381394

382-
def test_new_session_start_directory_pathlib(server: Server) -> None:
383-
"""Test Server.new_session accepts pathlib.Path for start_directory."""
384-
import tempfile
385-
386-
with tempfile.TemporaryDirectory() as temp_dir:
387-
path_obj = pathlib.Path(temp_dir)
388395

389-
# Should accept pathlib.Path without error
390-
session = server.new_session(
391-
session_name="test_pathlib_start_dir",
392-
start_directory=path_obj,
393-
)
396+
def test_new_session_start_directory_pathlib(
397+
server: Server, user_path: pathlib.Path
398+
) -> None:
399+
"""Test Server.new_session accepts pathlib.Path for start_directory."""
400+
# Pass pathlib.Path directly to test pathlib.Path acceptance
401+
session = server.new_session(
402+
session_name="test_pathlib_start_dir",
403+
start_directory=user_path,
404+
)
394405

395-
assert session.session_name == "test_pathlib_start_dir"
396-
assert server.has_session("test_pathlib_start_dir")
406+
assert session.session_name == "test_pathlib_start_dir"
407+
assert server.has_session("test_pathlib_start_dir")
408+
409+
# Verify working directory
410+
active_pane = session.active_window.active_pane
411+
assert active_pane is not None
412+
active_pane.refresh()
413+
if active_pane.pane_current_path:
414+
actual_path = str(pathlib.Path(active_pane.pane_current_path).resolve())
415+
expected_path = str(user_path.resolve())
416+
assert actual_path == expected_path

tests/test_session.py

Lines changed: 55 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -440,39 +440,29 @@ class StartDirectoryTestFixture(t.NamedTuple):
440440

441441
test_id: str
442442
start_directory: StrPath | None
443-
expected_in_cmd: list[str]
444-
expected_not_in_cmd: list[str]
445443
description: str
446444

447445

448446
START_DIRECTORY_TEST_FIXTURES: list[StartDirectoryTestFixture] = [
449447
StartDirectoryTestFixture(
450448
test_id="none_value",
451449
start_directory=None,
452-
expected_in_cmd=[],
453-
expected_not_in_cmd=["-c"],
454450
description="None should not add -c flag",
455451
),
456452
StartDirectoryTestFixture(
457453
test_id="empty_string",
458454
start_directory="",
459-
expected_in_cmd=[],
460-
expected_not_in_cmd=["-c"],
461455
description="Empty string should not add -c flag",
462456
),
463457
StartDirectoryTestFixture(
464-
test_id="absolute_path_string",
465-
start_directory="/tmp/test",
466-
expected_in_cmd=["-c"],
467-
expected_not_in_cmd=[],
468-
description="Absolute path string should add -c flag",
458+
test_id="user_path",
459+
start_directory="{user_path}",
460+
description="User path should add -c flag",
469461
),
470462
StartDirectoryTestFixture(
471-
test_id="pathlib_absolute",
472-
start_directory=pathlib.Path("/tmp/test"),
473-
expected_in_cmd=["-c"],
474-
expected_not_in_cmd=[],
475-
description="pathlib.Path absolute should add -c flag",
463+
test_id="relative_path",
464+
start_directory="./relative/path",
465+
description="Relative path should add -c flag",
476466
),
477467
]
478468

@@ -485,35 +475,65 @@ class StartDirectoryTestFixture(t.NamedTuple):
485475
def test_new_window_start_directory(
486476
test_id: str,
487477
start_directory: StrPath | None,
488-
expected_in_cmd: list[str],
489-
expected_not_in_cmd: list[str],
490478
description: str,
491479
session: Session,
480+
tmp_path: pathlib.Path,
481+
user_path: pathlib.Path,
492482
) -> None:
493483
"""Test Session.new_window start_directory parameter handling."""
494-
# Create window with start_directory parameter
484+
# Format path placeholders with actual fixture values
485+
actual_start_directory = start_directory
486+
expected_path = None
487+
488+
if start_directory and str(start_directory) not in ["", "None"]:
489+
if "{user_path}" in str(start_directory):
490+
# Replace placeholder with actual user_path
491+
actual_start_directory = str(start_directory).format(user_path=user_path)
492+
expected_path = str(user_path)
493+
elif str(start_directory).startswith("./"):
494+
# For relative paths, use tmp_path as base
495+
temp_dir = tmp_path / "relative" / "path"
496+
temp_dir.mkdir(parents=True, exist_ok=True)
497+
actual_start_directory = str(temp_dir)
498+
expected_path = str(temp_dir.resolve())
499+
500+
# Should not raise an error
495501
window = session.new_window(
496-
window_name=f"test_start_dir_{test_id}",
497-
start_directory=start_directory,
502+
window_name=f"test_window_{test_id}",
503+
start_directory=actual_start_directory,
498504
)
499505

500-
# Verify window was created successfully
501-
assert window.window_name == f"test_start_dir_{test_id}"
506+
assert window.window_name == f"test_window_{test_id}"
502507
assert window in session.windows
503508

509+
# Verify working directory if we have an expected path
510+
if expected_path:
511+
active_pane = window.active_pane
512+
assert active_pane is not None
513+
active_pane.refresh()
514+
if active_pane.pane_current_path:
515+
actual_path = str(pathlib.Path(active_pane.pane_current_path).resolve())
516+
assert actual_path == expected_path
504517

505-
def test_new_window_start_directory_pathlib(session: Session) -> None:
506-
"""Test Session.new_window accepts pathlib.Path for start_directory."""
507-
import tempfile
508518

509-
with tempfile.TemporaryDirectory() as temp_dir:
510-
path_obj = pathlib.Path(temp_dir)
519+
def test_new_window_start_directory_pathlib(
520+
session: Session, user_path: pathlib.Path
521+
) -> None:
522+
"""Test Session.new_window accepts pathlib.Path for start_directory."""
523+
# Pass pathlib.Path directly to test pathlib.Path acceptance
524+
window = session.new_window(
525+
window_name="test_pathlib_start_dir",
526+
start_directory=user_path,
527+
)
511528

512-
# Should accept pathlib.Path without error
513-
window = session.new_window(
514-
window_name="test_pathlib_start_dir",
515-
start_directory=path_obj,
516-
)
529+
assert window.window_name == "test_pathlib_start_dir"
530+
assert window in session.windows
517531

518-
assert window.window_name == "test_pathlib_start_dir"
519-
assert window in session.windows
532+
# Verify working directory
533+
active_pane = window.active_pane
534+
assert active_pane is not None
535+
active_pane.refresh()
536+
if active_pane.pane_current_path:
537+
actual_path = str(pathlib.Path(active_pane.pane_current_path).resolve())
538+
expected_path = str(user_path.resolve())
539+
assert actual_path == expected_path

0 commit comments

Comments
 (0)