""" Testing suite for https://github.com/bregman-arie/devops-interview-questions written by surister Even though both check_details_tag and check_summary_tags are practically the same, due to readability and functionality it was decided to be split like that. Usage: $ python tests/syntax_checker.py """ import pathlib p = pathlib.Path(__file__).parent.parent.joinpath('README.md') with open(p, 'rb') as f: file_list = [line.rstrip() for line in f.readlines()] errors = [] def count_details(file_list): """ Counts the total amount of
and
Used for debugging purpose, not meant to be used in actual tests """ details_final_count = 0 details_count = 0 for line_number, line in enumerate(file_list): if b'
' in line: details_count += 1 if b'
' in line: details_final_count += 1 return details_count, details_final_count def check_details_tag(file_list): """ Check whether the structure:
...
Is correctly followed, if not generates an error. """ after_detail = False error = False err_message = '' for line_number, line in enumerate(file_list): if b'
' in line and b'
' in line: pass else: if b'
' in line and after_detail: error = True if b'
' in line and not after_detail: err_message = 'Missing opening detail tag' error = True if b'
' in line: after_detail = True if b'
' in line and after_detail: err_message = 'Missing closing detail tag' after_detail = False if error: raise Exception(f'{err_message} at line {line_number -1}') def check_summary_tag(file_list): """ Check whether the structure: ... Is correctly followed, if not generates an error. """ after_detail = False error = False err_message = '' for line_number, line in enumerate(file_list): if b'' in line and b'' in line: pass else: if b'' in line and after_detail: error = True if b'' in line and not after_detail: err_message = 'Missing opening detail tag' error = True if b'' in line: after_detail = True if b'' in line and after_detail: err_message = 'Missing closing detail tag' after_detail = False if error: raise Exception(f'{err_message} at line {line_number -3}') if __name__ == '__main__': check_details_tag(file_list) check_summary_tag(file_list)