skeleton/test/pytestconf.py
author Alexandre Fayolle <alexandre.fayolle@logilab.fr>
Tue, 22 Dec 2009 09:38:08 +0100
branchstable
changeset 4177 f0ab2b6d3553
parent 1977 606923dff11b
child 4212 ab6573088b4a
permissions -rw-r--r--
SqlServer: support single sign on / Windows credential authentication This is done through a new db-extra-arguments section in instance_dir/sources which is passed as a string to the extra_args named argument of lgc.db.get_connection. If this argument is Trusted_Connection, windows authentication is used instead of login/password. This change requires at least revision 5475ec3f6412 of logilab.common which will be included in logilab-common 0.46. debian/control updated to mention this new dependency.

"""

:organization: Logilab
:copyright: 2001-2009 LOGILAB S.A. (Paris, FRANCE), license is LGPL v2.
:contact: http://www.logilab.fr/ -- mailto:contact@logilab.fr
:license: GNU Lesser General Public License, v2.1 - http://www.gnu.org/licenses
"""
import os
import pwd

from logilab.common.pytest import PyTester

def getlogin():
    """avoid usinng os.getlogin() because of strange tty / stdin problems
    (man 3 getlogin)
    Another solution would be to use $LOGNAME, $USER or $USERNAME
    """
    return pwd.getpwuid(os.getuid())[0]


def update_parser(parser):
    login = getlogin()
    parser.add_option('-r', '--rebuild-database', dest='rebuild_db',
                      default=False, action="store_true",
                      help="remove tmpdb and rebuilds the test database")
    parser.add_option('-u', '--dbuser', dest='dbuser', action='store',
                      default=login, help="database user")
    parser.add_option('-w', '--dbpassword', dest='dbpassword', action='store',
                      default=login, help="database name")
    parser.add_option('-n', '--dbname', dest='dbname', action='store',
                      default=None, help="database name")
    parser.add_option('--euser', dest='euser', action='store',
                      default=login, help="esuer name")
    parser.add_option('--epassword', dest='epassword', action='store',
                      default=login, help="euser's password' name")
    return parser


class CustomPyTester(PyTester):
    def __init__(self, cvg, options):
        super(CustomPyTester, self).__init__(cvg, options)
        if options.rebuild_db:
            os.unlink('tmpdb')
            os.unlink('tmpdb-template')