diff options
author | Xisco Fauli <xiscofauli@libreoffice.org> | 2020-04-08 13:58:30 +0200 |
---|---|---|
committer | Xisco Faulí <xiscofauli@libreoffice.org> | 2020-04-15 17:54:14 +0200 |
commit | d77d4a8138861f7f574452f7e4d1673329d54136 (patch) | |
tree | b8916e6ca2657702a822064fd9b98b2f1cecb319 /bin | |
parent | 9b1c9ac6edcdeae431d6104c586ca7feffbb6483 (diff) |
bin: Add script to find missing unittests based on git log
First iteration: look for docx, xlsx and pptx export commits
print to wiki format
Change-Id: I05770b096c55b6faa39d34a8fd39768a4d7fe5b1
Change-Id: I0f19a73183b482bf0e19af0314c72f2ea9f25544
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91910
Tested-by: Jenkins
Reviewed-by: Xisco Faulí <xiscofauli@libreoffice.org>
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/check-missing-unittests.py | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/bin/check-missing-unittests.py b/bin/check-missing-unittests.py new file mode 100755 index 000000000000..0e27243b6cde --- /dev/null +++ b/bin/check-missing-unittests.py @@ -0,0 +1,119 @@ +#!/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 subprocess +import sys + +def main(ignoredBugs): + results = { + 'export': { + 'docx': {}, + 'pptx': {}, + 'xlsx': {} + } + } + hasTestSet = set() + + repoPath = os.path.dirname(os.path.abspath(__file__)) + '/..' + branch = subprocess.check_output( + ['git', '-C', repoPath, 'rev-parse', '--abbrev-ref', 'HEAD'], + stderr=subprocess.DEVNULL) + last_hash = subprocess.check_output( + ['git', '-C', repoPath, 'rev-parse', 'HEAD'], + stderr=subprocess.DEVNULL) + output = subprocess.check_output( + ['git', '-C', repoPath, 'log', '--since="2012-01-01', '--name-only' ,'--pretty=format:"%s"'], + stderr=subprocess.DEVNULL) + commits = output.decode('utf-8', 'ignore').split('\n\n') + + for commit in reversed(commits): + + summary = commit.split('\n', 1)[0].lower() + + #Check summary has a bug id + if 'tdf#' in summary or 'fdo#' in summary: + + isIgnored = False + for i in ignoredBugs: + if i in summary: + isIgnored = True + if isIgnored: + continue + + if 'tdf#' in summary: + if not summary.split('tdf#')[1][0].isdigit(): + continue + bugId = ''.join(filter(str.isdigit, summary.split('tdf#')[1].split(' ')[0])) + elif 'fdo#' in summary: + if not summary.split('fdo#')[1][0].isdigit(): + continue + bugId = ''.join(filter(str.isdigit, summary.split('fdo#')[1].split(' ')[0])) + + + if bugId in hasTestSet: + continue + + changedFiles = commit.split('\n', 1)[1] + if 'qa' in changedFiles: + hasTestSet.add(bugId) + continue + elif 'sw/source/filter/ww8/docx' in changedFiles: + results['export']['docx'][bugId] = summary + elif 'sc/source/filter/excel/xe' in changedFiles: + results['export']['xlsx'][bugId] = summary + elif 'oox/source/export/' in changedFiles: + results['export']['pptx'][bugId] = summary + # Add others here + + print() + print('{{TopMenu}}') + print('{{Menu}}') + print('{{Menu.Development}}') + print() + print('Date: ' + str(datetime.datetime.now())) + print() + print('Commits: ' + str(len(commits))) + print() + print('Branch: ' + branch.decode().strip()) + print() + print('Hash: ' + str(last_hash.decode().strip())) + for k,v in results.items(): + print('\n== ' + k + ' ==') + for k1, v1 in v.items(): + print('\n=== ' + k1 + ' ===') + for bugId, summary in v1.items(): + if bugId not in hasTestSet: + print( + "* {} - [https://bugs.documentfoundation.org/show_bug.cgi?id={} tdf#{}]".format( + summary, bugId, bugId)) + print('\n== ignored bugs ==') + print(' '.join(ignoredBugs)) + print() + print('[[Category:QA]][[Category:Development]]') + +def usage(): + message = """usage: {program} [bugs to ignore (each one is one argument)] + +Sample: {program} 10000 10001 10002""" + print(message.format(program = os.path.basename(sys.argv[0]))) + +if __name__ == '__main__': + + args = set() + if len(sys.argv) > 1: + arg1 = sys.argv[1] + if arg1 == '-h' or arg1 == "--help": + usage() + sys.exit(1) + for i in sys.argv: + if i.isdigit(): + args.add(i) + + main(sorted(args)) |