errors.js 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264
  1. var should = require('should')
  2. var polymer = require('../')
  3. describe("errors", function(){
  4. var root = __dirname + "/fixtures/errors"
  5. var poly = polymer.root(root)
  6. var log = function(error){
  7. console.log("\n")
  8. console.log("source :", error.source)
  9. console.log("dest :", error.dest)
  10. console.log("lineno :", error.lineno)
  11. console.log("filename :", error.filename)
  12. console.log("message :", error.message)
  13. console.log("stacktrace :")
  14. console.log(error.stack)
  15. }
  16. describe(".less", function(){
  17. it("should get error if var missing in less", function(done){
  18. poly.render("less/novar.less", function(error, body){
  19. should.not.exist(body)
  20. should.exist(error)
  21. error.should.have.property('source')
  22. error.should.have.property('dest')
  23. error.should.have.property('lineno', 3)
  24. error.should.have.property('filename')
  25. error.should.have.property('message')
  26. error.should.have.property('stack')
  27. done()
  28. })
  29. })
  30. it("should get errors if syntax not correct", function(done){
  31. poly.render("less/invalid.less", function(error, body){
  32. should.not.exist(body)
  33. should.exist(error)
  34. error.should.have.property('source')
  35. error.should.have.property('dest')
  36. error.should.have.property('lineno', 3)
  37. error.should.have.property('filename')
  38. error.should.have.property('message')
  39. error.should.have.property('stack')
  40. done()
  41. })
  42. })
  43. })
  44. describe(".ejs", function(){
  45. it("should get error if var missing var", function(done){
  46. poly.render("ejs/novar.ejs", function(error, body){
  47. should.not.exist(body)
  48. should.exist(error)
  49. error.should.have.property('source')
  50. error.should.have.property('dest')
  51. error.should.have.property('lineno')
  52. error.should.have.property('filename')
  53. error.should.have.property('message')
  54. error.should.have.property('stack')
  55. done()
  56. })
  57. })
  58. it("should get errors if syntax not correct", function(done){
  59. poly.render("ejs/invalid.ejs", function(error, body){
  60. should.not.exist(body)
  61. should.exist(error)
  62. error.should.have.property('source')
  63. error.should.have.property('dest')
  64. error.should.have.property('lineno')
  65. error.should.have.property('filename')
  66. error.should.have.property('message')
  67. error.should.have.property('stack')
  68. done()
  69. })
  70. })
  71. })
  72. describe(".jade", function(){
  73. it("should get errors obj from jade", function(done){
  74. poly.render("jade/novar.jade", function(error, body){
  75. should.not.exist(body)
  76. should.exist(error)
  77. error.should.have.property('source')
  78. error.should.have.property('dest')
  79. error.should.have.property('lineno')
  80. error.should.have.property('filename')
  81. error.should.have.property('message')
  82. error.should.have.property('stack')
  83. done()
  84. })
  85. })
  86. it("should error with invalid file", function(done){
  87. poly.render("jade/invalid.jade", function(error, body){
  88. should.not.exist(body)
  89. should.exist(error)
  90. error.should.have.property('source')
  91. error.should.have.property('dest')
  92. error.should.have.property('lineno', 3)
  93. error.should.have.property('filename')
  94. error.should.have.property('message')
  95. error.should.have.property('stack')
  96. done()
  97. })
  98. })
  99. it("should get template error even with valid layout", function(done){
  100. poly.render("jade/novar.jade", { layout: "jade/_layout" }, function(error, body){
  101. should.not.exist(body)
  102. should.exist(error)
  103. error.should.have.property('source')
  104. error.should.have.property('dest')
  105. error.should.have.property('lineno')
  106. error.should.have.property('filename')
  107. error.should.have.property('message')
  108. error.should.have.property('stack')
  109. error.stack.should.not.include('layout')
  110. done()
  111. })
  112. })
  113. it("should get layout error even with invalid layout", function(done){
  114. poly.render("jade/valid.jade", { layout: "jade/_invalid_layout" }, function(error, body){
  115. should.not.exist(body)
  116. should.exist(error)
  117. error.should.have.property('source')
  118. error.should.have.property('dest')
  119. error.should.have.property('lineno', 2)
  120. error.should.have.property('filename')
  121. error.should.have.property('message')
  122. error.should.have.property('stack')
  123. error.stack.should.include('layout')
  124. done()
  125. })
  126. })
  127. it("should get correct partial error", function(done){
  128. poly.render("jade/nested_one.jade", { layout: "jade/_layout" }, function(error, body){
  129. should.not.exist(body)
  130. should.exist(error)
  131. error.should.have.property('source')
  132. error.should.have.property('dest')
  133. error.should.have.property('lineno')
  134. error.should.have.property('filename')
  135. error.should.have.property('message')
  136. error.should.have.property('stack')
  137. error.stack.should.include('three')
  138. done()
  139. })
  140. })
  141. })
  142. describe(".styl", function(){
  143. it("should send proper error object when missing variable.", function(done){
  144. poly.render("styl/novar.styl", function(error, body){
  145. should.not.exist(body)
  146. should.exist(error)
  147. error.should.have.property('source')
  148. error.should.have.property('dest')
  149. error.should.have.property('lineno', 3)
  150. error.should.have.property('filename')
  151. error.should.have.property('message')
  152. error.should.have.property('stack')
  153. done()
  154. })
  155. })
  156. it("should error with invalid file", function(done){
  157. poly.render("styl/invalid.styl", function(error, body){
  158. should.not.exist(body)
  159. should.exist(error)
  160. error.should.have.property('source', "Stylus")
  161. error.should.have.property('dest', "CSS")
  162. error.should.have.property('lineno', 3)
  163. error.should.have.property('filename')
  164. error.should.have.property('message')
  165. error.should.have.property('stack')
  166. done()
  167. })
  168. })
  169. })
  170. describe(".coffee", function(){
  171. it("should error with invalid file", function(done){
  172. poly.render("coffee/invalid.coffee", function(error, body){
  173. should.not.exist(body)
  174. should.exist(error)
  175. error.should.have.property('source', "CoffeeScript")
  176. error.should.have.property('dest', "JavaScript")
  177. error.should.have.property('lineno', 3)
  178. error.should.have.property('filename')
  179. error.should.have.property('message')
  180. error.should.have.property('stack')
  181. done()
  182. })
  183. })
  184. })
  185. describe(".scss", function(){
  186. it("should get error if var missing in scss", function(done){
  187. poly.render("scss/novar.scss", function(error, body){
  188. should.not.exist(body)
  189. should.exist(error)
  190. error.should.have.property('source')
  191. error.should.have.property('dest')
  192. error.should.have.property('lineno')
  193. error.should.have.property('filename')
  194. error.should.have.property('message')
  195. error.should.have.property('stack')
  196. done()
  197. })
  198. })
  199. it("should get errors if syntax not correct", function(done){
  200. poly.render("scss/invalid.scss", function(error, body){
  201. should.not.exist(body)
  202. should.exist(error)
  203. error.should.have.property('source')
  204. error.should.have.property('dest')
  205. error.should.have.property('lineno')
  206. error.should.have.property('filename')
  207. error.should.have.property('message')
  208. error.should.have.property('stack')
  209. done()
  210. })
  211. })
  212. })
  213. describe(".sass", function(){
  214. it("should get error if var missing in sass", function(done){
  215. poly.render("sass/novar.sass", function(error, body){
  216. should.not.exist(body)
  217. should.exist(error)
  218. error.should.have.property('source')
  219. error.should.have.property('dest')
  220. error.should.have.property('lineno')
  221. error.should.have.property('filename')
  222. error.should.have.property('message')
  223. error.should.have.property('stack')
  224. done()
  225. })
  226. })
  227. it("should get errors if syntax not correct", function(done){
  228. poly.render("sass/invalid.sass", function(error, body){
  229. should.not.exist(body)
  230. should.exist(error)
  231. error.should.have.property('source')
  232. error.should.have.property('dest')
  233. error.should.have.property('lineno')
  234. error.should.have.property('filename')
  235. error.should.have.property('message')
  236. error.should.have.property('stack')
  237. done()
  238. })
  239. })
  240. })
  241. })