diff --git a/CMakeLists.txt b/CMakeLists.txt index 115189d1..2b4457e2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -45,15 +45,30 @@ add_subdirectory(fortran/dmftproj) message(STATUS "TRIQS : Adding compilation flags detected by the library (C++11/14, libc++, etc...) ") add_subdirectory(c++) -add_subdirectory(python) +add_subdirectory(python python/triqs_dft_tools) add_subdirectory(shells) #------------------------ # tests #------------------------ - + +option(TEST_COVERAGE "Analyze the coverage of tests" OFF) + +# perform tests with coverage info +if (${TEST_COVERAGE}) + # we try to locate the coverage program + find_program(PYTHON_COVERAGE python-coverage) + find_program(PYTHON_COVERAGE coverage) + if(NOT PYTHON_COVERAGE) + message(FATAL_ERROR "Program coverage (or python-coverage) not found.\nEither set PYTHON_COVERAGE explicitly or disable TEST_COVERAGE!\nYou need to install the python package coverage, e.g. with\n pip install coverage\nor with\n apt install python-coverage") + endif() + + message(STATUS "Setting up test coverage") + add_custom_target(coverage ${PYTHON_COVERAGE} combine --append .coverage plovasp/.coverage || true COMMAND ${PYTHON_COVERAGE} html COMMAND echo "Open ${CMAKE_BINARY_DIR}/test/htmlcov/index.html in browser!" WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/test) +endif() + enable_testing() - + option(Build_Tests "Build the tests of the library " ON) if (Build_Tests) message(STATUS "-------- Preparing tests -------------") diff --git a/doc/conf.py.in b/doc/conf.py.in index 482b845f..32f60a1e 100644 --- a/doc/conf.py.in +++ b/doc/conf.py.in @@ -4,6 +4,7 @@ import sys sys.path.insert(0, "@TRIQS_SPHINXEXT_PATH@/numpydoc") +sys.path.insert(0, "@CMAKE_BINARY_DIR@/python") extensions = ['sphinx.ext.autodoc', 'sphinx.ext.mathjax', diff --git a/doc/install.rst b/doc/install.rst index 0db1fc0e..36697638 100644 --- a/doc/install.rst +++ b/doc/install.rst @@ -123,3 +123,7 @@ Functionality of ``dft_tools`` can be tweaked using extra compile-time options p +---------------------------------------------------------------+-----------------------------------------------+ | Build the documentation locally | -DBuild_Documentation=ON | +---------------------------------------------------------------+-----------------------------------------------+ +| Check test coverage when testing | -DTEST_COVERAGE=ON | +| (run ``make coverage`` to show the results; requires the | | +| python ``coverage`` package) | | ++---------------------------------------------------------------+-----------------------------------------------+ diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index c5b33ea6..758ea139 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -7,8 +7,14 @@ FILE(COPY SrVO3.pmat SrVO3.struct SrVO3.outputs SrVO3.oubwin SrVO3.ctqmcout SrVO # List all tests set(all_tests wien2k_convert hk_convert w90_convert sumkdft_basic srvo3_Gloc srvo3_transp sigma_from_file blockstructure analyse_block_structure_from_gf analyse_block_structure_from_gf2) +set(python_executable python) + +if(${TEST_COVERAGE}) + set(python_executable ${PYTHON_COVERAGE} run --append --source "${CMAKE_BINARY_DIR}/python" ) +endif() + foreach(t ${all_tests}) - add_test(NAME ${t} COMMAND python ${CMAKE_CURRENT_SOURCE_DIR}/${t}.py) + add_test(NAME ${t} COMMAND ${python_executable} ${CMAKE_CURRENT_SOURCE_DIR}/${t}.py) endforeach() # Set the PythonPath : put the build dir first (in case there is an installed version). @@ -17,4 +23,3 @@ set_property(TEST ${all_tests} PROPERTY ENVIRONMENT PYTHONPATH=${CMAKE_BINARY_DI # VASP converter tests add_subdirectory(plovasp) - diff --git a/test/analyse_block_structure_from_gf.py b/test/analyse_block_structure_from_gf.py index 35b699fb..5a831444 100644 --- a/test/analyse_block_structure_from_gf.py +++ b/test/analyse_block_structure_from_gf.py @@ -1,5 +1,5 @@ from pytriqs.gf import * -from sumk_dft import SumkDFT +from triqs_dft_tools.sumk_dft import SumkDFT from scipy.linalg import expm import numpy as np from pytriqs.utility.comparison_tests import assert_gfs_are_close, assert_arrays_are_close, assert_block_gfs_are_close diff --git a/test/analyse_block_structure_from_gf2.py b/test/analyse_block_structure_from_gf2.py index 6ada6717..19553af8 100644 --- a/test/analyse_block_structure_from_gf2.py +++ b/test/analyse_block_structure_from_gf2.py @@ -1,5 +1,5 @@ from pytriqs.gf import * -from sumk_dft import SumkDFT +from triqs_dft_tools.sumk_dft import SumkDFT import numpy as np from pytriqs.utility.comparison_tests import assert_block_gfs_are_close diff --git a/test/blockstructure.py b/test/blockstructure.py index ea2c7310..f7a68e5b 100644 --- a/test/blockstructure.py +++ b/test/blockstructure.py @@ -1,8 +1,8 @@ -from sumk_dft import * +from triqs_dft_tools.sumk_dft import * from pytriqs.utility.h5diff import h5diff from pytriqs.gf import * from pytriqs.utility.comparison_tests import assert_block_gfs_are_close -from block_structure import BlockStructure +from triqs_dft_tools.block_structure import BlockStructure SK = SumkDFT('blockstructure.in.h5',use_dft_blocks=True) diff --git a/test/hk_convert.py b/test/hk_convert.py index e1d72893..f4c048c7 100644 --- a/test/hk_convert.py +++ b/test/hk_convert.py @@ -25,7 +25,7 @@ from pytriqs.archive import * from pytriqs.utility.h5diff import h5diff import pytriqs.utility.mpi as mpi -from converters import * +from triqs_dft_tools.converters import * Converter = HkConverter(filename='hk_convert_hamiltonian.hk',hdf_filename='hk_convert.out.h5') diff --git a/test/plovasp/CMakeLists.txt b/test/plovasp/CMakeLists.txt index 57e6877c..aa3f6a4e 100644 --- a/test/plovasp/CMakeLists.txt +++ b/test/plovasp/CMakeLists.txt @@ -12,7 +12,7 @@ FILE(COPY ${all_tests} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) FILE(COPY run_suite.py DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) foreach(t ${all_tests}) - add_test(NAME ${t} COMMAND python run_suite.py ${t}) + add_test(NAME ${t} COMMAND ${python_executable} run_suite.py ${t}) endforeach() set_property(TEST ${all_tests} PROPERTY ENVIRONMENT PYTHONPATH=${CMAKE_BINARY_DIR}/python:$ENV{PYTHONPATH} ) diff --git a/test/plovasp/atm/test_atm.py b/test/plovasp/atm/test_atm.py index 913fc40a..864d93b8 100644 --- a/test/plovasp/atm/test_atm.py +++ b/test/plovasp/atm/test_atm.py @@ -2,7 +2,7 @@ import os import numpy as np -from converters.plovasp.atm import dos_tetra_weights_3d +from triqs_dft_tools.converters.plovasp.atm import dos_tetra_weights_3d import mytest ################################################################################ diff --git a/test/plovasp/inpconf/test_general.py b/test/plovasp/inpconf/test_general.py index 14d04b3f..ce7770ee 100644 --- a/test/plovasp/inpconf/test_general.py +++ b/test/plovasp/inpconf/test_general.py @@ -7,7 +7,7 @@ _rpath = os.path.dirname(rpath.__file__) + '/' import arraytest import numpy as np -from converters.plovasp.inpconf import ConfigParameters +from triqs_dft_tools.converters.plovasp.inpconf import ConfigParameters ################################################################################ # diff --git a/test/plovasp/inpconf/test_groups.py b/test/plovasp/inpconf/test_groups.py index b1d7153f..e671ee15 100644 --- a/test/plovasp/inpconf/test_groups.py +++ b/test/plovasp/inpconf/test_groups.py @@ -7,7 +7,7 @@ _rpath = os.path.dirname(rpath.__file__) + '/' import arraytest import numpy as np -from converters.plovasp.inpconf import ConfigParameters +from triqs_dft_tools.converters.plovasp.inpconf import ConfigParameters ################################################################################ # diff --git a/test/plovasp/inpconf/test_input.py b/test/plovasp/inpconf/test_input.py index 9766ea1e..1bd589ce 100644 --- a/test/plovasp/inpconf/test_input.py +++ b/test/plovasp/inpconf/test_input.py @@ -7,7 +7,7 @@ _rpath = os.path.dirname(rpath.__file__) + '/' import arraytest import numpy as np -from converters.plovasp.inpconf import ConfigParameters +from triqs_dft_tools.converters.plovasp.inpconf import ConfigParameters ################################################################################ # diff --git a/test/plovasp/inpconf/test_parameter_set.py b/test/plovasp/inpconf/test_parameter_set.py index c6748086..f42b4f76 100644 --- a/test/plovasp/inpconf/test_parameter_set.py +++ b/test/plovasp/inpconf/test_parameter_set.py @@ -7,7 +7,7 @@ _rpath = os.path.dirname(rpath.__file__) + '/' import arraytest import numpy as np -from converters.plovasp.inpconf import ConfigParameters +from triqs_dft_tools.converters.plovasp.inpconf import ConfigParameters ################################################################################ # diff --git a/test/plovasp/inpconf/test_shells.py b/test/plovasp/inpconf/test_shells.py index 98220d2b..e4d3faa9 100644 --- a/test/plovasp/inpconf/test_shells.py +++ b/test/plovasp/inpconf/test_shells.py @@ -7,7 +7,7 @@ _rpath = os.path.dirname(rpath.__file__) + '/' import arraytest import numpy as np -from converters.plovasp.inpconf import ConfigParameters +from triqs_dft_tools.converters.plovasp.inpconf import ConfigParameters ################################################################################ # diff --git a/test/plovasp/inpconf/test_special_parsers.py b/test/plovasp/inpconf/test_special_parsers.py index a751f480..e7d52ec2 100644 --- a/test/plovasp/inpconf/test_special_parsers.py +++ b/test/plovasp/inpconf/test_special_parsers.py @@ -7,7 +7,7 @@ _rpath = os.path.dirname(rpath.__file__) + '/' import arraytest import numpy as np -from converters.plovasp.inpconf import ConfigParameters +from triqs_dft_tools.converters.plovasp.inpconf import ConfigParameters ################################################################################ # diff --git a/test/plovasp/plocar_io/test_fileio.py b/test/plovasp/plocar_io/test_fileio.py index 59e013af..fc6c2bed 100644 --- a/test/plovasp/plocar_io/test_fileio.py +++ b/test/plovasp/plocar_io/test_fileio.py @@ -3,7 +3,7 @@ Tests of 'read_plocar()' from module 'plocar_io.c_plocar_io' """ import mytest import numpy as np -from plocar_io.c_plocar_io import read_plocar +from triqs_dft_tools.plocar_io.c_plocar_io import read_plocar ################################################################################ # diff --git a/test/plovasp/plotools/test_consistency.py b/test/plovasp/plotools/test_consistency.py index 216e89f7..8b79935c 100644 --- a/test/plovasp/plotools/test_consistency.py +++ b/test/plovasp/plotools/test_consistency.py @@ -1,8 +1,8 @@ -import converters.plovasp.vaspio -from converters.plovasp.inpconf import ConfigParameters -from converters.plovasp.plotools import check_data_consistency -from converters.plovasp.elstruct import ElectronicStructure +import triqs_dft_tools.converters.plovasp.vaspio +from triqs_dft_tools.converters.plovasp.inpconf import ConfigParameters +from triqs_dft_tools.converters.plovasp.plotools import check_data_consistency +from triqs_dft_tools.converters.plovasp.elstruct import ElectronicStructure import mytest ################################################################################ diff --git a/test/plovasp/proj_group/test_block_map.py b/test/plovasp/proj_group/test_block_map.py index 80d6fd04..27570c0e 100644 --- a/test/plovasp/proj_group/test_block_map.py +++ b/test/plovasp/proj_group/test_block_map.py @@ -4,9 +4,9 @@ import rpath _rpath = os.path.dirname(rpath.__file__) + '/' import numpy as np -from converters.plovasp.inpconf import ConfigParameters -from converters.plovasp.proj_shell import ProjectorShell -from converters.plovasp.proj_group import ProjectorGroup +from triqs_dft_tools.converters.plovasp.inpconf import ConfigParameters +from triqs_dft_tools.converters.plovasp.proj_shell import ProjectorShell +from triqs_dft_tools.converters.plovasp.proj_group import ProjectorGroup import mytest ################################################################################ diff --git a/test/plovasp/proj_group/test_one_site.py b/test/plovasp/proj_group/test_one_site.py index 8a777d10..cdb4d33c 100644 --- a/test/plovasp/proj_group/test_one_site.py +++ b/test/plovasp/proj_group/test_one_site.py @@ -4,11 +4,11 @@ import rpath _rpath = os.path.dirname(rpath.__file__) + '/' import numpy as np -from converters.plovasp.vaspio import VaspData -from converters.plovasp.elstruct import ElectronicStructure -from converters.plovasp.inpconf import ConfigParameters -from converters.plovasp.proj_shell import ProjectorShell -from converters.plovasp.proj_group import ProjectorGroup +from triqs_dft_tools.converters.plovasp.vaspio import VaspData +from triqs_dft_tools.converters.plovasp.elstruct import ElectronicStructure +from triqs_dft_tools.converters.plovasp.inpconf import ConfigParameters +from triqs_dft_tools.converters.plovasp.proj_shell import ProjectorShell +from triqs_dft_tools.converters.plovasp.proj_group import ProjectorGroup from pytriqs.archive import HDFArchive import mytest diff --git a/test/plovasp/proj_group/test_select_bands.py b/test/plovasp/proj_group/test_select_bands.py index 4d53c42b..10f59ef8 100644 --- a/test/plovasp/proj_group/test_select_bands.py +++ b/test/plovasp/proj_group/test_select_bands.py @@ -4,11 +4,11 @@ import rpath _rpath = os.path.dirname(rpath.__file__) + '/' import numpy as np -from converters.plovasp.vaspio import VaspData -from converters.plovasp.elstruct import ElectronicStructure -from converters.plovasp.inpconf import ConfigParameters -from converters.plovasp.proj_shell import ProjectorShell -from converters.plovasp.proj_group import ProjectorGroup +from triqs_dft_tools.converters.plovasp.vaspio import VaspData +from triqs_dft_tools.converters.plovasp.elstruct import ElectronicStructure +from triqs_dft_tools.converters.plovasp.inpconf import ConfigParameters +from triqs_dft_tools.converters.plovasp.proj_shell import ProjectorShell +from triqs_dft_tools.converters.plovasp.proj_group import ProjectorGroup import mytest ################################################################################ diff --git a/test/plovasp/proj_group/test_two_site.py b/test/plovasp/proj_group/test_two_site.py index 8db9b951..f3959447 100644 --- a/test/plovasp/proj_group/test_two_site.py +++ b/test/plovasp/proj_group/test_two_site.py @@ -4,11 +4,11 @@ import rpath _rpath = os.path.dirname(rpath.__file__) + '/' import numpy as np -from converters.plovasp.vaspio import VaspData -from converters.plovasp.elstruct import ElectronicStructure -from converters.plovasp.inpconf import ConfigParameters -from converters.plovasp.proj_shell import ProjectorShell -from converters.plovasp.proj_group import ProjectorGroup +from triqs_dft_tools.converters.plovasp.vaspio import VaspData +from triqs_dft_tools.converters.plovasp.elstruct import ElectronicStructure +from triqs_dft_tools.converters.plovasp.inpconf import ConfigParameters +from triqs_dft_tools.converters.plovasp.proj_shell import ProjectorShell +from triqs_dft_tools.converters.plovasp.proj_group import ProjectorGroup from pytriqs.archive import HDFArchive import mytest diff --git a/test/plovasp/proj_shell/test_projshells.py b/test/plovasp/proj_shell/test_projshells.py index 97e1693f..244821b8 100644 --- a/test/plovasp/proj_shell/test_projshells.py +++ b/test/plovasp/proj_shell/test_projshells.py @@ -4,11 +4,11 @@ import rpath _rpath = os.path.dirname(rpath.__file__) + '/' import numpy as np -from converters.plovasp.vaspio import VaspData -from converters.plovasp.elstruct import ElectronicStructure -from converters.plovasp.inpconf import ConfigParameters -from converters.plovasp.proj_shell import ProjectorShell -from converters.plovasp.proj_group import ProjectorGroup +from triqs_dft_tools.converters.plovasp.vaspio import VaspData +from triqs_dft_tools.converters.plovasp.elstruct import ElectronicStructure +from triqs_dft_tools.converters.plovasp.inpconf import ConfigParameters +from triqs_dft_tools.converters.plovasp.proj_shell import ProjectorShell +from triqs_dft_tools.converters.plovasp.proj_group import ProjectorGroup import mytest ################################################################################ diff --git a/test/plovasp/vaspio/test_doscar.py b/test/plovasp/vaspio/test_doscar.py index 68148d75..8c43f8f2 100644 --- a/test/plovasp/vaspio/test_doscar.py +++ b/test/plovasp/vaspio/test_doscar.py @@ -7,7 +7,7 @@ _rpath = os.path.dirname(rpath.__file__) + '/' import mytest import numpy as np -from converters.plovasp.vaspio import Doscar +from triqs_dft_tools.converters.plovasp.vaspio import Doscar ################################################################################ # diff --git a/test/plovasp/vaspio/test_eigenval.py b/test/plovasp/vaspio/test_eigenval.py index 4cca5a8d..ec3264e8 100644 --- a/test/plovasp/vaspio/test_eigenval.py +++ b/test/plovasp/vaspio/test_eigenval.py @@ -7,7 +7,7 @@ _rpath = os.path.dirname(rpath.__file__) + '/' import mytest import numpy as np -from converters.plovasp.vaspio import Eigenval +from triqs_dft_tools.converters.plovasp.vaspio import Eigenval ################################################################################ # diff --git a/test/plovasp/vaspio/test_kpoints.py b/test/plovasp/vaspio/test_kpoints.py index 43f67ef3..f7410c3b 100644 --- a/test/plovasp/vaspio/test_kpoints.py +++ b/test/plovasp/vaspio/test_kpoints.py @@ -7,7 +7,7 @@ _rpath = os.path.dirname(rpath.__file__) + '/' import mytest import numpy as np -from converters.plovasp.vaspio import Kpoints +from triqs_dft_tools.converters.plovasp.vaspio import Kpoints ################################################################################ # diff --git a/test/plovasp/vaspio/test_poscar.py b/test/plovasp/vaspio/test_poscar.py index 25d37080..3ec48e16 100644 --- a/test/plovasp/vaspio/test_poscar.py +++ b/test/plovasp/vaspio/test_poscar.py @@ -7,7 +7,7 @@ _rpath = os.path.dirname(rpath.__file__) + '/' import mytest import numpy as np -from converters.plovasp.vaspio import Poscar +from triqs_dft_tools.converters.plovasp.vaspio import Poscar ################################################################################ # diff --git a/test/sigma_from_file.py b/test/sigma_from_file.py index ccf88280..ac4a83cd 100644 --- a/test/sigma_from_file.py +++ b/test/sigma_from_file.py @@ -22,7 +22,7 @@ from pytriqs.archive import * from pytriqs.gf import * from pytriqs.gf.tools import * -from sumk_dft_tools import * +from triqs_dft_tools.sumk_dft_tools import * from pytriqs.utility.comparison_tests import * import numpy as np diff --git a/test/srvo3_Gloc.py b/test/srvo3_Gloc.py index 16988433..181101c2 100644 --- a/test/srvo3_Gloc.py +++ b/test/srvo3_Gloc.py @@ -21,8 +21,8 @@ from pytriqs.archive import * from pytriqs.gf import * -from sumk_dft import * -from converters.wien2k_converter import * +from triqs_dft_tools.sumk_dft import * +from triqs_dft_tools.converters.wien2k_converter import * from pytriqs.operators.util import set_operator_structure from pytriqs.utility.comparison_tests import * from pytriqs.utility.h5diff import h5diff diff --git a/test/srvo3_transp.py b/test/srvo3_transp.py index 0ec8b91c..91b612b2 100644 --- a/test/srvo3_transp.py +++ b/test/srvo3_transp.py @@ -20,9 +20,9 @@ ################################################################################ from numpy import * -from converters.wien2k_converter import * -from sumk_dft import * -from sumk_dft_tools import * +from triqs_dft_tools.converters.wien2k_converter import * +from triqs_dft_tools.sumk_dft import * +from triqs_dft_tools.sumk_dft_tools import * from pytriqs.utility.comparison_tests import * from pytriqs.utility.h5diff import h5diff diff --git a/test/sumkdft_basic.py b/test/sumkdft_basic.py index 52dd1a48..7f41b816 100644 --- a/test/sumkdft_basic.py +++ b/test/sumkdft_basic.py @@ -21,7 +21,7 @@ ################################################################################ from pytriqs.archive import * -from sumk_dft_tools import SumkDFTTools +from triqs_dft_tools.sumk_dft_tools import SumkDFTTools import pytriqs.utility.mpi as mpi from pytriqs.utility.comparison_tests import * from pytriqs.utility.h5diff import h5diff diff --git a/test/w90_convert.py b/test/w90_convert.py index 1c483e50..5ab531e2 100644 --- a/test/w90_convert.py +++ b/test/w90_convert.py @@ -21,7 +21,7 @@ ################################################################################ -from converters import * +from triqs_dft_tools.converters import * from pytriqs.archive import * from pytriqs.utility.h5diff import h5diff import pytriqs.utility.mpi as mpi diff --git a/test/wien2k_convert.py b/test/wien2k_convert.py index 77076068..215200fc 100644 --- a/test/wien2k_convert.py +++ b/test/wien2k_convert.py @@ -25,7 +25,7 @@ from pytriqs.utility.comparison_tests import * from pytriqs.utility.h5diff import h5diff import pytriqs.utility.mpi as mpi -from converters import Wien2kConverter +from triqs_dft_tools.converters import Wien2kConverter Converter = Wien2kConverter(filename='SrVO3') Converter.hdf_file = 'wien2k_convert.out.h5'