31472b5413
CI / benchmark-publish (pull_request) Has been skipped
CI / build (pull_request) Successful in 21s
CI / helm (pull_request) Successful in 22s
CI / lint (pull_request) Successful in 3m20s
CI / quality (pull_request) Successful in 3m43s
CI / typecheck (pull_request) Successful in 3m58s
CI / security (pull_request) Successful in 4m8s
CI / integration_tests (pull_request) Successful in 9m33s
CI / unit_tests (pull_request) Successful in 10m12s
CI / docker (pull_request) Successful in 1m28s
CI / coverage (pull_request) Successful in 12m18s
CI / e2e_tests (pull_request) Successful in 19m51s
CI / status-check (pull_request) Successful in 1s
CI / build (push) Successful in 15s
CI / helm (push) Successful in 22s
CI / lint (push) Successful in 3m18s
CI / quality (push) Successful in 3m41s
CI / typecheck (push) Successful in 3m57s
CI / benchmark-regression (push) Has been skipped
CI / security (push) Successful in 4m10s
CI / unit_tests (push) Failing after 6m58s
CI / docker (push) Has been skipped
CI / integration_tests (push) Successful in 9m15s
CI / coverage (push) Successful in 12m26s
CI / e2e_tests (push) Successful in 23m11s
CI / status-check (push) Failing after 1s
CI / benchmark-publish (push) Successful in 28m31s
CI / benchmark-regression (pull_request) Successful in 54m53s
Add Behave feature/step pairs that exercise uncovered branches across handlers, LSP, CLI, and service layers to reach the coverage gate. ISSUES CLOSED: #1232
260 lines
13 KiB
Gherkin
260 lines
13 KiB
Gherkin
Feature: Resource CLI coverage r3 — remaining uncovered lines
|
|
As a developer
|
|
I want every uncovered branch and error handler in resource.py exercised
|
|
So that the line-rate reaches close to 100 %
|
|
|
|
# -----------------------------------------------------------------------
|
|
# _resource_dict: str() fallback for created_at / updated_at (lines 159, 162)
|
|
# -----------------------------------------------------------------------
|
|
|
|
Scenario: _resource_dict uses str() when dates lack isoformat
|
|
Given rccov3 a mock resource whose dates lack isoformat
|
|
When rccov3 I call _resource_dict on it
|
|
Then rccov3 the result created_at should be a plain string
|
|
And rccov3 the result updated_at should be a plain string
|
|
|
|
# -----------------------------------------------------------------------
|
|
# type_remove: ResourceTypeParentRemovalError (lines 280-281)
|
|
# -----------------------------------------------------------------------
|
|
|
|
Scenario: type_remove catches ResourceTypeParentRemovalError
|
|
Given rccov3 a service whose remove_type raises ResourceTypeParentRemovalError
|
|
When rccov3 I invoke type_remove with yes flag
|
|
Then rccov3 the command should have failed
|
|
And rccov3 the output should contain "has subtypes"
|
|
|
|
# -----------------------------------------------------------------------
|
|
# type_remove: generic Exception handler (lines 288-289)
|
|
# -----------------------------------------------------------------------
|
|
|
|
Scenario: type_remove catches unexpected generic exception
|
|
Given rccov3 a service whose remove_type raises a RuntimeError
|
|
When rccov3 I invoke type_remove with yes flag
|
|
Then rccov3 the command should have failed
|
|
And rccov3 the output should contain "Unexpected error"
|
|
|
|
# -----------------------------------------------------------------------
|
|
# type_list: empty list branch (lines 310-311)
|
|
# -----------------------------------------------------------------------
|
|
|
|
Scenario: type_list shows message when no types registered
|
|
Given rccov3 a service whose list_types returns empty
|
|
When rccov3 I invoke type_list
|
|
Then rccov3 the output should contain "No resource types registered"
|
|
|
|
# -----------------------------------------------------------------------
|
|
# type_list: generic Exception handler (lines 347-351)
|
|
# -----------------------------------------------------------------------
|
|
|
|
Scenario: type_list catches unexpected generic exception
|
|
Given rccov3 a service whose list_types raises a RuntimeError
|
|
When rccov3 I invoke type_list
|
|
Then rccov3 the command should have failed
|
|
And rccov3 the output should contain "Unexpected error"
|
|
|
|
# -----------------------------------------------------------------------
|
|
# type_show: generic Exception handler (lines 388-392)
|
|
# -----------------------------------------------------------------------
|
|
|
|
Scenario: type_show catches unexpected generic exception
|
|
Given rccov3 a service whose show_type raises a RuntimeError
|
|
When rccov3 I invoke type_show for "anything"
|
|
Then rccov3 the command should have failed
|
|
And rccov3 the output should contain "Unexpected error"
|
|
|
|
# -----------------------------------------------------------------------
|
|
# _print_type_panel: chain resolution failure (lines 420-422)
|
|
# -----------------------------------------------------------------------
|
|
|
|
Scenario: _print_type_panel falls back when chain resolution fails
|
|
Given rccov3 a type spec that inherits from another type
|
|
And rccov3 a service whose resolve_type_inheritance_chain raises an exception
|
|
When rccov3 I call _print_type_panel on the spec
|
|
Then rccov3 the panel output should contain "..."
|
|
|
|
# -----------------------------------------------------------------------
|
|
# _format_properties: mounts JSON rendering (lines 465-471)
|
|
# -----------------------------------------------------------------------
|
|
|
|
Scenario: _format_properties renders mounts from JSON
|
|
When rccov3 I call _format_properties with valid mounts JSON
|
|
Then rccov3 the formatted output should contain "mount:"
|
|
And rccov3 the formatted output should contain "/workspace"
|
|
|
|
Scenario: _format_properties falls back on invalid mounts JSON
|
|
When rccov3 I call _format_properties with invalid mounts JSON
|
|
Then rccov3 the formatted output should contain "mounts:"
|
|
|
|
# -----------------------------------------------------------------------
|
|
# resource_add: image property (line 622)
|
|
# -----------------------------------------------------------------------
|
|
|
|
Scenario: resource_add stores image property for container-instance
|
|
Given rccov3 a service that successfully registers a resource
|
|
When rccov3 I invoke resource_add with image "ubuntu:latest"
|
|
Then rccov3 the service register_resource was called with image in properties
|
|
|
|
# -----------------------------------------------------------------------
|
|
# resource_add: mount on non-container type (lines 624-626, 629-630)
|
|
# -----------------------------------------------------------------------
|
|
|
|
Scenario: resource_add rejects mount on non-container type
|
|
Given rccov3 a service that successfully registers a resource
|
|
When rccov3 I invoke resource_add with mount on git-checkout type
|
|
Then rccov3 the command should have failed
|
|
And rccov3 the output should contain "only valid for"
|
|
|
|
# -----------------------------------------------------------------------
|
|
# resource_list: generic Exception handler (lines 729-733)
|
|
# -----------------------------------------------------------------------
|
|
|
|
Scenario: resource_list catches unexpected generic exception
|
|
Given rccov3 a service whose list_resources raises a RuntimeError
|
|
When rccov3 I invoke resource_list
|
|
Then rccov3 the command should have failed
|
|
And rccov3 the output should contain "Unexpected error"
|
|
|
|
# -----------------------------------------------------------------------
|
|
# resource_show: generic Exception handler (lines 786-790)
|
|
# -----------------------------------------------------------------------
|
|
|
|
Scenario: resource_show catches unexpected generic exception
|
|
Given rccov3 a service whose show_resource raises a RuntimeError
|
|
When rccov3 I invoke resource_show for "anything"
|
|
Then rccov3 the command should have failed
|
|
And rccov3 the output should contain "Unexpected error"
|
|
|
|
# -----------------------------------------------------------------------
|
|
# resource_tree: generic Exception handler (lines 847-851)
|
|
# -----------------------------------------------------------------------
|
|
|
|
Scenario: resource_tree catches unexpected generic exception
|
|
Given rccov3 a service whose get_resource_tree raises a RuntimeError
|
|
When rccov3 I invoke resource_tree for "anything"
|
|
Then rccov3 the command should have failed
|
|
And rccov3 the output should contain "Unexpected error"
|
|
|
|
# -----------------------------------------------------------------------
|
|
# resource_inspect: empty tree_data path (line 950)
|
|
# -----------------------------------------------------------------------
|
|
|
|
Scenario: resource_inspect with tree flag but empty tree data
|
|
Given rccov3 a service whose show_resource returns a mock and get_resource_tree returns empty
|
|
When rccov3 I invoke resource_inspect with tree flag and json format
|
|
Then rccov3 the output should contain "children"
|
|
|
|
# -----------------------------------------------------------------------
|
|
# resource_inspect: generic Exception handler (lines 1004-1008)
|
|
# -----------------------------------------------------------------------
|
|
|
|
Scenario: resource_inspect catches unexpected generic exception
|
|
Given rccov3 a service whose show_resource raises a RuntimeError
|
|
When rccov3 I invoke resource_inspect for "anything"
|
|
Then rccov3 the command should have failed
|
|
And rccov3 the output should contain "Unexpected error"
|
|
|
|
# -----------------------------------------------------------------------
|
|
# _read_resource_file: path from properties (line 1019)
|
|
# -----------------------------------------------------------------------
|
|
|
|
Scenario: _read_resource_file resolves path from properties when location is None
|
|
Given rccov3 a mock resource with no location but properties path
|
|
When rccov3 I call _read_resource_file with a valid relative path
|
|
Then rccov3 the file read result should contain expected content
|
|
|
|
# -----------------------------------------------------------------------
|
|
# _read_resource_file: path traversal rejection (line 1028)
|
|
# -----------------------------------------------------------------------
|
|
|
|
Scenario: _read_resource_file rejects path traversal
|
|
Given rccov3 a mock resource with a known location
|
|
When rccov3 I call _read_resource_file with a traversal path
|
|
Then rccov3 the file read result should contain "path traversal rejected"
|
|
|
|
# -----------------------------------------------------------------------
|
|
# resource_link_child: generic Exception handler (lines 1091-1095)
|
|
# -----------------------------------------------------------------------
|
|
|
|
Scenario: resource_link_child catches unexpected generic exception
|
|
Given rccov3 a service whose link_child raises a RuntimeError
|
|
When rccov3 I invoke resource_link_child
|
|
Then rccov3 the command should have failed
|
|
And rccov3 the output should contain "Unexpected error"
|
|
|
|
# -----------------------------------------------------------------------
|
|
# resource_unlink_child: generic Exception handler (lines 1162-1163)
|
|
# -----------------------------------------------------------------------
|
|
|
|
Scenario: resource_unlink_child catches unexpected generic exception
|
|
Given rccov3 a service whose unlink_child raises a RuntimeError
|
|
When rccov3 I invoke resource_unlink_child with yes flag
|
|
Then rccov3 the command should have failed
|
|
And rccov3 the output should contain "Unexpected error"
|
|
|
|
# -----------------------------------------------------------------------
|
|
# resource_stop: confirmation prompt path (lines 1314-1316)
|
|
# -----------------------------------------------------------------------
|
|
|
|
Scenario: resource_stop prompts for confirmation when yes is False
|
|
Given rccov3 a running devcontainer resource for stop
|
|
When rccov3 I invoke resource_stop without yes flag and confirm
|
|
Then rccov3 the output should contain "Stopped"
|
|
|
|
# -----------------------------------------------------------------------
|
|
# resource_stop: CleverAgentsError handler (lines 1333-1335)
|
|
# -----------------------------------------------------------------------
|
|
|
|
Scenario: resource_stop catches CleverAgentsError
|
|
Given rccov3 a service whose show_resource raises CleverAgentsError
|
|
When rccov3 I invoke resource_stop for "bad-resource"
|
|
Then rccov3 the command should have failed
|
|
And rccov3 the output should contain "Error:"
|
|
|
|
# -----------------------------------------------------------------------
|
|
# resource_stop: generic Exception handler (lines 1336-1340)
|
|
# -----------------------------------------------------------------------
|
|
|
|
Scenario: resource_stop catches unexpected generic exception
|
|
Given rccov3 a service whose show_resource raises a TypeError for stop
|
|
When rccov3 I invoke resource_stop for "bad-resource"
|
|
Then rccov3 the command should have failed
|
|
And rccov3 the output should contain "Unexpected error"
|
|
|
|
# -----------------------------------------------------------------------
|
|
# resource_rebuild: path from properties fallback (lines 1389-1390)
|
|
# -----------------------------------------------------------------------
|
|
|
|
Scenario: resource_rebuild resolves location from properties path
|
|
Given rccov3 a stopped devcontainer resource with no location but properties path
|
|
When rccov3 I invoke resource_rebuild with yes flag
|
|
Then rccov3 the output should contain "Rebuilt"
|
|
|
|
# -----------------------------------------------------------------------
|
|
# resource_rebuild: confirmation prompt (lines 1397-1399)
|
|
# -----------------------------------------------------------------------
|
|
|
|
Scenario: resource_rebuild prompts for confirmation when yes is False
|
|
Given rccov3 a stopped devcontainer resource for rebuild
|
|
When rccov3 I invoke resource_rebuild without yes flag and confirm
|
|
Then rccov3 the output should contain "Rebuilt"
|
|
|
|
# -----------------------------------------------------------------------
|
|
# resource_rebuild: CleverAgentsError handler (lines 1412-1414)
|
|
# -----------------------------------------------------------------------
|
|
|
|
Scenario: resource_rebuild catches CleverAgentsError
|
|
Given rccov3 a service whose show_resource raises CleverAgentsError
|
|
When rccov3 I invoke resource_rebuild for "bad-resource"
|
|
Then rccov3 the command should have failed
|
|
And rccov3 the output should contain "Error:"
|
|
|
|
# -----------------------------------------------------------------------
|
|
# resource_rebuild: generic Exception handler (lines 1415-1419)
|
|
# -----------------------------------------------------------------------
|
|
|
|
Scenario: resource_rebuild catches unexpected generic exception
|
|
Given rccov3 a service whose show_resource raises a TypeError for rebuild
|
|
When rccov3 I invoke resource_rebuild for "bad-resource"
|
|
Then rccov3 the command should have failed
|
|
And rccov3 the output should contain "Unexpected error"
|