Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | Add tests for the TH1 docs feature. |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA1: |
71536a285116c644bf9ad784b3dc0a34 |
| User & Date: | mistachkin 2015-03-23 00:44:44.412 |
Context
|
2015-03-23
| ||
| 08:56 | When committing a 'secondary' initial checkin with the same branch-name as the primary initial-checking, warn that this is in fact a fork. ... (check-in: 26119c88da user: jan.nijtmans tags: trunk) | |
| 01:29 | Merge updates from trunk. ... (check-in: 78829b7089 user: mistachkin tags: mvAndRmFiles) | |
| 00:44 | Add tests for the TH1 docs feature. ... (check-in: 71536a2851 user: mistachkin tags: trunk) | |
| 00:41 | Eliminate superfluous closing 'a' tag when the wiki formatter skips emitting a link due to lack of privilege. ... (check-in: 8875c01abb user: mistachkin tags: trunk) | |
Changes
Changes to src/doc.c.
| ︙ | ︙ | |||
638 639 640 641 642 643 644 |
}else if( fossil_strcmp(zMime, "text/html")==0
&& doc_is_embedded_html(&filebody, &title) ){
if( blob_size(&title)==0 ) blob_append(&title,zName,-1);
style_header("%s", blob_str(&title));
blob_append(cgi_output_blob(), blob_buffer(&filebody),blob_size(&filebody));
style_footer();
#ifdef FOSSIL_ENABLE_TH1_DOCS
| | | 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 |
}else if( fossil_strcmp(zMime, "text/html")==0
&& doc_is_embedded_html(&filebody, &title) ){
if( blob_size(&title)==0 ) blob_append(&title,zName,-1);
style_header("%s", blob_str(&title));
blob_append(cgi_output_blob(), blob_buffer(&filebody),blob_size(&filebody));
style_footer();
#ifdef FOSSIL_ENABLE_TH1_DOCS
}else if( Th_AreDocsEnabled() &&
fossil_strcmp(zMime, "application/x-th1")==0 ){
style_header("%h", zName);
Th_Render(blob_str(&filebody));
style_footer();
#endif
}else{
cgi_set_content_type(zMime);
|
| ︙ | ︙ |
Changes to src/th_main.c.
| ︙ | ︙ | |||
1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 |
** expect the repository and/or the configuration ("user") database to be
** open prior to their own code doing so.
*/
if( TH_INIT_HOOK & TH_INIT_NEED_CONFIG ) Th_CloseConfig(1);
return rc;
}
#endif
/*
** The z[] input contains text mixed with TH1 scripts.
** The TH1 scripts are contained within <th1>...</th1>.
** TH1 variables are $aaa or $<aaa>. The first form of
** variable is literal. The second is run through htmlize
** before being inserted.
| > > > > > > > > > > > > > > | 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 |
** expect the repository and/or the configuration ("user") database to be
** open prior to their own code doing so.
*/
if( TH_INIT_HOOK & TH_INIT_NEED_CONFIG ) Th_CloseConfig(1);
return rc;
}
#endif
#ifdef FOSSIL_ENABLE_TH1_DOCS
/*
** This function determines if TH1 docs are enabled for the repository.
*/
int Th_AreDocsEnabled(void){
if( fossil_getenv("TH1_ENABLE_DOCS")!=0 ){
return 1;
}
return db_get_boolean("th1-docs", 0);
}
#endif
/*
** The z[] input contains text mixed with TH1 scripts.
** The TH1 scripts are contained within <th1>...</th1>.
** TH1 variables are $aaa or $<aaa>. The first form of
** variable is literal. The second is run through htmlize
** before being inserted.
|
| ︙ | ︙ |
Added test/fileStat.th1.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
<th1>
proc doSomeTclSetup {} {
#
# NOTE: Copy repository file name to the Tcl interpreter. This is
# done first (once) because it will be necessary for almost
# everything else later on.
#
tclInvoke set repository [repository]
#
# NOTE: Create some procedures in the Tcl interpreter to perform
# useful operations. This could also do things like load
# packages, etc.
#
tclEval {
#
# NOTE: Returns an [exec] command for Fossil, using the provided
# sub-command and arguments, suitable for use with [eval]
# or [catch].
#
proc getFossilCommand { repository user args } {
global env
lappend result exec [info nameofexecutable]
if {[info exists env(GATEWAY_INTERFACE)]} then {
#
# NOTE: This option is required when calling
# out to the Fossil executable from a
# CGI process.
#
lappend result -nocgi
}
eval lappend result $args
if {[string length $repository] > 0} then {
#
# NOTE: This is almost certainly required
# when calling out to the Fossil
# executable on the server because
# there is almost never an open
# checkout.
#
lappend result -R $repository
}
if {[string length $user] > 0} then {
lappend result -U $user
}
# th1Eval [list html $result<br>]
return $result
}
}
}
proc getLatestTrunkCheckIn {} {
tclEval {
#
# NOTE: Get the unique Id of the latest check-in on trunk.
#
return [lindex [regexp -line -inline -nocase -- \
{^uuid:\s+([0-9A-F]{40}) } [eval [getFossilCommand \
$repository "" info trunk]]] end]
}
}
proc theSumOfAllFiles { id } {
#
# NOTE: Copy check-in Id value to the Tcl interpreter.
#
tclInvoke set id $id
tclEval {
set count 0
foreach line [split [eval [getFossilCommand \
$repository "" artifact $id]] \n] {
#
# NOTE: Is this an "F" (file) card?
#
if {[string range $line 0 1] eq "F "} then {
incr count
}
}
return $count
}
}
doSomeTclSetup; # perform some extra setup for the Tcl interpreter.
set checkIn [getLatestTrunkCheckIn]
set totalFiles [theSumOfAllFiles $checkIn]
</th1>
<br />
As of trunk check-in <th1>decorate \[$checkIn\]</th1>, this
repository contains <th1>html $totalFiles</th1> files.
<br />
|
Changes to test/tester.tcl.
| ︙ | ︙ | |||
338 339 340 341 342 343 344 |
proc test_fossil_http { repository dataFileName url } {
set suffix [appendArgs [pid] - [getSeqNo] - [clock seconds] .txt]
set inFileName [file join $::tempPath [appendArgs test-http-in- $suffix]]
set outFileName [file join $::tempPath [appendArgs test-http-out- $suffix]]
set data [subst [read_file $dataFileName]]
write_file $inFileName $data
| | | 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 |
proc test_fossil_http { repository dataFileName url } {
set suffix [appendArgs [pid] - [getSeqNo] - [clock seconds] .txt]
set inFileName [file join $::tempPath [appendArgs test-http-in- $suffix]]
set outFileName [file join $::tempPath [appendArgs test-http-out- $suffix]]
set data [subst [read_file $dataFileName]]
write_file $inFileName $data
fossil http $inFileName $outFileName 127.0.0.1 $repository --localauth
set result [expr {[file exists $outFileName] ? [read_file $outFileName] : ""}]
if {1} then {
catch {file delete $inFileName}
catch {file delete $outFileName}
}
|
| ︙ | ︙ |
Added test/th1-docs-input.txt.
> > > > | 1 2 3 4 |
GET ${url} HTTP/1.1
Host: localhost
User-Agent: Fossil
|
Added test/th1-docs.test.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
#
# Copyright (c) 2015 D. Richard Hipp
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the Simplified BSD License (also
# known as the "2-Clause License" or "FreeBSD License".)
#
# This program is distributed in the hope that it will be useful,
# but without any warranty; without even the implied warranty of
# merchantability or fitness for a particular purpose.
#
# Author contact information:
# drh@hwaci.com
# http://www.hwaci.com/drh/
#
############################################################################
#
# TH1 Docs
#
fossil test-th-eval "hasfeature th1Docs"
if {$::RESULT ne "1"} then {
puts "Fossil was not compiled with TH1 docs support."; return
}
fossil test-th-eval "hasfeature tcl"
if {$::RESULT ne "1"} then {
puts "Fossil was not compiled with Tcl support."; return
}
###############################################################################
set env(TH1_ENABLE_DOCS) 1; # TH1 docs must be enabled for this test.
set env(TH1_ENABLE_TCL) 1; # Tcl integration must be enabled for this test.
###############################################################################
set data [fossil info]
regexp -line -- {^repository: (.*)$} $data dummy repository
if {[string length $repository] == 0 || ![file exists $repository]} then {
error "unable to locate repository"
}
set dataFileName [file join $::testdir th1-docs-input.txt]
###############################################################################
set RESULT [test_fossil_http \
$repository $dataFileName /doc/trunk/test/fileStat.th1]
test th1-docs-1a {[regexp {<title>Fossil: test/fileStat.th1</title>} $RESULT]}
test th1-docs-1b {[regexp {>\[[0-9a-f]{40}\]<} $RESULT]}
test th1-docs-1c {[regexp { contains \d+ files\.} $RESULT]}
|