def test_bazeladapter_query(query_returns): run = DummyForkingRunner() adapter = runner.BazelAdapter(run) fork_mock = patch("tools.base.runner.ForkingAdapter.subproc_run") with fork_mock as m_fork: m_fork.return_value.returncode = query_returns if query_returns: with pytest.raises(runner.BazelRunError) as result: adapter.query("BAZEL QUERY") else: result = adapter.query("BAZEL QUERY") assert (list(m_fork.call_args) == [(['bazel', 'query', "'BAZEL QUERY'"], ), {}]) if query_returns: assert result.errisinstance(runner.BazelRunError) assert (result.value.args == ( f"Bazel query failed: {m_fork.return_value}", )) assert not m_fork.return_value.stdout.decode.called else: assert (result == m_fork.return_value.stdout.decode.return_value.split. return_value) assert (list(m_fork.return_value.stdout.decode.call_args) == [ ('utf-8', ), {} ]) assert (list( m_fork.return_value.stdout.decode.return_value.split.call_args) == [('\n', ), {}])
def test_bazeladapter_run(patches, run_returns, cwd, raises, args, capture_output): run = DummyForkingRunner() adapter = runner.BazelAdapter(run) patched = patches( "ForkingAdapter.subproc_run", ("ForkingRunner.path", dict(new_callable=PropertyMock)), prefix="tools.base.runner") adapter_args = ("BAZEL RUN",) + args kwargs = {} if raises is not None: kwargs["raises"] = raises if cwd is not None: kwargs["cwd"] = cwd if capture_output is not None: kwargs["capture_output"] = capture_output with patched as (m_fork, m_path): m_fork.return_value.returncode = run_returns if run_returns and (raises is not False): with pytest.raises(runner.BazelRunError) as result: adapter.run(*adapter_args, **kwargs) else: result = adapter.run(*adapter_args, **kwargs) call_args = (("--",) + args) if args else args bazel_args = ("bazel", "run", "BAZEL RUN") + call_args bazel_kwargs = {} bazel_kwargs["capture_output"] = ( True if capture_output is True else False) bazel_kwargs["cwd"] = ( cwd if cwd else m_path.return_value) assert ( list(m_fork.call_args) == [(bazel_args,), bazel_kwargs]) if run_returns and (raises is not False): assert result.errisinstance(runner.BazelRunError) assert ( result.value.args == (f"Bazel run failed: {m_fork.return_value}",)) else: assert result == m_fork.return_value
def test_bazeladapter_constructor(): run = DummyRunner() adapter = runner.BazelAdapter(run) assert adapter.context == run