Fix bug in git trace2 event Write() function when no config present.

See https://bugs.chromium.org/p/gerrit/issues/detail?id=13706#c9

Added additional unit tests for Write() for additional test coverage.

Testing:
- Unit tests
- Verified repo works with:
  - Valid trace2.eventtarget
  - Invalid trace2.eventtarget

Bug: https://crbug.com/gerrit/13706
Tested-by: Ian Kasprzak <iankaz@google.com>
Change-Id: I6b027cb2399bd03e453a132ad82e022a1f48476e
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/292762
Reviewed-by: Mike Frysinger <vapier@google.com>
diff --git a/git_trace2_event_log.py b/git_trace2_event_log.py
index 4a8e034..dfbded1 100644
--- a/git_trace2_event_log.py
+++ b/git_trace2_event_log.py
@@ -132,6 +132,30 @@
     exit_event['code'] = result
     self._log.append(exit_event)
 
+  def _GetEventTargetPath(self):
+    """Get the 'trace2.eventtarget' path from git configuration.
+
+    Returns:
+      path: git config's 'trace2.eventtarget' path if it exists, or None
+    """
+    path = None
+    cmd = ['config', '--get', 'trace2.eventtarget']
+    # TODO(https://crbug.com/gerrit/13706): Use GitConfig when it supports
+    # system git config variables.
+    p = GitCommand(None, cmd, capture_stdout=True, capture_stderr=True,
+                   bare=True)
+    retval = p.Wait()
+    if retval == 0:
+      # Strip trailing carriage-return in path.
+      path = p.stdout.rstrip('\n')
+    elif retval != 1:
+      # `git config --get` is documented to produce an exit status of `1` if
+      # the requested variable is not present in the configuration. Report any
+      # other return value as an error.
+      print("repo: error: 'git config --get' call failed with return code: %r, stderr: %r" % (
+          retval, p.stderr), file=sys.stderr)
+    return path
+
   def Write(self, path=None):
     """Writes the log out to a file.
 
@@ -150,21 +174,11 @@
     log_path = None
     # If no logging path is specified, get the path from 'trace2.eventtarget'.
     if path is None:
-      cmd = ['config', '--get', 'trace2.eventtarget']
-      # TODO(https://crbug.com/gerrit/13706): Use GitConfig when it supports
-      # system git config variables.
-      p = GitCommand(None, cmd, capture_stdout=True, capture_stderr=True,
-                     bare=True)
-      retval = p.Wait()
-      if retval == 0:
-        # Strip trailing carriage-return in path.
-        path = p.stdout.rstrip('\n')
-      elif retval != 1:
-        # `git config --get` is documented to produce an exit status of `1` if
-        # the requested variable is not present in the configuration. Report any
-        # other return value as an error.
-        print("repo: error: 'git config --get' call failed with return code: %r, stderr: %r" % (
-            retval, p.stderr), file=sys.stderr)
+      path = self._GetEventTargetPath()
+
+    # If no logging path is specified, exit.
+    if path is None:
+      return None
 
     if isinstance(path, str):
       # Get absolute path.