# ========= 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. ========= def test_semicolon(shell): assert shell.mirage("echo hello; echo world") == shell.native( "echo hello; echo world") def test_and_success(shell): assert shell.mirage("true && echo yes") == shell.native("true && echo yes") def test_and_failure(shell): assert shell.mirage("false && echo yes") == shell.native( "false && echo yes") def test_or_success(shell): assert shell.mirage("true || echo fallback") == shell.native( "true || echo fallback") def test_or_failure(shell): assert shell.mirage("false || echo fallback") == shell.native( "false || echo fallback") def test_and_or_chain(shell): assert shell.mirage("true && echo a || echo b") == shell.native( "true && echo a || echo b") def test_and_or_chain_fail(shell): assert shell.mirage("false && echo a || echo b") == shell.native( "false && echo a || echo b") def test_semicolon_continues_after_failure(shell): assert shell.mirage("false; echo still") == shell.native( "false; echo still") def test_exit_code_true(shell): assert shell.mirage_exit("true") == 0 def test_exit_code_false(shell): assert shell.mirage_exit("false") == 1 def test_and_chain_three(shell): cmd = "true && true && echo all_true" assert shell.mirage(cmd) == shell.native(cmd) def test_or_chain_three(shell): cmd = "false || false || echo last_resort" assert shell.mirage(cmd) == shell.native(cmd) def test_mixed_and_or_semi(shell): cmd = "echo a; false && echo b; echo c" assert shell.mirage(cmd) == shell.native(cmd) def test_semicolon_three(shell): cmd = "echo a; echo b; echo c" assert shell.mirage(cmd) == shell.native(cmd) def test_and_with_grep(shell): shell.create_file("f.txt", b"hello\n") m = shell.mirage("grep hello /data/f.txt && echo found") n = shell.native("grep hello f.txt && echo found") assert m == n def test_or_with_grep(shell): shell.create_file("f.txt", b"hello\n") m = shell.mirage("grep nope /data/f.txt || echo missing") n = shell.native("grep nope f.txt || echo missing") assert m == n