From a8c4fc5e1f2c4215544aff004d42f235d7e9d14f Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Mon, 29 Oct 2018 16:36:11 -0700 Subject: [PATCH] Add delays to test-bz106632, check UptoDate separately On a file system with one-second time stamps, extra delays are needed between cache modification operations to ensure that fontconfig isn't fooled. And, when the timestamps are checked correctly, we need to make sure that FcConfigUptoDate returns false whenever we change a font directory, so separate that out from the call to reinitialize the core config. Signed-off-by: Keith Packard --- test/test-bz106632.c | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/test/test-bz106632.c b/test/test-bz106632.c index cf3bbcf..5db912b 100644 --- a/test/test-bz106632.c +++ b/test/test-bz106632.c @@ -191,7 +191,7 @@ main (void) mkdir_p ((const char *) cachedir); fprintf (stderr, "D: Copying %s to %s\n", FONTFILE, fontdir); - snprintf (cmd, 512, "cp -a %s %s", FONTFILE, fontdir); + snprintf (cmd, 512, "sleep 1; cp -a %s %s; sleep 1", FONTFILE, fontdir); (void) system (cmd); fprintf (stderr, "D: Loading a config\n"); @@ -220,13 +220,19 @@ main (void) goto bail; } fprintf (stderr, "D: Removing %s\n", fontdir); - snprintf (cmd, 512, "rm -f %s%s*; sleep 1", fontdir, FC_DIR_SEPARATOR_S); + snprintf (cmd, 512, "sleep 1; rm -f %s%s*; sleep 1", fontdir, FC_DIR_SEPARATOR_S); (void) system (cmd); fprintf (stderr, "D: Reinitializing\n"); - if (!FcConfigUptoDate (config) || !FcInitReinitialize ()) + if (FcConfigUptoDate(config)) + { + fprintf (stderr, "E: Config reports up-to-date\n"); + ret = 2; + goto bail; + } + if (!FcInitReinitialize ()) { fprintf (stderr, "E: Unable to reinitialize\n"); - ret = 2; + ret = 3; goto bail; } if (FcConfigGetCurrent () == config) @@ -259,10 +265,16 @@ main (void) goto bail; } fprintf (stderr, "D: Copying %s to %s\n", FONTFILE, fontdir); - snprintf (cmd, 512, "cp -a %s %s; sleep 1", FONTFILE, fontdir); + snprintf (cmd, 512, "sleep 1; cp -a %s %s; sleep 1", FONTFILE, fontdir); (void) system (cmd); fprintf (stderr, "D: Reinitializing\n"); - if (!FcConfigUptoDate (config) || !FcInitReinitialize ()) + if (FcConfigUptoDate(config)) + { + fprintf (stderr, "E: Config up-to-date after addition\n"); + ret = 3; + goto bail; + } + if (!FcInitReinitialize ()) { fprintf (stderr, "E: Unable to reinitialize\n"); ret = 2;