← Files Codex ReplayARCHIVED FILE
tests/test_controller_file_configuration.py
2.84 KB · Oct 2, 2026 · 00:19 UTC
"""File controls remain reachable after editing historical state."""
from __future__ import annotations
import subprocess
import unittest
from test_controller_range_ui import CONTROLLER, HARNESS
FILE_SCENARIOS = (
HARNESS.split("async function main() {", 1)[0]
+ r"""
async function main() {
const c = await configured();
const original = c.state.inspection;
if (process.argv[2] === "visible") {
c.state.configurationDetailsOpen = false;
const html = c.renderConfigureStep();
assert.ok(html.indexOf('data-file-kind="non_git"') < html.indexOf('id="configuration-details"'));
assert.deepEqual(c.reviewPayload().created_by_claude, ["seed.txt", "result.txt"]);
c.state.classifications["result.txt"] = "exclude";
assert.deepEqual(c.reviewPayload().created_by_claude, ["seed.txt"]);
assert.deepEqual(c.reviewPayload().excluded_files, ["result.txt"]);
} else {
Object.assign(c.state.inspection, {
baseline: {...original.baseline, ending_kind: "git", ending_commit: "abc1234"},
file_selection: {source_kind: "git", candidates: [], classifications: {}},
});
c.state.reviewDraft.ending_kind = "git";
c.state.reviewDraft.ending_commit = "abc1234";
assert.equal(c.selectionNeedsRefresh(), false);
c.state.reviewDraft.ending_commit = "def5678";
assert.equal(c.selectionNeedsRefresh(), true);
c.state.reviewDraft.ending_kind = "non_git";
c.state.reviewDraft.ending_commit = "";
assert.ok(c.renderConfigureStep().includes('data-action="refresh-files"'));
let refreshed;
c.setTool(async (name, args) => {
assert.equal(name, "prepare_run");
refreshed = args;
return {...inspection(args), ready: false};
});
await c.refreshAttributionAndContinue();
assert.equal(refreshed.ending_kind, "non_git");
assert.equal(refreshed.confirm_file_selection, false);
assert.equal(c.selectionNeedsRefresh(), false);
assert.ok(c.renderConfigureStep().includes('data-file-kind="non_git"'));
assert.deepEqual(c.reviewPayload().created_by_claude, ["seed.txt", "result.txt"]);
assert.equal(c.state.preparation, null);
assert.equal(c.state.runId, "");
}
}
main().catch((error) => { process.stderr.write(error.stack); process.exitCode = 1; });
"""
)
class ControllerFileConfigurationTests(unittest.TestCase):
def run_scenario(self, scenario: str) -> None:
result = subprocess.run(
["node", "-e", FILE_SCENARIOS, str(CONTROLLER), scenario],
capture_output=True,
text=True,
timeout=20,
)
self.assertEqual(result.returncode, 0, result.stderr)
def test_inferred_non_git_outputs_can_be_edited_without_opening_details(self) -> None:
self.run_scenario("visible")
def test_git_to_non_git_edit_refreshes_empty_file_discovery_without_starting(self) -> None:
self.run_scenario("refresh")
SHA-256: 04f1599e1b7b6cb31f0eb0777c1448f74847e4e06c23728524e80d1a504ab3a2