@@ -24,21 +24,7 @@ describe('Utils → Path', () => {
2424 } ) ;
2525 } ) ;
2626
27- describe ( '.escapePattern' , ( ) => {
28- it ( 'should return pattern with escaped glob symbols' , ( ) => {
29- assert . strictEqual ( util . escape ( '!abc' ) , '\\!abc' ) ;
30- assert . strictEqual ( util . escape ( '*' ) , '\\*' ) ;
31- assert . strictEqual ( util . escape ( '?' ) , '\\?' ) ;
32- assert . strictEqual ( util . escape ( '()' ) , '\\(\\)' ) ;
33- assert . strictEqual ( util . escape ( '{}' ) , '\\{\\}' ) ;
34- assert . strictEqual ( util . escape ( '[]' ) , '\\[\\]' ) ;
35- assert . strictEqual ( util . escape ( '@(' ) , '\\@\\(' ) ;
36- assert . strictEqual ( util . escape ( '!(' ) , '\\!\\(' ) ;
37- assert . strictEqual ( util . escape ( '*(' ) , '\\*\\(' ) ;
38- assert . strictEqual ( util . escape ( '?(' ) , '\\?\\(' ) ;
39- assert . strictEqual ( util . escape ( '+(' ) , '\\+\\(' ) ;
40- } ) ;
41-
27+ describe ( '.escape' , ( ) => {
4228 it ( 'should return pattern without additional escape characters' , ( ) => {
4329 assert . strictEqual ( util . escape ( '\\!abc' ) , '\\!abc' ) ;
4430 assert . strictEqual ( util . escape ( '\\*' ) , '\\*' ) ;
@@ -55,6 +41,34 @@ describe('Utils → Path', () => {
5541 } ) ;
5642 } ) ;
5743
44+ describe ( '.escapePosixPattern' , ( ) => {
45+ it ( 'should return pattern with escaped glob symbols' , ( ) => {
46+ assert . strictEqual ( util . escapePosixPath ( '!abc' ) , '\\!abc' ) ;
47+ assert . strictEqual ( util . escapePosixPath ( '*' ) , '\\*' ) ;
48+ assert . strictEqual ( util . escapePosixPath ( '?' ) , '\\?' ) ;
49+ assert . strictEqual ( util . escapePosixPath ( '\\' ) , '\\\\' ) ;
50+ assert . strictEqual ( util . escapePosixPath ( '()' ) , '\\(\\)' ) ;
51+ assert . strictEqual ( util . escapePosixPath ( '{}' ) , '\\{\\}' ) ;
52+ assert . strictEqual ( util . escapePosixPath ( '[]' ) , '\\[\\]' ) ;
53+ assert . strictEqual ( util . escapePosixPath ( '@(' ) , '\\@\\(' ) ;
54+ assert . strictEqual ( util . escapePosixPath ( '!(' ) , '\\!\\(' ) ;
55+ assert . strictEqual ( util . escapePosixPath ( '*(' ) , '\\*\\(' ) ;
56+ assert . strictEqual ( util . escapePosixPath ( '?(' ) , '\\?\\(' ) ;
57+ assert . strictEqual ( util . escapePosixPath ( '+(' ) , '\\+\\(' ) ;
58+ } ) ;
59+ } ) ;
60+
61+ describe ( '.escapeWindowsPattern' , ( ) => {
62+ it ( 'should return pattern with escaped glob symbols' , ( ) => {
63+ assert . strictEqual ( util . escapeWindowsPath ( '!abc' ) , '\\!abc' ) ;
64+ assert . strictEqual ( util . escapeWindowsPath ( '()' ) , '\\(\\)' ) ;
65+ assert . strictEqual ( util . escapeWindowsPath ( '{}' ) , '\\{\\}' ) ;
66+ assert . strictEqual ( util . escapeWindowsPath ( '@(' ) , '\\@\\(' ) ;
67+ assert . strictEqual ( util . escapeWindowsPath ( '!(' ) , '\\!\\(' ) ;
68+ assert . strictEqual ( util . escapeWindowsPath ( '+(' ) , '\\+\\(' ) ;
69+ } ) ;
70+ } ) ;
71+
5872 describe ( '.removeLeadingDotCharacters' , ( ) => {
5973 it ( 'should return path without changes' , ( ) => {
6074 assert . strictEqual ( util . removeLeadingDotSegment ( '../a/b' ) , '../a/b' ) ;
@@ -73,4 +87,84 @@ describe('Utils → Path', () => {
7387 assert . strictEqual ( util . removeLeadingDotSegment ( '.\\a\\b' ) , 'a\\b' ) ;
7488 } ) ;
7589 } ) ;
90+
91+ describe ( '.convertPathToPattern' , ( ) => {
92+ it ( 'should return a pattern' , ( ) => {
93+ assert . strictEqual ( util . convertPathToPattern ( '.{directory}' ) , '.\\{directory\\}' ) ;
94+ } ) ;
95+ } ) ;
96+
97+ describe ( '.convertPosixPathToPattern' , ( ) => {
98+ it ( 'should escape special characters' , ( ) => {
99+ assert . strictEqual ( util . convertPosixPathToPattern ( './**\\*' ) , './\\*\\*\\*' ) ;
100+ } ) ;
101+ } ) ;
102+
103+ describe ( '.convertWindowsPathToPattern' , ( ) => {
104+ it ( 'should escape special characters' , ( ) => {
105+ assert . strictEqual ( util . convertPosixPathToPattern ( '.{directory}' ) , '.\\{directory\\}' ) ;
106+ } ) ;
107+
108+ it ( 'should do nothing with escaped glob symbols' , ( ) => {
109+ assert . strictEqual ( util . convertWindowsPathToPattern ( '\\!\\' ) , '\\!/' ) ;
110+ assert . strictEqual ( util . convertWindowsPathToPattern ( '\\+\\' ) , '\\+/' ) ;
111+ assert . strictEqual ( util . convertWindowsPathToPattern ( '\\@\\' ) , '\\@/' ) ;
112+ assert . strictEqual ( util . convertWindowsPathToPattern ( '\\(\\' ) , '\\(/' ) ;
113+ assert . strictEqual ( util . convertWindowsPathToPattern ( '\\)\\' ) , '\\)/' ) ;
114+ assert . strictEqual ( util . convertWindowsPathToPattern ( '\\{\\' ) , '\\{/' ) ;
115+ assert . strictEqual ( util . convertWindowsPathToPattern ( '\\}\\' ) , '\\}/' ) ;
116+
117+ assert . strictEqual ( util . convertWindowsPathToPattern ( '.\\*' ) , './*' ) ;
118+ assert . strictEqual ( util . convertWindowsPathToPattern ( '.\\**' ) , './**' ) ;
119+ assert . strictEqual ( util . convertWindowsPathToPattern ( '.\\**\\*' ) , './**/*' ) ;
120+
121+ assert . strictEqual ( util . convertWindowsPathToPattern ( 'a\\{b,c\\d,{b,c}}' ) , 'a\\{b,c/d,\\{b,c\\}\\}' ) ;
122+ } ) ;
123+
124+ it ( 'should convert slashes' , ( ) => {
125+ assert . strictEqual ( util . convertWindowsPathToPattern ( '/' ) , '/' ) ;
126+ assert . strictEqual ( util . convertWindowsPathToPattern ( '\\' ) , '/' ) ;
127+ assert . strictEqual ( util . convertWindowsPathToPattern ( '\\\\' ) , '//' ) ;
128+ assert . strictEqual ( util . convertWindowsPathToPattern ( '\\/' ) , '//' ) ;
129+ assert . strictEqual ( util . convertWindowsPathToPattern ( '\\/\\' ) , '///' ) ;
130+ } ) ;
131+
132+ it ( 'should convert relative paths' , ( ) => {
133+ assert . strictEqual ( util . convertWindowsPathToPattern ( 'file.txt' ) , 'file.txt' ) ;
134+ assert . strictEqual ( util . convertWindowsPathToPattern ( './file.txt' ) , './file.txt' ) ;
135+ assert . strictEqual ( util . convertWindowsPathToPattern ( '.\\file.txt' ) , './file.txt' ) ;
136+ assert . strictEqual ( util . convertWindowsPathToPattern ( '../file.txt' ) , '../file.txt' ) ;
137+ assert . strictEqual ( util . convertWindowsPathToPattern ( '..\\file.txt' ) , '../file.txt' ) ;
138+ assert . strictEqual ( util . convertWindowsPathToPattern ( '.\\file.txt' ) , './file.txt' ) ;
139+ } ) ;
140+
141+ it ( 'should convert absolute paths' , ( ) => {
142+ assert . strictEqual ( util . convertWindowsPathToPattern ( '/.file.txt' ) , '/.file.txt' ) ;
143+ assert . strictEqual ( util . convertWindowsPathToPattern ( '/root/.file.txt' ) , '/root/.file.txt' ) ;
144+ assert . strictEqual ( util . convertWindowsPathToPattern ( '\\.file.txt' ) , '/.file.txt' ) ;
145+ assert . strictEqual ( util . convertWindowsPathToPattern ( '\\root\\.file.txt' ) , '/root/.file.txt' ) ;
146+ assert . strictEqual ( util . convertWindowsPathToPattern ( '\\root/.file.txt' ) , '/root/.file.txt' ) ;
147+ } ) ;
148+
149+ it ( 'should convert traditional DOS paths' , ( ) => {
150+ assert . strictEqual ( util . convertWindowsPathToPattern ( 'D:ShipId.txt' ) , 'D:ShipId.txt' ) ;
151+ assert . strictEqual ( util . convertWindowsPathToPattern ( 'D:/ShipId.txt' ) , 'D:/ShipId.txt' ) ;
152+ assert . strictEqual ( util . convertWindowsPathToPattern ( 'D://ShipId.txt' ) , 'D://ShipId.txt' ) ;
153+
154+ assert . strictEqual ( util . convertWindowsPathToPattern ( 'D:\\ShipId.txt' ) , 'D:/ShipId.txt' ) ;
155+ assert . strictEqual ( util . convertWindowsPathToPattern ( 'D:\\\\ShipId.txt' ) , 'D://ShipId.txt' ) ;
156+ assert . strictEqual ( util . convertWindowsPathToPattern ( 'D:\\/ShipId.txt' ) , 'D://ShipId.txt' ) ;
157+ } ) ;
158+
159+ it ( 'should convert UNC paths' , ( ) => {
160+ assert . strictEqual ( util . convertWindowsPathToPattern ( '\\\\system07\\' ) , '//system07/' ) ;
161+ assert . strictEqual ( util . convertWindowsPathToPattern ( '\\\\system07\\c$\\' ) , '//system07/c$/' ) ;
162+ assert . strictEqual ( util . convertWindowsPathToPattern ( '\\\\Server02\\Share\\Foo.txt' ) , '//Server02/Share/Foo.txt' ) ;
163+
164+ assert . strictEqual ( util . convertWindowsPathToPattern ( '\\\\127.0.0.1\\c$\\File.txt' ) , '//127.0.0.1/c$/File.txt' ) ;
165+ assert . strictEqual ( util . convertWindowsPathToPattern ( '\\\\.\\c:\\File.txt' ) , '//./c:/File.txt' ) ;
166+ assert . strictEqual ( util . convertWindowsPathToPattern ( '\\\\?\\c:\\File.txt' ) , '//?/c:/File.txt' ) ;
167+ assert . strictEqual ( util . convertWindowsPathToPattern ( '\\\\.\\UNC\\LOCALHOST\\c$\\File.txt' ) , '//./UNC/LOCALHOST/c$/File.txt' ) ;
168+ } ) ;
169+ } ) ;
76170} ) ;
0 commit comments