1
+
# -*- coding: utf-8 -*-
2
+
3
+
from __future__ import absolute_import
4
+
5
+
from sentry.utils.sourcemaps import (SourceMap, parse_vlq, parse_sourcemap, sourcemap_to_index,
6
+
find_source)
7
+
from sentry.testutils import TestCase
8
+
9
+
10
+
sourcemap = """{"version":3,"file":"file.min.js","sources":["file1.js","file2.js"],"names":["add","a","b","multiply","divide","c","e","Raven","captureException"],"mappings":"AAAA,QAASA,KAAIC,EAAGC,GACf,YACA,OAAOD,GAAIC,ECFZ,QAASC,UAASF,EAAGC,GACpB,YACA,OAAOD,GAAIC,EAEZ,QAASE,QAAOH,EAAGC,GAClB,YACA,KACC,MAAOC,UAASH,IAAIC,EAAGC,GAAID,EAAGC,GAAKG,EAClC,MAAOC,GACRC,MAAMC,iBAAiBF"}"""
11
+
12
+
13
+
class ParseVlqTest(TestCase):
14
+
def test_simple(self):
15
+
assert parse_vlq('gqjG') == [100000]
16
+
assert parse_vlq('hqjG') == [-100000]
17
+
assert parse_vlq('DFLx+BhqjG') == [-1, -2, -5, -1000, -100000]
18
+
assert parse_vlq('CEKw+BgqjG') == [1, 2, 5, 1000, 100000]
19
+
assert parse_vlq('/+Z') == [-13295]
20
+
21
+
22
+
class FindSourceTest(TestCase):
23
+
def test_simple(self):
24
+
parsed_sourcemap = parse_sourcemap(sourcemap)
25
+
indexed_sourcemap = sourcemap_to_index(parsed_sourcemap)
26
+
27
+
result = find_source(indexed_sourcemap, 0, 56)
28
+
29
+
assert result == SourceMap(dst_line=0, dst_col=50, src='file2.js', src_line=0, src_col=9, name='multiply')
30
+
31
+
32
+
class ParseSourcemapTest(TestCase):
33
+
states = list(parse_sourcemap(sourcemap))
34
+
35
+
assert states == [
36
+
SourceMap(dst_line=0, dst_col=0, src='file1.js', src_line=0, src_col=0, name=None),
37
+
SourceMap(dst_line=0, dst_col=8, src='file1.js', src_line=0, src_col=9, name='add'),
38
+
SourceMap(dst_line=0, dst_col=13, src='file1.js', src_line=0, src_col=13, name='a'),
39
+
SourceMap(dst_line=0, dst_col=15, src='file1.js', src_line=0, src_col=16, name='b'),
40
+
SourceMap(dst_line=0, dst_col=18, src='file1.js', src_line=1, src_col=1, name=None),
41
+
SourceMap(dst_line=0, dst_col=30, src='file1.js', src_line=2, src_col=1, name=None),
42
+
SourceMap(dst_line=0, dst_col=37, src='file1.js', src_line=2, src_col=8, name='a'),
43
+
SourceMap(dst_line=0, dst_col=40, src='file1.js', src_line=2, src_col=12, name='b'),
44
+
SourceMap(dst_line=0, dst_col=42, src='file2.js', src_line=0, src_col=0, name=None),
45
+
SourceMap(dst_line=0, dst_col=50, src='file2.js', src_line=0, src_col=9, name='multiply'),
46
+
SourceMap(dst_line=0, dst_col=60, src='file2.js', src_line=0, src_col=18, name='a'),
47
+
SourceMap(dst_line=0, dst_col=62, src='file2.js', src_line=0, src_col=21, name='b'),
48
+
SourceMap(dst_line=0, dst_col=65, src='file2.js', src_line=1, src_col=1, name=None),
49
+
SourceMap(dst_line=0, dst_col=77, src='file2.js', src_line=2, src_col=1, name=None),
50
+
SourceMap(dst_line=0, dst_col=84, src='file2.js', src_line=2, src_col=8, name='a'),
51
+
SourceMap(dst_line=0, dst_col=87, src='file2.js', src_line=2, src_col=12, name='b'),
52
+
SourceMap(dst_line=0, dst_col=89, src='file2.js', src_line=4, src_col=0, name=None),
53
+
SourceMap(dst_line=0, dst_col=97, src='file2.js', src_line=4, src_col=9, name='divide'),
54
+
SourceMap(dst_line=0, dst_col=105, src='file2.js', src_line=4, src_col=16, name='a'),
55
+
SourceMap(dst_line=0, dst_col=107, src='file2.js', src_line=4, src_col=19, name='b'),
56
+
SourceMap(dst_line=0, dst_col=110, src='file2.js', src_line=5, src_col=1, name=None),
57
+
SourceMap(dst_line=0, dst_col=122, src='file2.js', src_line=6, src_col=1, name=None),
58
+
SourceMap(dst_line=0, dst_col=127, src='file2.js', src_line=7, src_col=2, name=None),
59
+
SourceMap(dst_line=0, dst_col=133, src='file2.js', src_line=7, src_col=9, name='multiply'),
60
+
SourceMap(dst_line=0, dst_col=143, src='file2.js', src_line=7, src_col=18, name='add'),
61
+
SourceMap(dst_line=0, dst_col=147, src='file2.js', src_line=7, src_col=22, name='a'),
62
+
SourceMap(dst_line=0, dst_col=149, src='file2.js', src_line=7, src_col=25, name='b'),
63
+
SourceMap(dst_line=0, dst_col=152, src='file2.js', src_line=7, src_col=29, name='a'),
64
+
SourceMap(dst_line=0, dst_col=154, src='file2.js', src_line=7, src_col=32, name='b'),
65
+
SourceMap(dst_line=0, dst_col=157, src='file2.js', src_line=7, src_col=37, name='c'),
66
+
SourceMap(dst_line=0, dst_col=159, src='file2.js', src_line=8, src_col=3, name=None),
67
+
SourceMap(dst_line=0, dst_col=165, src='file2.js', src_line=8, src_col=10, name='e'),
68
+
SourceMap(dst_line=0, dst_col=168, src='file2.js', src_line=9, src_col=2, name='Raven'),
69
+
SourceMap(dst_line=0, dst_col=174, src='file2.js', src_line=9, src_col=8, name='captureException'),
70
+
SourceMap(dst_line=0, dst_col=191, src='file2.js', src_line=9, src_col=25, name='e'),
71
+
]
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4