head	1.1;
branch	1.1.1;
access;
symbols
	netbsd-11-0-RC4:1.1.1.1
	netbsd-11-0-RC3:1.1.1.1
	netbsd-11-0-RC2:1.1.1.1
	netbsd-11-0-RC1:1.1.1.1
	perseant-exfatfs-base-20250801:1.1.1.1
	netbsd-11:1.1.1.1.0.30
	netbsd-11-base:1.1.1.1
	netbsd-10-1-RELEASE:1.1.1.1
	perseant-exfatfs-base-20240630:1.1.1.1
	perseant-exfatfs:1.1.1.1.0.28
	perseant-exfatfs-base:1.1.1.1
	netbsd-8-3-RELEASE:1.1.1.1
	netbsd-9-4-RELEASE:1.1.1.1
	netbsd-10-0-RELEASE:1.1.1.1
	netbsd-10-0-RC6:1.1.1.1
	netbsd-10-0-RC5:1.1.1.1
	netbsd-10-0-RC4:1.1.1.1
	netbsd-10-0-RC3:1.1.1.1
	netbsd-10-0-RC2:1.1.1.1
	netbsd-10-0-RC1:1.1.1.1
	netbsd-10:1.1.1.1.0.26
	netbsd-10-base:1.1.1.1
	netbsd-9-3-RELEASE:1.1.1.1
	cjep_sun2x-base1:1.1.1.1
	cjep_sun2x:1.1.1.1.0.24
	cjep_sun2x-base:1.1.1.1
	cjep_staticlib_x-base1:1.1.1.1
	netbsd-9-2-RELEASE:1.1.1.1
	cjep_staticlib_x:1.1.1.1.0.22
	cjep_staticlib_x-base:1.1.1.1
	netbsd-9-1-RELEASE:1.1.1.1
	phil-wifi-20200421:1.1.1.1
	phil-wifi-20200411:1.1.1.1
	is-mlppp:1.1.1.1.0.20
	is-mlppp-base:1.1.1.1
	phil-wifi-20200406:1.1.1.1
	netbsd-8-2-RELEASE:1.1.1.1
	netbsd-9-0-RELEASE:1.1.1.1
	netbsd-9-0-RC2:1.1.1.1
	netbsd-9-0-RC1:1.1.1.1
	phil-wifi-20191119:1.1.1.1
	netbsd-9:1.1.1.1.0.18
	netbsd-9-base:1.1.1.1
	phil-wifi-20190609:1.1.1.1
	netbsd-8-1-RELEASE:1.1.1.1
	netbsd-8-1-RC1:1.1.1.1
	pgoyette-compat-merge-20190127:1.1.1.1
	pgoyette-compat-20190127:1.1.1.1
	pgoyette-compat-20190118:1.1.1.1
	pgoyette-compat-1226:1.1.1.1
	pgoyette-compat-1126:1.1.1.1
	pgoyette-compat-1020:1.1.1.1
	pgoyette-compat-0930:1.1.1.1
	pgoyette-compat-0906:1.1.1.1
	pgoyette-compat-0728:1.1.1.1
	netbsd-8-0-RELEASE:1.1.1.1
	phil-wifi:1.1.1.1.0.16
	phil-wifi-base:1.1.1.1
	pgoyette-compat-0625:1.1.1.1
	netbsd-8-0-RC2:1.1.1.1
	pgoyette-compat-0521:1.1.1.1
	pgoyette-compat-0502:1.1.1.1
	pgoyette-compat-0422:1.1.1.1
	netbsd-8-0-RC1:1.1.1.1
	pgoyette-compat-0415:1.1.1.1
	pgoyette-compat-0407:1.1.1.1
	pgoyette-compat-0330:1.1.1.1
	pgoyette-compat-0322:1.1.1.1
	pgoyette-compat-0315:1.1.1.1
	pgoyette-compat:1.1.1.1.0.14
	pgoyette-compat-base:1.1.1.1
	matt-nb8-mediatek:1.1.1.1.0.12
	matt-nb8-mediatek-base:1.1.1.1
	perseant-stdc-iso10646:1.1.1.1.0.10
	perseant-stdc-iso10646-base:1.1.1.1
	netbsd-8:1.1.1.1.0.8
	netbsd-8-base:1.1.1.1
	prg-localcount2-base3:1.1.1.1
	prg-localcount2-base2:1.1.1.1
	prg-localcount2-base1:1.1.1.1
	prg-localcount2:1.1.1.1.0.6
	prg-localcount2-base:1.1.1.1
	pgoyette-localcount-20170426:1.1.1.1
	bouyer-socketcan-base1:1.1.1.1
	pgoyette-localcount-20170320:1.1.1.1
	bouyer-socketcan:1.1.1.1.0.4
	bouyer-socketcan-base:1.1.1.1
	pgoyette-localcount-20170107:1.1.1.1
	pgoyette-localcount-20161104:1.1.1.1
	localcount-20160914:1.1.1.1
	pgoyette-localcount-20160806:1.1.1.1
	pgoyette-localcount-20160726:1.1.1.1
	pgoyette-localcount:1.1.1.1.0.2
	pgoyette-localcount-base:1.1.1.1
	make-3-81:1.1.1.1
	FSF:1.1.1;
locks; strict;
comment	@# @;


1.1
date	2014.08.18.06.47.58;	author christos;	state Exp;
branches
	1.1.1.1;
next	;
commitid	cY52wXUNMqbdjOMx;

1.1.1.1
date	2014.08.18.06.47.58;	author christos;	state Exp;
branches;
next	;
commitid	cY52wXUNMqbdjOMx;


desc
@@



