Add tests for libraries quoted with double quotes, make them pass

pull/81/head
Dan Kegel 2015-09-10 16:49:52 -07:00
parent b88808f708
commit d0bbc686bf
5 changed files with 29 additions and 3 deletions

View File

@ -42,8 +42,10 @@ pkgconf_argv_split(const char *src, int *argc, char ***argv)
while (*src_iter) while (*src_iter)
{ {
if (quote == *src_iter) if (quote == *src_iter) {
quote = 0; quote = 0;
*dst_iter++ = *src_iter;
}
else if (quote) else if (quote)
{ {
if (*src_iter == '\\') if (*src_iter == '\\')
@ -81,6 +83,7 @@ pkgconf_argv_split(const char *src, int *argc, char ***argv)
case '"': case '"':
case '\'': case '\'':
quote = *src_iter; quote = *src_iter;
*dst_iter++ = *src_iter;
break; break;
case '\\': case '\\':

View File

@ -26,9 +26,21 @@ void test_escaped()
pkgconf_argv_free(argv); pkgconf_argv_free(argv);
} }
void test_quoted()
{
int argc;
char **argv;
pkgconf_argv_split("\"A B\"", &argc, &argv);
assert(argc == 1);
assert(!strcmp(argv[0], "\"A B\""));
pkgconf_argv_free(argv);
}
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
(void) argc; (void) argv; (void) argc; (void) argv;
test_simple(); test_simple();
test_escaped(); test_escaped();
test_quoted();
} }

View File

@ -0,0 +1,9 @@
prefix=/test
exec_prefix=${prefix}
libdir=${prefix}/lib
includedir=${prefix}/include
Name: framework-3
Description: pkg-config with space in framework name
Version: 1.3
Libs: -F${libdir} -framework "Spacey Framework"

View File

@ -6,5 +6,5 @@ includedir=${prefix}/include
Name: quotes Name: quotes
Description: A testing pkg-config file Description: A testing pkg-config file
Version: 1.2.3 Version: 1.2.3
Libs: -L${libdir} -lfoo\ bar Libs: -L${libdir} -lfoo\ bar "-lfoobie bletch"
Cflags: -DQUOTED=\"bla\" Cflags: -DQUOTED=\"bla\"

View File

@ -221,7 +221,7 @@ run_test "PKG_CONFIG_PATH='${selfdir}/lib1' ${1} --list-all | grep -q 'multiline
run_test "PKG_CONFIG_PATH='${selfdir}/lib1' ${1} --cflags quotes" \ run_test "PKG_CONFIG_PATH='${selfdir}/lib1' ${1} --cflags quotes" \
"-DQUOTED=\\\"bla\\\"" "-DQUOTED=\\\"bla\\\""
run_test "PKG_CONFIG_PATH='${selfdir}/lib1' ${1} --libs quotes" \ run_test "PKG_CONFIG_PATH='${selfdir}/lib1' ${1} --libs quotes" \
'-lfoo\ bar' '-lfoo\ bar "-lfoobie bletch"'
run_test "PKG_CONFIG_PATH='${selfdir}/lib1' ${1} --libs nolib; echo \$?" \ run_test "PKG_CONFIG_PATH='${selfdir}/lib1' ${1} --libs nolib; echo \$?" \
'0' '0'
@ -241,6 +241,8 @@ run_test "PKG_CONFIG_PATH='${selfdir}/lib1' ${1} --libs framework-2" \
"-F/test/lib -framework framework-2 -framework framework-1" "-F/test/lib -framework framework-2 -framework framework-1"
run_test "PKG_CONFIG_PATH='${selfdir}/lib1' ${1} --libs framework-1 framework-2" \ run_test "PKG_CONFIG_PATH='${selfdir}/lib1' ${1} --libs framework-1 framework-2" \
"-F/test/lib -framework framework-1 -framework framework-2" "-F/test/lib -framework framework-1 -framework framework-2"
run_test "PKG_CONFIG_PATH='${selfdir}/lib1' ${1} --libs framework-3" \
'-F/test/lib -framework "Spacey Framework"'
run_test "PKG_CONFIG_PATH='${selfdir}/lib1' ${1} --exists --print-errors 'foo > 0.6.0 foo < 0.8.0'; echo \$?" \ run_test "PKG_CONFIG_PATH='${selfdir}/lib1' ${1} --exists --print-errors 'foo > 0.6.0 foo < 0.8.0'; echo \$?" \
'1' '1'