# Copyright 2008-2015 Nokia Networks
# Copyright 2016- Robot Framework Foundation
#
# 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.
from pathlib import Path
from typing import Literal, TYPE_CHECKING
if TYPE_CHECKING:
from robot import model, result, running
[docs]
class LoggerApi:
[docs]
def start_suite(self, data: "running.TestSuite", result: "result.TestSuite"):
pass
[docs]
def end_suite(self, data: "running.TestSuite", result: "result.TestSuite"):
pass
[docs]
def start_test(self, data: "running.TestCase", result: "result.TestCase"):
pass
[docs]
def end_test(self, data: "running.TestCase", result: "result.TestCase"):
pass
[docs]
def start_keyword(self, data: "running.Keyword", result: "result.Keyword"):
self.start_body_item(data, result)
[docs]
def end_keyword(self, data: "running.Keyword", result: "result.Keyword"):
self.end_body_item(data, result)
[docs]
def start_user_keyword(
self,
data: "running.Keyword",
implementation: "running.UserKeyword",
result: "result.Keyword",
):
self.start_keyword(data, result)
[docs]
def end_user_keyword(
self,
data: "running.Keyword",
implementation: "running.UserKeyword",
result: "result.Keyword",
):
self.end_keyword(data, result)
[docs]
def start_library_keyword(
self,
data: "running.Keyword",
implementation: "running.LibraryKeyword",
result: "result.Keyword",
):
self.start_keyword(data, result)
[docs]
def end_library_keyword(
self,
data: "running.Keyword",
implementation: "running.LibraryKeyword",
result: "result.Keyword",
):
self.end_keyword(data, result)
[docs]
def start_invalid_keyword(
self,
data: "running.Keyword",
implementation: "running.KeywordImplementation",
result: "result.Keyword",
):
self.start_keyword(data, result)
[docs]
def end_invalid_keyword(
self,
data: "running.Keyword",
implementation: "running.KeywordImplementation",
result: "result.Keyword",
):
self.end_keyword(data, result)
[docs]
def start_for(self, data: "running.For", result: "result.For"):
self.start_body_item(data, result)
[docs]
def end_for(self, data: "running.For", result: "result.For"):
self.end_body_item(data, result)
[docs]
def start_for_iteration(
self,
data: "running.ForIteration",
result: "result.ForIteration",
):
self.start_body_item(data, result)
[docs]
def end_for_iteration(
self,
data: "running.ForIteration",
result: "result.ForIteration",
):
self.end_body_item(data, result)
[docs]
def start_while(self, data: "running.While", result: "result.While"):
self.start_body_item(data, result)
[docs]
def end_while(self, data: "running.While", result: "result.While"):
self.end_body_item(data, result)
[docs]
def start_while_iteration(
self,
data: "running.WhileIteration",
result: "result.WhileIteration",
):
self.start_body_item(data, result)
[docs]
def end_while_iteration(
self,
data: "running.WhileIteration",
result: "result.WhileIteration",
):
self.end_body_item(data, result)
[docs]
def start_group(self, data: "running.Group", result: "result.Group"):
self.start_body_item(data, result)
[docs]
def end_group(self, data: "running.Group", result: "result.Group"):
self.end_body_item(data, result)
[docs]
def start_if(self, data: "running.If", result: "result.If"):
self.start_body_item(data, result)
[docs]
def end_if(self, data: "running.If", result: "result.If"):
self.end_body_item(data, result)
[docs]
def start_if_branch(self, data: "running.IfBranch", result: "result.IfBranch"):
self.start_body_item(data, result)
[docs]
def end_if_branch(self, data: "running.IfBranch", result: "result.IfBranch"):
self.end_body_item(data, result)
[docs]
def start_try(self, data: "running.Try", result: "result.Try"):
self.start_body_item(data, result)
[docs]
def end_try(self, data: "running.Try", result: "result.Try"):
self.end_body_item(data, result)
[docs]
def start_try_branch(self, data: "running.TryBranch", result: "result.TryBranch"):
self.start_body_item(data, result)
[docs]
def end_try_branch(self, data: "running.TryBranch", result: "result.TryBranch"):
self.end_body_item(data, result)
[docs]
def start_var(self, data: "running.Var", result: "result.Var"):
self.start_body_item(data, result)
[docs]
def end_var(self, data: "running.Var", result: "result.Var"):
self.end_body_item(data, result)
[docs]
def start_break(self, data: "running.Break", result: "result.Break"):
self.start_body_item(data, result)
[docs]
def end_break(self, data: "running.Break", result: "result.Break"):
self.end_body_item(data, result)
[docs]
def start_continue(self, data: "running.Continue", result: "result.Continue"):
self.start_body_item(data, result)
[docs]
def end_continue(self, data: "running.Continue", result: "result.Continue"):
self.end_body_item(data, result)
[docs]
def start_return(self, data: "running.Return", result: "result.Return"):
self.start_body_item(data, result)
[docs]
def end_return(self, data: "running.Return", result: "result.Return"):
self.end_body_item(data, result)
[docs]
def start_error(self, data: "running.Error", result: "result.Error"):
self.start_body_item(data, result)
[docs]
def end_error(self, data: "running.Error", result: "result.Error"):
self.end_body_item(data, result)
[docs]
def start_body_item(self, data, result):
pass
[docs]
def end_body_item(self, data, result):
pass
[docs]
def log_message(self, message: "model.Message"):
pass
[docs]
def message(self, message: "model.Message"):
pass
[docs]
def output_file(self, path: Path):
"""Called when XML output file is closed.
Calls :meth:`result_file` by default.
"""
self.result_file("Output", path)
[docs]
def report_file(self, path: Path):
"""Called when report file is closed.
Calls :meth:`result_file` by default.
"""
self.result_file("Report", path)
[docs]
def log_file(self, path: Path):
"""Called when log file is closed.
Calls :meth:`result_file` by default.
"""
self.result_file("Log", path)
[docs]
def xunit_file(self, path: Path):
"""Called when xunit file is closed.
Calls :meth:`result_file` by default.
"""
self.result_file("XUnit", path)
[docs]
def debug_file(self, path: Path):
"""Called when debug file is closed.
Calls :meth:`result_file` by default.
"""
self.result_file("Debug", path)
[docs]
def result_file(
self,
kind: Literal["Output", "Report", "Log", "XUnit", "Debug"],
path: Path,
):
"""Called when any result file is closed by default.
``kind`` specifies the file type. This method is not called if a result
file specific method like :meth:`output_file` is implemented.
"""
pass
[docs]
def imported(self, import_type: str, name: str, attrs):
pass
[docs]
def library_import(
self,
library: "running.TestLibrary",
importer: "running.Import",
):
pass
[docs]
def resource_import(
self,
resource: "running.ResourceFile",
importer: "running.Import",
):
pass
[docs]
def variables_import(self, attrs: dict, importer: "running.Import"):
pass