870a51bff8
- Fix BDD test state leakage by unconditionally resetting BudgetEnforcer
in step_create_budget_enforcer_with_max_total_size instead of using
conditional if/else reconstruction that skipped the first Background
step's max_file_size from being preserved.
- Add explicit type annotations (context: object) to all Behave step
function signatures for Pyright compliance.
- Fix ruff format compliance by standardizing decorator string
formatting in acms_budget_enforcement_steps.py.
- Correct __init__.py exports: renamed _uks_exports -> _uko_exports
typo and fixed the __all__ reference to use the corrected variable.
- Add Robot Framework integration test helper using inline imports
(from cleveragents.acms.budget_enforcement import BudgetEnforcer)
instead of sys.path manipulation, and update robot tests to use
python3 and ${WORKSPACE} paths for CI compatibility.
ISSUES CLOSED: #9583
68 lines
3.8 KiB
Plaintext
68 lines
3.8 KiB
Plaintext
*** Settings ***
|
|
Documentation Integration tests for ACMS BudgetEnforcer max_file_size and max_total_size constraints
|
|
Resource ${CURDIR}/common.resource
|
|
|
|
*** Variables ***
|
|
${HELPER_SCRIPT} robot/helper_acms_budget_enforcement.py
|
|
|
|
*** Test Cases ***
|
|
Budget Enforcer Includes File Within Max File Size
|
|
[Documentation] BudgetEnforcer includes a file within max_file_size limit
|
|
${result}= Run Process python3 ${WORKSPACE}/${HELPER_SCRIPT} file-within-limit cwd=${WORKSPACE}
|
|
Should Be Equal As Integers ${result.rc} 0
|
|
Should Contain ${result.stdout} file-within-limit-ok
|
|
|
|
Budget Enforcer Excludes File Exceeding Max File Size
|
|
[Documentation] BudgetEnforcer excludes a file that exceeds max_file_size
|
|
${result}= Run Process python3 ${WORKSPACE}/${HELPER_SCRIPT} file-exceeds-limit cwd=${WORKSPACE}
|
|
Should Be Equal As Integers ${result.rc} 0
|
|
Should Contain ${result.stdout} file-exceeds-limit-ok
|
|
|
|
Budget Enforcer Enforces Max Total Size
|
|
[Documentation] BudgetEnforcer cuts off files when max_total_size is reached
|
|
${result}= Run Process python3 ${WORKSPACE}/${HELPER_SCRIPT} total-size-cutoff cwd=${WORKSPACE}
|
|
Should Be Equal As Integers ${result.rc} 0
|
|
Should Contain ${result.stdout} total-size-cutoff-ok
|
|
|
|
Budget Enforcer Violation Message Is Clear
|
|
[Documentation] BudgetViolation message clearly describes the constraint exceeded
|
|
${result}= Run Process python3 ${WORKSPACE}/${HELPER_SCRIPT} violation-message cwd=${WORKSPACE}
|
|
Should Be Equal As Integers ${result.rc} 0
|
|
Should Contain ${result.stdout} violation-message-ok
|
|
|
|
Budget Enforcer Returns Defensive Copies
|
|
[Documentation] get_violations and get_included_files return defensive copies
|
|
${result}= Run Process python3 ${WORKSPACE}/${HELPER_SCRIPT} defensive-copies cwd=${WORKSPACE}
|
|
Should Be Equal As Integers ${result.rc} 0
|
|
Should Contain ${result.stdout} defensive-copies-ok
|
|
|
|
Budget Enforcer Validates Constructor Arguments
|
|
[Documentation] BudgetEnforcer raises ValueError for invalid budget values
|
|
${result}= Run Process python3 ${WORKSPACE}/${HELPER_SCRIPT} constructor-validation cwd=${WORKSPACE}
|
|
Should Be Equal As Integers ${result.rc} 0
|
|
Should Contain ${result.stdout} constructor-validation-ok
|
|
|
|
Budget Enforcer Validates Add File Arguments
|
|
[Documentation] add_file raises ValueError for empty name
|
|
${result}= Run Process python3 ${WORKSPACE}/${HELPER_SCRIPT} add-file-validation cwd=${WORKSPACE}
|
|
Should Be Equal As Integers ${result.rc} 0
|
|
Should Contain ${result.stdout} add-file-validation-ok
|
|
|
|
Budget Enforcer Handles Multi-Byte UTF-8 Content
|
|
[Documentation] BudgetEnforcer measures file size in bytes not characters
|
|
${result}= Run Process python3 ${WORKSPACE}/${HELPER_SCRIPT} multibyte-utf8 cwd=${WORKSPACE}
|
|
Should Be Equal As Integers ${result.rc} 0
|
|
Should Contain ${result.stdout} multibyte-utf8-ok
|
|
|
|
Budget Enforcer Reset Clears State
|
|
[Documentation] reset() clears all included files, violations, and total size
|
|
${result}= Run Process python3 ${WORKSPACE}/${HELPER_SCRIPT} reset-state cwd=${WORKSPACE}
|
|
Should Be Equal As Integers ${result.rc} 0
|
|
Should Contain ${result.stdout} reset-state-ok
|
|
|
|
Budget Enforcer Assembled Context Joins Files
|
|
[Documentation] get_assembled_context joins included file contents with newlines
|
|
${result}= Run Process python3 ${WORKSPACE}/${HELPER_SCRIPT} assembled-context cwd=${WORKSPACE}
|
|
Should Be Equal As Integers ${result.rc} 0
|
|
Should Contain ${result.stdout} assembled-context-ok
|