Left: | ||
Right: |
LEFT | RIGHT |
---|---|
1 /* | 1 /* |
2 * This file is part of Adblock Plus <https://adblockplus.org/>, | 2 * This file is part of Adblock Plus <https://adblockplus.org/>, |
3 * Copyright (C) 2006-2016 Eyeo GmbH | 3 * Copyright (C) 2006-2016 Eyeo GmbH |
4 * | 4 * |
5 * Adblock Plus is free software: you can redistribute it and/or modify | 5 * Adblock Plus is free software: you can redistribute it and/or modify |
6 * it under the terms of the GNU General Public License version 3 as | 6 * it under the terms of the GNU General Public License version 3 as |
7 * published by the Free Software Foundation. | 7 * published by the Free Software Foundation. |
8 * | 8 * |
9 * Adblock Plus is distributed in the hope that it will be useful, | 9 * Adblock Plus is distributed in the hope that it will be useful, |
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
(...skipping 29 matching lines...) Expand all Loading... | |
40 ); | 40 ); |
41 | 41 |
42 FilterStorage.addSubscription(Subscription.fromURL("~fl~")); | 42 FilterStorage.addSubscription(Subscription.fromURL("~fl~")); |
43 callback(); | 43 callback(); |
44 } | 44 } |
45 | 45 |
46 let testData = new Promise((resolve, reject) => | 46 let testData = new Promise((resolve, reject) => |
47 { | 47 { |
48 let fs = require("fs"); | 48 let fs = require("fs"); |
49 let path = require("path"); | 49 let path = require("path"); |
50 let datapath = path.resolve(__dirname, "data", "patterns.ini"); | 50 let datapath = path.resolve(__dirname, "data", "patterns.ini"); |
kzar
2016/10/06 05:13:38
Did you forget to add the data/patterns.ini file?
Wladimir Palant
2016/10/06 07:13:59
No, I copied the files in a separate commit - what
kzar
2016/10/06 08:06:47
Acknowledged.
| |
51 | 51 |
52 fs.readFile(datapath, "utf-8", (error, data) => | 52 fs.readFile(datapath, "utf-8", (error, data) => |
53 { | 53 { |
54 if (error) | 54 if (error) |
55 reject(error); | 55 reject(error); |
56 else | 56 else |
57 resolve(data); | 57 resolve(data); |
58 }); | 58 }); |
59 }); | 59 }); |
60 | 60 |
61 function loadFilters(file) | 61 function loadFilters(file) |
62 { | 62 { |
63 return new Promise((resolve, reject) => | 63 FilterStorage.loadFromDisk(file); |
64 { | 64 return FilterNotifier.once("load"); |
65 let listener = function(action) | 65 } |
kzar
2016/10/06 05:13:38
Seems like this logic is nearly identical in saveF
Wladimir Palant
2016/10/06 07:13:59
Reusing isn't quite trivial but with the new Filte
| |
66 { | 66 |
67 if (action == "load") | 67 function saveFilters(file) |
68 { | 68 { |
69 FilterNotifier.removeListener(listener); | 69 FilterStorage.saveToDisk(file); |
70 resolve(); | 70 return FilterNotifier.once("save"); |
71 } | |
72 }; | |
73 FilterNotifier.addListener(listener); | |
74 | |
75 FilterStorage.loadFromDisk(file); | |
76 }); | |
77 } | |
78 | |
79 function saveFilters(file, callback) | |
80 { | |
81 return new Promise((resolve, reject) => | |
82 { | |
83 let listener = function(action) | |
84 { | |
85 if (action == "save") | |
86 { | |
87 FilterNotifier.removeListener(listener); | |
88 resolve(); | |
89 } | |
90 }; | |
91 FilterNotifier.addListener(listener); | |
92 | |
93 FilterStorage.saveToDisk(file); | |
94 }); | |
95 } | 71 } |
96 | 72 |
97 function testReadWrite(test, withExternal) | 73 function testReadWrite(test, withExternal) |
98 { | 74 { |
99 let tempFile = IO.resolveFilePath("temp_patterns1.ini"); | 75 let tempFile = IO.resolveFilePath("temp_patterns1.ini"); |
100 let tempFile2 = IO.resolveFilePath("temp_patterns2.ini"); | 76 let tempFile2 = IO.resolveFilePath("temp_patterns2.ini"); |
101 | 77 |
102 function canonize(data) | 78 function canonize(data) |
103 { | 79 { |
104 let curSection = null; | 80 let curSection = null; |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
139 tempFile.contents = data; | 115 tempFile.contents = data; |
140 return loadFilters(tempFile); | 116 return loadFilters(tempFile); |
141 }).then(() => | 117 }).then(() => |
142 { | 118 { |
143 test.equal(FilterStorage.fileProperties.version, FilterStorage.formatVersion , "File format version"); | 119 test.equal(FilterStorage.fileProperties.version, FilterStorage.formatVersion , "File format version"); |
144 | 120 |
145 if (withExternal) | 121 if (withExternal) |
146 { | 122 { |
147 let subscription = new ExternalSubscription("~external~external subscripti on ID", "External subscription"); | 123 let subscription = new ExternalSubscription("~external~external subscripti on ID", "External subscription"); |
148 subscription.filters = [Filter.fromText("foo"), Filter.fromText("bar")]; | 124 subscription.filters = [Filter.fromText("foo"), Filter.fromText("bar")]; |
149 FilterStorage.addSubscription(subscription); | 125 FilterStorage.addSubscription(subscription); |
Wladimir Palant
2016/10/05 20:10:22
This was calling our public API in the original te
kzar
2016/10/06 05:13:38
Acknowledged.
| |
150 | 126 |
151 let externalSubscriptions = FilterStorage.subscriptions.filter(subscriptio n => subscription instanceof ExternalSubscription); | 127 let externalSubscriptions = FilterStorage.subscriptions.filter(subscriptio n => subscription instanceof ExternalSubscription); |
152 test.equal(externalSubscriptions.length, 1, "Number of external subscripti ons after updateExternalSubscription"); | 128 test.equal(externalSubscriptions.length, 1, "Number of external subscripti ons after updateExternalSubscription"); |
153 | 129 |
154 test.equal(externalSubscriptions[0].url, "~external~external subscription ID", "ID of external subscription"); | 130 test.equal(externalSubscriptions[0].url, "~external~external subscription ID", "ID of external subscription"); |
155 test.equal(externalSubscriptions[0].filters.length, 2, "Number of filters in external subscription"); | 131 test.equal(externalSubscriptions[0].filters.length, 2, "Number of filters in external subscription"); |
156 } | 132 } |
157 | 133 |
158 return saveFilters(tempFile2); | 134 return saveFilters(tempFile2); |
159 }).then(() => testData).then(expected => | 135 }).then(() => testData).then(expected => |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
193 let data = "[Subscription]\nurl=" + url + "\n[Subscription filters]\nfoo"; | 169 let data = "[Subscription]\nurl=" + url + "\n[Subscription filters]\nfoo"; |
194 let tempFile = IO.resolveFilePath("temp_patterns1.ini"); | 170 let tempFile = IO.resolveFilePath("temp_patterns1.ini"); |
195 tempFile.contents = data; | 171 tempFile.contents = data; |
196 | 172 |
197 loadFilters(tempFile).then(() => | 173 loadFilters(tempFile).then(() => |
198 { | 174 { |
199 test.equal(FilterStorage.subscriptions.length, 1, "Number of filter subscr iptions"); | 175 test.equal(FilterStorage.subscriptions.length, 1, "Number of filter subscr iptions"); |
200 if (FilterStorage.subscriptions.length == 1) | 176 if (FilterStorage.subscriptions.length == 1) |
201 { | 177 { |
202 let subscription = FilterStorage.subscriptions[0]; | 178 let subscription = FilterStorage.subscriptions[0]; |
203 test.equal(subscription.url, url, "Subscription ID"); | 179 test.equal(subscription.url, url, "Subscription ID"); |
kzar
2016/10/06 05:13:37
Won't `url` always be "~eh~" by the time the test
Wladimir Palant
2016/10/06 07:13:59
Good question. I checked and this isn't the case -
kzar
2016/10/06 08:06:47
Ah of course.
| |
204 test.equal(subscription.title, null, "Subscription title"); | 180 test.equal(subscription.title, null, "Subscription title"); |
205 test.deepEqual(subscription.defaults, null, "Default types"); | 181 test.deepEqual(subscription.defaults, null, "Default types"); |
Wladimir Palant
2016/10/05 20:10:22
I had to modify this, the fallback for legacy grou
kzar
2016/10/06 05:13:37
Acknowledged.
| |
206 test.equal(subscription.filters.length, 1, "Number of subscription filte rs"); | 182 test.equal(subscription.filters.length, 1, "Number of subscription filte rs"); |
207 if (subscription.filters.length == 1) | 183 if (subscription.filters.length == 1) |
208 test.equal(subscription.filters[0].text, "foo", "First filter"); | 184 test.equal(subscription.filters[0].text, "foo", "First filter"); |
209 } | 185 } |
210 }).catch(unexpectedError.bind(test)).then(() => test.done()); | 186 }).catch(unexpectedError.bind(test)).then(() => test.done()); |
211 }; | 187 }; |
212 } | 188 } |
213 | 189 |
214 exports.testReadLegacyFilters = function(test) | 190 exports.testReadLegacyFilters = function(test) |
215 { | 191 { |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
306 backupFile.lastModifiedTime -= 25*60*60*1000; | 282 backupFile.lastModifiedTime -= 25*60*60*1000; |
307 oldModifiedTime = backupFile2.lastModifiedTime; | 283 oldModifiedTime = backupFile2.lastModifiedTime; |
308 return saveFilters(null); | 284 return saveFilters(null); |
309 }).then(() => | 285 }).then(() => |
310 { | 286 { |
311 test.notEqual(backupFile2.lastModifiedTime, oldModifiedTime, "Second backup overwritten if first one is 25 hours old"); | 287 test.notEqual(backupFile2.lastModifiedTime, oldModifiedTime, "Second backup overwritten if first one is 25 hours old"); |
312 | 288 |
313 test.ok(!backupFile3.exists(), "Third backup not created with patternsbackup s = 2"); | 289 test.ok(!backupFile3.exists(), "Third backup not created with patternsbackup s = 2"); |
314 }).catch(unexpectedError.bind(test)).then(() => test.done()); | 290 }).catch(unexpectedError.bind(test)).then(() => test.done()); |
315 }; | 291 }; |
LEFT | RIGHT |