#!/usr/bin/env perl

# Copyright (c) 2015 Christian Jaeger, copying@christianjaeger.ch
# This is free software. See the file COPYING.md that came bundled
# with this file.

use strict; use warnings; use warnings FATAL => 'uninitialized';

# find modules from functional-perl working directory (not installed)
use Cwd 'abs_path';
our ($mydir, $myname); BEGIN {
    my $location= (-l $0) ? abs_path ($0) : $0;
    $location=~ /(.*?)([^\/]+?)_?\z/s or die "?";
    ($mydir, $myname)=($1,$2);
}
use lib "$mydir/../lib";
use lib "$mydir/../meta";

# avoid dependency on Sub::Call::Tail:
use lib "./lib";
use Chj::xperlfunc qw(xxsystem);
xxsystem "meta/tail-expand";
use lib "$mydir/../.htmlgen";

use ModuleList;

our $modules= modulenamelist;

# ------------------------------------------------------------------
# Non-core dependencies of modules to decide whether to skip testing
# them.  XX: keep these updated!

our %dependencies=
  (
   # Don't specify Sub::Call::Tail (if meta/tail-expand can expand it)!
   'FP::Text::CSV'=> ['Text::CSV'],
   'FP::url_'=> ['URI'],
   'Chj::CPAN::ModulePODUrl'=> ['LWP::UserAgent'],
   'FP::DBI'=> ['DBI'],
   'Htmlgen::UriUtil'=> ['Function::Parameters', 'URI'],
   'Htmlgen::Toc'=> ['Function::Parameters'],
   'Htmlgen::PXMLMapper'=> ['Function::Parameters'],
   'Htmlgen::PathUtil'=> ['Function::Parameters', 'File::Spec'],
   'Htmlgen::PathTranslate'=> ['Function::Parameters', 'Htmlgen::PathUtil'],
   'Htmlgen::Mediawiki'=> ['Function::Parameters', 'Encode', 'URI'],
   'Htmlgen::MarkdownPlus'=> ['Function::Parameters', 'Htmlgen::Htmlparse',
                              'Text::Markdown', 'Htmlgen::Mediawiki'],
   'Htmlgen::Linking'=> ['Function::Parameters', 'Htmlgen::PathUtil',
                         'Chj::CPAN::ModulePODUrl', 'Htmlgen::UriUtil',
                        ],
   'Htmlgen::Htmlparse'=> ['Function::Parameters', 'HTML::TreeBuilder'],
   'Htmlgen::FileUtil'=> ['Function::Parameters' ],
   'Htmlgen::default_config'=> ['Function::Parameters' ],
   'Htmlgen::Cost'=> ['Function::Parameters' ],
   'Htmlgen::Nav'=> ['Function::Parameters'],
   'Chj::HTTP::Daemon'=> ['HTTP::Request'],
   map { $_ => ['FP::Repl::Dependencies'] }
   qw(
         FP::Repl::Dependencies
         FP::Repl::Repl
         FP::Repl::StackPlus
         Chj::Serialize
         FP::Repl::Trap
         FP::Repl::WithRepl
         FP::Repl
         FP::Trie::t
    ),
  );


# ------------------------------------------------------------------


use Test::More;

for (@$modules) {
  SKIP: {
        if (0 and #no need anymore? ?
            my $ds= $dependencies{$_}) {
            for my $d (@$ds) {
                eval "require $d; 1" or skip "failed to use $d", 1
            }
        }
        require_ok $_
    }
}

is( eval { Chj::TEST::run_tests() } // do { diag $@; undef}, 0, "run_tests");

done_testing;


#use Chj::ruse;
#use Chj::Backtrace;
#use FP::Repl;
#repl;
