Example #1
0
    def test_unknown_tag_wrong_type_comparison(self):
        n1 = ScalarNode(YAML_NS + "xyz", "foo")
        n2 = SequenceNode(YAML_NS + "xyz", [ystr("foo")])
        self.assertFalse(nodes_equal(n1, n2))

        n1 = Node(YAML_NS + "xyz", "foo", None, None)
        n2 = Node(YAML_NS + "xyz", "foo", None, None)
        self.assertFalse(nodes_equal(n1, n2))
Example #2
0
 def test_set_comparison(self):
     null = ScalarNode(YAML_NULL_TAG, "")
     n1 = MappingNode(YAML_SET_TAG, [(ystr("a"), null), (ystr("b"), null)])
     n2 = MappingNode(YAML_SET_TAG, [(ystr("b"), null), (ystr("a"), null)])
     n3 = MappingNode(YAML_SET_TAG, [(ystr("b"), null), (ystr("a"), null),
                                     (ystr("c"), null)])
     n4 = MappingNode(YAML_SET_TAG, [(ystr("b"), null), (ystr("a"), null),
                                     (ystr("d"), null)])
     self.assertTrue(nodes_equal(n1, n2))
     self.assertFalse(nodes_equal(n1, n3))
     self.assertFalse(nodes_equal(n3, n1))
     self.assertFalse(nodes_equal(n3, n4))
     self.assertFalse(nodes_equal(n4, n3))
Example #3
0
 def test_map_misordered_comparison(self):
     n1 = MappingNode(YAML_MAP_TAG, [(ystr("a"), ystr("foo")),
                                     (ystr("b"), ystr("bar"))])
     n2 = MappingNode(YAML_MAP_TAG, [(ystr("b"), ystr("bar")),
                                     (ystr("a"), ystr("foo"))])
     n3 = MappingNode(YAML_MAP_TAG, [(ystr("a"), ystr("bar")),
                                     (ystr("b"), ystr("foo")),
                                     (ystr("c"), ystr("baz"))])
     n4 = MappingNode(YAML_MAP_TAG, [(ystr("a"), ystr("bar")),
                                     (ystr("b"), ystr("foo")),
                                     (ystr("c"), ystr("xxx"))])
     n5 = MappingNode(YAML_MAP_TAG, [(ystr("a"), ystr("bar")),
                                     (ystr("b"), ystr("foo")),
                                     (ystr("d"), ystr("xxx"))])
     self.assertTrue(nodes_equal(n1, n2))
     self.assertTrue(nodes_equal(n2, n1))
     self.assertFalse(nodes_equal(n1, n3))
     self.assertFalse(nodes_equal(n3, n4))
     self.assertFalse(nodes_equal(n4, n5))
Example #4
0
 def test_seq_comparison(self):
     n1 = SequenceNode(YAML_SEQ_TAG, [])
     n2 = SequenceNode(YAML_SEQ_TAG, [ystr("foo")])
     n3 = SequenceNode(YAML_SEQ_TAG, [ystr("foo"), ystr("bar")])
     n4 = SequenceNode(YAML_SEQ_TAG, [ystr("foo"), ystr("bar")])
     n5 = SequenceNode(YAML_SEQ_TAG, [ystr("bar"), ystr("foo")])
     self.assertFalse(nodes_equal(n1, n2))
     self.assertFalse(nodes_equal(n1, n3))
     self.assertFalse(nodes_equal(n2, n3))
     self.assertTrue(nodes_equal(n3, n4))
     self.assertTrue(nodes_equal(n4, n3))
     self.assertFalse(nodes_equal(n3, n5))
Example #5
0
    def test_unknown_tag_comparison(self):
        n1 = ScalarNode(YAML_NS + "xyz", "foo")
        n2 = ScalarNode(YAML_NS + "xyz", "foo")
        n3 = ScalarNode(YAML_NS + "xyz", "bar")
        self.assertTrue(nodes_equal(n1, n2))
        self.assertFalse(nodes_equal(n1, n3))

        n1 = SequenceNode(YAML_NS + "xyz", [ystr("foo")])
        n2 = SequenceNode(YAML_NS + "xyz", [ystr("foo")])
        n3 = SequenceNode(YAML_NS + "xyz", [ystr("bar")])
        self.assertTrue(nodes_equal(n1, n2))
        self.assertFalse(nodes_equal(n1, n3))

        n1 = MappingNode(YAML_NS + "xyz", [(ystr("foo"), ystr("bar"))])
        n2 = MappingNode(YAML_NS + "xyz", [(ystr("foo"), ystr("bar"))])
        n3 = MappingNode(YAML_NS + "xyz", [(ystr("foo"), ystr("baz"))])
        self.assertTrue(nodes_equal(n1, n2))
        self.assertFalse(nodes_equal(n1, n3))
Example #6
0
    def run_docs(self, template_filename, resource_filenames=(),
                 expected_returncode=0, expected_filename=None,
                 expected_errors=None, template_arg=False, local_tags=True,
                 output_filename=None, long_parameters=True,
                 format=None):
        args = []

        if not local_tags:
            args += ["--no-local-tag" if long_parameters else "-n"]

        if output_filename is not None:
            args += ["--output" if long_parameters else "-o", output_filename]

        if format is not None:
            args += ["--format" if long_parameters else "-f", format]

        if template_arg:
            args += ["--template" if long_parameters else "-t",
                     self.testdir + template_filename]
        else:
            args += [self.testdir + template_filename]

        args += [self.testdir + r for r in resource_filenames]
        log.info("Starting CLI with args=%s", args)

        with LogCapture() as log_capture:
            with captured_output() as (out, err):
                result = main(args)
        log.info("CLI returned with code %d" % result)

        out = out.getvalue()
        err = err.getvalue()

        if out:
            log.debug("stdout: %s", out)
        if err:
            log.debug("stderr: %s", err)

        # Redisplay the log records
        for record in log_capture.records:
            getLogger(record.name).handle(record)

        self.assertEquals(result, expected_returncode)

        if expected_filename is not None:
            if format == "json":
                load = json_load
                load_str = json_loads
            else:
                load = load_str = yaml_compose_all

            if output_filename:
                with open(output_filename, "r") as fd:
                    actual = list(load(fd))
            else:
                actual = list(load_str(out))

            with open(self.testdir + expected_filename, "r") as fd:
                expected = list(load(fd))

            for a_el, e_el in zip(actual, expected):
                if format == "json":
                    self.assertEqual(a_el, e_el)
                else:
                    try:
                        self.assertTrue(nodes_equal(a_el, e_el))
                    except:
                        log.error("actual=%s", a_el)
                        log.error("expect=%s", e_el)
                        raise

        log_capture = str(log_capture)
        if expected_errors is not None:
            if isinstance(expected_errors, string_types):
                self.assertIn(expected_errors, log_capture)
            else:
                for error in expected_errors:
                    self.assertIn(error, log_capture)
        return
Example #7
0
    def test_unequal_tags(self):
        n1 = ScalarNode(YAML_STR_TAG, "foo")
        n2 = ScalarNode(YAML_NS + "bar", "foo")

        self.assertFalse(nodes_equal(n1, n2))