RepoHook: set __file__ when running the hook

A common design pattern is to use __file__ to find the location of the
active python module to assist in output or loading of related assets.
The current hook systems runs the pre-upload.py hook in a context w/out
that set leading to runtime errors:

$ repo upload --cbr .
ERROR: Traceback (most recent call last):
  File ".../repo/project.py", line 481, in _ExecuteHook
    self._script_fullpath, 'exec'), context)
  File ".../repohooks/pre-upload.py", line 32, in <module>
    path = os.path.dirname(os.path.realpath(__file__))
NameError: name '__file__' is not defined

Define this variable in this context so code can safely use it.

Change-Id: If6331312445fa61d9351b59f83abcc1c99ae6748
This commit is contained in:
Mike Frysinger 2016-03-04 15:03:00 -05:00
parent 203153e7bb
commit 4aa4b211c6

View File

@ -475,7 +475,7 @@ class RepoHook(object):
# Exec, storing global context in the context dict. We catch exceptions # Exec, storing global context in the context dict. We catch exceptions
# and convert to a HookError w/ just the failing traceback. # and convert to a HookError w/ just the failing traceback.
context = {} context = {'__file__': self._script_fullpath}
try: try:
exec(compile(open(self._script_fullpath).read(), exec(compile(open(self._script_fullpath).read(),
self._script_fullpath, 'exec'), context) self._script_fullpath, 'exec'), context)