Beispiel #1
0
  def testInstrumentationParser_multiStatus(self):
    raw_output = [
      'INSTRUMENTATION_STATUS: class=foo',
      'INSTRUMENTATION_STATUS: test=bar',
      'INSTRUMENTATION_STATUS_CODE: 1',
      'INSTRUMENTATION_STATUS: test_skipped=true',
      'INSTRUMENTATION_STATUS_CODE: 0',
      'INSTRUMENTATION_STATUS: class=hello',
      'INSTRUMENTATION_STATUS: test=world',
      'INSTRUMENTATION_STATUS: stack=',
      'foo/bar.py (27)',
      'hello/world.py (42)',
      'test/file.py (1)',
      'INSTRUMENTATION_STATUS_CODE: -1',
    ]

    parser = instrumentation_parser.InstrumentationParser(raw_output)
    statuses = list(parser.IterStatus())

    expected = [
      (1, {'class': 'foo', 'test': 'bar',}),
      (0, {'test_skipped': 'true'}),
      (-1, {
        'class': 'hello',
        'test': 'world',
        'stack': '\nfoo/bar.py (27)\nhello/world.py (42)\ntest/file.py (1)',
      }),
    ]
    self.assertEqual(expected, statuses)
Beispiel #2
0
 def testInstrumentationParser_nothing(self):
   parser = instrumentation_parser.InstrumentationParser([''])
   statuses = list(parser.IterStatus())
   code, bundle = parser.GetResult()
   self.assertEqual(None, code)
   self.assertEqual({}, bundle)
   self.assertEqual([], statuses)
Beispiel #3
0
  def testInstrumentationParser_resultAndCode(self):
    raw_output = [
      'INSTRUMENTATION_RESULT: shortMsg=foo bar',
      'INSTRUMENTATION_RESULT: longMsg=a foo',
      'walked into',
      'a bar',
      'INSTRUMENTATION_CODE: -1',
    ]

    parser = instrumentation_parser.InstrumentationParser(raw_output)
    statuses = list(parser.IterStatus())
    code, bundle = parser.GetResult()
    self.assertEqual(-1, code)
    self.assertEqual(
        {'shortMsg': 'foo bar', 'longMsg': 'a foo\nwalked into\na bar'}, bundle)
    self.assertEqual([], statuses)
Beispiel #4
0
  def testInstrumentationParser_noMatchingStarts(self):
    raw_output = [
      '',
      'this.is.a.test.package.TestClass:.',
      'Test result for =.',
      'Time: 1.234',
      '',
      'OK (1 test)',
    ]

    parser = instrumentation_parser.InstrumentationParser(raw_output)
    statuses = list(parser.IterStatus())
    code, bundle = parser.GetResult()
    self.assertEqual(None, code)
    self.assertEqual({}, bundle)
    self.assertEqual([], statuses)
Beispiel #5
0
def ParseAmInstrumentRawOutput(raw_output):
  """Parses the output of an |am instrument -r| call.

  Args:
    raw_output: the output of an |am instrument -r| call as a list of lines
  Returns:
    A 3-tuple containing:
      - the instrumentation code as an integer
      - the instrumentation result as a list of lines
      - the instrumentation statuses received as a list of 2-tuples
        containing:
        - the status code as an integer
        - the bundle dump as a dict mapping string keys to a list of
          strings, one for each line.
  """
  parser = instrumentation_parser.InstrumentationParser(raw_output)
  statuses = list(parser.IterStatus())
  code, bundle = parser.GetResult()
  return (code, bundle, statuses)
Beispiel #6
0
  def testInstrumentationParser_statusResultAndCode(self):
    raw_output = [
      'INSTRUMENTATION_STATUS: class=foo',
      'INSTRUMENTATION_STATUS: test=bar',
      'INSTRUMENTATION_STATUS_CODE: 1',
      'INSTRUMENTATION_RESULT: result=hello',
      'world',
      '',
      '',
      'INSTRUMENTATION_CODE: 0',
    ]

    parser = instrumentation_parser.InstrumentationParser(raw_output)
    statuses = list(parser.IterStatus())
    code, bundle = parser.GetResult()

    self.assertEqual(0, code)
    self.assertEqual({'result': 'hello\nworld\n\n'}, bundle)
    self.assertEqual([(1, {'class': 'foo', 'test': 'bar'})], statuses)
Beispiel #7
0
    def testInstrumentationParser_oneStatus(self):
        raw_output = [
            'INSTRUMENTATION_STATUS: foo=1',
            'INSTRUMENTATION_STATUS: bar=hello',
            'INSTRUMENTATION_STATUS: world=false',
            'INSTRUMENTATION_STATUS: class=this.is.a.test.package.TestClass',
            'INSTRUMENTATION_STATUS: test=testMethod',
            'INSTRUMENTATION_STATUS_CODE: 0',
        ]

        parser = instrumentation_parser.InstrumentationParser(raw_output)
        statuses = list(parser.IterStatus())

        expected = [(0, {
            'foo': '1',
            'bar': 'hello',
            'world': 'false',
            'class': 'this.is.a.test.package.TestClass',
            'test': 'testMethod',
        })]
        self.assertEqual(expected, statuses)