Completed
Push — master ( 6ef2f5...b75cb1 )
by Satoru
53s
created

Test.test_10_find_by_file()   A

Complexity

Conditions 4

Size

Total Lines 17

Duplication

Lines 17
Ratio 100 %

Importance

Changes 0
Metric Value
cc 4
dl 17
loc 17
rs 9.2
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A Test.test_20_find_parser_by_type__ng_cases() 0 4 1
A Test.test_22_find_parser_by_type() 0 3 1
1
#
2
# Copyright (C) 2012 - 2015 Satoru SATOH <ssato @ redhat.com>
3
# License: MIT
4
#
5
# pylint: disable=missing-docstring, invalid-name, protected-access
6
from __future__ import absolute_import
7
8
import os.path
9
import unittest
10
import anyconfig.backend.json
11
import anyconfig.backends as TT
12
import anyconfig.ioinfo
13
14
from anyconfig.compat import pathlib
15
from anyconfig.globals import UnknownParserTypeError, UnknownFileTypeError
16
17
18
CNF_PATH = os.path.join(os.path.dirname(__file__), "00-cnf.json")
19
20
21
class Test(unittest.TestCase):
22
23
    def test_10_list_types(self):
24
        types = TT.list_types()
25
26
        self.assertTrue(isinstance(types, list))
27
        self.assertTrue(bool(list))  # ensure it's not empty.
28
29
    def test_20_find_parser_by_type__ng_cases(self):
30
        self.assertRaises(ValueError, TT.find_parser_by_type, None)
31
        self.assertRaises(UnknownParserTypeError, TT.find_parser_by_type,
32
                          "_unkonw_type_")
33
34
    def test_22_find_parser_by_type(self):
35
        self.assertTrue(isinstance(TT.find_parser_by_type("json"),
36
                                   anyconfig.backend.json.Parser))
37
38
    def test_30_find_parser_ng_cases(self):
39
        self.assertRaises(ValueError, TT.find_parser, None)
40
        self.assertRaises(UnknownParserTypeError, TT.find_parser, None,
41
                          "_unkonw_type_")
42
        self.assertRaises(UnknownFileTypeError, TT.find_parser,
43
                          "cnf.unknown_ext")
44
45
    def test_32_find_parser_ng_cases(self):
46
        pcls = anyconfig.backend.json.Parser
47
        self.assertTrue(isinstance(TT.find_parser("x.conf",
48
                                                  forced_type="json"),
49
                                   pcls))
50
        self.assertTrue(isinstance(TT.find_parser("x.json"), pcls))
51
52
        cnf = os.path.join(os.path.dirname(__file__), "00-cnf.json")
53
        with open(cnf) as inp:
54
            self.assertTrue(isinstance(TT.find_parser(inp), pcls))
55
56
        if pathlib is not None:
57
            inp = pathlib.Path("x.json")
58
            self.assertTrue(isinstance(TT.find_parser(inp), pcls))
59
60
    def test_34_find_parser__input_object(self):
61
        inp = anyconfig.ioinfo.make(CNF_PATH,
62
                                    TT._PARSERS_BY_EXT, TT._PARSERS_BY_TYPE)
63
        psr = TT.find_parser(inp)
64
        self.assertTrue(isinstance(psr, anyconfig.backend.json.Parser))
65
66
# vim:sw=4:ts=4:et:
67