diff --git a/pyslurm/pyslurm.pyx b/pyslurm/pyslurm.pyx index 06d901e3..103c09b9 100644 --- a/pyslurm/pyslurm.pyx +++ b/pyslurm/pyslurm.pyx @@ -1985,7 +1985,7 @@ cdef class job: apiError = slurm.slurm_get_errno() raise ValueError(slurm.stringOrNone(slurm.slurm_strerror(apiError), ''), apiError) - cpdef find_user(self, user): + def find_user(self, user): u"""Retrieve a user's job data. This method calls slurm_load_job_user to get all job_table records @@ -1999,14 +1999,12 @@ cdef class job: int apiError int rc uint32_t uid - char *username if isinstance(user, str): try: - username = user - uid = getpwnam(username)[2] + uid = getpwnam(user).pw_uid except KeyError: - raise KeyError("user " + user + " not found") + raise KeyError("user %s not found on this system." % user) else: uid = user diff --git a/tests/test-job.py b/tests/test-job.py index ab6d70d2..5df684bf 100644 --- a/tests/test-job.py +++ b/tests/test-job.py @@ -1,7 +1,9 @@ from __future__ import absolute_import, unicode_literals import pyslurm +import sys import time + from nose.tools import assert_equals, assert_true, assert_false from common import scontrol_show @@ -79,6 +81,24 @@ def test_job_scontrol(): assert_equals(test_job_info["work_dir"], sctl_dict["WorkDir"]) +def test_job_find_user_string(): + """Job: Test job().find_user() (String).""" + user = "root" + + if sys.version_info < (3,0): + user = user.encode("UTF-8") + + test_job_output = pyslurm.job().find_user(user) + assert_true(isinstance(test_job_output, dict)) + + +def test_job_find_user_int(): + """Job: Test job().find_user() (Integer).""" + user = 0 + test_job_output = pyslurm.job().find_user(user) + assert_true(isinstance(test_job_output, dict)) + + def test_job_kill(): """Job: Test job().slurm_kill_job().""" test_job_search_before = pyslurm.job().find(name="name", val="pyslurm_test_job")