Skip to content

Commit

Permalink
pythonPackages.pysam: add libdeflate and enable tests
Browse files Browse the repository at this point in the history
Some tests still fail due to upstream reasons so we skip those.

Note also that we are not using nix's pytestCheckHook due to
pysam detecting how it's loaded which conflicts with how
pytestCheckHook runs tests. In addition, the selection mode used
by disabledTests causes more tests than the failing ones to be
skipped, which is undesired.
See the discussion in #100823
  • Loading branch information
unode committed Oct 18, 2020
1 parent 57adf7c commit b6bd168
Showing 1 changed file with 57 additions and 6 deletions.
63 changes: 57 additions & 6 deletions pkgs/development/python-modules/pysam/default.nix
Expand Up @@ -6,6 +6,7 @@
, curl
, cython
, htslib
, libdeflate
, lzma
, pytest
, samtools
Expand All @@ -27,22 +28,72 @@ buildPythonPackage rec {
};

nativeBuildInputs = [ samtools ];
buildInputs = [ bzip2 curl cython lzma zlib ];
buildInputs = [
bzip2
curl
cython
libdeflate
lzma
zlib
];

# Use nixpkgs' htslib instead of the bundled one
# See https://pysam.readthedocs.io/en/latest/installation.html#external
# NOTE that htslib should be version compatible with pysam
preBuild = ''
export HTSLIB_MODE=shared
export HTSLIB_LIBRARY_DIR=${htslib}/lib
export HTSLIB_INCLUDE_DIR=${htslib}/include
'';

checkInputs = [ pytest bcftools htslib ];
checkPhase = "py.test";
checkInputs = [
pytest
bcftools
htslib
];

# tests require samtools<=1.9
doCheck = false;
preCheck = ''
# See https://github.com/NixOS/nixpkgs/pull/100823 for why we aren't using
# disabledTests and pytestFlagsArray through pytestCheckHook
checkPhase = ''
# Needed to avoid /homeless-shelter error
export HOME=$(mktemp -d)
# To avoid API incompatibilities, these should ideally show the same version
echo "> samtools --version"
samtools --version
echo "> htsfile --version"
htsfile --version
echo "> bcftools --version"
bcftools --version
# Create auxiliary test data
make -C tests/pysam_data
make -C tests/cbcf_data
# Delete pysam folder in current directory to avoid importing it during testing
rm -rf pysam
# Deselect tests that are known to fail due to upstream issues
# See https://github.com/pysam-developers/pysam/issues/961
py.test \
--deselect tests/AlignmentFileHeader_test.py::TestHeaderBAM::test_dictionary_access_works \
--deselect tests/AlignmentFileHeader_test.py::TestHeaderBAM::test_header_content_is_as_expected \
--deselect tests/AlignmentFileHeader_test.py::TestHeaderCRAM::test_dictionary_access_works \
--deselect tests/AlignmentFileHeader_test.py::TestHeaderCRAM::test_header_content_is_as_expected \
--deselect tests/AlignmentFile_test.py::TestIO::testBAM2SAM \
--deselect tests/AlignmentFile_test.py::TestIO::testSAM2BAM \
--deselect tests/AlignmentFile_test.py::TestIO::testWriteUncompressedBAMFile \
--deselect tests/AlignmentFile_test.py::TestDeNovoConstruction::testBAMWholeFile \
--deselect tests/AlignmentFile_test.py::TestEmptyHeader::testEmptyHeader \
--deselect tests/AlignmentFile_test.py::TestHeaderWithProgramOptions::testHeader \
--deselect tests/StreamFiledescriptors_test.py::StreamTest::test_text_processing \
tests/
'';

pythonImportsCheck = [
"pysam"
"pysam.bcftools"
"pysam.libchtslib"
"pysam.libcutils"
"pysam.libcvcf"
];
Expand Down

0 comments on commit b6bd168

Please sign in to comment.