#!/bin/sh # PCP QA Test No. 463 # Test ascii PMNS without cpp # # Copyright (c) 2011 Ken McDonell. All Rights Reserved. # seq=`basename $0` echo "QA output created by $seq" # get standard environment, filters and checks . ./common.product . ./common.filter . ./common.check status=0 # success is the default! $sudo rm -rf $tmp.* $seq.full trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15 _filter() { sed \ -e "s;$tmp;TMP;g" \ -e "s;$PCP_VAR_DIR;PCP_VAR_DIR;g" } # real QA test starts here echo "no error cases ..." i=1 echo "---------------- $i -----------------" cat <$tmp.root root { one 1:2:3 two four } two { three 4:5:6 } four { five } four.five { six 7:8:9 } End-of-File pmcpp $tmp.root 2>&1 | _filter echo i=`expr $i + 1` echo "---------------- $i -----------------" cat <$tmp.root root { one 1:2:3 #include "$tmp.1" End-of-File cat <$tmp.1 two four } two { three 4:5:6 } #include "$tmp.2" End-of-File cat <$tmp.2 four { five } four.five { six 7:8:9 } End-of-File pmcpp $tmp.root 2>&1 | _filter rm -f $tmp.? echo i=`expr $i + 1` echo "---------------- $i -----------------" cat <$tmp.root root { one 1:2:3 #ifdef foo foo 2:4:5 #endif #ifndef foo #include "$tmp.1" #endif } End-of-File cat <$tmp.1 two } two { three 4:5:6 End-of-File pmcpp $tmp.root 2>&1 | _filter rm -f $tmp.? echo i=`expr $i + 1` echo "---------------- $i -----------------" cat <$tmp.root root { one 1:2:3 #define foo yes #ifdef foo foo 2:4:5 #endif #ifndef foo #include "$tmp.1" #endif } End-of-File cat <$tmp.1 two } two { three 4:5:6 End-of-File pmcpp $tmp.root 2>&1 | _filter rm -f $tmp.? echo i=`expr $i + 1` echo "---------------- $i -----------------" cat <$tmp.root #define one two #define foo_path3 foo.three #define THREE 3 #define FOUR 4 #define FIVE 5 root { one 2:2:2 foo } foo { two three } foo.one { eek THREE:FOUR:FIVE } foo_path3 { urk FIVE:FOUR:THREE } End-of-File pmcpp $tmp.root 2>&1 | _filter rm -f $tmp.? echo i=`expr $i + 1` echo "---------------- $i -----------------" cat <$tmp.root /* comment at the beginning */ root { one 1:2:3 two four } two { three /*inline comment*/ 4:5:6 } four { five/* strange but syntactically ok */ } four.five { /**/six 7:8:9 } /* * multi-line comment at the end */ End-of-File pmcpp $tmp.root 2>&1 | _filter rm -f $tmp.? # note ... strip blank lines here because number of lines in # may vary over time # echo i=`expr $i + 1` echo "---------------- $i -----------------" cat <$tmp.root #include root { sample SAMPLE:*:* sampledso SAMPLEDSO:*:* } End-of-File pmcpp $tmp.root 2>&1 | _filter | sed -e '/^[ ]*$/d' echo i=`expr $i + 1` echo "---------------- $i -----------------" cat <$tmp.root root { #ifdef foo sample SAMPLE:*:* sampledso SAMPLEDSO:*:* #endif } End-of-File pmcpp -DSAMPLE=29 -DSAMPLEDSO=30 -Dfoo $tmp.root 2>&1 | _filter echo echo "#include errors ..." i=`expr $i + 1` echo "---------------- $i -----------------" cat <$tmp.root root { #include $tmp.1 } End-of-File pmcpp $tmp.root 2>&1 | _filter rm -f $tmp.? i=`expr $i + 1` echo "---------------- $i -----------------" cat <$tmp.root root { #include "$tmp.1 } End-of-File pmcpp $tmp.root 2>&1 | _filter i=`expr $i + 1` echo "---------------- $i -----------------" cat <$tmp.root root { #include <$tmp.1 } End-of-File pmcpp $tmp.root 2>&1 | _filter i=`expr $i + 1` echo "---------------- $i -----------------" cat <$tmp.root root { #include "$tmp.1" junk } End-of-File pmcpp $tmp.root 2>&1 | _filter rm -f $tmp.? i=`expr $i + 1` echo "---------------- $i -----------------" cat <$tmp.root root { #include "$tmp.1" } End-of-File pmcpp $tmp.root 2>&1 | _filter rm -f $tmp.? i=`expr $i + 1` echo "---------------- $i -----------------" cat <$tmp.root root { zero 1:0:0 #include "$tmp.1" } End-of-File cat <$tmp.1 one 1:0:1 #include "$tmp.2" End-of-File cat <$tmp.2 two 1:0:2 #include "$tmp.3" End-of-File cat <$tmp.3 three 1:0:3 #include "$tmp.4" End-of-File cat <$tmp.4 four 1:0:4 #include "$tmp.5" End-of-File pmcpp $tmp.root 2>&1 | _filter rm -f $tmp.? echo echo "#define errors ..." i=`expr $i + 1` echo "---------------- $i -----------------" cat <$tmp.root root { #define } End-of-File pmcpp $tmp.root 2>&1 | _filter i=`expr $i + 1` echo "---------------- $i -----------------" cat <$tmp.root root { /* white space at the end of the next line */ #define } End-of-File pmcpp $tmp.root 2>&1 | _filter i=`expr $i + 1` echo "---------------- $i -----------------" cat <$tmp.root root { #define foo } End-of-File pmcpp $tmp.root 2>&1 | _filter i=`expr $i + 1` echo "---------------- $i -----------------" cat <$tmp.root root { #define bad_123_macro!name } End-of-File pmcpp $tmp.root 2>&1 | _filter i=`expr $i + 1` echo "---------------- $i -----------------" cat <$tmp.root root { #define dup yes #define dup no } End-of-File pmcpp $tmp.root 2>&1 | _filter i=`expr $i + 1` echo "---------------- $i -----------------" cat <$tmp.root root { } End-of-File pmcpp -Dfoo=1 -Dfoo $tmp.root 2>&1 | _filter i=`expr $i + 1` echo "---------------- $i -----------------" cat <$tmp.root root { } End-of-File pmcpp -Dfoo-bar=1 $tmp.root 2>&1 | _filter echo echo "#ifdef etc errors ..." i=`expr $i + 1` echo "---------------- $i -----------------" cat <$tmp.root root { #ifndef extra /*does not count*/ ! } End-of-File pmcpp $tmp.root 2>&1 | _filter i=`expr $i + 1` echo "---------------- $i -----------------" cat <$tmp.root root { #ifdef foo #endif #endif /* not matched */ } End-of-File pmcpp $tmp.root 2>&1 | _filter i=`expr $i + 1` echo "---------------- $i -----------------" cat <$tmp.root root { #define foo yippee #ifdef foo #define nested yes #ifdef nested /* <- error */ #endif #endif } End-of-File pmcpp $tmp.root 2>&1 | _filter i=`expr $i + 1` echo "---------------- $i -----------------" cat <$tmp.root root { #undef foo #ifndef foo #undef nested #ifndef nested /* <- error */ #endif #endif } End-of-File pmcpp $tmp.root 2>&1 | _filter echo echo "other #cpp line errors ..." i=`expr $i + 1` echo "---------------- $i -----------------" cat <$tmp.root root { #fumble } End-of-File pmcpp $tmp.root 2>&1 | _filter # success, all done exit