tests.coffee | |
---|---|
{spawn, exec} = require 'child_process'
path = require 'path'
fs = require 'fs' | |
Determine the test and resources paths | testPath = path.dirname fs.realpathSync(__filename)
dataPath = path.join testPath, "data"
resourcesPath = path.normalize path.join(testPath,"/../resources") |
Run a Docco pass and check that the number of output files is equal to what is expected. | testDoccoRun = (testName,sources,options=null,callback=null) ->
destPath = path.join dataPath, testName
cleanup = (callback) -> exec "rm -rf #{destPath}", callback
cleanup ->
options?.output = destPath
Docco.document sources, options, ->
files = []
files = files.concat(Docco.resolveSource(src)) for src in sources
expected = files.length + 1
found = fs.readdirSync(destPath).length
eq found, expected, "find expected output (#{expected} files) - (#{found})"
callback() if callback? |
Custom jst template files should be supported | test "custom JST template file", ->
testDoccoRun "custom_jst",
["#{testPath}/*.coffee"],
template: "#{resourcesPath}/pagelet.jst" |
Custom CSS files should be supported | test "custom CSS file", ->
testDoccoRun "custom_css",
["#{testPath}/*.coffee"],
css: "#{resourcesPath}/pagelet.css" |
Comments should be parsed properly There are special data files located in This test iterates over all the known Docco languages, and tests the ones
that have a corresponding data file in | test "single line comment parsing", ->
commentsPath = path.join testPath, "comments"
options = template: "#{commentsPath}/comments.jst"
languageKeys = (ext for ext,l of Docco.languages)
testNextLanguage = (keys,callback) ->
return callback?() if not keys.length
extension = keys.shift()
language = Docco.languages[extension]
languageExample = path.join commentsPath, "#{language.name}#{extension}"
languageTest = "comments_test/#{language.name}"
languagePath = path.join dataPath, languageTest
languageOutput = path.join languagePath, "#{language.name}.html" |
Skip over this language if there is no corresponding test | return testNextLanguage(keys, callback) if not path.existsSync languageExample
testDoccoRun languageTest, [languageExample], options, ->
eq true, path.existsSync(languageOutput), "#{languageOutput} -> output file created properly"
content = fs.readFileSync(languageOutput).toString()
comments = (c.trim() for c in content.split(',') when c.trim() != '')
eq true, comments.length >= 1, 'expect at least the descriptor comment'
expected = parseInt(comments[0])
eq comments.length, expected, [
""
"#{path.basename(languageOutput)} comments"
"------------------------"
" expected : #{expected}"
" found : #{comments.length}"
].join '\n'
testNextLanguage keys, callback
|
Kick off the first language test | testNextLanguage languageKeys.slice()
|