Index: [Article Count Order] [Thread]

Date:  Tue, 28 Nov 2000 01:54:17 +0900
From:  Yuji Yamano <u90156@....jp>
Subject:  [XP-jp:01206] Re: C のテスト環境
Sender:  Yuji Yamano <yyamano@....jp>
To:  extremeprogramming-jp@....jp (extremeprogramming-jp ML)
Message-Id:  <20001128013823T.yyamano@....jp>
In-Reply-To:  <20001127213537omura@....jp>
References:  <20001127.203356.125128408.u90156@....jp>	<20001127213537omura@....jp>
Posted:  Tue, 28 Nov 2000 01:38:23 +0900
X-Mail-Count: 01206

こんばんは。

omura@....jp writes:

> testutility_test.cに
> #include <stdlib.h>
> を追加
> 
> testutility_test.[hc]の
> #ifdef __unix
> を
> #ifdef 1
> に変更
> 
> そしてmakeするとどうなるでしょうか?

ちょっと手をいれてみました。
diff は、このメールの最後につけておきます。

yyamano@bigfoot% gmake test
gcc -g -Wall -o tu testutility.c testutility_test.c
gcc -g -Wall -o tf testutility.c testutility_fail_test.c
Running tu
.....
Running tf
..

tf で `..' しか出力されないのは期待している動作なんでしょうか?

> >ちなみに http://www.ki.rim.or.jp/~omura/image/Rabbit.gif の
> >うさぎ/あひるは、ウィトゲンシュタインでしたっけ?
> 
> へへへ。そのとおりです(^^)

記号論まわりはオブジェクト指向と親和性が高いんでしょうか?

Allen Holub が 
http://www.ibm.co.jp/developerworks/components/001117/j_oo-index.html
に書いていた The OO design process: Getting started How to prioritize 
の中でも、言語学がうんぬん(構造主義言語学との類似?)という文がありまし
たけど。

アナリシスパターンなんかは、ソフトウェアというより社会学とか文化人類学
の本みたいな印象をうけましたし、僕にとっては興味深いところです。

-- やまの

diff -u -N /tmp/orig/dos2unix ./dos2unix
--- /tmp/orig/dos2unix	Thu Jan  1 09:00:00 1970
+++ ./dos2unix	Tue Nov 28 00:32:48 2000
@@ -0,0 +1,11 @@
+#! /bin/sh
+
+files="makefile testutility.c testutility.h \
+       testutility_fail_test.c testutility_test.c"
+
+
+for f in $files
+do
+    sed -e 's///g' $f > tmp.$$
+    mv $f ${f}.orig && mv tmp.$$ $f 
+done
diff -u -N /tmp/orig/makefile ./makefile
--- /tmp/orig/makefile	Tue Nov 28 01:16:08 2000
+++ ./makefile	Tue Nov 28 01:19:31 2000
@@ -1,15 +1,29 @@
+#
 CC=gcc
+RM=rm
+#CFLAGS=-g -Wall -DHAVE_FAIL_BLOCK
+
+# Solaris 2.6
+#CFLAGS=-g -Wall 
+# NetBSD 1.5
+CFLAGS=-g -Wall
+
+PROGS= tu tf
 SRCN=testutility.c testutility_test.c
 
 SRCF=testutility.c testutility_fail_test.c
 
+all: $(PROGS)
 
-testc: $(SRC)
-	$(CC) -g -o tu $(SRCN)
+tu: $(SRCN)
+	$(CC) $(CFLAGS) -o tu $(SRCN)
 
-testu:
-	$(CC) -g -o tf $(SRCF)
+tf: $(SRCF)
+	$(CC) $(CFLAGS) -o tf $(SRCF)
 
 clean:
-	$(RM) tu tf core a.out *.o
+	-$(RM) $(PROGS) core a.out *.o *~
+
+test: $(PROGS)
+	@for f in $(PROGS); do echo "Running $$f" && ./$$f && echo ""; done
 
diff -u -N /tmp/orig/testutility.c ./testutility.c
--- /tmp/orig/testutility.c	Tue Nov 28 01:16:08 2000
+++ ./testutility.c	Tue Nov 28 00:40:54 2000
@@ -98,7 +98,7 @@
   printf( "." );
 }/* test_frame */
 
-#ifdef __unix
+#ifndef HAVE_FAIL_BLOCK
 /*------------------------------------------------------------------------*/
 /* some functions directly exit. 
  * fail_block is designed for such functions
@@ -107,7 +107,7 @@
  */ 
 int fail_block( test_fn fn, TEST_ENV* env ){
   pid_t pid;
-  if ( ( pid = fork1() ) == 0 ) { /*child */
+  if ( ( pid = fork() ) == 0 ) { /*child */
     close( 1 ); close( 2 ); /* I prefer ignoring the message of the function */
     if ( env ) env->setUp( (void**)&env->data );
     if ( env ) fn( env->data ); else fn( NULL );
@@ -122,6 +122,6 @@
     exit( INT_MIN );
   }
 }/* fail_block */
-#endif
+#endif /* HAVE_FAIL_BLOCK */
 
 
diff -u -N /tmp/orig/testutility.h ./testutility.h
--- /tmp/orig/testutility.h	Tue Nov 28 01:16:08 2000
+++ ./testutility.h	Tue Nov 28 00:41:53 2000
@@ -68,7 +68,7 @@
 
 #define TEST_FRAME0( X ) test_frame( #X, X, NULL )
 
-#ifdef __unix
+#ifndef HAVE_FAIL_BLOCK
 int fail_block( test_fn fn, TEST_ENV* env );
 #endif
 
diff -u -N /tmp/orig/testutility_test.c ./testutility_test.c
--- /tmp/orig/testutility_test.c	Tue Nov 28 01:16:08 2000
+++ ./testutility_test.c	Tue Nov 28 00:54:46 2000
@@ -1,5 +1,6 @@
 /* here are for testutility */
 #include <string.h>
+#include <stdlib.h>
 #include "testutility.h"
 
 /**************** test functions ****************/
@@ -34,7 +35,7 @@
 void su0( void **data ){
 	MY_DATA **mydata = (MY_DATA**)data;
 	MY_DATA *d = (MY_DATA*)malloc( sizeof( MY_DATA ) );
-	d->str1 = (char*)malloc( sizeof( TESTSTR1 ) );
+	d->str1 = (char*)malloc( sizeof( TESTSTR1 )+1 );
 	strcpy( d->str1, TESTSTR1 );
 	*mydata = d;
 }
@@ -42,7 +43,7 @@
 void td0( void **data ){
 	MY_DATA **mydata = (MY_DATA**)data;
 	MY_DATA *d = *mydata;
-	free( &d->str1 );
+	free( d->str1 );
 	free( *mydata );
 }