<p>pespin <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-gsm-tester/+/18691">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Jenkins Builder: Verified
  pespin: Looks good to me, approved

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">report: Add trial commit info to junit file<br><br>Change-Id: I997bbbeb3807af5cd927594a4155b824f0c6d03d<br>---<br>M src/osmo_gsm_tester/core/report.py<br>M src/osmo_gsm_tester/core/trial.py<br>2 files changed, 27 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/osmo_gsm_tester/core/report.py b/src/osmo_gsm_tester/core/report.py</span><br><span>index 121fbaf..5014bf5 100644</span><br><span>--- a/src/osmo_gsm_tester/core/report.py</span><br><span>+++ b/src/osmo_gsm_tester/core/report.py</span><br><span>@@ -46,6 +46,14 @@</span><br><span>     replacement_char = '\uFFFD' # Unicode replacement character</span><br><span>     return invalid_xml_char_ranges_regex.sub(replacement_char, escape(str))</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+def hash_info_to_junit(testsuite, hash_info):</span><br><span style="color: hsl(120, 100%, 40%);">+    properties = et.SubElement(testsuite, 'properties')</span><br><span style="color: hsl(120, 100%, 40%);">+    for key, val in hash_info.items():</span><br><span style="color: hsl(120, 100%, 40%);">+        prop = et.SubElement(properties, 'property')</span><br><span style="color: hsl(120, 100%, 40%);">+        prop.set('name', 'ref:' + key)</span><br><span style="color: hsl(120, 100%, 40%);">+        prop.set('value', val)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> def trial_to_junit_write(trial, junit_path):</span><br><span>     elements = et.ElementTree(element=trial_to_junit(trial))</span><br><span>     elements.write(junit_path)</span><br><span>@@ -57,8 +65,10 @@</span><br><span>     num_errors = 0</span><br><span>     time = 0</span><br><span>     id = 0</span><br><span style="color: hsl(120, 100%, 40%);">+    hash_info = trial.get_all_inst_hash_info()</span><br><span>     for suite in trial.suites:</span><br><span>         testsuite = suite_to_junit(suite)</span><br><span style="color: hsl(120, 100%, 40%);">+        hash_info_to_junit(testsuite, hash_info)</span><br><span>         testsuite.set('id', str(id))</span><br><span>         id += 1</span><br><span>         testsuites.append(testsuite)</span><br><span>diff --git a/src/osmo_gsm_tester/core/trial.py b/src/osmo_gsm_tester/core/trial.py</span><br><span>index eaf18c3..001421f 100644</span><br><span>--- a/src/osmo_gsm_tester/core/trial.py</span><br><span>+++ b/src/osmo_gsm_tester/core/trial.py</span><br><span>@@ -21,6 +21,7 @@</span><br><span> import time</span><br><span> import shutil</span><br><span> import tarfile</span><br><span style="color: hsl(120, 100%, 40%);">+import pathlib</span><br><span> </span><br><span> from . import log</span><br><span> from . import util</span><br><span>@@ -212,6 +213,22 @@</span><br><span>             self.log('Storing JUnit report in', junit_path)</span><br><span>             report.trial_to_junit_write(self, junit_path)</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+    def get_all_inst_hash_info(self):</span><br><span style="color: hsl(120, 100%, 40%);">+        d = {}</span><br><span style="color: hsl(120, 100%, 40%);">+        pathlist = pathlib.Path(str(self.inst_dir)).glob('**/*git_hashes.txt')</span><br><span style="color: hsl(120, 100%, 40%);">+        for path in pathlist:</span><br><span style="color: hsl(120, 100%, 40%);">+            # because path is object not string</span><br><span style="color: hsl(120, 100%, 40%);">+            abs_path_str = str(path) # because path is object not string</span><br><span style="color: hsl(120, 100%, 40%);">+            dir, file = os.path.split(abs_path_str)</span><br><span style="color: hsl(120, 100%, 40%);">+            reldir = os.path.relpath(dir, str(self.inst_dir)).rstrip(os.sep)</span><br><span style="color: hsl(120, 100%, 40%);">+            with open(abs_path_str, 'r') as f:</span><br><span style="color: hsl(120, 100%, 40%);">+                for line in [l.strip() for l in f.readlines()]:</span><br><span style="color: hsl(120, 100%, 40%);">+                    if not line:</span><br><span style="color: hsl(120, 100%, 40%);">+                        continue</span><br><span style="color: hsl(120, 100%, 40%);">+                    hash, proj = tuple(line.split(' ', 1))</span><br><span style="color: hsl(120, 100%, 40%);">+                d[os.path.join(reldir,proj)] = hash</span><br><span style="color: hsl(120, 100%, 40%);">+        return d</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>     def log_report(self):</span><br><span>         log.large_separator(self.name(), self.status)</span><br><span>         self.log(report.trial_to_text(self))</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-gsm-tester/+/18691">change 18691</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/osmo-gsm-tester/+/18691"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-gsm-tester </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I997bbbeb3807af5cd927594a4155b824f0c6d03d </div>
<div style="display:none"> Gerrit-Change-Number: 18691 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>