File: test_parsers.py

package info (click to toggle)
python-pbcommand 0.2.17-1~bpo8%2B1
  • links: PTS, VCS
  • area: main
  • in suites: jessie-backports
  • size: 556 kB
  • sloc: python: 3,451; makefile: 200
file content (95 lines) | stat: -rw-r--r-- 3,046 bytes parent folder | download
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
91
92
93
94
95
import unittest

from pbcommand.models import TaskTypes, FileTypes, get_pbparser


class TestParsers(unittest.TestCase):
    def test_input_output_files(self):
        p = get_pbparser(
            "pbcommand.tasks.test_parsers",
            "0.1",
            "Display Name",
            "Tool Description ",
            "pbcommand-driver-cmd",
            is_distributed=False,
            nproc=1,
            resource_types=())

        p.add_input_file_type(
            file_type=FileTypes.FASTA,
            file_id="fasta",
            name="Fasta file",
            description="Fasta file description")

        p.add_input_file_type(FileTypes.JSON,
            "json",
            "JSON file",
            "JSON file description")

        p.add_output_file_type(
            file_type=FileTypes.GFF,
            file_id="gff",
            name="GFF file",
            description="GFF file description",
            default_name="annotations.gff")
        tc_contract = p.to_contract()
        d = tc_contract.to_dict()
        inputs = d['tool_contract']['input_types']
        self.assertEqual(inputs, [
            {
                'description': 'Fasta file description',
                'title': 'Fasta file',
                'id': 'fasta',
                'file_type_id': 'PacBio.FileTypes.Fasta'
            },
            {
                'description': 'JSON file description',
                'title': 'JSON file',
                'id': 'json',
                'file_type_id': 'PacBio.FileTypes.json'
            }
        ])
        outputs = d['tool_contract']['output_types']
        self.assertEqual(outputs, [
            {
                'title': 'GFF file',
                'description': 'GFF file description',
                'default_name': 'annotations.gff',
                'id': 'gff',
                'file_type_id': 'PacBio.FileTypes.gff'
            }
        ])

    def test_misc_parser_types(self):
        p = get_pbparser(
            "pbcommand.tasks.test_parsers",
            "0.1.0",
            "Tool Name",
            "Tool Descripion",
            "pbcommand-driver-exe ")

        p.add_int("pbcommand.task_options.n", "n", default=0, name="N",
            description="Integer option")

        p.add_float("pbcommand.task_options.f", "f", default=0, name="F",
            description="Float option")

        # XXX note that the 'default' value is not actually what the option is
        # set to by default - it simply signals that action=store_true
        p.add_boolean("pbcommand.task_options.loud", "loud", default=False,
                      name="Verbose", description="Boolean option")

        pa = p.arg_parser.parser.parse_args

        opts = pa(["--n", "250", "--f", "1.2345", "--loud"])
        self.assertEqual(opts.n, 250)
        self.assertEqual(opts.f, 1.2345)
        self.assertTrue(opts.loud)

        opts2 = pa([])
        self.assertFalse(opts2.loud)

    # TODO we should add a lot more tests for parser behavior

if __name__ == "__main__":
    unittest.main()