codegen.spec.ts 798 B

1234567891011121314151617181920212223242526272829303132333435
  1. import { parse, generate } from '../src'
  2. import { SourceMapConsumer, RawSourceMap } from 'source-map'
  3. describe('compiler: codegen', () => {
  4. test('basic source map support', async () => {
  5. const source = `hello {{ world }}`
  6. const ast = parse(source)
  7. const { code, map } = generate(ast, {
  8. filename: `foo.vue`
  9. })
  10. expect(code).toBe(
  11. `return function render() {
  12. with (this) {
  13. return [
  14. "hello ",
  15. world
  16. ]
  17. }
  18. }`
  19. )
  20. expect(map!.sources).toEqual([`foo.vue`])
  21. expect(map!.sourcesContent).toEqual([source])
  22. const consumer = await new SourceMapConsumer(map as RawSourceMap)
  23. const pos = consumer.originalPositionFor({
  24. line: 5,
  25. column: 6
  26. })
  27. expect(pos).toMatchObject({
  28. line: 1,
  29. column: 6
  30. })
  31. })
  32. })