Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1184)

Unified Diff: third_party/xdg-utils/tests/doc_gen.pl

Issue 151098: Patch from mdm@google.com... (Closed) Base URL: svn://chrome-svn/chrome/trunk/deps/
Patch Set: Created 11 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/xdg-utils/tests/debug/t.var_bleed ('k') | third_party/xdg-utils/tests/generic/t.bogus_arg » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/xdg-utils/tests/doc_gen.pl
===================================================================
--- third_party/xdg-utils/tests/doc_gen.pl (revision 0)
+++ third_party/xdg-utils/tests/doc_gen.pl (revision 0)
@@ -0,0 +1,164 @@
+#!perl
+
+use Data::Dumper;
+
+my @test_files = split('\s+',`ls generic/t.* xdg-*/t.*`);
+
+my $cvs_pre = "http://webcvs.freedesktop.org/portland/portland/xdg-utils/tests/";
+my $cvs_post = '?view=markup';
+my $assert_doc = "assertions.html";
+my $now = scalar localtime;
+my $style = "<style type=\"text/css\" media=\"all\">@import url(\"layout.css\");</style></head>\n";
+my $root_header = qq{| <a href="index.html">Tests</a> | <a href="$assert_doc">Assertions</a> | <a href="http://portland.freedesktop.org/wiki/WritingXdgTests">Overview</a> |<hr/>\n};
+my $group_header = qq{| <a href="../index.html">Tests</a> | <a href="../$assert_doc">Assertions</a> | <a href="http://portland.freedesktop.org/wiki/WritingXdgTests">Overview</a> |<hr/>\n};
+my $footer = "<hr><font size=\"-1\">xdg-utils test documentation generated $now</font>\n";
+
+my %fcns;
+
+my %group;
+my %shortdesc;
+
+## Read assertion file
+open IN, 'include/testassertions.sh' or die "Failed to open assertion file: $!\n";
+my $state = 'NULL';
+my %assertions;
+while ( <IN> ) {
+ if ( m/(\w+)\s*\(\)/ ) {
+ $state = $1;
+ $assertions{$state} = ();
+ }
+ elsif ( $state ne 'NULL' and m/^#(.*)/ ) {
+ my $txt = $1;
+ chomp $txt;
+ push @{ $assertions{$state} }, $txt;
+ }
+ else {
+ $state = 'NULL';
+ }
+}
+close IN;
+
+if ( ! -d 'doc' ) { mkdir 'doc'; }
+
+open OUT, ">doc/$assert_doc" or die "Failed to open $assert_doc: $!\n";
+print OUT "<html><head><title>xdg-utils test assertions</title>$style</head><body>\n$root_header";
+
+my @s_assert = sort keys %assertions ;
+print OUT qq{<h2>Defined Assertions in <a href="$cvs_pre}.qq{include/testassertions.sh$cvs_post">include/testassertions.sh</a></h2>\n};
+for $a ( @s_assert ) {
+ print OUT qq{<a href="#$a">$a</a><br>\n};
+}
+for $a ( @s_assert ) {
+ print OUT qq{<hr><h2><a name="$a">$a</a></h2>\n};
+ print OUT "<pre>", join("\n",@{ $assertions{$a} } ), "</pre>\n";
+}
+print OUT "$footer</body></html>";
+
+
+## Read test files
+for $f ( @test_files ) {
+ open IN, $f or die "Failed to open $f: $!\n";
+ $f =~ m{(.+)/t\.(.+)};
+ my $dir = $1;
+ my $test = $2;
+ `mkdir -p doc/$dir`;
+ my $o = "doc/$dir/$test.html";
+
+ push @{ $group{$dir} }, $test;
+
+ open HTM, ">$o" or die "Failed to open '$o': $!\n";
+ print HTM "<html><head><title>xdg-utils test: $f</title>\n";
+ print HTM $style;
+
+ print HTM "<body>$group_header<h1>Test: <a href=\"$cvs_pre$f$cvs_post\">$f</a></h1><hr/>\n";
+ my $fcn = '';
+ my $state = 'BEGIN';
+ while ( <IN> ) {
+ #find the test function
+ if ( m/(\w+)\s*\(\)/ ) {
+ $fcn = $1;
+ if (defined $fcns{$fcn} ){
+ print "WARNING in $f: $fcn already exists in $fcns{$fcn}!\n"
+ }
+ $fcns{$fcn} = $f;
+ $state = 'FUNCTION';
+ }
+ #find test_start
+ elsif ( m/test_start (.*)/ ) {
+ print HTM "<h2>Purpose of $fcn</h2>";
+ my $txt = $1;
+ $txt =~ s/\$FUNCNAME:*\s*//;
+ $txt =~ s/\"//g;
+ $shortdesc{ $test } = $txt;
+ print HTM "<p>$txt</p>\n";
+ $state = 'START';
+ }
+ #find test_purpose
+ elsif ( m/test_purpose (.*)/ ) {
+ print HTM "<h2>Description</h2>";
+ my $txt = $1;
+ $txt =~ s/\"//g;
+ print HTM "<p>$txt</p>\n";
+ }
+ #find initilization
+ elsif ( m/test_init/ ) {
+ print HTM "<h2>Depencencies</h2>\n";
+ $state = 'INIT';
+ next;
+ }
+ elsif ( m/test_procedure/ ) {
+ print HTM "<h2>Test Procedure</h2>\n";
+ $state = 'TEST';
+ next;
+ }
+ elsif ( m/test_note (.*)/ ) {
+ print HTM "<h2>Note</h2><p>$1</p>\n";
+ next;
+ }
+ elsif ( m/test_result/ ) {
+ $state = 'DONE';
+ }
+ if ( m/^#/ ) {
+ next;
+ }
+ if ( $state eq 'INIT' or $state eq 'TEST' ) {
+ $line = $_;
+ $line =~ s/^\s*(\w+)/<a href="\.\.\/$assert_doc#$1">$1<\/a>/;
+ if ( $assertions{$1} ) {
+ print HTM "<p>$line</p>\n";
+ #print "$f:\t'$1' found\n";
+ }
+ else {
+ #print "$f:\t'$1' not found\n";
+ print HTM "<p>$_</p>\n";
+ }
+ #print HTM "<p>$_</p>\n";
+ }
+ }
+ print HTM "$footer</body></html>\n";
+ close HTM;
+ close IN;
+}
+
+open INDEX, ">doc/index.html" or die "Could not open index: $!";
+print INDEX "<html><head><title>xdg-utils test suite</title>\n";
+print INDEX $style;
+
+print INDEX "<body>$root_header<h1>xdg-utils test documentation</h1>";
+
+my @s_groups = sort keys %group;
+
+for $g ( @s_groups ) {
+ print INDEX qq{<a href="#$g">$g</a> \n};
+}
+print INDEX "<table border=0>\n";
+for $k ( @s_groups ) {
+ print INDEX qq{<tr><td colspan=2><hr><h2><a name="$k">$k</a></h2></td></tr>\n};
+ for $i ( @{ $group{$k} } ) {
+ print INDEX "<tr><td><a href=\"$k/$i.html\">$i</a></td><td>$shortdesc{$i}</td></tr>\n";
+ }
+}
+print INDEX "</table>$footer</body></html>\n";
+close INDEX;
+
+#print Dumper keys %assertions;
Property changes on: third_party/xdg-utils/tests/doc_gen.pl
___________________________________________________________________
Name: svn:executable
+ *
« no previous file with comments | « third_party/xdg-utils/tests/debug/t.var_bleed ('k') | third_party/xdg-utils/tests/generic/t.bogus_arg » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698