use Carp qw(cluck confess croak);
use Fcntl qw( :DEFAULT :flock );
use Scalar::Util qw( blessed refaddr openhandle );
-use DBIx::Class::_Util qw( scope_guard parent_dir mkdir_p );
+use DBIx::Class::_Util qw( scope_guard parent_dir );
use base 'Exporter';
our @EXPORT_OK = qw(
- dbg stacktrace
+ dbg stacktrace class_seems_loaded
local_umask slurp_bytes tmpdir find_co_root rm_rf
visit_namespaces PEEPEENESS
check_customcond_args
# polluting the root dir with random crap or failing outright
my $local_dir = find_co_root . 't/var/';
- mkdir_p $local_dir;
+ # Generlly this should be handled by ANFANG, but double-check ourselves
+ # Not using mkdir_p here: we *know* everything else up until 'var' exists
+ # If it doesn't - we better fail outright
+ # (also saves an extra File::Path require(), small enough as it is)
+ -d $local_dir
+ or
+ mkdir $local_dir
+ or
+ die "Unable to create build-local tempdir '$local_dir': $!\n";
warn "\n\nUsing '$local_dir' as test scratch-dir instead of '$dir': $reason_dir_unusable\n\n";
$dir = $local_dir;
return $visited_count;
}
+#
+# Replicate the *heuristic* (important!!!) implementation found in various
+# forms within Class::Load / Module::Inspector / Class::C3::Componentised
+#
+sub class_seems_loaded ($) {
+
+ croak "Function expects a class name as plain string (no references)"
+ unless defined $_[0] and not length ref $_[0];
+
+ no strict 'refs';
+
+ return 1 if defined ${"$_[0]::VERSION"};
+
+ return 1 if @{"$_[0]::ISA"};
+
+ return 1 if $INC{ (join ('/', split ('::', $_[0]) ) ) . '.pm' };
+
+ ( !!*{"$_[0]::$_"}{CODE} ) and return 1
+ for keys %{"$_[0]::"};
+
+ return 0;
+}
+
1;