1#!/bin/bash
2
3# Removes the time from vt stderr output.
4strip_stderr()
5{
6    sed 's/Time elapsed.*/Time elapsed <stripped>/g' | sed 's/file.*/file <stripped>/g'
7}
8
9DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
10VT=${DIR}/../vt
11REF=${DIR}/ref/20.fa.gz
12TMPDIRS="";
13
14NO_TESTS=0
15PASSED_TESTS=0
16
17echo "++++++++++++++++++++++" >&2
18echo "Tests for vt normalize" >&2
19echo "++++++++++++++++++++++" >&2
20
21# create temporary directory and ensure cleanup on termination
22CMDDIR=${DIR}/normalize
23TMPDIR=${CMDDIR}/tmp
24mkdir -p ${TMPDIR}
25TMPDIRS+=" $TMPDIR";
26
27#-----------------------
28echo "testing normalize"
29#-----------------------
30if [ "$1" == "debug" ]; then
31    set -x
32fi
33
34${OUT}${VT} \
35            normalize \
36            ${CMDDIR}/01_IN.vcf \
37            -r ${REF} \
38            -o ${TMPDIR}/01_OUT.vcf \
39            2>&1 | strip_stderr > ${TMPDIR}/01_OUT.stderr
40
41OUT=`diff ${CMDDIR}/01_OUT.vcf ${TMPDIR}/01_OUT.vcf`
42ERR=`diff ${CMDDIR}/01_OUT.stderr ${TMPDIR}/01_OUT.stderr`
43
44set +x
45
46((NO_TESTS++))
47
48echo -n "             output VCF file :"
49if [ "$OUT" == "" ]; then
50    echo " ok"
51    ((PASSED_TESTS++))
52else
53    echo " NOT OK!!!"
54fi
55
56echo -n "             output logs     :"
57if [ "$ERR" == "" ]; then
58    echo " ok"
59else
60    echo " NOT OK!!!"
61fi
62
63echo "+++++++++++++++++++++++++++++++" >&2
64echo "Tests for vt decompose_blocksub" >&2
65echo "+++++++++++++++++++++++++++++++" >&2
66
67# create temporary directory and ensure cleanup on termination
68CMDDIR=${DIR}/decompose_blocksub
69TMPDIR=${CMDDIR}/tmp
70mkdir -p ${TMPDIR}
71TMPDIRS+=" $TMPDIR";
72
73#------------------------------------------------------
74echo "testing decompose_blocksub of even-length blocks"
75#------------------------------------------------------
76
77if [ "$1" == "debug" ]; then
78    set -x
79fi
80
81${VT} \
82    decompose_blocksub \
83    ${CMDDIR}/01_IN_even_length.vcf \
84    -o ${TMPDIR}/01_OUT_even_length.vcf \
85    2>&1 | strip_stderr > ${TMPDIR}/01_OUT_even_length.stderr
86
87OUT=`diff ${CMDDIR}/01_OUT_even_length.vcf ${TMPDIR}/01_OUT_even_length.vcf`
88ERR=`diff ${CMDDIR}/01_OUT_even_length.stderr ${TMPDIR}/01_OUT_even_length.stderr`
89
90set +x
91
92((NO_TESTS++))
93
94echo -n "             output VCF file :"
95if [ "$OUT" == "" ]; then
96    echo " ok"
97    ((PASSED_TESTS++))
98else
99    echo " NOT OK!!!"
100fi
101
102echo -n "             output logs     :"
103if [ "$ERR" == "" ]; then
104    echo " ok"
105else
106    echo " NOT OK!!!"
107fi
108
109#-----------------------------------------------
110echo "testing decompose_blocksub with alignment"
111#-----------------------------------------------
112
113if [ "$1" == "debug" ]; then
114    set -x
115fi
116
117${VT} \
118    decompose_blocksub -a \
119    ${CMDDIR}/02_IN_uneven_length.vcf \
120    -o ${TMPDIR}/02_OUT_uneven_length.vcf \
121    2>&1 | strip_stderr > ${TMPDIR}/02_OUT_uneven_length.stderr \
122
123OUT=`diff ${CMDDIR}/02_OUT_uneven_length.vcf ${TMPDIR}/02_OUT_uneven_length.vcf`
124ERR=`diff ${CMDDIR}/02_OUT_uneven_length.stderr ${TMPDIR}/02_OUT_uneven_length.stderr`
125
126set +x
127
128((NO_TESTS++))
129
130echo -n "             output VCF file :"
131if [ "$OUT" == "" ]; then
132    echo " ok"
133    ((PASSED_TESTS++))
134else
135    echo " NOT OK!!!"
136fi
137
138echo -n "             output logs     :"
139if [ "$ERR" == "" ]; then
140    echo " ok"
141else
142    echo " NOT OK!!!"
143fi
144
145#-------------------------------------------------------------
146echo "testing decompose_blocksub of phased even-length blocks"
147#-------------------------------------------------------------
148
149if [ "$1" == "debug" ]; then
150    set -x
151fi
152
153${VT} \
154    decompose_blocksub \
155    -p \
156    ${CMDDIR}/03_IN_phased_even_length.vcf \
157    -o ${TMPDIR}/03_OUT_phased_even_length.vcf \
158    2>&1 | strip_stderr > ${TMPDIR}/03_OUT_phased_even_length.stderr
159
160OUT=`diff ${CMDDIR}/03_OUT_phased_even_length.vcf ${TMPDIR}/03_OUT_phased_even_length.vcf`
161ERR=`diff ${CMDDIR}/03_OUT_phased_even_length.stderr ${TMPDIR}/03_OUT_phased_even_length.stderr`
162
163set +x
164
165((NO_TESTS++))
166
167echo -n "             output VCF file :"
168if [ "$OUT" == "" ]; then
169    echo " ok"
170    ((PASSED_TESTS++))
171else
172    echo " NOT OK!!!"
173fi
174
175echo -n "             output logs     :"
176if [ "$ERR" == "" ]; then
177    echo " ok"
178else
179    echo " NOT OK!!!"
180fi
181
182trap "rm -rf ${TMPDIRS}" EXIT KILL TERM INT HUP
183
184echo "++++++++++++++++++++++" >&2
185echo "Tests for vt decompose" >&2
186echo "++++++++++++++++++++++" >&2
187
188# create temporary directory and ensure cleanup on termination
189CMDDIR=${DIR}/decompose
190TMPDIR=${CMDDIR}/tmp
191mkdir -p ${TMPDIR}
192TMPDIRS+=" $TMPDIR";
193
194#-----------------------
195echo "testing decompose for a triallelic variant"
196#-----------------------
197
198if [ "$1" == "debug" ]; then
199    set -x
200fi
201
202${VT} \
203    decompose \
204    ${CMDDIR}/01_IN_multi.vcf \
205    -o ${TMPDIR}/01_OUT_multi.vcf \
206    2>&1 | strip_stderr > ${TMPDIR}/01_OUT_multi.stderr
207
208OUT=`diff ${CMDDIR}/01_OUT_multi.vcf ${TMPDIR}/01_OUT_multi.vcf`
209ERR=`diff ${CMDDIR}/01_OUT_multi.stderr ${TMPDIR}/01_OUT_multi.stderr`
210
211set +x
212
213((NO_TESTS++))
214
215echo -n "             output VCF file :"
216if [ "$OUT" == "" ]; then
217    echo " ok"
218    ((PASSED_TESTS++))
219else
220    echo " NOT OK!!!"
221fi
222
223echo -n "             output logs     :"
224if [ "$ERR" == "" ]; then
225    echo " ok"
226else
227    echo " NOT OK!!!"
228fi
229
230trap "rm -rf ${TMPDIRS}" EXIT KILL TERM INT HUP
231
232echo
233echo -n Passed tests :
234echo -n " "
235echo -n ${PASSED_TESTS}
236echo -n " / "
237echo ${NO_TESTS}
238