summary refs log tree commit diff stats
path: root/tests/pragmas
Commit message (Expand)AuthorAgeFilesLines
* ensure generated c-code matchesAman Gupta2015-09-301-0/+4
* better assertions for bitfield behaviorAman Gupta2015-09-291-3/+14
* implement bitsize pragma for bitfieldsAman Gupta2015-09-281-0/+7
* tests: Trim .nim files trailing whitespaceAdam Strzelecki2015-09-041-15/+15
* fixes #3171Araq2015-08-021-0/+8
* parser support anon iteratorsAraq2014-01-201-0/+7
* new tester; all tests categorizedAraq2014-01-131-0/+15
Modi <kaushal.modi@gmail.com> 2019-05-25 14:20:25 -0400 committer Andreas Rumpf <rumpf_a@web.de> 2019-05-25 20:20:25 +0200 Use the correct HTML file reference in "nim doc" generated idx files (#11326)' href='/ahoang/Nim/commit/nimdoc/tester.nim?h=devel&id=2f610d621f52fe83863c19ac65f7e1336bce838d'>2f610d621 ^
b017138c3 ^
b017138c3 ^
2f610d621 ^
3d88d06b3 ^
2f610d621 ^

3d88d06b3 ^
b9ed684dd ^
2f610d621 ^

b017138c3 ^










b017138c3 ^
2f610d621 ^





























b017138c3 ^
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
                                                       
                                                                             





                   







                           



                            




                                                                                
                                       
 
                          
                                         

                                 
                                                       
 

                                                                                        










                                                                     
 





























                                                                                                   
                                                        
# Small program that runs the test cases for 'nim doc'.
# To run this, cd to the git repo root, and run "nim c -r nimdoc/tester.nim".

import strutils, os

var
  failures = 0

const
  baseDir = "nimdoc"

type
  NimSwitches = object
    doc: seq[string]
    buildIndex: seq[string]

proc exec(cmd: string) =
  if execShellCmd(cmd) != 0:
    quit("FAILURE: " & cmd)

proc testNimDoc(prjDir, docsDir: string; switches: NimSwitches; fixup = false) =
  let
    nimDocSwitches = switches.doc.join(" ")
    nimBuildIndexSwitches = switches.buildIndex.join(" ")

  putEnv("SOURCE_DATE_EPOCH", "100000")

  if nimDocSwitches != "":
    exec("nim doc $1" % [nimDocSwitches])

  if nimBuildIndexSwitches != "":
    exec("nim buildIndex $1" % [nimBuildIndexSwitches])

  for expected in walkDirRec(prjDir / "expected/"):
    let produced = expected.replace('\\', '/').replace("/expected/", "/$1/" % [docsDir])
    if not fileExists(produced):
      echo "FAILURE: files not found: ", produced
      inc failures
    elif readFile(expected) != readFile(produced):
      echo "FAILURE: files differ: ", produced
      discard execShellCmd("diff -uNdr " & expected & " " & produced)
      inc failures
      if fixup:
        copyFile(produced, expected)
    else:
      echo "SUCCESS: files identical: ", produced

  if failures == 0 and ((prjDir / docsDir) != prjDir):
    removeDir(prjDir / docsDir)

# Test "nim doc --project --out:.. --index:on .."
let
  test1PrjName = "testproject"
  test1Dir = baseDir / test1PrjName
  test1DocsDir = "htmldocs"
  test1Switches = NimSwitches(doc: @["--project",
                                     "--out:$1/$2" % [test1Dir, test1DocsDir],
                                     "--index:on",
                                     "$1/$2.nim" % [test1Dir, test1PrjName]],
                              buildIndex: @["--out:$1/$2/theindex.html" % [test1Dir, test1DocsDir],
                                            "$1/$2" % [test1Dir, test1DocsDir]])
testNimDoc(test1Dir, test1DocsDir, test1Switches, defined(fixup))

# Test "nim doc --out:.. --index:on .."
let
  test2PrjDir = "test_out_index_dot_html"
  test2PrjName = "foo"
  test2Dir = baseDir / test2PrjDir
  test2DocsDir = "htmldocs"
  test2Switches = NimSwitches(doc: @["--out:$1/$2/index.html" % [test2Dir, test2DocsDir],
                                     "--index:on",
                                     "$1/$2.nim" % [test2Dir, test2PrjName]],
                              buildIndex: @["--out:$1/$2/theindex.html" % [test2Dir, test2DocsDir],
                                            "$1/$2" % [test2Dir, test2DocsDir]])
testNimDoc(test2Dir, test2DocsDir, test2Switches, defined(fixup))

# Check for failures
if failures > 0: quit($failures & " failures occurred.")