summaryrefslogtreecommitdiff
path: root/source4/lib/replace
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2007-04-15 16:13:06 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 14:50:38 -0500
commitaea41afb52e24077e7b1e28f5090326665d7c3f6 (patch)
tree96558a57d7682c9d5acc4c0d365d689be09be02e /source4/lib/replace
parenteb49760603a043163b7cc80c781a16eac376aee2 (diff)
downloadsamba-aea41afb52e24077e7b1e28f5090326665d7c3f6.tar.gz
samba-aea41afb52e24077e7b1e28f5090326665d7c3f6.tar.bz2
samba-aea41afb52e24077e7b1e28f5090326665d7c3f6.zip
r22216: move strptime testsuite into it's own file
so we can include it for the configure test as it seems that strptime() is really broken on some hosts in the build farm, re should use the replacement code when we detect this in the configure test metze (This used to be commit 08a5e9760643b9fbf00fdcf7163de7cf50e841e6)
Diffstat (limited to 'source4/lib/replace')
-rw-r--r--source4/lib/replace/strptime.m414
-rw-r--r--source4/lib/replace/test/strptime.c152
-rw-r--r--source4/lib/replace/test/testsuite.c108
3 files changed, 158 insertions, 116 deletions
diff --git a/source4/lib/replace/strptime.m4 b/source4/lib/replace/strptime.m4
index 0f2065fd62..da22fc5a97 100644
--- a/source4/lib/replace/strptime.m4
+++ b/source4/lib/replace/strptime.m4
@@ -1,16 +1,8 @@
AC_CACHE_CHECK([whether strptime is available and works],libreplace_cv_STRPTIME_OK,[
AC_TRY_RUN([
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- int main (void) {
- const char *s = "20061004023546Z";
- char *ret;
- struct tm t;
- ret = strptime(s, "%Y%m%d%H%M%S", &t);
- if ( ret == NULL ) return 1;
- return 0;
- }],
+ #define LIBREPLACE_CONFIGURE_TEST_STRPTIME
+ #include "$libreplacedir/test/strptime.c"
+ ],
[libreplace_cv_STRPTIME_OK=yes],
[libreplace_cv_STRPTIME_OK=no],
[libreplace_cv_STRPTIME_OK="assuming not"])
diff --git a/source4/lib/replace/test/strptime.c b/source4/lib/replace/test/strptime.c
new file mode 100644
index 0000000000..434b5d0933
--- /dev/null
+++ b/source4/lib/replace/test/strptime.c
@@ -0,0 +1,152 @@
+
+#ifdef LIBREPLACE_CONFIGURE_TEST_STRPTIME
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <time.h>
+
+#define true 1
+#define false 0
+
+/* make printf a no-op */
+#define printf if(0) printf
+
+#else /* LIBREPLACE_CONFIGURE_TEST_STRPTIME */
+
+#include "replace.h"
+#include "system/time.h"
+
+#endif /* LIBREPLACE_CONFIGURE_TEST_STRPTIME */
+
+int libreplace_test_strptime(void)
+{
+ const char *s = "20070414101546Z";
+ char *ret;
+ struct tm t, t2;
+
+ printf("test: strptime\n");
+
+ ret = strptime(s, "%Y%m%d%H%M%S", &t);
+ if ( ret == NULL ) {
+ printf("failure: strptime [\n"
+ "returned NULL\n"
+ "]\n");
+ return false;
+ }
+
+ if ( *ret != 'Z' ) {
+ printf("failure: strptime [\n"
+ "ret doesn't point to 'Z'\n"
+ "]\n");
+ return false;
+ }
+
+ ret = strptime(s, "%Y%m%d%H%M%SZ", &t2);
+ if ( ret == NULL ) {
+ printf("failure: strptime [\n"
+ "returned NULL with Z\n"
+ "]\n");
+ return false;
+ }
+
+ if ( *ret != '\0' ) {
+ printf("failure: strptime [\n"
+ "ret doesn't point to '\\0'\n"
+ "]\n");
+ return false;
+ }
+
+ if (memcmp(&t, &t2, sizeof(t)) == 0) {
+ printf("failure: strptime [\n"
+ "result differs if the format string has a 'Z' at the end\n"
+ "]\n");
+ return false;
+ }
+
+ if (t.tm_sec != 46) {
+ printf("failure: strptime [\n"
+ "tm_sec: expected: 46, got: %d\n"
+ "]\n",
+ t.tm_sec);
+ return false;
+ }
+
+ if (t.tm_min != 15) {
+ printf("failure: strptime [\n"
+ "tm_min: expected: 15, got: %d\n"
+ "]\n",
+ t.tm_min);
+ return false;
+ }
+
+ if (t.tm_hour != 10) {
+ printf("failure: strptime [\n"
+ "tm_hour: expected: 10, got: %d\n"
+ "]\n",
+ t.tm_hour);
+ return false;
+ }
+
+ if (t.tm_mday != 14) {
+ printf("failure: strptime [\n"
+ "tm_mday: expected: 14, got: %d\n"
+ "]\n",
+ t.tm_mday);
+ return false;
+ }
+
+ if (t.tm_mon != 3) {
+ printf("failure: strptime [\n"
+ "tm_mon: expected: 3, got: %d\n"
+ "]\n",
+ t.tm_mon);
+ return false;
+ }
+
+ if (t.tm_year != 107) {
+ printf("failure: strptime [\n"
+ "tm_year: expected: 107, got: %d\n"
+ "]\n",
+ t.tm_year);
+ return false;
+ }
+
+ if (t.tm_wday != 6) { /* saturday */
+ printf("failure: strptime [\n"
+ "tm_wday: expected: 6, got: %d\n"
+ "]\n",
+ t.tm_wday);
+ return false;
+ }
+
+ if (t.tm_yday != 103) {
+ printf("failure: strptime [\n"
+ "tm_yday: expected: 103, got: %d\n"
+ "]\n",
+ t.tm_yday);
+ return false;
+ }
+
+ /* we don't test this as it depends on the host configuration
+ if (t.tm_isdst != 0) {
+ printf("failure: strptime [\n"
+ "tm_isdst: expected: 0, got: %d\n"
+ "]\n",
+ t.tm_isdst);
+ return false;
+ }*/
+
+ printf("success: strptime\n");
+
+ return true;
+}
+
+#ifdef LIBREPLACE_CONFIGURE_TEST_STRPTIME
+int main (void)
+{
+ int ret;
+ ret = libreplace_test_strptime();
+ if (ret == false) return 1;
+ return 0;
+}
+#endif
diff --git a/source4/lib/replace/test/testsuite.c b/source4/lib/replace/test/testsuite.c
index a992fd8c0f..7d45feec6b 100644
--- a/source4/lib/replace/test/testsuite.c
+++ b/source4/lib/replace/test/testsuite.c
@@ -606,113 +606,11 @@ static int test_socketpair(void)
return true;
}
+extern int libreplace_test_strptime(void);
+
static int test_strptime(void)
{
- const char *s = "20070414101546Z";
- char *ret;
- struct tm t, t2;
-
- printf("test: strptime\n");
-
- ret = strptime(s, "%Y%m%d%H%M%S", &t);
- if ( ret == NULL ) {
- printf("failure: strptime [\n"
- "returned NULL\n"
- "]\n");
- return false;
- }
-
- ret = strptime(s, "%Y%m%d%H%M%SZ", &t2);
- if ( ret == NULL ) {
- printf("failure: strptime [\n"
- "returned NULL with Z\n"
- "]\n");
- return false;
- }
-
- if (memcmp(&t, &t2, sizeof(t)) == 0) {
- printf("failure: strptime [\n"
- "result differs if the format string has a 'Z' at the end\n"
- "]\n");
- return false;
- }
-
- if (t.tm_sec != 46) {
- printf("failure: strptime [\n"
- "tm_sec: expected: 46, got: %d\n"
- "]\n",
- t.tm_sec);
- return false;
- }
-
- if (t.tm_min != 15) {
- printf("failure: strptime [\n"
- "tm_min: expected: 15, got: %d\n"
- "]\n",
- t.tm_min);
- return false;
- }
-
- if (t.tm_hour != 10) {
- printf("failure: strptime [\n"
- "tm_hour: expected: 10, got: %d\n"
- "]\n",
- t.tm_hour);
- return false;
- }
-
- if (t.tm_mday != 14) {
- printf("failure: strptime [\n"
- "tm_mday: expected: 14, got: %d\n"
- "]\n",
- t.tm_mday);
- return false;
- }
-
- if (t.tm_mon != 3) {
- printf("failure: strptime [\n"
- "tm_mon: expected: 3, got: %d\n"
- "]\n",
- t.tm_mon);
- return false;
- }
-
- if (t.tm_year != 107) {
- printf("failure: strptime [\n"
- "tm_year: expected: 107, got: %d\n"
- "]\n",
- t.tm_year);
- return false;
- }
-
- if (t.tm_wday != 6) { /* saturday */
- printf("failure: strptime [\n"
- "tm_wday: expected: 6, got: %d\n"
- "]\n",
- t.tm_wday);
- return false;
- }
-
- if (t.tm_yday != 103) {
- printf("failure: strptime [\n"
- "tm_yday: expected: 103, got: %d\n"
- "]\n",
- t.tm_yday);
- return false;
- }
-
- /* we don't test this as it depends on the host configuration
- if (t.tm_isdst != 0) {
- printf("failure: strptime [\n"
- "tm_isdst: expected: 0, got: %d\n"
- "]\n",
- t.tm_isdst);
- return false;
- }*/
-
- printf("success: strptime\n");
-
- return true;
+ return libreplace_test_strptime();
}
struct torture_context;