From 35fb950dcacd29063e24303a9b853c765cf8d451 Mon Sep 17 00:00:00 2001 From: Alex <akreft@trineo.org> Date: Tue, 23 Mar 2021 13:34:03 +0100 Subject: [PATCH] Created function _read_config_files to read pycaosdb.ini files from different paths. Testfile changed accordingly. --- src/caosdb/__init__.py | 10 ++-------- src/caosdb/configuration.py | 22 ++++++++++++++++++++++ unittests/test_configuration.py | 18 +++++++++++++----- 3 files changed, 37 insertions(+), 13 deletions(-) diff --git a/src/caosdb/__init__.py b/src/caosdb/__init__.py index b86fcd63..ba1b535f 100644 --- a/src/caosdb/__init__.py +++ b/src/caosdb/__init__.py @@ -45,15 +45,9 @@ from caosdb.common.models import (ACL, ALL, FIX, NONE, OBLIGATORY, RECOMMENDED, Query, QueryTemplate, Record, RecordType, delete, execute_query, get_global_acl, get_known_permissions, raise_errors) -from caosdb.configuration import configure, get_config +from caosdb.configuration import configure, get_config,_read_config_files from caosdb.connection.connection import configure_connection, get_connection from caosdb.version import version as __version__ from caosdb.exceptions import * -# read configuration these files - -if "PYCAOSDBINI" in environ: - configure(expanduser(environ["PYCAOSDBINI"])) -else: - configure(expanduser('~/.pycaosdb.ini')) -configure(join(getcwd(), "pycaosdb.ini")) +_read_config_files("PYCAOSDBINI") \ No newline at end of file diff --git a/src/caosdb/configuration.py b/src/caosdb/configuration.py index 4d079784..70031ce6 100644 --- a/src/caosdb/configuration.py +++ b/src/caosdb/configuration.py @@ -28,6 +28,9 @@ except ImportError: # python3 from configparser import ConfigParser +from os import environ, getcwd +from os.path import expanduser, join,isfile + def _reset_config(): global _pycaosdbconf @@ -49,3 +52,22 @@ def configure(inifile): def get_config(): return _pycaosdbconf + +def _read_config_files(env = "PYCAOSDBINI"): + """Function to read config files from different paths + + Args: + env (string): environment string + + Returns: + [list]: list with successfully parsed ini-files + """ + return_var = [] + if env in environ: + return_var.extend(configure(expanduser(environ[env]))) + else: + return_var.extend(configure(expanduser('~/.pycaosdb.ini'))) + + if isfile(join(getcwd(), "pycaosdb.ini")): + return_var.extend(configure(join(getcwd(), "pycaosdb.ini"))) + return return_var diff --git a/unittests/test_configuration.py b/unittests/test_configuration.py index 76445b6f..ab6cd482 100644 --- a/unittests/test_configuration.py +++ b/unittests/test_configuration.py @@ -27,14 +27,22 @@ from pytest import raises def test_config_ini_via_envvar(): - from os import environ - from os.path import expanduser + from os import environ,getcwd,remove + from os.path import expanduser, isfile,join with raises(KeyError): environ["PYCAOSDBINI"] - + environ["PYCAOSDBINI"] = "bla bla" assert environ["PYCAOSDBINI"] == "bla bla" - assert db.configuration.configure(environ["PYCAOSDBINI"]) == [] + assert not expanduser(environ["PYCAOSDBINI"]) in db.configuration._read_config_files("PYCAOSDBINI") environ["PYCAOSDBINI"] = "~/.pycaosdb.ini" - assert db.configuration.configure(expanduser(environ["PYCAOSDBINI"])) == [expanduser("~/.pycaosdb.ini")] + if isfile(expanduser(environ["PYCAOSDBINI"])): + assert expanduser("~/.pycaosdb.ini") in db.configuration._read_config_files("PYCAOSDBINI") + + if isfile(join(getcwd(), )): + assert join(getcwd(), "pycaosdb.ini") in db.configuration._read_config_files("PYCAOSDBINI") + else: + open("pycaosdb.ini", 'a').close() #create temporary ini file + assert join(getcwd(), "pycaosdb.ini") in db.configuration._read_config_files("PYCAOSDBINI") + remove("pycaosdb.ini") -- GitLab