#!/bin/sh

# 27.07.2007 Volker Quetschke
# Test the :i :1 macro extensions.
# (issue 80010)

: ${DMAKEPROG:=dmake}
file1="mfile1.mk"
tmpfiles="$file1"

trap '{ echo "trapped signal - removing temporary files" ; rm -rf $tmpfiles ; }' 1 2 3 15

# Remove files from prior failed run
rm -rf $tmpfiles

# Remember to quote variables in generated makefiles( $ -> \$ ).
# Test 1
cat > $file1 <<EOT
SHELL*:=/bin/sh 
SHELLFLAGS*:=-ce

.WINPATH:=

MACRO:="/tmp/yyy.ext" "/tmp/a  b/xxx.ext"

all :
	@echo 1:\$(MACRO:1):
EOT

output1=`eval ${DMAKEPROG} -r -f $file1`
result1=$?
if test "$output1" != "1:\"/tmp/yyy.ext\":"; then
  echo "Subtest 1: Wrong result: $output1"
  result1=1
else
  echo "Subtest 1: OK"
fi 

# Test 2
cat > $file1 <<EOT
SHELL*:=/bin/sh 
SHELLFLAGS*:=-ce

MACRO2:=/tmp/zzz.ext /tmp/aaa

all :
	@echo 1:\$(MACRO2:1):

EOT

output2=`eval ${DMAKEPROG} -r -f $file1`
result2=$?
if test "$output2" != "1:/tmp/zzz.ext:"; then
  echo "Subtest 2: Wrong result: $output2"
  result2=1
else
  echo "Subtest 2: OK"
fi 


# Test 3
cat > $file1 <<EOT
SHELL*:=/bin/sh 
SHELLFLAGS*:=-ce

MACRO:="/tmp/yyy.ext" "/tmp/a  b/xxx.ext"

all :
	@echo i:\$(MACRO:i):

EOT

output3=`eval ${DMAKEPROG} -r -f $file1`
result3=$?
if test "$output3" != "i:\"/tmp/yyy.ext\" \"/tmp/a  b/xxx.ext\":"; then
  echo "Subtest 3: Wrong result: $output3"
  result3=1
else
  echo "Subtest 3: OK"
fi 


# Test 4
cat > $file1 <<EOT
SHELL*:=/bin/sh 
SHELLFLAGS*:=-ce

MACRO:="/tmp/yyy.ext" "/tmp/a  b/xxx.ext"

.WINPATH=

all :
	@echo 1n:\$(MACRO:1n):

EOT

output4=`eval ${DMAKEPROG} -r -f $file1`
result4=$?
if test "$output4" != "1n:\"/tmp/yyy.ext\":"; then
  echo "Subtest 4: Wrong result: $output4"
  result4=1
else
  echo "Subtest 4: OK"
fi 


# Test 5
cat > $file1 <<EOT
SHELL*:=/bin/sh 
SHELLFLAGS*:=-ce

MACROi:="./expand.c"

.WINPATH=

.SOURCE : ..

all : expand.c
	@echo i:\$(MACROi:i):

EOT

output5=`eval ${DMAKEPROG} -r -f $file1`
result5=$?
if test "$output5" != "i:\"../expand.c\":"; then
  echo "Subtest 5: Wrong result: $output5"
  result5=1
else
  echo "Subtest 5: OK"
fi 


if test $result1 -eq 0 -a $result2 -eq 0 \
    -a $result3 -eq 0  -a $result4 -eq 0 \
    -a $result5 -eq 0  ; then
    echo "Success - Cleaning up" && rm -f ${tmpfiles}
    exit
else
    echo "Failure!"
    exit 1
fi


syntax highlighted by Code2HTML, v. 0.9.1