#!/usr/bin/perl

use strict;
use warnings;

my %has_test;

for my $fn (@ARGV) {
    my ($modname, $has_test) = (undef,0);
    open my $fh, "<", $fn or next;
    while($_ = <$fh>) {
        s/--.*//;
        s/{-.*-}//;
        $modname = $1 if /\s*module\s+([A-Z][A-Za-z_.]*)/;
        $has_test = 1 if /\bEXPORT_SELFTEST\b/;
        last if /\bwhere\b/;
    }
    next unless defined $modname;
    #print "$modname: $has_test\n";
    $has_test{$modname} = $has_test;
}


print "module SelfTest(selfTest) where\n\n";
foreach(sort keys %has_test) {
    print "import qualified $_(_selftest)\n";
}
print "\n\n";

print "selfTest = do\n";
foreach(sort keys %has_test) {
    print "    $_._selftest\n";
}
