Make it easy to test code
This commit is contained in:
parent
21df1ad8c5
commit
f3d35b9b15
1 changed files with 40 additions and 0 deletions
40
testexamples.nim
Normal file
40
testexamples.nim
Normal file
|
|
@ -0,0 +1,40 @@
|
||||||
|
import md5, re, os, strutils, osproc
|
||||||
|
|
||||||
|
let
|
||||||
|
markdownFilesGlob = getCurrentDir() / "content" / "*.md"
|
||||||
|
configFilePath = getCurrentDir() / "validcodehashes.txt"
|
||||||
|
|
||||||
|
for filePath in walkFiles(markdownFilesGlob):
|
||||||
|
let file = open(filePath, fmRead)
|
||||||
|
let fileContents = file.readAll()
|
||||||
|
file.close()
|
||||||
|
|
||||||
|
let sourceSegments = fileContents.findAll(re"""(?i)```\s*nimrod[\s\S]*?```""")
|
||||||
|
for match in sourceSegments:
|
||||||
|
let code = match.replacef(re"""(?i)```\s*nimrod[ \t]*\s([\s\S]*?)```""", "$1")
|
||||||
|
let codeHash = code.getMD5()
|
||||||
|
if not configFilePath.readFile().contains(codeHash): # Hasn't been verified yet
|
||||||
|
let tempCodePath = getTempDir() / "code.nim"
|
||||||
|
tempCodePath.writeFile(code)
|
||||||
|
let (output, exitCode) = execCmdEx("nimrod c -r --verbosity:0 " & tempCodePath)
|
||||||
|
|
||||||
|
var printableCode = ""
|
||||||
|
for line in code.splitLines():
|
||||||
|
printableCode.add(" " & line & "\n")
|
||||||
|
|
||||||
|
var printableOutput = ""
|
||||||
|
if output != nil:
|
||||||
|
for line in output.splitLines():
|
||||||
|
printableOutput.add("> " & line & "\n")
|
||||||
|
|
||||||
|
echo filePath
|
||||||
|
stdout.write(printableCode & printableOutput)
|
||||||
|
|
||||||
|
stdout.write("Everything ok? (y/n) ")
|
||||||
|
case stdin.readLine.toLower:
|
||||||
|
of "y":
|
||||||
|
configFilePath.writeFile(configFilePath.readFile() & "\n" & codeHash)
|
||||||
|
of "n":
|
||||||
|
discard
|
||||||
|
|
||||||
|
echo "===================="
|
||||||
Loading…
Add table
Add a link
Reference in a new issue