correct symlink generation
[engit/Iron-Munger.git] / t / stats_saver.t
index 4ffddd1..1bae8ad 100644 (file)
@@ -2,7 +2,16 @@ use strict;
 use warnings;
 use Test::More qw(no_plan);
 use IO::All;
-use File::Temp qw(tempdir);
+use File::Temp ();
+
+sub tempdir {
+  if ($ENV{UNCLEAN_TEMP}) {
+    my $dir = File::Temp::tempdir;
+    warn $dir;
+    return $dir;
+  }
+  return File::Temp::tempdir(CLEANUP => 1);
+}
 
 BEGIN { use_ok aliased => 'IronMunger::StatsSaver'; }
 BEGIN { use_ok aliased => 'IronMunger::Monger'; }
@@ -29,12 +38,31 @@ my $monger = Monger->new(
 
 is($monger->level, 'paper', 'mst sucks');
 
-my $dir = tempdir(CLEANUP => 1);
+my $dir = tempdir;
 
 $saver = StatsSaver->new(dir => $dir);
 
 $saver->_write_symlinks_for($monger);
 
-my @links = sort map $_->readlink, grep -l, io($dir)->all_files;
+my $bdir = io("${dir}/badges");
+
+my $mbdir = io("${dir}/mybadge");
+
+my %found_links;
+do {
+  my @l = $mbdir->all_links(2);
+  @found_links{@l} = (1) x scalar @l;
+};
+
+foreach my $gender (qw(male female)) {
+  my $desc = "${gender} symlink";
+  my $l = io("${mbdir}/${gender}/mst.png");
+  ok($l->is_link, "${desc} exists");
+  is(
+    $l->readlink, "${bdir}/${gender}/paper.png",
+    "${desc} points to right target",
+  );
+  ok(delete $found_links{$l}, "${desc} in link list");
+}
 
-warn join("\n", @links);
+ok(!(keys %found_links), 'all links accounted for');