Skip to content
Snippets Groups Projects
Commit d68b1243 authored by Alexander Kreft's avatar Alexander Kreft
Browse files

resolve threads from merge request

parent 922a6d14
No related branches found
No related tags found
2 merge requests!7MAINT: remove code from __init__,!4TST: refactor configuration test
Pipeline #6052 passed with warnings
...@@ -9,25 +9,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ...@@ -9,25 +9,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Added ### ### 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 * `etag` property for the `caosdb.Query` class. The etag allows to debug the
caching and to decide whether the server has changed between queries. caching and to decide whether the server has changed between queries.
* function `_read_config_files` to read `pycaosdb.ini` files from different paths.
### Changed ### ### Changed ###
...@@ -36,6 +20,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ...@@ -36,6 +20,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Removed ### ### Removed ###
### Fixed ### ### Fixed ###
* #45 - test_config_ini_via_envvar
### Security ### ### Security ###
......
...@@ -50,4 +50,4 @@ from caosdb.connection.connection import configure_connection, get_connection ...@@ -50,4 +50,4 @@ from caosdb.connection.connection import configure_connection, get_connection
from caosdb.version import version as __version__ from caosdb.version import version as __version__
from caosdb.exceptions import * from caosdb.exceptions import *
_read_config_files("PYCAOSDBINI") _read_config_files()
\ No newline at end of file \ No newline at end of file
...@@ -29,7 +29,7 @@ except ImportError: ...@@ -29,7 +29,7 @@ except ImportError:
from configparser import ConfigParser from configparser import ConfigParser
from os import environ, getcwd from os import environ, getcwd
from os.path import expanduser, join,isfile from os.path import expanduser, join, isfile
def _reset_config(): def _reset_config():
...@@ -53,21 +53,19 @@ def configure(inifile): ...@@ -53,21 +53,19 @@ def configure(inifile):
def get_config(): def get_config():
return _pycaosdbconf return _pycaosdbconf
def _read_config_files(env = "PYCAOSDBINI"):
"""Function to read config files from different paths
Args: def _read_config_files():
env (string): environment string """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: 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 = [] return_var = []
if env in environ: if "PYCAOSDBINI" in environ:
return_var.extend(configure(expanduser(environ[env]))) return_var.extend(configure(expanduser(environ["PYCAOSDBINI"])))
else: else:
return_var.extend(configure(expanduser('~/.pycaosdb.ini'))) return_var.extend(configure(expanduser('~/.pycaosdb.ini')))
if isfile(join(getcwd(), "pycaosdb.ini")): if isfile(join(getcwd(), "pycaosdb.ini")):
return_var.extend(configure(join(getcwd(), "pycaosdb.ini"))) return_var.extend(configure(join(getcwd(), "pycaosdb.ini")))
return return_var return return_var
...@@ -22,27 +22,45 @@ ...@@ -22,27 +22,45 @@
# ** end header # ** end header
# #
import pytest
import caosdb as db import caosdb as db
from os import environ, getcwd, remove
from os.path import expanduser, isfile, join
from pytest import raises from pytest import raises
def test_config_ini_via_envvar(): @pytest.fixture
from os import environ,getcwd,remove def temp_ini_files():
from os.path import expanduser, isfile,join 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): with raises(KeyError):
environ["PYCAOSDBINI"] environ["PYCAOSDBINI"]
environ["PYCAOSDBINI"] = "bla bla" environ["PYCAOSDBINI"] = "bla bla"
assert 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" environ["PYCAOSDBINI"] = "~/.pycaosdb.ini"
if isfile(expanduser(environ["PYCAOSDBINI"])): assert expanduser("~/.pycaosdb.ini") in db.configuration._read_config_files()
assert expanduser("~/.pycaosdb.ini") in db.configuration._read_config_files("PYCAOSDBINI") # test without envvar
environ.pop("PYCAOSDBINI")
if isfile(join(getcwd(), )): assert expanduser("~/.pycaosdb.ini") in db.configuration._read_config_files()
assert join(getcwd(), "pycaosdb.ini") in db.configuration._read_config_files("PYCAOSDBINI") # test configuration file in cwd
else: assert join(getcwd(), "pycaosdb.ini") in db.configuration._read_config_files()
open("pycaosdb.ini", 'a').close() #create temporary ini file
assert join(getcwd(), "pycaosdb.ini") in db.configuration._read_config_files("PYCAOSDBINI")
remove("pycaosdb.ini")
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment