diff --git a/packages/compiler-sfc/__tests__/parse.spec.ts b/packages/compiler-sfc/__tests__/parse.spec.ts
index fcb59061a..ddd6570de 100644
--- a/packages/compiler-sfc/__tests__/parse.spec.ts
+++ b/packages/compiler-sfc/__tests__/parse.spec.ts
@@ -1,23 +1,40 @@
import { parse } from '../src'
import { mockWarn } from '@vue/shared'
import { baseParse, baseCompile } from '@vue/compiler-core'
+import { SourceMapConsumer } from 'source-map'
describe('compiler:sfc', () => {
mockWarn()
describe('source map', () => {
test('style block', () => {
- const style = parse(`\n`)
- .descriptor.styles[0]
- // TODO need to actually test this with SourceMapConsumer
+ // Padding determines how many blank lines will there be before the style block
+ const padding = Math.round(Math.random() * 10)
+ const style = parse(
+ `${'\n'.repeat(padding)}\n`
+ ).descriptor.styles[0]
+
expect(style.map).not.toBeUndefined()
+
+ const consumer = new SourceMapConsumer(style.map!)
+ consumer.eachMapping(mapping => {
+ expect(mapping.originalLine - mapping.generatedLine).toBe(padding)
+ })
})
test('script block', () => {
- const script = parse(`\n`)
- .descriptor.script
- // TODO need to actually test this with SourceMapConsumer
+ // Padding determines how many blank lines will there be before the style block
+ const padding = Math.round(Math.random() * 10)
+ const script = parse(
+ `${'\n'.repeat(padding)}\n`
+ ).descriptor.script
+
expect(script!.map).not.toBeUndefined()
+
+ const consumer = new SourceMapConsumer(script!.map!)
+ consumer.eachMapping(mapping => {
+ expect(mapping.originalLine - mapping.generatedLine).toBe(padding)
+ })
})
})