1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
|
#!/usr/bin/env python
# Copyright 2018 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import unittest
import pretty_print
ORIGINAL_XML = """
<!-- Top level Comment 1 -->
<!-- Top level Comment 2 -->
<histogram-configuration>
<!-- Second level Comment 1 -->
<histograms>
<histogram name="Test.Histogram" units="us">
<owner>person@chromium.org</owner>
<summary>A long line that should be formatted in a way that does not result
in extra whitespace between words.
It has multiple paragraphs.
</summary>
<obsolete>
Removed 1/2019.
</obsolete>
</histogram>
<histogram name="Foo.Bar" units="xxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyzzzz">
<summary>Foo</summary>
<obsolete>Obsolete 1</obsolete>
<obsolete>Obsolete 2</obsolete>
<enums>This shouldn't be here</enums>
</histogram>
<histogram_suffixes name="Test.HistogramSuffixes" separator=".">
<suffix name="TestSuffix" label="A misplaced histogram_suffixes"/>
<affected-histogram name="Test.Histogram"/>
</histogram_suffixes>
</histograms>
<histogram_suffixes_list>
<histogram name="Test.MisplacedHistogram" units="us">
<owner>person@chromium.org</owner>
Misplaced content.
<summary>A misplaced histogram
</summary>
</histogram>
</histogram_suffixes_list>
<enums>This shouldn't be here</enums>
</histogram-configuration>
""".strip()
PRETTY_XML = """
<!-- Top level Comment 1 -->
<!-- Top level Comment 2 -->
<histogram-configuration>
<!-- Second level Comment 1 -->
<histograms>
<histogram name="Foo.Bar" units="xxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyzzzz">
<obsolete>
Obsolete 1
</obsolete>
<summary>Foo</summary>
</histogram>
<histogram name="Test.Histogram" units="microseconds">
<obsolete>
Removed 1/2019.
</obsolete>
<owner>person@chromium.org</owner>
<summary>
A long line that should be formatted in a way that does not result in extra
whitespace between words.
It has multiple paragraphs.
</summary>
</histogram>
<histogram name="Test.MisplacedHistogram" units="microseconds">
<owner>person@chromium.org</owner>
<summary>A misplaced histogram</summary>
</histogram>
</histograms>
<histogram_suffixes_list>
<histogram_suffixes name="Test.HistogramSuffixes" separator=".">
<suffix name="TestSuffix" label="A misplaced histogram_suffixes"/>
<affected-histogram name="Test.Histogram"/>
</histogram_suffixes>
</histogram_suffixes_list>
</histogram-configuration>
""".strip()
class PrettyPrintHistogramsXmlTest(unittest.TestCase):
def testPrettyPrinting(self):
result = pretty_print.PrettyPrintHistograms(ORIGINAL_XML)
self.maxDiff = None
self.assertMultiLineEqual(PRETTY_XML, result.strip())
if __name__ == '__main__':
unittest.main()
|