1#!/bin/bash
2#
3# Copyright (C) 2015 The Android Open Source Project
4#
5# Licensed under the Apache License, Version 2.0 (the "License");
6# you may not use this file except in compliance with the License.
7# You may obtain a copy of the License at
8#
9#     http://www.apache.org/licenses/LICENSE-2.0
10#
11# Unless required by applicable law or agreed to in writing, software
12# distributed under the License is distributed on an "AS IS" BASIS,
13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14# See the License for the specific language governing permissions and
15# limitations under the License.
16
17# Set up prog to be the path of this script, including following symlinks,
18# and set up progdir to be the fully-qualified pathname of its directory.
19prog="$0"
20while [ -h "${prog}" ]; do
21    newProg=`/bin/ls -ld "${prog}"`
22    newProg=`expr "${newProg}" : ".* -> \(.*\)$"`
23    if expr "x${newProg}" : 'x/' >/dev/null; then
24        prog="${newProg}"
25    else
26        progdir=`dirname "${prog}"`
27        prog="${progdir}/${newProg}"
28    fi
29done
30oldwd=`pwd`
31progdir=`dirname "${prog}"`
32cd "${progdir}"
33progdir=`pwd`
34prog="${progdir}"/`basename "${prog}"`
35
36# Set up a temp directory for output.
37tmpdir=/tmp/test-$$
38mkdir ${tmpdir}
39
40# Set up dexdump binary and flags to test.
41DEXD="${ANDROID_HOST_OUT}/bin/dexdump2"
42DEXDFLAGS1="-adfh"
43DEXDFLAGS2="-e -l xml"
44
45# Set up dexlist binary and flags to test.
46DEXL="${ANDROID_HOST_OUT}/bin/dexlist"
47DEXLFLAGS=""
48
49# Run the tests.
50passed=0
51failed=0
52for i in *.dex; do
53    echo $i
54    basenm=`basename "${i}" .dex`
55    txtfile=${basenm}.txt
56    xmlfile=${basenm}.xml
57    lstfile=${basenm}.lst
58    gentxtfile=${tmpdir}/${txtfile}
59    genxmlfile=${tmpdir}/${xmlfile}
60    genlstfile=${tmpdir}/${lstfile}
61    ${DEXD} ${DEXDFLAGS1} ${i} > ${gentxtfile}
62    cmp ${txtfile} ${gentxtfile}
63    if [ "$?" = "0" ]; then
64        ((passed += 1))
65    else
66        ((failed += 1))
67        echo failed: ${i}
68    fi
69    ${DEXD} ${DEXDFLAGS2} ${i} > ${genxmlfile}
70    cmp ${xmlfile} ${genxmlfile}
71    if [ "$?" = "0" ]; then
72        ((passed += 1))
73    else
74        ((failed += 1))
75        echo failed: ${i}
76    fi
77    ${DEXL} ${DEXLFLAGS} ${i} > ${genlstfile}
78    cmp ${lstfile} ${genlstfile}
79    if [ "$?" = "0" ]; then
80        ((passed += 1))
81    else
82        ((failed += 1))
83        echo failed: ${i}
84    fi
85done
86
87# Report results.
88echo
89echo "passed: ${passed} test(s)"
90echo "failed: ${failed} test(s)"
91echo
92
93# Clean up, cd back to original dir.
94rm -rf ${tmpdir}
95cd ${oldwd}
96
97# Return status.
98if [ "${failed}" != "0" ]; then
99  echo failed
100  exit 1
101fi
102exit 0
103
104