Exemplo n.º 1
0
    def _assert_valid_output(self, relative_json_value, is_inline):
        # Py3.6+ guarantees order of dictionaries by insertion order, but Py 3.3-3.5 have non-deterministic dictionary
        # order. So, we first try to assert the order is the same, and then fall back to ignoring order to get the test
        # working on all interpreters.
        expected = json.dumps(
            json.loads(
                dedent("""
        {{
          "name": "bob",
          {},
          "friend": {{
            "name": "bill",
            "type_alias": "pants_test.engine.test_parsers.Bob"
          }},
          "type_alias": "pants_test.engine.test_parsers.Bob"
        }}
        """.format(relative_json_value).strip())))
        output = parsers.encode_json(self.bob, inline=is_inline)
        try:
            self.assertEqual(expected, output)
        except AssertionError:

            def convert_to_stripped_set(json_str):
                no_brackets = json_str.replace('{', '').replace('}', '')
                distinct_lines = no_brackets.split(',')
                return set(distinct_lines)

            self.assertEqual(convert_to_stripped_set(expected),
                             convert_to_stripped_set(output))
Exemplo n.º 2
0
 def test_shallow_encoding(self):
     expected_json = dedent("""
 {
   "name": "bob",
   "type_alias": "pants_test.engine.test_parsers.Bob",
   "friend": {
     "name": "bill",
     "type_alias": "pants_test.engine.test_parsers.Bob"
   },
   "relative": "::an opaque address::"
 }
 """).strip()
     self.assertEqual(json.dumps(json.loads(expected_json)),
                      parsers.encode_json(self.bob, inline=False))
Exemplo n.º 3
0
 def test_shallow_encoding(self):
   expected_json = dedent("""
   {
     "name": "bob",
     "type_alias": "pants_test.engine.test_parsers.Bob",
     "friend": {
       "name": "bill",
       "type_alias": "pants_test.engine.test_parsers.Bob"
     },
     "relative": "::an opaque address::"
   }
   """).strip()
   self.assertEqual(json.dumps(json.loads(expected_json)),
                    parsers.encode_json(self.bob, inline=False))
Exemplo n.º 4
0
 def test_inlined_encoding(self):
     expected_json = dedent("""
 {
   "name": "bob",
   "type_alias": "pants_test.engine.test_parsers.Bob",
   "friend": {
     "name": "bill",
     "type_alias": "pants_test.engine.test_parsers.Bob"
   },
   "relative": {
     "name": "bill",
     "type_alias": "pants_test.engine.test_parsers.Bob"
   }
 }
 """).strip()
     self.assertEqual(json.dumps(json.loads(expected_json)),
                      parsers.encode_json(self.bob, inline=True))
Exemplo n.º 5
0
 def test_inlined_encoding(self):
   expected_json = dedent("""
   {
     "name": "bob",
     "type_alias": "pants_test.engine.test_parsers.Bob",
     "friend": {
       "name": "bill",
       "type_alias": "pants_test.engine.test_parsers.Bob"
     },
     "relative": {
       "name": "bill",
       "type_alias": "pants_test.engine.test_parsers.Bob"
     }
   }
   """).strip()
   self.assertEqual(json.dumps(json.loads(expected_json)),
                    parsers.encode_json(self.bob, inline=True))
Exemplo n.º 6
0
 def round_trip(self, obj, symbol_table_cls=None):
     document = parsers.encode_json(obj, inline=True)
     return self.parse(document, symbol_table_cls=symbol_table_cls)
Exemplo n.º 7
0
 def round_trip(self, obj, symbol_table=None):
   document = parsers.encode_json(obj, inline=True)
   return self.parse(document, symbol_table=symbol_table)