<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def start(self):
 """Starts watching the path and running the test jobs."""

    assert not self.watching

    def selector(evt):
      if evt.is_directory:
        return False
      path = evt.path
      if path in self._last_fnames: # Detected a "killing cycle"
        return False
      for pattern in self.skip_pattern.split(";"):
        if fnmatch(path, pattern.strip()):
          return False
      return True

    def watchdog_handler(evt):
      wx.CallAfter(self._watchdog_handler, evt)

    # Force a first event
    self._watching = True
    self._last_fnames = []
    self._evts = [None]
    self._run_subprocess()

    # Starts the watchdog observer
    from .watcher import watcher
    self._watcher = watcher(path=self.directory,
                            selector=selector, handler=watchdog_handler)
    self._watcher.__enter__()