summaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
authorXisco Fauli <xiscofauli@libreoffice.org>2020-04-08 13:58:30 +0200
committerXisco Faulí <xiscofauli@libreoffice.org>2020-04-15 17:54:14 +0200
commitd77d4a8138861f7f574452f7e4d1673329d54136 (patch)
treeb8916e6ca2657702a822064fd9b98b2f1cecb319 /bin
parent9b1c9ac6edcdeae431d6104c586ca7feffbb6483 (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-xbin/check-missing-unittests.py119
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))