| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- # mypy: disable-error-code="attr-defined"
- import io
- import pytest
- import typing
- from pathlib import Path
- import cipy
- import cipy.script
- from matchers import HasAttributes
- from mocks import mock_run
- def test_node_run_runs_main(mock_subprocess) -> None:
- action = cipy.script.NodeScript(name="example", main=Path("/dev/null"))
- action.run(cipy.Context())
- assert mock_subprocess.call_args_list[0].args == (["node", "/dev/null"],)
- def test_node_cleanup_noop_without_post(mock_subprocess) -> None:
- action = cipy.script.NodeScript(name="example", main=Path("/dev/null"))
- action.cleanup(cipy.Context())
- mock_subprocess.assert_not_called()
- def test_node_cleanup_runs_post(mock_subprocess) -> None:
- action = cipy.script.NodeScript(
- name="example", main=Path("/dev/null"), post=Path("/dev/zero")
- )
- action.cleanup(cipy.Context())
- assert mock_subprocess.call_args_list[0].args == (["node", "/dev/zero"],)
- def test_script_writes_to_a_file(mock_subprocess) -> None:
- action = cipy.script.Script(script="""
- echo Lorem Ipsum
- """)
- def check(args, **kwargs):
- assert Path(args[-1]).is_file()
- with open(args[-1], "r", encoding="utf8") as file:
- assert file.read() == action.script
- return mock_run(args, **kwargs)
- mock_subprocess.side_effect = check
- action.run(cipy.Context())
- def test_script_performs_mustache_substitution(mock_subprocess) -> None:
- action = cipy.script.Script(script="""
- echo {{ foo }}
- """)
- def check(args, **kwargs):
- assert Path(args[-1]).is_file()
- with open(args[-1], "r", encoding="utf8") as file:
- assert file.read() == "echo 1"
- return mock_run(args, **kwargs)
- mock_subprocess.side_effect = check
- action.run(cipy.Context(foo=1))
- def test_script_propogates_mustache_error(ci_logger, mock_subprocess) -> None:
- action = cipy.script.Script(script="""
- echo {{ foo }}
- """)
- mock_subprocess.side_effect = RuntimeError("Should not be reached")
- assert action.run(cipy.Context()) is cipy.Status.FAILURE
- ci_logger.format.assert_called_with(
- HasAttributes(name="Script", message="Could not find key 'foo'\n")
- )
|