class TestBaseParser(object):

    def __init__(self):
        self.parser = None

    def setup(self):
        #  HACK alert: have to empty this so we can instantiate the class
        BaseParser.__abstractmethods__ = set()
        self.parser = BaseParser()

    def test_parse_raises(self):
        config = """
            foo:
                bar:
                  - 1
                  - three
                baz: true
        """
        assert_raises(NotImplementedError, self.parser.parse, config)

    def test_parse_file_missing_file_raises(self):
        assert_raises(ParserFailure, self.parser.parse_file, 'missing')

    def test_parse_file_raises(self):
        assert_raises(NotImplementedError, self.parser.parse_file, 'README.md')

    def test_validate_succeeds(self):
        assert_equals(None, self.parser.validate())

    def test_validate_fails_on_bad_schema(self):
        self.parser._stack['monkey'] = 'business'
        assert_raises(ParserFailure, self.parser.validate)
 def setup(self):
     #  HACK alert: have to empty this so we can instantiate the class
     BaseParser.__abstractmethods__ = set()
     self.parser = BaseParser()