# ========= Copyright 2026 @ Strukto.AI All Rights Reserved. ========= # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # ========= Copyright 2026 @ Strukto.AI All Rights Reserved. ========= from mirage.agents.langchain._convert import (io_to_execute_response, io_to_file_infos, io_to_grep_matches) from mirage.io.types import IOResult def test_io_to_execute_response_basic(): io = IOResult(stdout=b"hello world\n", exit_code=0) resp = io_to_execute_response(io) assert resp.output == "hello world\n" assert resp.exit_code == 0 assert resp.truncated is False def test_io_to_execute_response_none_stdout(): io = IOResult(stdout=None, exit_code=1) resp = io_to_execute_response(io) assert resp.output == "" assert resp.exit_code == 1 def test_io_to_execute_response_stderr_appended(): io = IOResult(stdout=b"out", stderr=b"err", exit_code=1) resp = io_to_execute_response(io) assert "out" in resp.output assert "err" in resp.output def test_io_to_grep_matches(): io = IOResult(stdout=b"/a.txt:1:hello world\n/b.txt:5:hello there\n", exit_code=0) matches = io_to_grep_matches(io) assert len(matches) == 2 assert matches[0]["path"] == "/a.txt" assert matches[0]["line"] == 1 assert matches[0]["text"] == "hello world" def test_io_to_grep_matches_empty(): io = IOResult(stdout=b"", exit_code=1) matches = io_to_grep_matches(io) assert matches == [] def test_io_to_file_infos(): io = IOResult(stdout=b"/foo/bar.txt\n/foo/baz.py\n/foo/sub/\n", exit_code=0) infos = io_to_file_infos(io) assert len(infos) == 3 dirs = [i for i in infos if i.get("is_dir")] assert len(dirs) == 1 assert dirs[0]["path"] == "/foo/sub" def test_io_to_file_infos_empty(): io = IOResult(stdout=b"", exit_code=0) infos = io_to_file_infos(io) assert infos == []