tests: add regression tests for Follow TCP Stream
[metze/wireshark/wip.git] / tools / validate-diameter-xml.sh
1 #!/bin/bash
2
3 # A small script to run xmllint on the Diameter XML files (after doing some
4 # fixups to those files).
5 #
6 # Copyright 2016 Jeff Morriss <jeff.morriss.ws [AT] gmail.com>
7 #
8 # Wireshark - Network traffic analyzer
9 # By Gerald Combs <gerald@wireshark.org>
10 # Copyright 1998 Gerald Combs
11 # SPDX-License-Identifier: GPL-2.0-or-later
12
13 if ! type -p sed > /dev/null
14 then
15         echo "'sed' is needed to run $0." 1>&2
16         # Exit cleanly because we don't want pre-commit to fail just because
17         # someone doesn't have the tools...
18         exit 0
19 fi
20 if ! type -p xmllint > /dev/null
21 then
22         echo "'xmllint' is needed to run $0." 1>&2
23         # Exit cleanly because we don't want pre-commit to fail just because
24         # someone doesn't have the tools...
25         exit 0
26 fi
27
28 # Ideally this would work regardless of our cwd
29 if [ ! -r diameter/dictionary.xml ]
30 then
31         echo "Couldn't find diameter/dictionary.xml" 1>&2
32         exit 1
33 fi
34 if [ ! -r diameter/dictionary.dtd ]
35 then
36         echo "Couldn't find diameter/dictionary.dtd" 1>&2
37         exit 1
38 fi
39
40 # First edit all the AVP names that start with "3GPP" to indicate "TGPP".
41 # XML doesn't allow ID's to start with a digit but:
42 #   1) We don't *really* care if it's valid XML
43 #   2) (but) we do want to use xmllint to find problems
44 #   3) (and) users see the AVP names.  Showing them "TGPP" instead of "3GPP"
45 #      is annoying enough to warrant this extra work.
46 mkdir /tmp/diameter || exit 1
47 cp diameter/dictionary.dtd /tmp/diameter || exit 1
48 for f in diameter/*.xml
49 do
50         sed 's/name="3GPP/name="TGPP/g' $f > /tmp/$f || exit 1
51 done
52
53 xmllint --noout --noent --postvalid /tmp/diameter/dictionary.xml &&
54         echo "Diameter dictionary is (mostly) valid XML."
55
56 rm -rf /tmp/diameter
57
58 #
59 # Editor modelines  -  https://www.wireshark.org/tools/modelines.html
60 #
61 # Local variables:
62 # c-basic-offset: 8
63 # tab-width: 8
64 # indent-tabs-mode: t
65 # End:
66 #
67 # vi: set shiftwidth=8 tabstop=8 noexpandtab:
68 # :indentSize=8:tabSize=8:noTabs=false:
69 #