from test import test_support

import unittest

import nis



class NisTests(unittest.TestCase):

    def test_maps(self):

        try:

            maps = nis.maps()

        except nis.error, msg:

            # NIS is probably not active, so this test isn't useful

            if test_support.verbose:

                print "Test Skipped:", msg

            # Can't raise TestSkipped as regrtest only recognizes the exception

            #   import time.

            return

        try:

            # On some systems, this map is only accessible to the

            # super user

            maps.remove("passwd.adjunct.byname")

        except ValueError:

            pass



        done = 0

        for nismap in maps:

            mapping = nis.cat(nismap)

            for k, v in mapping.items():

                if not k:

                    continue

                if nis.match(k, nismap) != v:

                    self.fail("NIS match failed for key `%s' in map `%s'" % (k, nismap))

                else:

                    # just test the one key, otherwise this test could take a

                    # very long time

                    done = 1

                    break

            if done:

                break



def test_main():

    test_support.run_unittest(NisTests)



if __name__ == '__main__':

    test_main()

