From: Bruno Haible Date: Sat, 17 Feb 2018 09:05:01 +0000 (+0100) Subject: lock: Add test of gl_once. X-Git-Tag: v1.0~5735 X-Git-Url: https://gitweb.git.savannah.gnu.org/gitweb/?a=commitdiff_plain;h=a798733dd905f95c2d7b5dddba9fc65b2c918351;p=gnulib.git lock: Add test of gl_once. * tests/test-once.c: New file. * modules/lock-tests (Files): Add it. (Makefile.am): Build and test programs 'test-once1' and 'test-once2'. --- diff --git a/ChangeLog b/ChangeLog index 57ab5108c5..ba57230b20 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2018-02-17 Bruno Haible + + lock: Add test of gl_once. + * tests/test-once.c: New file. + * modules/lock-tests (Files): Add it. + (Makefile.am): Build and test programs 'test-once1' and 'test-once2'. + 2018-02-17 Bruno Haible thread: Fix compilation error on IRIX. diff --git a/modules/lock-tests b/modules/lock-tests index bfab1f4576..52858f7b32 100644 --- a/modules/lock-tests +++ b/modules/lock-tests @@ -1,6 +1,7 @@ Files: tests/test-rwlock1.c tests/test-lock.c +tests/test-once.c Depends-on: thread @@ -11,7 +12,11 @@ configure.ac: AC_CHECK_HEADERS_ONCE([semaphore.h]) Makefile.am: -TESTS += test-rwlock1 test-lock -check_PROGRAMS += test-rwlock1 test-lock +TESTS += test-rwlock1 test-lock test-once1 test-once2 +check_PROGRAMS += test-rwlock1 test-lock test-once1 test-once2 test_rwlock1_LDADD = $(LDADD) @LIBMULTITHREAD@ @YIELD_LIB@ test_lock_LDADD = $(LDADD) @LIBMULTITHREAD@ @YIELD_LIB@ +test_once1_SOURCES = test-once.c +test_once1_LDADD = $(LDADD) @LIBTHREAD@ +test_once2_SOURCES = test-once.c +test_once2_LDADD = $(LDADD) @LIBMULTITHREAD@ diff --git a/tests/test-once.c b/tests/test-once.c new file mode 100644 index 0000000000..48e18a7d8b --- /dev/null +++ b/tests/test-once.c @@ -0,0 +1,43 @@ +/* Test of once-only execution in multithreaded situations. + Copyright (C) 2018 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* Written by Bruno Haible , 2018. */ + +#include + +#include "glthread/lock.h" + +#include "macros.h" + +gl_once_define(static, a_once) + +static int a; + +static void +a_init (void) +{ + a = 42; +} + +int +main () +{ + gl_once (a_once, a_init); + + ASSERT (a == 42); + + return 0; +}