mirror of
https://github.com/reactos/reactos.git
synced 2026-09-13 05:10:40 +08:00
* config (REGRESSIONTESTS): Add. * rules.mak (REGTESTS_PATH_INC): Add. * drivers/net/tcpip/makefile: Support regression tests. * drivers/net/tcpip/tcpip/main.c: Prepare regression tests. * hal/halx86/Makefile: Rename TARGET_LIBPATH to TARGET_IMPLIBPATH. * regtests/kmregtests/driver.c (KMRegTestsRegister): Add. (KMRegTestsRun): Move call to InitializeTests() and RegisterTests() to DriverEntry(). (KMRegTestsDispatch): Support IOCTL_KMREGTESTS_REGISTER. * regtests/kmregtests/kmregtests.h (IOCTL_KMREGTESTS_REGISTER): Define. * tools/config.mk: Define REGTESTS if REGRESSIONTESTS = 1. * tools/helper.mk: Support module private regression tests. (TARGET_LIBPATH): Rename to TARGET_IMPLIBPATH. (TARGET_LIBPATH, TARGET_REGTESTS): Add. * tools/mkconfig.c: Support REGTESTS. * tools/regtests.c (umstubfile, kmstubfile): Add. (is_file_changed, write_file_if_changed): Add. (KMSTUB): Add. (HELP): Mention -u and -k switches. (main): Parse -u and -k switches. * drivers/net/tcpip/tests: New directory. * drivers/net/tcpip/tests/.cvsignore: New file. * drivers/net/tcpip/tests/Makefile: Makefile. * drivers/net/tcpip/tests/tests: New directory. * drivers/net/tcpip/tests/tests/.cvsignore: New file. svn path=/trunk/; revision=8298
130 lines
2.7 KiB
C
130 lines
2.7 KiB
C
#include <string.h>
|
|
#include <stdlib.h>
|
|
#include <stdio.h>
|
|
|
|
#define max(a, b) ((a) > (b) ? (a) : (b))
|
|
|
|
int
|
|
write_if_change(char* outbuf, char* filename)
|
|
{
|
|
FILE* out;
|
|
unsigned int end;
|
|
char* cmpbuf;
|
|
unsigned int stat;
|
|
|
|
out = fopen(filename, "rb");
|
|
if (out == NULL)
|
|
{
|
|
out = fopen(filename, "wb");
|
|
if (out == NULL)
|
|
{
|
|
fprintf(stderr, "Unable to create output file\n");
|
|
return(1);
|
|
}
|
|
fputs(outbuf, out);
|
|
fclose(out);
|
|
return(0);
|
|
}
|
|
|
|
fseek(out, 0, SEEK_END);
|
|
end = ftell(out);
|
|
cmpbuf = malloc(end);
|
|
if (cmpbuf == NULL)
|
|
{
|
|
fprintf(stderr, "Out of memory\n");
|
|
fclose(out);
|
|
return(1);
|
|
}
|
|
|
|
fseek(out, 0, SEEK_SET);
|
|
stat = fread(cmpbuf, 1, end, out);
|
|
if (stat != end)
|
|
{
|
|
fprintf(stderr, "Failed to read data\n");
|
|
fclose(out);
|
|
return(1);
|
|
}
|
|
if (end == strlen(outbuf) && memcmp(cmpbuf, outbuf, end) == 0)
|
|
{
|
|
fclose(out);
|
|
return(0);
|
|
}
|
|
|
|
fclose(out);
|
|
out = fopen(filename, "wb");
|
|
if (out == NULL)
|
|
{
|
|
fprintf(stderr, "Unable to create output file\n");
|
|
return(1);
|
|
}
|
|
|
|
stat = fwrite(outbuf, 1, strlen(outbuf), out);
|
|
if (strlen(outbuf) != stat)
|
|
{
|
|
fprintf(stderr, "Unable to write output file\n");
|
|
fclose(out);
|
|
return(1);
|
|
}
|
|
fclose(out);
|
|
return(0);
|
|
}
|
|
|
|
int
|
|
main(int argc, char* argv[])
|
|
{
|
|
int include_tests;
|
|
unsigned int i;
|
|
char* outbuf;
|
|
char* s;
|
|
char config[512];
|
|
|
|
if (argc == 1)
|
|
{
|
|
fprintf(stderr, "Not enough arguments\n");
|
|
return(1);
|
|
}
|
|
|
|
outbuf = malloc(256 * 1024);
|
|
if (outbuf == NULL)
|
|
{
|
|
fprintf(stderr, "Out of memory 1\n");
|
|
return(1);
|
|
}
|
|
|
|
s = outbuf;
|
|
s = s + sprintf(s, "/* Automatically generated, ");
|
|
s = s + sprintf(s, "Edit the Makefile to change configuration */\n");
|
|
s = s + sprintf(s, "#ifndef __INCLUDE_CONFIG_H\n");
|
|
s = s + sprintf(s, "#define __INCLUDE_CONFIG_H\n");
|
|
strcpy(config, "");
|
|
include_tests = 0;
|
|
for (i = 2; i < argc; i++)
|
|
{
|
|
if (strcmp(argv[i], "REGTESTS") == 0)
|
|
{
|
|
include_tests = 1;
|
|
}
|
|
s = s + sprintf(s, "#define %s\n", argv[i]);
|
|
strcat(config, argv[i]);
|
|
if (i != (argc - 1))
|
|
{
|
|
strcat(config, " ");
|
|
}
|
|
}
|
|
if (include_tests)
|
|
{
|
|
s = s + sprintf(s, "#ifndef __ASM__\n");
|
|
s = s + sprintf(s, "extern void PrepareTests();\n");
|
|
s = s + sprintf(s, "#define PREPARE_TESTS PrepareTests();\n");
|
|
s = s + sprintf(s, "#endif /* __ASM__ */\n");
|
|
}
|
|
else
|
|
{
|
|
s = s + sprintf(s, "#define PREPARE_TESTS\n");
|
|
}
|
|
s = s + sprintf(s, "#define CONFIG \"%s\"\n", config);
|
|
s = s + sprintf(s, "#endif /* __INCLUDE_CONFIG_H */\n");
|
|
|
|
return(write_if_change(outbuf, argv[1]));
|
|
}
|