From d68b124368dab4a3ec229da8e331957b90f1d650 Mon Sep 17 00:00:00 2001 From: Alex <akreft@trineo.org> Date: Wed, 24 Mar 2021 10:58:32 +0100 Subject: [PATCH] resolve threads from merge request --- CHANGELOG.md | 19 ++------------ src/caosdb/__init__.py | 2 +- src/caosdb/configuration.py | 20 +++++++------- unittests/test_configuration.py | 46 +++++++++++++++++++++++---------- 4 files changed, 44 insertions(+), 43 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c964b84d..d464d725 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,25 +9,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added ### -* function `_read_config_files` to read `pycaosdb.ini` files from different paths. - -### Changed ### - -### Deprecated ### - -### Removed ### - -### Fixed ### -- #45 test_config_ini_via_envvar - -### Security ### - -## [Unreleased] ## - -### Added ### - * `etag` property for the `caosdb.Query` class. The etag allows to debug the caching and to decide whether the server has changed between queries. +* function `_read_config_files` to read `pycaosdb.ini` files from different paths. ### Changed ### @@ -36,6 +20,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Removed ### ### Fixed ### +* #45 - test_config_ini_via_envvar ### Security ### diff --git a/src/caosdb/__init__.py b/src/caosdb/__init__.py index ba1b535f..2f8f0821 100644 --- a/src/caosdb/__init__.py +++ b/src/caosdb/__init__.py @@ -50,4 +50,4 @@ from caosdb.connection.connection import configure_connection, get_connection from caosdb.version import version as __version__ from caosdb.exceptions import * -_read_config_files("PYCAOSDBINI") \ No newline at end of file +_read_config_files() \ No newline at end of file diff --git a/src/caosdb/configuration.py b/src/caosdb/configuration.py index 70031ce6..6e8a9c6f 100644 --- a/src/caosdb/configuration.py +++ b/src/caosdb/configuration.py @@ -29,7 +29,7 @@ except ImportError: from configparser import ConfigParser from os import environ, getcwd -from os.path import expanduser, join,isfile +from os.path import expanduser, join, isfile def _reset_config(): @@ -53,21 +53,19 @@ 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 +def _read_config_files(): + """Function to read config files from different paths. Checks for path in $PYCAOSDBINI or home directory (.pycaosdb.ini) and in the current working directory (pycaosdb.ini). Returns: - [list]: list with successfully parsed ini-files - """ + [list]: list with successfully parsed ini-files. Order: env_var or home directory, cwd. Used for testing the function. + """ return_var = [] - if env in environ: - return_var.extend(configure(expanduser(environ[env]))) + if "PYCAOSDBINI" in environ: + return_var.extend(configure(expanduser(environ["PYCAOSDBINI"]))) else: - return_var.extend(configure(expanduser('~/.pycaosdb.ini'))) - + 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 ab6cd482..b135e7cd 100644 --- a/unittests/test_configuration.py +++ b/unittests/test_configuration.py @@ -22,27 +22,45 @@ # ** end header # +import pytest import caosdb as db +from os import environ, getcwd, remove +from os.path import expanduser, isfile, join from pytest import raises -def test_config_ini_via_envvar(): - from os import environ,getcwd,remove - from os.path import expanduser, isfile,join +@pytest.fixture +def temp_ini_files(): + created_temp_ini_cwd = False + created_temp_ini_home = False + if not isfile(join(getcwd(), "pycaosdb.ini")): + open("pycaosdb.ini", 'a').close() # create temporary ini file + created_temp_ini_cwd = True + if not isfile(expanduser("~/.pycaosdb.ini")): + open(expanduser("~/.pycaosdb.ini"), 'a').close() # create temporary ini file in home directory + created_temp_ini_home = True + yield 0 + if created_temp_ini_cwd: + remove("pycaosdb.ini") + if created_temp_ini_home: + remove(expanduser("~/.pycaosdb.ini")) + environ["PYCAOSDBINI"] = "~/.pycaosdb.ini" + + +def test_config_ini_via_envvar(temp_ini_files): with raises(KeyError): environ["PYCAOSDBINI"] - + environ["PYCAOSDBINI"] = "bla bla" assert environ["PYCAOSDBINI"] == "bla bla" - assert not expanduser(environ["PYCAOSDBINI"]) in db.configuration._read_config_files("PYCAOSDBINI") + # test wrong configuration file in envvar + assert not expanduser(environ["PYCAOSDBINI"]) in db.configuration._read_config_files() + # test good configuration file in envvar environ["PYCAOSDBINI"] = "~/.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") + assert expanduser("~/.pycaosdb.ini") in db.configuration._read_config_files() + # test without envvar + environ.pop("PYCAOSDBINI") + assert expanduser("~/.pycaosdb.ini") in db.configuration._read_config_files() + # test configuration file in cwd + assert join(getcwd(), "pycaosdb.ini") in db.configuration._read_config_files() -- GitLab