Skip to content

Commit c50467c

Browse files
authored
Fix job().find_user() user input. (#152)
Fixes #151
1 parent 290b914 commit c50467c

File tree

2 files changed

+23
-5
lines changed

2 files changed

+23
-5
lines changed

pyslurm/pyslurm.pyx

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1985,7 +1985,7 @@ cdef class job:
19851985
apiError = slurm.slurm_get_errno()
19861986
raise ValueError(slurm.stringOrNone(slurm.slurm_strerror(apiError), ''), apiError)
19871987

1988-
cpdef find_user(self, user):
1988+
def find_user(self, user):
19891989
u"""Retrieve a user's job data.
19901990
19911991
This method calls slurm_load_job_user to get all job_table records
@@ -1999,14 +1999,12 @@ cdef class job:
19991999
int apiError
20002000
int rc
20012001
uint32_t uid
2002-
char *username
20032002

20042003
if isinstance(user, str):
20052004
try:
2006-
username = user
2007-
uid = getpwnam(username)[2]
2005+
uid = getpwnam(user).pw_uid
20082006
except KeyError:
2009-
raise KeyError("user " + user + " not found")
2007+
raise KeyError("user %s not found on this system." % user)
20102008
else:
20112009
uid = user
20122010

tests/test-job.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
from __future__ import absolute_import, unicode_literals
22

33
import pyslurm
4+
import sys
45
import time
6+
57
from nose.tools import assert_equals, assert_true, assert_false
68

79
from common import scontrol_show
@@ -79,6 +81,24 @@ def test_job_scontrol():
7981
assert_equals(test_job_info["work_dir"], sctl_dict["WorkDir"])
8082

8183

84+
def test_job_find_user_string():
85+
"""Job: Test job().find_user() (String)."""
86+
user = "root"
87+
88+
if sys.version_info < (3,0):
89+
user = user.encode("UTF-8")
90+
91+
test_job_output = pyslurm.job().find_user(user)
92+
assert_true(isinstance(test_job_output, dict))
93+
94+
95+
def test_job_find_user_int():
96+
"""Job: Test job().find_user() (Integer)."""
97+
user = 0
98+
test_job_output = pyslurm.job().find_user(user)
99+
assert_true(isinstance(test_job_output, dict))
100+
101+
82102
def test_job_kill():
83103
"""Job: Test job().slurm_kill_job()."""
84104
test_job_search_before = pyslurm.job().find(name="name", val="pyslurm_test_job")

0 commit comments

Comments
 (0)