def test_can_follow_logs_with_option(runner, mock_cli_factory): deployed_resources = DeployedResources({ "resources": [ {"name": "foo", "lambda_arn": "arn:aws:lambda::app-dev-foo", "resource_type": "lambda_function"}] }) mock_cli_factory.create_config_obj.return_value = FakeConfig( deployed_resources) log_retriever = mock.Mock(spec=LogRetriever) log_retriever.retrieve_logs.return_value = [] mock_cli_factory.create_log_retriever.return_value = log_retriever with runner.isolated_filesystem(): cli.create_new_project_skeleton('testproject') os.chdir('testproject') result = _run_cli_command( runner, cli.logs, ['--name', 'foo', '--follow'], cli_factory=mock_cli_factory ) assert result.exit_code == 0 log_retriever.retrieve_logs.assert_called_with( LogRetrieveOptions( include_lambda_messages=False, max_entries=None) ) mock_cli_factory.create_log_retriever.assert_called_with( mock.sentinel.Session, 'arn:aws:lambda::app-dev-foo', True )
def logs(ctx, num_entries, include_lambda_messages, stage, name, since, follow, profile): # type: (click.Context, int, bool, str, str, str, bool, str) -> None factory = ctx.obj['factory'] # type: CLIFactory factory.profile = profile config = factory.create_config_obj(stage, False) deployed = config.deployed_resources(stage) if name in deployed.resource_names(): lambda_arn = deployed.resource_values(name)['lambda_arn'] session = factory.create_botocore_session() retriever = factory.create_log_retriever(session, lambda_arn, follow) options = LogRetrieveOptions.create( max_entries=num_entries, since=since, include_lambda_messages=include_lambda_messages, ) display_logs(retriever, sys.stdout, options)