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