specify posix:grp: - before: grp = require "posix.grp" - describe endgrent: - before: endgrent = grp.endgrent - context with bad arguments: badargs.diagnose (endgrent, "()") - it returns 'nil': expect (endgrent ()).to_be (nil) - it rewinds the group database: g = grp.getgrent () grp.getgrent () endgrent () expect (grp.getgrent ()).to_equal (g) - describe getgrent: - before: getgrent = grp.getgrent - context with bad arguments: badargs.diagnose (getgrent, "()") - it returns a PosixGroup for an existing group: expect (prototype (getgrent ())).to_be "PosixGroup" - it fetches a different group on subsequent calls: g = getgrent () expect (getgrent ()).not_to_equal (g) - it returns nil after the last entry was fetched: g = getgrent () while (g) do h = getgrent () expect (g).not_to_equal (h) g = h end expect (g).to_be (nil) grp.endgrent () - describe getgrgid: - before: getgrgid = posix.getgrgid groot = getgrgid (0).gr_name - context with bad arguments: badargs.diagnose (getgrgid, "(int)") - it returns a PosixGroup for an existing group: expect (prototype (getgrgid (0))).to_be "PosixGroup" - it fetches a group by gid: expect (getgrgid (0).gr_name).to_be (groot) expect (getgrgid (0).gr_gid).to_be (0) expect (type (getgrgid (0).gr_mem)).to_be "table" - describe getgrnam: - before: getgrgid, getgrnam = posix.getgrgid, posix.getgrnam groot = getgrgid (0).gr_name - context with bad arguments: badargs.diagnose (getgrnam, "(string)") - it returns 'nil' for a non-existent group: expect (getgrnam "veryunlikelygroupname").to_be (nil) - it returns a PosixGroup for an existing group: expect (prototype (getgrnam (groot))).to_be "PosixGroup" - it fetches a group by name: expect (getgrnam (groot).gr_name).to_be (groot) expect (getgrnam (groot).gr_gid).to_be (0) expect (type (getgrnam (groot).gr_mem)).to_be "table" - describe setgrent: - before: setgrent = grp.setgrent - context with bad arguments: badargs.diagnose (setgrent, "()") - it returns 'nil': expect (setgrent ()).to_be (nil) - it rewinds the group database: g = grp.getgrent () grp.getgrent () setgrent () expect (grp.getgrent ()).to_equal (g)