shithub: purgatorio

ref: 8a788aea84aad3bfbd5b39d78c1925654f3b9e14
dir: /appl/lib/itslib.b/

View raw version
implement Itslib;

include "sys.m";
	sys: Sys;
include "itslib.m";
include "env.m";
	env: Env;


init(): ref Tconfig
{
	sys = load Sys Sys->PATH;
	tc := ref Tconfig(-1, sys->fildes(2));
	env = load Env Env->PATH;
	if (env == nil)
		sys->fprint(sys->fildes(2), "Failed to load %s\n", Env->PATH);
	else {
		vstr := env->getenv(ENV_VERBOSITY);
		mstr := env->getenv(ENV_MFD);
		if (vstr != nil && mstr != nil) {
			tc.verbosity = int vstr;
			tc.mfd = sys->fildes(int mstr);
		}
	}
	if (tc.verbosity >= 0)
		tc.report(S_STIME, 0, sys->sprint("%d", sys->millisec()));
	else 
		sys->fprint(sys->fildes(2), "Test is running standalone\n");
	return tc;
}

Tconfig.report(tc: self ref Tconfig, sev: int, verb: int, msg: string)
{
	if (sev < 0 || sev > S_ETIME) {
		sys->fprint(sys->fildes(2), "Tconfig.report: Bad severity code: %d\n", sev);
		sev = 0;
	}
	if (tc.mfd != nil && sys->fprint(tc.mfd, "%d%d%s\n", sev, verb, msg) <=0)
		tc.mfd = nil;		# Master test process was probably killed
}

Tconfig.done(tc: self ref Tconfig)
{
	tc.report(S_ETIME, 0, sys->sprint("%d", sys->millisec()));
}