summaryrefslogtreecommitdiff
path: root/t/autoindex.t
blob: f56a352699147b147dd439ba0d30da562927db0c (plain)
  1. #!/usr/bin/perl
  2. package IkiWiki;
  3. use warnings;
  4. use strict;
  5. use Test::More tests => 20;
  6. BEGIN { use_ok("IkiWiki"); }
  7. BEGIN { use_ok("IkiWiki::Render"); }
  8. BEGIN { use_ok("IkiWiki::Plugin::aggregate"); }
  9. BEGIN { use_ok("IkiWiki::Plugin::autoindex"); }
  10. BEGIN { use_ok("IkiWiki::Plugin::html"); }
  11. BEGIN { use_ok("IkiWiki::Plugin::mdwn"); }
  12. ok(! system("rm -rf t/tmp; mkdir t/tmp"));
  13. $config{verbose} = 1;
  14. $config{srcdir} = 't/tmp';
  15. $config{underlaydir} = 't/tmp';
  16. $config{underlaydirbase} = '.';
  17. $config{templatedir} = 'templates';
  18. $config{usedirs} = 1;
  19. $config{htmlext} = 'html';
  20. $config{wiki_file_chars} = "-[:alnum:]+/.:_";
  21. $config{userdir} = "users";
  22. $config{tagbase} = "tags";
  23. $config{default_pageext} = "mdwn";
  24. $config{wiki_file_prune_regexps} = [qr/^\./];
  25. is(checkconfig(), 1);
  26. %oldrenderedfiles=%pagectime=();
  27. %pagesources=%pagemtime=%oldlinks=%links=%depends=%typedlinks=%oldtypedlinks=
  28. %destsources=%renderedfiles=%pagecase=%pagestate=();
  29. # pages that (we claim) were deleted in an earlier pass
  30. $wikistate{autoindex}{deleted}{deleted} = 1;
  31. $wikistate{autoindex}{deleted}{expunged} = 1;
  32. $wikistate{autoindex}{deleted}{reinstated} = 1;
  33. foreach my $page (qw(tags/numbers deleted/bar reinstated reinstated/foo gone/bar)) {
  34. # we use a non-default extension for these, so they're distinguishable
  35. # from programmatically-created pages
  36. $pagesources{$page} = "$page.html";
  37. $pagemtime{$page} = $pagectime{$page} = 1000000;
  38. writefile("$page.html", "t/tmp", "your ad here");
  39. }
  40. # a directory containing only an internal page shouldn't be indexed
  41. $pagesources{"has_internal/internal"} = "has_internal/internal._aggregated";
  42. $pagemtime{"has_internal/internal"} = 123456789;
  43. $pagectime{"has_internal/internal"} = 123456789;
  44. writefile("has_internal/internal._aggregated", "t/tmp", "this page is internal");
  45. # "gone" disappeared just before this refresh pass so it still has a mtime
  46. $pagemtime{gone} = $pagectime{gone} = 1000000;
  47. IkiWiki::Plugin::autoindex::refresh();
  48. # these pages are still on record as having been deleted, because they have
  49. # a reason to be re-created
  50. is($wikistate{autoindex}{deleted}{deleted}, 1);
  51. is($wikistate{autoindex}{deleted}{gone}, 1);
  52. ok(! -f "t/tmp/deleted.mdwn");
  53. ok(! -f "t/tmp/gone.mdwn");
  54. # this page does not exist and has no reason to be re-created, so we forget
  55. # about it - it will be re-created if it gains sub-pages
  56. ok(! exists $wikistate{autoindex}{deleted}{expunged});
  57. ok(! -f "t/tmp/expunged.mdwn");
  58. # a directory containing only an internal page shouldn't be indexed
  59. ok(! exists $wikistate{autoindex}{deleted}{has_internal});
  60. ok(! -f "t/tmp/has_internal.mdwn");
  61. # this page was re-created, so it drops off the radar
  62. ok(! exists $wikistate{autoindex}{deleted}{reinstated});
  63. ok(! -f "t/tmp/reinstated.mdwn");
  64. # needs creating
  65. ok(! exists $wikistate{autoindex}{deleted}{tags});
  66. ok(-s "t/tmp/tags.mdwn");
  67. 1;