xref: /aosp_15_r20/system/media/camera/docs/metadata-parser-validity-check (revision b9df5ad1c9ac98a7fefaac271a55f7ae3db05414)
1*b9df5ad1SAndroid Build Coastguard Worker#!/bin/bash
2*b9df5ad1SAndroid Build Coastguard Worker
3*b9df5ad1SAndroid Build Coastguard Worker#
4*b9df5ad1SAndroid Build Coastguard Worker# Copyright (C) 2012 The Android Open Source Project
5*b9df5ad1SAndroid Build Coastguard Worker#
6*b9df5ad1SAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License");
7*b9df5ad1SAndroid Build Coastguard Worker# you may not use this file except in compliance with the License.
8*b9df5ad1SAndroid Build Coastguard Worker# You may obtain a copy of the License at
9*b9df5ad1SAndroid Build Coastguard Worker#
10*b9df5ad1SAndroid Build Coastguard Worker#      http://www.apache.org/licenses/LICENSE-2.0
11*b9df5ad1SAndroid Build Coastguard Worker#
12*b9df5ad1SAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software
13*b9df5ad1SAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS,
14*b9df5ad1SAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15*b9df5ad1SAndroid Build Coastguard Worker# See the License for the specific language governing permissions and
16*b9df5ad1SAndroid Build Coastguard Worker# limitations under the License.
17*b9df5ad1SAndroid Build Coastguard Worker#
18*b9df5ad1SAndroid Build Coastguard Worker
19*b9df5ad1SAndroid Build Coastguard Worker#
20*b9df5ad1SAndroid Build Coastguard Worker# Validate the XML parser by making sure it's generating the same data
21*b9df5ad1SAndroid Build Coastguard Worker# as the original parsed data.
22*b9df5ad1SAndroid Build Coastguard Worker#
23*b9df5ad1SAndroid Build Coastguard Worker
24*b9df5ad1SAndroid Build Coastguard Workerthisdir=$(cd "$(dirname "$0")"; pwd)
25*b9df5ad1SAndroid Build Coastguard Worker
26*b9df5ad1SAndroid Build Coastguard Worker$thisdir/metadata-check-dependencies || exit 1
27*b9df5ad1SAndroid Build Coastguard Worker
28*b9df5ad1SAndroid Build Coastguard Workertmp_out=$(mktemp -t tmp.XXXXXXXXXX)
29*b9df5ad1SAndroid Build Coastguard Workertmp_tidy1=$(mktemp -t tmp.XXXXXXXXXX)
30*b9df5ad1SAndroid Build Coastguard Workertmp_tidy2=$(mktemp -t tmp.XXXXXXXXXX)
31*b9df5ad1SAndroid Build Coastguard Worker
32*b9df5ad1SAndroid Build Coastguard Workerfunction check_test
33*b9df5ad1SAndroid Build Coastguard Worker{
34*b9df5ad1SAndroid Build Coastguard Worker    local file="$1"
35*b9df5ad1SAndroid Build Coastguard Worker    local results
36*b9df5ad1SAndroid Build Coastguard Worker    results="$(python3 "$file" 2>&1)"
37*b9df5ad1SAndroid Build Coastguard Worker    local retval=$?
38*b9df5ad1SAndroid Build Coastguard Worker    if [[ $retval -ne 0 ]]
39*b9df5ad1SAndroid Build Coastguard Worker    then
40*b9df5ad1SAndroid Build Coastguard Worker        echo "$results" >& 2
41*b9df5ad1SAndroid Build Coastguard Worker        echo "FAILED: Unit tests $file"
42*b9df5ad1SAndroid Build Coastguard Worker    else
43*b9df5ad1SAndroid Build Coastguard Worker        echo "SUCCESS: Unit tests $file"
44*b9df5ad1SAndroid Build Coastguard Worker    fi
45*b9df5ad1SAndroid Build Coastguard Worker    return $retval
46*b9df5ad1SAndroid Build Coastguard Worker}
47*b9df5ad1SAndroid Build Coastguard Worker
48*b9df5ad1SAndroid Build Coastguard Workercheck_test "$thisdir/metadata_model_test.py" || exit 1
49*b9df5ad1SAndroid Build Coastguard Workercheck_test "$thisdir/metadata_helpers_test.py" || exit 1
50*b9df5ad1SAndroid Build Coastguard Workerpython3 $thisdir/metadata_parser_xml.py $thisdir/metadata_definitions.xml $thisdir/metadata_template.mako $tmp_out || exit 1
51*b9df5ad1SAndroid Build Coastguard Workertidy -indent -xml -quiet $thisdir/metadata_definitions.xml > $tmp_tidy1
52*b9df5ad1SAndroid Build Coastguard Workertidy -indent -xml -quiet $tmp_out > $tmp_tidy2
53*b9df5ad1SAndroid Build Coastguard Worker
54*b9df5ad1SAndroid Build Coastguard Workerdiff $tmp_tidy1 $tmp_tidy2
55*b9df5ad1SAndroid Build Coastguard Workerexit_code=$?
56*b9df5ad1SAndroid Build Coastguard Workerrm $tmp_out $tmp_tidy1 $tmp_tidy2
57*b9df5ad1SAndroid Build Coastguard Worker
58*b9df5ad1SAndroid Build Coastguard Workerif [[ $exit_code -ne 0 ]]
59*b9df5ad1SAndroid Build Coastguard Workerthen
60*b9df5ad1SAndroid Build Coastguard Worker    echo "ERROR: Files differ, please check parser logic" 1>&2
61*b9df5ad1SAndroid Build Coastguard Workerelse
62*b9df5ad1SAndroid Build Coastguard Worker    echo "SUCCESS: Files are the same!" 1>&2
63*b9df5ad1SAndroid Build Coastguard Workerfi
64*b9df5ad1SAndroid Build Coastguard Worker
65*b9df5ad1SAndroid Build Coastguard Workerexit $exit_code
66