File: test.py

package info (click to toggle)
libbigwig 0.4.8%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 476 kB
  • sloc: ansic: 3,615; makefile: 96; python: 64; sh: 27
file content (90 lines) | stat: -rwxr-xr-x 3,215 bytes parent folder | download | duplicates (3)
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)