1.1
log
@Initial revision
@
text
@#                                                                    -*-perl-*-
$description = "\
Test the word, words, wordlist, firstword, and lastword functions.\n";

$details = "\
Produce a variable with a large number of words in it,
determine the number of words, and then read each one back.\n";

open(MAKEFILE,"> $makefile");
print MAKEFILE <<'EOF';
string  := word.pl general_test2.pl   FORCE.pl word.pl generic_test.perl MAKEFILES_variable.pl
string2 := $(string) $(string) $(string) $(string) $(string) $(string) $(string)
string3 := $(string2) $(string2) $(string2) $(string2) $(string2) $(string2) $(string2)
string4 := $(string3) $(string3) $(string3) $(string3) $(string3) $(string3) $(string3)
all:
	@@echo $(words $(string))
	@@echo $(words $(string4))
	@@echo $(word 1, $(string))
	@@echo $(word 100, $(string))
	@@echo $(word 1, $(string))
	@@echo $(word 1000, $(string3))
	@@echo $(wordlist 3, 4, $(string))
	@@echo $(wordlist 4, 3, $(string))
	@@echo $(wordlist 1, 6, $(string))
	@@echo $(wordlist 5, 7, $(string))
	@@echo $(wordlist 100, 110, $(string))
	@@echo $(wordlist 7, 10, $(string2))
EOF
close(MAKEFILE);

&run_make_with_options($makefile, "", &get_logfile);
$answer = "6\n"
         ."2058\n"
         ."word.pl\n"
         ."\n"
         ."word.pl\n"
         ."\n"
	 ."FORCE.pl word.pl\n"
	 ."\n"
	 ."word.pl general_test2.pl FORCE.pl word.pl generic_test.perl MAKEFILES_variable.pl\n"
	 ."generic_test.perl MAKEFILES_variable.pl\n"
	 ."\n"
	 ."word.pl general_test2.pl FORCE.pl word.pl\n";
&compare_output($answer, &get_logfile(1));


# Test error conditions

run_make_test('FOO = foo bar biz baz

word-e1: ; @@echo $(word ,$(FOO))
word-e2: ; @@echo $(word abc ,$(FOO))
word-e3: ; @@echo $(word 1a,$(FOO))

wordlist-e1: ; @@echo $(wordlist ,,$(FOO))
wordlist-e2: ; @@echo $(wordlist abc ,,$(FOO))
wordlist-e3: ; @@echo $(wordlist 1, 12a ,$(FOO))',
              'word-e1',
              "#MAKEFILE#:3: *** non-numeric first argument to `word' function: ''.  Stop.",
              512);

run_make_test(undef,
              'word-e2',
              "#MAKEFILE#:4: *** non-numeric first argument to `word' function: 'abc '.  Stop.",
              512);

run_make_test(undef,
              'word-e3',
              "#MAKEFILE#:5: *** non-numeric first argument to `word' function: '1a'.  Stop.",
              512);

run_make_test(undef,
              'wordlist-e1',
              "#MAKEFILE#:7: *** non-numeric first argument to `wordlist' function: ''.  Stop.",
              512);

run_make_test(undef,
              'wordlist-e2',
              "#MAKEFILE#:8: *** non-numeric first argument to `wordlist' function: 'abc '.  Stop.",
              512);

run_make_test(undef,
              'wordlist-e3',
              "#MAKEFILE#:9: *** non-numeric second argument to `wordlist' function: ' 12a '.  Stop.",
              512);

# Test error conditions again, but this time in a variable reference

run_make_test('FOO = foo bar biz baz

W = $(word $x,$(FOO))
WL = $(wordlist $s,$e,$(FOO))

word-e: ; @@echo $(W)
wordlist-e: ; @@echo $(WL)',
              'word-e x=',
              "#MAKEFILE#:3: *** non-numeric first argument to `word' function: ''.  Stop.",
              512);

run_make_test(undef,
              'word-e x=abc',
              "#MAKEFILE#:3: *** non-numeric first argument to `word' function: 'abc'.  Stop.",
              512);

run_make_test(undef,
              'word-e x=0',
              "#MAKEFILE#:3: *** first argument to `word' function must be greater than 0.  Stop.",
              512);

run_make_test(undef,
              'wordlist-e s= e=',
              "#MAKEFILE#:4: *** non-numeric first argument to `wordlist' function: ''.  Stop.",
              512);

run_make_test(undef,
              'wordlist-e s=abc e=',
              "#MAKEFILE#:4: *** non-numeric first argument to `wordlist' function: 'abc'.  Stop.",
              512);

run_make_test(undef,
              'wordlist-e s=4 e=12a',
              "#MAKEFILE#:4: *** non-numeric second argument to `wordlist' function: '12a'.  Stop.",
              512);

run_make_test(undef,
              'wordlist-e s=0 e=12',
              "#MAKEFILE#:4: *** invalid first argument to `wordlist' function: `0'.  Stop.",
              512);


# TEST #8 -- test $(firstword )
#
run_make_test('
void :=
list := $(void) foo bar baz #

a := $(word 1,$(list))
b := $(firstword $(list))

.PHONY: all

all:
	@@test "$a" = "$b" && echo $a
',
'',
'foo');


# TEST #9 -- test $(lastword )
#
run_make_test('
void :=
list := $(void) foo bar baz #

a := $(word $(words $(list)),$(list))
b := $(lastword $(list))

.PHONY: all

all:
	@@test "$a" = "$b" && echo $a
',
'',
'baz');

# This tells the test driver that the perl test script executed properly.
1;
@


1.1.1.1
log
@import latest gpl2 make
@
text
@@
