def testSkipNonExec(self):
   """Test that non executable files are skipped"""
   fname = os.path.join(self.rundir, "00test")
   utils.WriteFile(fname, data="")
   relname = os.path.basename(fname)
   self.failUnlessEqual(utils.RunParts(self.rundir, reset_env=True),
                        [(relname, constants.RUNPARTS_SKIP, None)])
Beispiel #2
0
def RunWatcherHooks():
    """Run the watcher hooks.

  """
    hooks_dir = utils.PathJoin(pathutils.HOOKS_BASE_DIR,
                               constants.HOOKS_NAME_WATCHER)
    if not os.path.isdir(hooks_dir):
        return

    try:
        results = utils.RunParts(hooks_dir)
    except Exception as err:  # pylint: disable=W0703
        logging.exception("RunParts %s failed: %s", hooks_dir, err)
        return

    for (relname, status, runresult) in results:
        if status == constants.RUNPARTS_SKIP:
            logging.debug("Watcher hook %s: skipped", relname)
        elif status == constants.RUNPARTS_ERR:
            logging.warning("Watcher hook %s: error (%s)", relname, runresult)
        elif status == constants.RUNPARTS_RUN:
            if runresult.failed:
                logging.warning(
                    "Watcher hook %s: failed (exit: %d) (output: %s)", relname,
                    runresult.exit_code, runresult.output)
            else:
                logging.debug("Watcher hook %s: success (output: %s)", relname,
                              runresult.output)
        else:
            raise errors.ProgrammerError(
                "Unknown status %s returned by RunParts", status)
 def testSkipWrongName(self):
   """Test that wrong files are skipped"""
   fname = os.path.join(self.rundir, "00test.dot")
   utils.WriteFile(fname, data="")
   os.chmod(fname, stat.S_IREAD | stat.S_IEXEC)
   relname = os.path.basename(fname)
   self.failUnlessEqual(utils.RunParts(self.rundir, reset_env=True),
                        [(relname, constants.RUNPARTS_SKIP, None)])
 def testError(self):
   """Test error on a broken executable"""
   fname = os.path.join(self.rundir, "00test")
   utils.WriteFile(fname, data="")
   os.chmod(fname, stat.S_IREAD | stat.S_IEXEC)
   (relname, status, error) = utils.RunParts(self.rundir, reset_env=True)[0]
   self.failUnlessEqual(relname, os.path.basename(fname))
   self.failUnlessEqual(status, constants.RUNPARTS_ERR)
   self.failUnless(error)
 def testOk(self):
   """Test correct execution"""
   fname = os.path.join(self.rundir, "00test")
   utils.WriteFile(fname, data="#!/bin/sh\n\necho -n ciao")
   os.chmod(fname, stat.S_IREAD | stat.S_IEXEC)
   (relname, status, runresult) = \
     utils.RunParts(self.rundir, reset_env=True)[0]
   self.failUnlessEqual(relname, os.path.basename(fname))
   self.failUnlessEqual(status, constants.RUNPARTS_RUN)
   self.failUnlessEqual(runresult.stdout, "ciao")
 def testRunFail(self):
   """Test correct execution, with run failure"""
   fname = os.path.join(self.rundir, "00test")
   utils.WriteFile(fname, data="#!/bin/sh\n\nexit 1")
   os.chmod(fname, stat.S_IREAD | stat.S_IEXEC)
   (relname, status, runresult) = \
     utils.RunParts(self.rundir, reset_env=True)[0]
   self.failUnlessEqual(relname, os.path.basename(fname))
   self.failUnlessEqual(status, constants.RUNPARTS_RUN)
   self.failUnlessEqual(runresult.exit_code, 1)
   self.failUnless(runresult.failed)
  def testSorted(self):
    """Test executions are sorted"""
    files = []
    files.append(os.path.join(self.rundir, "64test"))
    files.append(os.path.join(self.rundir, "00test"))
    files.append(os.path.join(self.rundir, "42test"))

    for fname in files:
      utils.WriteFile(fname, data="")

    results = utils.RunParts(self.rundir, reset_env=True)

    for fname in sorted(files):
      self.failUnlessEqual(os.path.basename(fname), results.pop(0)[0])
Beispiel #8
0
def RunWatcherHooks():
    """Run the watcher hooks.

  """
    hooks_dir = utils.PathJoin(pathutils.HOOKS_BASE_DIR,
                               constants.HOOKS_NAME_WATCHER)
    if not os.path.isdir(hooks_dir):
        return

    try:
        results = utils.RunParts(hooks_dir)
    except Exception, err:  # pylint: disable=W0703
        logging.exception("RunParts %s failed: %s", hooks_dir, err)
        return
  def testRunMix(self):
    files = []
    files.append(os.path.join(self.rundir, "00test"))
    files.append(os.path.join(self.rundir, "42test"))
    files.append(os.path.join(self.rundir, "64test"))
    files.append(os.path.join(self.rundir, "99test"))

    files.sort()

    # 1st has errors in execution
    utils.WriteFile(files[0], data="#!/bin/sh\n\nexit 1")
    os.chmod(files[0], stat.S_IREAD | stat.S_IEXEC)

    # 2nd is skipped
    utils.WriteFile(files[1], data="")

    # 3rd cannot execute properly
    utils.WriteFile(files[2], data="")
    os.chmod(files[2], stat.S_IREAD | stat.S_IEXEC)

    # 4th execs
    utils.WriteFile(files[3], data="#!/bin/sh\n\necho -n ciao")
    os.chmod(files[3], stat.S_IREAD | stat.S_IEXEC)

    results = utils.RunParts(self.rundir, reset_env=True)

    (relname, status, runresult) = results[0]
    self.failUnlessEqual(relname, os.path.basename(files[0]))
    self.failUnlessEqual(status, constants.RUNPARTS_RUN)
    self.failUnlessEqual(runresult.exit_code, 1)
    self.failUnless(runresult.failed)

    (relname, status, runresult) = results[1]
    self.failUnlessEqual(relname, os.path.basename(files[1]))
    self.failUnlessEqual(status, constants.RUNPARTS_SKIP)
    self.failUnlessEqual(runresult, None)

    (relname, status, runresult) = results[2]
    self.failUnlessEqual(relname, os.path.basename(files[2]))
    self.failUnlessEqual(status, constants.RUNPARTS_ERR)
    self.failUnless(runresult)

    (relname, status, runresult) = results[3]
    self.failUnlessEqual(relname, os.path.basename(files[3]))
    self.failUnlessEqual(status, constants.RUNPARTS_RUN)
    self.failUnlessEqual(runresult.output, "ciao")
    self.failUnlessEqual(runresult.exit_code, 0)
    self.failUnless(not runresult.failed)
 def testMissingDirectory(self):
   nosuchdir = utils.PathJoin(self.rundir, "no/such/directory")
   self.assertEqual(utils.RunParts(nosuchdir), [])
 def testEmpty(self):
   """Test on an empty dir"""
   self.failUnlessEqual(utils.RunParts(self.rundir, reset_env=True), [])