/*! * regTestCleanup() * * Input: rp (regression test parameters) * Return: 0 if OK, 1 on error * * Notes: * (1) This copies anything written to the temporary file to the * output file /tmp/reg_results.txt. */ l_int32 regTestCleanup(L_REGPARAMS *rp) { char result[512]; char *results_file; /* success/failure output in 'compare' mode */ char *text, *message; l_int32 retval; size_t nbytes; PROCNAME("regTestCleanup"); if (!rp) return ERROR_INT("rp not defined", procName, 1); fprintf(stderr, "Time: %7.3f sec\n", stopTimerNested(rp->tstart)); fprintf(stderr, "################################################\n"); /* If generating golden files or running in display mode, release rp */ if (!rp->fp) { FREE(rp->testname); FREE(rp->tempfile); FREE(rp); return 0; } /* Compare mode: read back data from temp file */ fclose(rp->fp); text = (char *)l_binaryRead(rp->tempfile, &nbytes); FREE(rp->tempfile); if (!text) { rp->success = FALSE; FREE(rp); return ERROR_INT("text not returned", procName, 1); } /* Prepare result message */ if (rp->success) snprintf(result, sizeof(result), "SUCCESS: %s_reg\n", rp->testname); else snprintf(result, sizeof(result), "FAILURE: %s_reg\n", rp->testname); message = stringJoin(text, result); FREE(text); results_file = genPathname("/tmp", "reg_results.txt"); fileAppendString(results_file, message); retval = (rp->success) ? 0 : 1; FREE(results_file); FREE(message); FREE(rp->testname); FREE(rp); return retval; }
/*! * regTestCleanup() * * Input: argc (to regtest: either 1 or 2) * argv (to regtest: if @argc == 2, @argv[1] is either * "generate" or a log file name) * fp (stream that was used writing to a temporary file; * null for the "generate" case) * success (overall for this reg test) * rp (regression test params; can be null) * Return: 0 if OK, 1 on error * * Notes: * (1) This outputs anything written to the temporary file and * closes the stream to that file. * (2) If a rp struct is made in regTestSetup(), it must be * passed in here for destruction. */ l_int32 regTestCleanup(l_int32 argc, char **argv, FILE *fp, l_int32 success, L_REGPARAMS *rp) { char result[128]; char *tempname, *text, *message; l_int32 nbytes; PROCNAME("regTestCleanup"); if (!fp) { /* for generating golden files; release rp if it exists */ if (rp) FREE(rp); return 0; } fclose(fp); /* Read back data from temp file */ tempname = genTempFilename("/tmp", "regtest_output.txt", 1); text = (char *)arrayRead(tempname, &nbytes); FREE(tempname); if (!text) { if (rp) FREE(rp); return ERROR_INT("text not returned", procName, 1); } /* Prepare result message */ if (rp) /* if either is 0, success == FALSE */ success = rp->success && success; if (success) snprintf(result, sizeof(result), "SUCCESS: %s\n", argv[0]); else snprintf(result, sizeof(result), "FAILURE: %s\n", argv[0]); message = stringJoin(text, result); FREE(text); if (argc == 1) fprintf(stderr, "%s", message); else fileAppendString(argv[1], message); FREE(message); if (rp) FREE(rp); return 0; }