90 lines
2.3 KiB
C++
90 lines
2.3 KiB
C++
/* testsuite.cc
|
|
|
|
This file is part of Cygwin.
|
|
|
|
This software is a copyrighted work licensed under the terms of the
|
|
Cygwin license. Please consult the file "CYGWIN_LICENSE" for
|
|
details. */
|
|
|
|
/* This file implements a driver for performing tests on the file/path
|
|
translation code in path.cc. This file is meant to be generic, all
|
|
test harness data is in testsuite.h. */
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <unistd.h>
|
|
#define WIN32_LEAN_AND_MEAN
|
|
#include <windows.h>
|
|
#ifndef TESTSUITE
|
|
#define TESTSUITE
|
|
#endif
|
|
#include "testsuite.h"
|
|
|
|
typedef struct
|
|
{
|
|
const char *cwd; /* in win32 form, as if by GetCurrentDirectory */
|
|
const char *posix; /* input */
|
|
const char *win32; /* expected output */
|
|
} test_t;
|
|
|
|
#define TESTSUITE_TESTS
|
|
#include "testsuite.h"
|
|
#undef TESTSUITE_TESTS
|
|
|
|
static int curtest;
|
|
|
|
/* A replacement for the w32api GetCurrentDirectory() that returns
|
|
the cwd that the current test specifies. */
|
|
DWORD
|
|
testsuite_getcwd (DWORD nBufferLength, LPSTR lpBuffer)
|
|
{
|
|
unsigned len = strlen (testsuite_tests[curtest].cwd) + 1;
|
|
|
|
/* If the test specified NO_CWD, then it means we should not have
|
|
needed the CWD for that test as the test was for an absolute path,
|
|
and so if we see that here return 0, simulating a
|
|
GetCurrentDirectory() error. */
|
|
if (strcmp (testsuite_tests[curtest].cwd, NO_CWD) == 0)
|
|
return 0;
|
|
|
|
if (nBufferLength >= len)
|
|
{
|
|
strcpy (lpBuffer, testsuite_tests[curtest].cwd);
|
|
return len - 1;
|
|
}
|
|
return len;
|
|
}
|
|
|
|
extern char *cygpath (const char *s, ...);
|
|
|
|
int
|
|
main (int argc, char **argv)
|
|
{
|
|
int numpass = 0;
|
|
|
|
for (test_t &t = testsuite_tests[curtest]; t.posix; t = testsuite_tests[++curtest])
|
|
{
|
|
char *result = cygpath (t.posix, NULL);
|
|
bool pass = (strcmp (result, t.win32) == 0);
|
|
|
|
if (pass)
|
|
{
|
|
numpass++;
|
|
printf ("test %03d: PASS cwd=%-18s input=%-22s expected+actual=%s\n",
|
|
curtest, t.cwd, t.posix, result);
|
|
}
|
|
else
|
|
{
|
|
printf ("test %03d: FAIL cwd=%-18s input=%-29s expected=%-25s actual=%s\n",
|
|
curtest, t.cwd, t.posix, t.win32, result);
|
|
}
|
|
}
|
|
printf ("\n"
|
|
"total tests: %d\n"
|
|
"pass : %d (%.1f%%)\n"
|
|
"fail : %d (%.1f%%)\n",
|
|
curtest, numpass, ((float)numpass)/curtest * 100.0F, curtest - numpass,
|
|
((float)curtest - numpass)/curtest * 100.0F);
|
|
return (numpass < curtest ? 1 : 0);
|
|
}
|