#!/usr/bin/env python3
# This file is part of the LibreOffice project.
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
import os
import datetime
import re
def analyze_file(filename):
class_name =
""
method_list = []
with open(filename, encoding=
'utf-8')
as fh:
for line
in fh:
if line.lstrip().startswith(
'class '):
class_name = line.lstrip().split(
" ")[1].split(
"(")[0]
elif line.lstrip().startswith(
'def test_'):
method_list.append(
line.lstrip().split(
"test_")[1].split(
"(")[0])
else:
continue
return class_name, method_list
def get_files_list(directory, extension):
array_items = []
dh = os.scandir(directory)
for entry
in dh:
if entry.is_dir():
array_items += get_files_list(entry.path, extension)
elif entry.is_file():
if entry.name.endswith(extension):
array_items.append(entry.path)
return array_items
def linkFormat(name):
bugId = re.search(r
'\d{5,6}', name)
if bugId:
return "[https://bugs.documentfoundation.org/show_bug.cgi?id={} {}]"\
.format(bugId.group(), name)
else:
return name
def main():
uitest_ext =
'.py'
uitest_dirs = {
'Writer' : [
'../writerperfect/qa/uitest/',
'../sw/qa/uitest/'],
'Calc' : [
'../sc/qa/uitest/'],
'Impress' : [
'../uitest/impress_tests/',
'../sd/qa/uitest/'],
'Math': [
'../uitest/math_tests/'],
'Demo': [
'../uitest/demo_ui/'],
'Draw': [
'']}
print(
'{{TopMenu}}')
print(
'{{Menu}}')
print(
'{{Menu.Development}}')
print()
print(
'Generated on ' + str(datetime.datetime.now()))
for k,v
in uitest_dirs.items():
print(
'\n=== ' + k +
' ===')
for uitest_dir
in v:
if uitest_dir:
uitest_files = get_files_list(uitest_dir, uitest_ext)
for uitest_file
in uitest_files:
class_name, method_names = analyze_file(uitest_file)
if class_name:
print(
"# {} ({})".format(
linkFormat(class_name),uitest_file[3:]))
for m
in method_names:
print(
'##' + linkFormat(m))
print()
print(
'[[Category:QA]][[Category:Development]]')
if __name__ ==
'__main__':
main()