aboutsummaryrefslogtreecommitdiff
path: root/t
diff options
context:
space:
mode:
authordakkar <dakkar@luxion>2007-09-09 11:18:59 +0000
committerdakkar <dakkar@luxion>2007-09-09 11:18:59 +0000
commit9deff2ac08868dcc097d4335b6919632f1c5d0d2 (patch)
tree2886ab7bf0c438ac19e0c585ed68c08c399f34bb /t
parentparser call on putting scalar (diff)
downloadWebCoso-9deff2ac08868dcc097d4335b6919632f1c5d0d2.tar.gz
WebCoso-9deff2ac08868dcc097d4335b6919632f1c5d0d2.tar.bz2
WebCoso-9deff2ac08868dcc097d4335b6919632f1c5d0d2.zip
first test (preparation)
git-svn-id: svn://luxion/repos/WebCoso/trunk@286 fcb26f47-9200-0410-b104-b98ab5b095f3
Diffstat (limited to 't')
-rw-r--r--t/test-site/common/document-listing.tt3
-rw-r--r--t/test-site/common/du2html.xsl27
-rw-r--r--t/test-site/common/reST.xsl393
-rw-r--r--t/test-site/src/bar/baz/document.en.rest.txt7
-rw-r--r--t/test-site/src/bar/baz/document.it.rest.txt7
l---------t/test-site/src/bar/baz/du2html.xsl1
-rw-r--r--t/test-site/src/bar/document.en.rest.tt5
-rw-r--r--t/test-site/src/bar/document.it.rest.tt5
l---------t/test-site/src/bar/du2html.xsl1
-rw-r--r--t/test-site/src/bar/list.tt5
-rw-r--r--t/test-site/src/document.en.rest.txt9
-rw-r--r--t/test-site/src/document.it.rest.txt9
-rw-r--r--t/test-site/src/foo/document.en.rest.txt7
-rw-r--r--t/test-site/src/foo/document.it.rest.txt7
l---------t/test-site/src/foo/du2html.xsl1
l---------t/test-site/tags/one/document-listing.tt1
-rw-r--r--t/test-site/tags/one/document.en.rest.tt5
-rw-r--r--t/test-site/tags/one/document.it.rest.tt5
l---------t/test-site/tags/three/bis/document-listing.tt1
-rw-r--r--t/test-site/tags/three/bis/document.en.rest.tt5
-rw-r--r--t/test-site/tags/three/bis/document.it.rest.tt5
l---------t/test-site/tags/three/document-listing.tt1
-rw-r--r--t/test-site/tags/three/document.en.rest.tt5
-rw-r--r--t/test-site/tags/three/document.it.rest.tt5
l---------t/test-site/tags/two/document-listing.tt1
-rw-r--r--t/test-site/tags/two/document.en.rest.tt5
-rw-r--r--t/test-site/tags/two/document.it.rest.tt5
27 files changed, 531 insertions, 0 deletions
diff --git a/t/test-site/common/document-listing.tt b/t/test-site/common/document-listing.tt
new file mode 100644
index 0000000..5210458
--- /dev/null
+++ b/t/test-site/common/document-listing.tt
@@ -0,0 +1,3 @@
+[% FOR doc IN tagged.$current_cat %]
+* `<[% doc %]>`_
+[% END %]
diff --git a/t/test-site/common/du2html.xsl b/t/test-site/common/du2html.xsl
new file mode 100644
index 0000000..d7a9b62
--- /dev/null
+++ b/t/test-site/common/du2html.xsl
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<x:stylesheet xmlns:x="http://www.w3.org/1999/XSL/Transform"
+ xmlns="http://www.w3.org/1999/xhtml"
+ version="1.0"
+ >
+
+ <x:import href="reST.xsl"/>
+
+ <x:param name="language" select="'en'"/>
+
+ <x:output method="html" encoding="utf-8"
+ doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN"
+ indent="yes"/>
+
+ <x:template match="/document">
+ <html xml:lang="{$language}" lang="{$language}">
+ <head>
+ <title><x:apply-templates select="title/node()"/></title>
+ </head>
+ <body>
+ <h1><x:apply-templates select="title/node()"/></h1>
+ <x:apply-templates/>
+ </body>
+ </html>
+ </x:template>
+
+</x:stylesheet> \ No newline at end of file
diff --git a/t/test-site/common/reST.xsl b/t/test-site/common/reST.xsl
new file mode 100644
index 0000000..7db5de2
--- /dev/null
+++ b/t/test-site/common/reST.xsl
@@ -0,0 +1,393 @@
+<!--
+ Copyright (c) 2006, Michael Alyn Miller <malyn@strangeGizmo.com>.
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ 1. Redistributions of source code must retain the above copyright
+ notice unmodified, this list of conditions, and the following
+ disclaimer.
+ 2. Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+ 3. Neither the name of Michael Alyn Miller nor the names of the
+ contributors to this software may be used to endorse or promote
+ products derived from this software without specific prior
+ written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ SUCH DAMAGE.
+-->
+
+<xsl:stylesheet
+ version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns="http://www.w3.org/1999/xhtml">
+
+
+
+<!-- Suppress the reST document title, information, and topic name.
+ These values should be pulled in by the main XSL template. -->
+<xsl:template match="/document/title" />
+<xsl:template match="/document/docinfo" />
+<xsl:template match="/document/topic" />
+
+<!-- Suppress all field lists. These are only used for 'special
+ features' implemented by the author of the site-specific reST
+ content. -->
+<xsl:template match="field_list" />
+<xsl:template match="comment" />
+
+
+<!-- ===================================================================
+ Inline elements.
+ -->
+
+<xsl:template match="emphasis">
+ <em><xsl:apply-templates /></em>
+</xsl:template>
+
+<xsl:template match="literal">
+ <tt><xsl:apply-templates /></tt>
+</xsl:template>
+
+<xsl:template match="reference">
+ <xsl:element name="a">
+ <xsl:attribute name="href">
+ <xsl:choose>
+ <xsl:when test="@refid">
+ <xsl:value-of select="concat('#', @refid)" />
+ </xsl:when>
+ <xsl:when test="@refuri">
+ <xsl:value-of select="@refuri" />
+ </xsl:when>
+ </xsl:choose>
+ </xsl:attribute>
+
+ <xsl:apply-templates />
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="strong">
+ <strong><xsl:apply-templates /></strong>
+</xsl:template>
+
+
+
+<!-- ===================================================================
+ Body elements.
+ -->
+
+
+<!-- Generic body elements. -->
+<xsl:template match="image">
+ <xsl:element name="img">
+ <xsl:attribute name="src">
+ <xsl:value-of select="@uri" />
+ </xsl:attribute>
+ <xsl:attribute name="alt">
+ <xsl:value-of select="@alt" />
+ </xsl:attribute>
+ <xsl:attribute name="width">
+ <xsl:value-of select="@width" />
+ </xsl:attribute>
+ <xsl:attribute name="height">
+ <xsl:value-of select="@height" />
+ </xsl:attribute>
+ </xsl:element>
+</xsl:template>
+
+
+<xsl:template match="line_block">
+ <div class="line-block">
+ <xsl:apply-templates />
+ </div>
+</xsl:template>
+
+<xsl:template match="line_block/line">
+ <xsl:apply-templates /><br />
+</xsl:template>
+
+
+<xsl:template match="literal_block">
+ <div class="literal-block"><xsl:apply-templates /></div>
+</xsl:template>
+
+<xsl:template match="literal_block/br">
+ <br />
+</xsl:template>
+
+
+<xsl:template match="paragraph">
+ <p><xsl:apply-templates /></p>
+</xsl:template>
+
+<xsl:template match="substitution_definition" />
+
+
+
+<!-- reST block quotes get prepended with a paragraph that reads
+ "ATTRIBUTION wrote:" where ATTRIBUTION is the contents of the
+ reStructuredText attribution (the information after the
+ double-hyphens). -->
+<xsl:template match="block_quote">
+ <blockquote>
+ <xsl:apply-templates/>
+ </blockquote>
+
+ <xsl:if test="./attribution">
+ <div class="cite">
+ <span class="cite_label">Source: </span>
+ <cite><xsl:apply-templates select="attribution/*|attribution/text()" /></cite>
+ </div>
+ </xsl:if>
+</xsl:template>
+
+<!-- Suppress block_quote/attribution elements since we grab the text of
+ the attribution from the block_quote template. -->
+<xsl:template match="block_quote/attribution" />
+
+
+<!-- Footnote references are wrapped in brackets ([..]) and enclosed in
+ an anchor tag with the class "footnoteref". -->
+<xsl:template match="footnote_reference">
+ <xsl:element name="a">
+ <xsl:attribute name="class">footnoteref</xsl:attribute>
+ <xsl:attribute name="id">
+ <xsl:text>footnote-backref-</xsl:text>
+ <xsl:value-of select="@ids" />
+ </xsl:attribute>
+ <xsl:attribute name="href">
+ <xsl:text>#footnote-</xsl:text>
+ <xsl:value-of select="@refid" />
+ </xsl:attribute>
+
+ <xsl:text>[</xsl:text>
+ <xsl:apply-templates />
+ <xsl:text>]</xsl:text>
+ </xsl:element>
+</xsl:template>
+
+<!-- The footnote itself is wrapped in a div tag with a class of
+ "footnote". The footnote begins with an anchor tag (class name
+ "footnotereturn") that links back to the part of the document where
+ the footnote appeared. -->
+<xsl:template match="footnote">
+ <xsl:element name="div">
+ <xsl:attribute name="class">footnote</xsl:attribute>
+ <xsl:attribute name="id">
+ <xsl:text>footnote-</xsl:text>
+ <xsl:value-of select="@ids" />
+ </xsl:attribute>
+
+ <xsl:element name="a">
+ <xsl:attribute name="class">footnotereturn</xsl:attribute>
+ <xsl:attribute name="href">
+ <xsl:text>#footnote-backref-</xsl:text>
+ <xsl:value-of select="@backrefs" />
+ </xsl:attribute>
+ <xsl:attribute name="title">
+ <xsl:text>return to content</xsl:text>
+ </xsl:attribute>
+
+ <xsl:text>#</xsl:text>
+ <xsl:value-of select="label" />
+ <xsl:text>: </xsl:text>
+ </xsl:element>
+
+ <xsl:apply-templates />
+ </xsl:element>
+</xsl:template>
+<xsl:template match="footnote/label" />
+
+
+<!-- Basic lists. -->
+<xsl:template match="bullet_list">
+ <ul><xsl:apply-templates /></ul>
+</xsl:template>
+
+<xsl:template match="enumerated_list">
+ <ol><xsl:apply-templates /></ol>
+</xsl:template>
+
+<!-- Basic list items. -->
+<xsl:template match="list_item">
+ <li><xsl:apply-templates /></li>
+</xsl:template>
+
+<!-- TODO Lists are currently stripped of their paragraph wrapping.
+ This may or may not be what you want. You could use a match value
+ of "list_item/paragraph[count(child::*) = 0]" to detect simple vs.
+ complex paragraphs, although this would also catch inline elements.
+ A stunningly-complex match value should probably be created to
+ detect the list type (simple or complex) and then put all of the
+ items into the same wrapper (either a p tag or a bare list item). -->
+<xsl:template match="list_item/paragraph">
+<xsl:apply-templates />
+</xsl:template>
+
+
+<!-- Definition lists. -->
+<xsl:template match="definition_list">
+ <dl><xsl:apply-templates /></dl>
+</xsl:template>
+
+<xsl:template match="definition_list_item/term">
+ <dt><xsl:apply-templates /></dt>
+</xsl:template>
+
+<xsl:template match="definition_list_item/definition">
+ <dd><xsl:apply-templates /></dd>
+</xsl:template>
+
+
+<!-- Option lists. -->
+<xsl:template match="option_list">
+ <table class="option-list" cellpadding="0" cellspacing="0">
+ <tr>
+ <th>Option</th>
+ <th>Description</th>
+ </tr>
+
+ <xsl:apply-templates />
+ </table>
+</xsl:template>
+
+<xsl:template match="option_list_item">
+ <tr><xsl:apply-templates /></tr>
+</xsl:template>
+
+<xsl:template match="option_group">
+ <td>
+ <xsl:for-each select="option">
+ <xsl:apply-templates select="." /><br />
+ </xsl:for-each>
+ </td>
+</xsl:template>
+
+<xsl:template match="option_group/option">
+ <span class="option-string"><xsl:value-of select="option_string" /></span>
+ <xsl:if test="option_argument">
+ <span class="option-delimiter"><xsl:value-of select="option_argument/@delimiter" /></span>
+ <span class="option-argument"><xsl:value-of select="option_argument" /></span>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="option_list_item/description">
+ <td><xsl:apply-templates /></td>
+</xsl:template>
+
+
+<!-- Raw HTML elements are passed straight through. Note that this
+ assumes that the output document is an XHTML document. -->
+<xsl:template match="raw[@format='html']">
+ <xsl:value-of select="." disable-output-escaping="yes" />
+</xsl:template>
+
+
+<!-- Section titles are wrapped in a heading tag. The heading level
+ (h1, h2, h3, etc.) is set by counting the number of parent sections
+ that this section is enclosed in. -->
+<xsl:template match="section/title">
+ <xsl:element name="{concat('h', format-number(count(ancestor::section), '#'))}">
+ <xsl:attribute name="id">
+ <xsl:value-of select="parent::section/@ids" />
+ </xsl:attribute>
+
+ <xsl:apply-templates />
+ </xsl:element>
+</xsl:template>
+
+
+<!-- Tables.
+
+ These are pretty much handled as you would expect. The only custom
+ feature is a pair of special fields that can be used to control the
+ horizontal and vertical alignment of the table cells.
+
+ If you want to set a custom horizontal alignment, include the field
+ ":table-cell-halign:" directly before the table. Each of the cells
+ (td elements) will include an "align" attribute with the specified
+ value.
+
+ A similar field exists for specifying the valign value. This field
+ is called ":table-cell-valign:". -->
+<xsl:template match="table">
+ <table cellpadding="0" cellspacing="0"><xsl:apply-templates /></table>
+</xsl:template>
+
+<xsl:template match="thead">
+ <thead><xsl:apply-templates /></thead>
+</xsl:template>
+
+<xsl:template match="thead/row">
+ <tr><xsl:apply-templates /></tr>
+</xsl:template>
+
+<xsl:template match="thead/row/entry">
+ <xsl:element name="th">
+ <xsl:if test="@morecols">
+ <xsl:attribute name="colspan">
+ <xsl:value-of select="format-number(1 + @morecols, '#')" />
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@morerows">
+ <xsl:attribute name="rowspan">
+ <xsl:value-of select="format-number(1 + @morerows, '#')" />
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:apply-templates />
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="tbody">
+ <tbody><xsl:apply-templates /></tbody>
+</xsl:template>
+
+<xsl:template match="tbody/row">
+ <tr><xsl:apply-templates /></tr>
+</xsl:template>
+
+<xsl:template match="tbody/row/entry">
+ <xsl:element name="td">
+ <xsl:if test="@morecols">
+ <xsl:attribute name="colspan">
+ <xsl:value-of select="format-number(1 + @morecols, '#')" />
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@morerows">
+ <xsl:attribute name="rowspan">
+ <xsl:value-of select="format-number(1 + @morerows, '#')" />
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="ancestor::table/preceding-sibling::*[1]/field/field_name[text()='table-cell-halign']">
+ <xsl:attribute name="align">
+ <xsl:value-of select="ancestor::table/preceding-sibling::*[1]/field/field_name[text()='table-cell-halign']/../field_body/paragraph" />
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="ancestor::table/preceding-sibling::*[1]/field/field_name[text()='table-cell-valign']">
+ <xsl:attribute name="valign">
+ <xsl:value-of select="ancestor::table/preceding-sibling::*[1]/field/field_name[text()='table-cell-valign']/../field_body/paragraph" />
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:apply-templates />
+ </xsl:element>
+</xsl:template>
+
+
+</xsl:stylesheet>
diff --git a/t/test-site/src/bar/baz/document.en.rest.txt b/t/test-site/src/bar/baz/document.en.rest.txt
new file mode 100644
index 0000000..40a4841
--- /dev/null
+++ b/t/test-site/src/bar/baz/document.en.rest.txt
@@ -0,0 +1,7 @@
+=================
+ bar-baz english
+=================
+:tags: * one
+ * three/bis
+
+sticaz
diff --git a/t/test-site/src/bar/baz/document.it.rest.txt b/t/test-site/src/bar/baz/document.it.rest.txt
new file mode 100644
index 0000000..8d15da2
--- /dev/null
+++ b/t/test-site/src/bar/baz/document.it.rest.txt
@@ -0,0 +1,7 @@
+==================
+ bar-baz italiano
+==================
+:tags: * one
+ * three/bis
+
+sticaz
diff --git a/t/test-site/src/bar/baz/du2html.xsl b/t/test-site/src/bar/baz/du2html.xsl
new file mode 120000
index 0000000..b6e8ebc
--- /dev/null
+++ b/t/test-site/src/bar/baz/du2html.xsl
@@ -0,0 +1 @@
+../../../common/du2html.xsl \ No newline at end of file
diff --git a/t/test-site/src/bar/document.en.rest.tt b/t/test-site/src/bar/document.en.rest.tt
new file mode 100644
index 0000000..0d1e3f2
--- /dev/null
+++ b/t/test-site/src/bar/document.en.rest.tt
@@ -0,0 +1,5 @@
+=====================
+ bar (from template)
+=====================
+
+[% PROCESS list %]
diff --git a/t/test-site/src/bar/document.it.rest.tt b/t/test-site/src/bar/document.it.rest.tt
new file mode 100644
index 0000000..d6f5509
--- /dev/null
+++ b/t/test-site/src/bar/document.it.rest.tt
@@ -0,0 +1,5 @@
+================
+ bar (generato)
+================
+
+[% PROCESS list %]
diff --git a/t/test-site/src/bar/du2html.xsl b/t/test-site/src/bar/du2html.xsl
new file mode 120000
index 0000000..6737f0e
--- /dev/null
+++ b/t/test-site/src/bar/du2html.xsl
@@ -0,0 +1 @@
+../../common/du2html.xsl \ No newline at end of file
diff --git a/t/test-site/src/bar/list.tt b/t/test-site/src/bar/list.tt
new file mode 100644
index 0000000..567b32b
--- /dev/null
+++ b/t/test-site/src/bar/list.tt
@@ -0,0 +1,5 @@
+:tags: two
+
+[% FOR i IN [1,2,3] %]
+* line [% i %]
+[% END %]
diff --git a/t/test-site/src/document.en.rest.txt b/t/test-site/src/document.en.rest.txt
new file mode 100644
index 0000000..15045d2
--- /dev/null
+++ b/t/test-site/src/document.en.rest.txt
@@ -0,0 +1,9 @@
+===========
+ Main page
+===========
+
+* `<foo/>`_
+* `bar! <bar/>`_
+* `baz`_
+
+.. _`baz`: baz/
diff --git a/t/test-site/src/document.it.rest.txt b/t/test-site/src/document.it.rest.txt
new file mode 100644
index 0000000..f29a12b
--- /dev/null
+++ b/t/test-site/src/document.it.rest.txt
@@ -0,0 +1,9 @@
+===================
+ Pagina principale
+===================
+
+* `<foo/>`_
+* `bar! <bar/>`_
+* `baz`_
+
+.. _`baz`: baz/
diff --git a/t/test-site/src/foo/document.en.rest.txt b/t/test-site/src/foo/document.en.rest.txt
new file mode 100644
index 0000000..4380082
--- /dev/null
+++ b/t/test-site/src/foo/document.en.rest.txt
@@ -0,0 +1,7 @@
+==========
+ foo page
+==========
+:tags: * one
+ * two
+
+foo
diff --git a/t/test-site/src/foo/document.it.rest.txt b/t/test-site/src/foo/document.it.rest.txt
new file mode 100644
index 0000000..e4d7333
--- /dev/null
+++ b/t/test-site/src/foo/document.it.rest.txt
@@ -0,0 +1,7 @@
+============
+ Pagina foo
+============
+:tags: * one
+ * two
+
+foo
diff --git a/t/test-site/src/foo/du2html.xsl b/t/test-site/src/foo/du2html.xsl
new file mode 120000
index 0000000..6737f0e
--- /dev/null
+++ b/t/test-site/src/foo/du2html.xsl
@@ -0,0 +1 @@
+../../common/du2html.xsl \ No newline at end of file
diff --git a/t/test-site/tags/one/document-listing.tt b/t/test-site/tags/one/document-listing.tt
new file mode 120000
index 0000000..9444be1
--- /dev/null
+++ b/t/test-site/tags/one/document-listing.tt
@@ -0,0 +1 @@
+../../common/document-listing.tt \ No newline at end of file
diff --git a/t/test-site/tags/one/document.en.rest.tt b/t/test-site/tags/one/document.en.rest.tt
new file mode 100644
index 0000000..76734b9
--- /dev/null
+++ b/t/test-site/tags/one/document.en.rest.tt
@@ -0,0 +1,5 @@
+================
+ Category 'one'
+================
+
+[% PROCESS document-listing %]
diff --git a/t/test-site/tags/one/document.it.rest.tt b/t/test-site/tags/one/document.it.rest.tt
new file mode 100644
index 0000000..30033c8
--- /dev/null
+++ b/t/test-site/tags/one/document.it.rest.tt
@@ -0,0 +1,5 @@
+=================
+ Categoria 'uno'
+=================
+
+[% PROCESS document-listing %]
diff --git a/t/test-site/tags/three/bis/document-listing.tt b/t/test-site/tags/three/bis/document-listing.tt
new file mode 120000
index 0000000..b2b2ee2
--- /dev/null
+++ b/t/test-site/tags/three/bis/document-listing.tt
@@ -0,0 +1 @@
+../../../common/document-listing.tt \ No newline at end of file
diff --git a/t/test-site/tags/three/bis/document.en.rest.tt b/t/test-site/tags/three/bis/document.en.rest.tt
new file mode 100644
index 0000000..18b7ac0
--- /dev/null
+++ b/t/test-site/tags/three/bis/document.en.rest.tt
@@ -0,0 +1,5 @@
+================
+ Category 'three/bis'
+================
+
+[% PROCESS document-listing %]
diff --git a/t/test-site/tags/three/bis/document.it.rest.tt b/t/test-site/tags/three/bis/document.it.rest.tt
new file mode 100644
index 0000000..0f1414d
--- /dev/null
+++ b/t/test-site/tags/three/bis/document.it.rest.tt
@@ -0,0 +1,5 @@
+=================
+ Categoria 'three/bis'
+=================
+
+[% PROCESS document-listing %]
diff --git a/t/test-site/tags/three/document-listing.tt b/t/test-site/tags/three/document-listing.tt
new file mode 120000
index 0000000..9444be1
--- /dev/null
+++ b/t/test-site/tags/three/document-listing.tt
@@ -0,0 +1 @@
+../../common/document-listing.tt \ No newline at end of file
diff --git a/t/test-site/tags/three/document.en.rest.tt b/t/test-site/tags/three/document.en.rest.tt
new file mode 100644
index 0000000..3848f3c
--- /dev/null
+++ b/t/test-site/tags/three/document.en.rest.tt
@@ -0,0 +1,5 @@
+================
+ Category 'three'
+================
+
+[% PROCESS document-listing %]
diff --git a/t/test-site/tags/three/document.it.rest.tt b/t/test-site/tags/three/document.it.rest.tt
new file mode 100644
index 0000000..0c1a4a4
--- /dev/null
+++ b/t/test-site/tags/three/document.it.rest.tt
@@ -0,0 +1,5 @@
+=================
+ Categoria 'three'
+=================
+
+[% PROCESS document-listing %]
diff --git a/t/test-site/tags/two/document-listing.tt b/t/test-site/tags/two/document-listing.tt
new file mode 120000
index 0000000..9444be1
--- /dev/null
+++ b/t/test-site/tags/two/document-listing.tt
@@ -0,0 +1 @@
+../../common/document-listing.tt \ No newline at end of file
diff --git a/t/test-site/tags/two/document.en.rest.tt b/t/test-site/tags/two/document.en.rest.tt
new file mode 100644
index 0000000..861ee70
--- /dev/null
+++ b/t/test-site/tags/two/document.en.rest.tt
@@ -0,0 +1,5 @@
+================
+ Category 'two'
+================
+
+[% PROCESS document-listing %]
diff --git a/t/test-site/tags/two/document.it.rest.tt b/t/test-site/tags/two/document.it.rest.tt
new file mode 100644
index 0000000..71c4dc0
--- /dev/null
+++ b/t/test-site/tags/two/document.it.rest.tt
@@ -0,0 +1,5 @@
+=================
+ Categoria 'two'
+=================
+
+[% PROCESS document-listing %]