-
Notifications
You must be signed in to change notification settings - Fork 25
/
test.py
executable file
·90 lines (67 loc) · 3.14 KB
/
test.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#!/usr/bin/env python
import os
from tempfile import TemporaryDirectory
from subprocess import check_output, check_call
from sys import argv, stderr, exit
import hashlib
def local_test():
out = check_output([test_bin + "/testLocal", test_bw])
md5sum = hashlib.md5(out).hexdigest()
assert md5sum == "1c52065211fdc44eea45751a9cbfffe0"
def remote_http_test():
if not os.path.exists(test_bin + "/testRemote"):
print("libBigWig was compiled without CURL. Skipping test with testRemote!", file=stderr)
return
out = check_output([test_bin + "/testRemote",
"http://hgdownload.cse.ucsc.edu/goldenPath/hg19/encodeDCC/wgEncodeMapability/wgEncodeCrgMapabilityAlign50mer.bigWig"])
md5sum = hashlib.md5(out).hexdigest()
assert md5sum == "9ccecd6c32ff31042714c1da3c0d0eba"
def test_recreating_file():
with TemporaryDirectory(prefix="libbigwig-test") as tmpdir:
tmpout = os.path.join(tmpdir, "output.bw")
p1 = check_call([test_bin + "/testWrite", test_bw, tmpout])
assert p1 == 0
with open(tmpout, mode="rb") as f:
md5sum = hashlib.md5(f.read()).hexdigest()
assert md5sum == "8e116bd114ffd2eb625011d451329c03"
def test_creation_from_scratch():
with TemporaryDirectory(prefix="libbigwig-test") as tmpdir:
tmpout = os.path.join(tmpdir, "test", "example_output.bw")
os.mkdir(os.path.dirname(tmpout))
p1 = check_call([test_bin + "/exampleWrite"], cwd=tmpdir)
assert p1 == 0
with open(tmpout, mode="rb") as f:
md5sum = hashlib.md5(f.read()).hexdigest()
assert md5sum == "ef104f198c6ce8310acc149d0377fc16"
def remote_test2():
## Ensure that we can properly parse chromosome trees with non-leaf nodes
# The UCSC FTP site is timing out for OSX!
if not os.path.exists(test_bin + "/testRemoteManyContigs"):
print("libBigWig was compiled without CURL. Skipping test with testRemoteManyContigs!", file=stderr)
return
out = check_output([test_bin + "/testRemoteManyContigs",
"http://hgdownload.cse.ucsc.edu/gbdb/dm6/bbi/gc5BaseBw/gc5Base.bw"])
md5sum = hashlib.md5(out).hexdigest()
assert md5sum == "a15a3120c03ba44a81b025ebd411966c"
def test_bigbed():
if not os.path.exists(test_bin + "/testBigBed"):
print("libBigWig was compiled without CURL. Skipping test with testBigBed!", file=stderr)
return
out = check_output([test_bin + "/testBigBed",
"https://www.encodeproject.org/files/ENCFF001JBR/@@download/ENCFF001JBR.bigBed"])
md5sum = hashlib.md5(out).hexdigest()
assert md5sum == "33ef99571bdaa8c9130149e99332b17b"
if __name__ == "__main__":
if len(argv) != 3:
print("Usage: {} path/to/test/bin path/to/test.bw".format(argv[0]), file=stderr)
print("Example: {} build/test/ test/test.bw".format(argv[0]), file=stderr)
exit(1)
test_bin = os.path.abspath(argv[1])
test_bw = os.path.abspath(argv[2])
local_test()
remote_http_test()
test_recreating_file()
test_creation_from_scratch()
remote_test2()
test_bigbed()
print("success", file=stderr)