-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathjscompile_test.coffee
More file actions
48 lines (43 loc) · 1.85 KB
/
jscompile_test.coffee
File metadata and controls
48 lines (43 loc) · 1.85 KB
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
require './setup'
{clazz, colors:{red, blue, cyan, magenta, green, normal, black, white, yellow}} = require('cardamom')
{inspect} = require 'util'
{equal, deepEqual, ok} = assert = require 'assert'
joe = require '../src/joescript'
jsx = require '../src/translators/javascript'
demodule = require '../lib/demodule'
console.log blue "\n-= javascript compiler test =-"
compilers =
coffee: (source) ->
node = joe.parse {input:''+source}
translated = jsx.translate(node, includeHelpers:no)
return translated
# This test looks for directories in test/jscompile/ and bundles all the
# compiled javascript files into a single source string, then evals it.
# The main module is returned during evaluation, for 'cb' to validate.
counter = 0
test = (requires, cb) ->
console.log "#{red "test #{counter++}"}: #{inspect requires}"
if typeof requires is 'string'
dir = requires
requires = [{name:'', path:'tests/jscompile/'+dir+'/**.coffee'}]
source = demodule requires, {
compilers: compilers,
main: {name:'MAIN', module:'main'},
beforePackage: require('../src/translators/javascript').allHelpers(),
afterPackage: 'return MAIN;'
}
try
sourceAST = require('uglify-js').parser.parse(source)
source = require('uglify-js').uglify.gen_code(sourceAST, beautify:yes, indent_level:2)
console.log blue source
result = eval(source)
cb.call {it:result}, result
catch error
#console.log "Error in evaluating translated javascript: #{yellow source}.\nError:\n#{red error?.stack ? error}"
console.log "Error in evaluating translated javascript: #{red error?.stack ? error}"
process.exit(1)
return
test 'sample', -> equal @it.sample, 'S4MPLE'
test 'everything', -> equal @it.complete, yes
test 'coffeemugg', -> equal @it.result, 0 # 0 errors
#test [{name:'joeson', path:'src/joeson.coffee'}], -> console.log @it