forked from meteor/meteor
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathurlrewriting-tests.js
97 lines (83 loc) · 5.16 KB
/
urlrewriting-tests.js
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
Tinytest.add("minifiers - url rewriting when merging", function (test) {
var stylesheet = function(backgroundPath) {
return "body { color: green; background: top center url(" + backgroundPath + ") black, bottom center url(" + backgroundPath + "); }"
};
var parseOptions = { source: null, position: true };
var t = function(relativeUrl, absoluteUrl, desc) {
var ast1 = CssTools.parseCss(stylesheet(relativeUrl), parseOptions);
var ast2 = CssTools.parseCss(stylesheet(absoluteUrl), parseOptions);
CssTools.rewriteCssUrls(ast1);
test.equal(CssTools.stringifyCss(ast1), CssTools.stringifyCss(ast2), desc);
};
parseOptions.source = 'packages/nameOfPackage/style.css';
t('../image.png', 'packages/image.png', 'parent directory');
t('./../image.png', 'packages/image.png', 'parent directory');
t('../nameOfPackage2/image.png', 'packages/nameOfPackage2/image.png', 'cousin directory');
t('../../image.png', 'image.png', 'grand parent directory');
t('./image.png', 'packages/nameOfPackage/image.png', 'current directory');
t('./child/image.png', 'packages/nameOfPackage/child/image.png', 'child directory');
t('child/image.png', 'packages/nameOfPackage/child/image.png', 'child directory');
t('/image.png', '/image.png', 'absolute url');
t('"/image.png"', '"/image.png"', 'double quoted url');
t("'/image.png'", "'/image.png'", 'single quoted url');
t('"./../image.png"', '"packages/image.png"', 'quoted parent directory');
t('http://i.imgur.com/fBcdJIh.gif', 'http://i.imgur.com/fBcdJIh.gif', 'complete URL');
t('"http://i.imgur.com/fBcdJIh.gif"', '"http://i.imgur.com/fBcdJIh.gif"', 'complete quoted URL');
t('data:image/png;base64,iVBORw0K=', 'data:image/png;base64,iVBORw0K=', 'data URI');
t('http://', 'http://', 'malformed URL');
parseOptions.source = 'application/client/dir/other-style.css';
t('./image.png', '/image.png', 'base path is root');
t('./child/image.png', '/child/image.png', 'child directory from root');
t('child/image.png', '/child/image.png', 'child directory from root');
t('/image.png', '/image.png', 'absolute url');
t('"/image.png"', '"/image.png"', 'double quoted url');
t("'/image.png'", "'/image.png'", 'single quoted url');
t('http://i.imgur.com/fBcdJIh.gif', 'http://i.imgur.com/fBcdJIh.gif', 'complete URL');
t('"http://i.imgur.com/fBcdJIh.gif"', '"http://i.imgur.com/fBcdJIh.gif"', 'complete quoted URL');
t('data:image/png;base64,iVBORw0K=', 'data:image/png;base64,iVBORw0K=', 'data URI');
t('http://', 'http://', 'malformed URL');
});
Tinytest.add("minifiers - url rewriting with media queries (ast rule recursion)", function (test) {
var stylesheet = function(backgroundPath) {
return "@media (min--moz-device-pixel-ratio: 1.5),\n\
(-o-min-device-pixel-ratio: 3/2),\n\
(-webkit-min-device-pixel-ratio: 1.5),\n\
(min-device-pixel-ratio: 1.5),\n\
(min-resolution: 1.5dppx) \n\
{ .foobar { background-image: url(" + backgroundPath + "); } }"
};
var parseOptions = { source: null, position: true };
var t = function(relativeUrl, absoluteUrl, desc) {
var ast1 = CssTools.parseCss(stylesheet(relativeUrl), parseOptions);
var ast2 = CssTools.parseCss(stylesheet(absoluteUrl), parseOptions);
CssTools.rewriteCssUrls(ast1);
test.equal(CssTools.stringifyCss(ast1), CssTools.stringifyCss(ast2), desc);
};
parseOptions.source = 'packages/nameOfPackage/style.css';
t('../image.png', 'packages/image.png', 'parent directory');
t('./../image.png', 'packages/image.png', 'parent directory');
t('../nameOfPackage2/image.png', 'packages/nameOfPackage2/image.png', 'cousin directory');
t('../../image.png', 'image.png', 'grand parent directory');
t('./image.png', 'packages/nameOfPackage/image.png', 'current directory');
t('./child/image.png', 'packages/nameOfPackage/child/image.png', 'child directory');
t('child/image.png', 'packages/nameOfPackage/child/image.png', 'child directory');
t('/image.png', '/image.png', 'absolute url');
t('"/image.png"', '"/image.png"', 'double quoted url');
t("'/image.png'", "'/image.png'", 'single quoted url');
t('"./../image.png"', '"packages/image.png"', 'quoted parent directory');
t('http://i.imgur.com/fBcdJIh.gif', 'http://i.imgur.com/fBcdJIh.gif', 'complete URL');
t('"http://i.imgur.com/fBcdJIh.gif"', '"http://i.imgur.com/fBcdJIh.gif"', 'complete quoted URL');
t('data:image/png;base64,iVBORw0K=', 'data:image/png;base64,iVBORw0K=', 'data URI');
t('http://', 'http://', 'malformed URL');
parseOptions.source = 'application/client/dir/other-style.css';
t('./image.png', '/image.png', 'base path is root');
t('./child/image.png', '/child/image.png', 'child directory from root');
t('child/image.png', '/child/image.png', 'child directory from root');
t('/image.png', '/image.png', 'absolute url');
t('"/image.png"', '"/image.png"', 'double quoted url');
t("'/image.png'", "'/image.png'", 'single quoted url');
t('http://i.imgur.com/fBcdJIh.gif', 'http://i.imgur.com/fBcdJIh.gif', 'complete URL');
t('"http://i.imgur.com/fBcdJIh.gif"', '"http://i.imgur.com/fBcdJIh.gif"', 'complete quoted URL');
t('data:image/png;base64,iVBORw0K=', 'data:image/png;base64,iVBORw0K=', 'data URI');
t('http://', 'http://', 'malformed URL');
});