Skip to content
Snippets Groups Projects
test_utils.py 1.94 KiB
Newer Older
Venkat Malladi's avatar
Venkat Malladi committed
#!/usr/bin/env python3

import pytest
import utils


STRIP_EXTENSIONS = ['.gz', '.fq', '.fastq', '.fa', '.fasta']

Venkat Malladi's avatar
Venkat Malladi committed
@pytest.fixture
def steps():
    steps = []
    return steps


@pytest.fixture
def steps_1(steps):
    design_file = "test_data/design_ENCSR238SGC_SE.txt"
    step = [
        "grep H3K4me1 %s " % (design_file)]
    return step


@pytest.fixture
def steps_2(steps_1):
    steps_1.extend([
Venkat Malladi's avatar
Venkat Malladi committed
    ])
    return steps_1


Venkat Malladi's avatar
Venkat Malladi committed
@pytest.mark.unit
Venkat Malladi's avatar
Venkat Malladi committed
def test_run_one_step(steps_1, capsys):
    check_output = 'ENCLB144FDT\tENCSR238SGC\tlimb\tH3K4me1\tNone\t1\tENCLB304SBJ\tENCFF833BLU.fastq.gz'.encode('UTF-8')
Venkat Malladi's avatar
Venkat Malladi committed
    out, err = utils.run_pipe(steps_1)
    output, errors = capsys.readouterr()
    assert "first step shlex to stdout" in output
    assert check_output in out


Venkat Malladi's avatar
Venkat Malladi committed
@pytest.mark.unit
Venkat Malladi's avatar
Venkat Malladi committed
def test_run_two_step(steps_2, capsys):
    check_output = 'ENCFF833BLU.fastq.gz\nENCFF646LXU.fastq.gz'.encode('UTF-8')
    out, err = utils.run_pipe(steps_2)
    output, errors = capsys.readouterr()
    assert "intermediate step 2 shlex to stdout" in output
    assert check_output in out


Venkat Malladi's avatar
Venkat Malladi committed
@pytest.mark.unit
Venkat Malladi's avatar
Venkat Malladi committed
def test_run_last_step_file(steps_2, capsys, tmpdir):
    check_output = 'ENCFF833BLU.fastq.gz\nENCFF646LXU.fastq.gz'
    tmp_outfile = tmpdir.join('output.txt')
    out, err = utils.run_pipe(steps_2, tmp_outfile.strpath)
    output, errors = capsys.readouterr()
    assert "last step shlex" in output
    assert check_output in tmp_outfile.read()
Venkat Malladi's avatar
Venkat Malladi committed
@pytest.mark.unit
def test_strip_extensions():
    filename = utils.strip_extensions('ENCFF833BLU.fastq.gz', STRIP_EXTENSIONS)
    assert filename == 'ENCFF833BLU'


Venkat Malladi's avatar
Venkat Malladi committed
@pytest.mark.unit
def test_strip_extensions_not_valid():
    filename = utils.strip_extensions('ENCFF833BLU.not.valid', STRIP_EXTENSIONS)
    assert filename == 'ENCFF833BLU.not.valid'


Venkat Malladi's avatar
Venkat Malladi committed
@pytest.mark.unit
def test_strip_extensions_missing_basename():
    filename = utils.strip_extensions('.fastq.gz', STRIP_EXTENSIONS)
    assert filename == '.fastq'