Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Side by Side Diff: test/filterStorage_readwrite.js

Issue 29984577: Issue 6959 - Use async/await in test/filterStorage_readwrite.js (Closed) Base URL: https://hg.adblockplus.org/adblockpluscore/
Patch Set: Created Jan. 17, 2019, 8:32 a.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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-present eyeo GmbH 3 * Copyright (C) 2006-present 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 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
84 { 84 {
85 if (a.key < b.key) 85 if (a.key < b.key)
86 return -1; 86 return -1;
87 else if (a.key > b.key) 87 else if (a.key > b.key)
88 return 1; 88 return 1;
89 return 0; 89 return 0;
90 }); 90 });
91 return sections; 91 return sections;
92 } 92 }
93 93
94 function testReadWrite(test, withExternal, withEmptySpecial) 94 async function testReadWrite(test, withExternal, withEmptySpecial)
95 { 95 {
96 test.ok(!filterStorage.initialized, "Uninitialized before the first load"); 96 test.ok(!filterStorage.initialized, "Uninitialized before the first load");
97 97
98 return testData.then(data => 98 try
99 { 99 {
100 let data = await testData;
101
100 IO._setFileContents(filterStorage.sourceFile, data); 102 IO._setFileContents(filterStorage.sourceFile, data);
101 return filterStorage.loadFromDisk(); 103 await filterStorage.loadFromDisk();
102 }).then(() => 104
103 {
104 test.ok(filterStorage.initialized, "Initialize after the first load"); 105 test.ok(filterStorage.initialized, "Initialize after the first load");
105 test.equal(filterStorage.fileProperties.version, filterStorage.formatVersion , "File format version"); 106 test.equal(filterStorage.fileProperties.version, filterStorage.formatVersion , "File format version");
106 107
107 if (withExternal) 108 if (withExternal)
108 { 109 {
109 { 110 {
110 let subscription = new ExternalSubscription("~external~external subscrip tion ID", "External subscription"); 111 let subscription = new ExternalSubscription("~external~external subscrip tion ID", "External subscription");
111 subscription.addFilter(Filter.fromText("foo")); 112 subscription.addFilter(Filter.fromText("foo"));
112 subscription.addFilter(Filter.fromText("bar")); 113 subscription.addFilter(Filter.fromText("bar"));
113 filterStorage.addSubscription(subscription); 114 filterStorage.addSubscription(subscription);
(...skipping 13 matching lines...) Expand all
127 filterStorage.addSubscription(specialSubscription); 128 filterStorage.addSubscription(specialSubscription);
128 129
129 filterStorage.removeFilter(Filter.fromText("!foo"), specialSubscription); 130 filterStorage.removeFilter(Filter.fromText("!foo"), specialSubscription);
130 131
131 test.equal(specialSubscription.filterCount, 0, 132 test.equal(specialSubscription.filterCount, 0,
132 "No filters in special subscription"); 133 "No filters in special subscription");
133 test.ok(new Set(filterStorage.subscriptions()).has(specialSubscription), 134 test.ok(new Set(filterStorage.subscriptions()).has(specialSubscription),
134 "Empty special subscription still in storage"); 135 "Empty special subscription still in storage");
135 } 136 }
136 137
137 return filterStorage.saveToDisk(); 138 await filterStorage.saveToDisk();
138 }).then(() => testData).then(expected => 139
140 let expected = await testData;
141
142 test.deepEqual(canonize(IO._getFileContents(filterStorage.sourceFile)),
143 canonize(expected), "Read/write result");
144 }
145 catch (error)
139 { 146 {
140 test.deepEqual(canonize(IO._getFileContents(filterStorage.sourceFile)), 147 unexpectedError.call(test, error);
141 canonize(expected), "Read/write result"); 148 }
142 }).catch(unexpectedError.bind(test)).then(() => test.done()); 149
150 test.done();
143 } 151 }
144 152
145 exports.testReadAndSaveToFile = function(test) 153 exports.testReadAndSaveToFile = function(test)
146 { 154 {
147 testReadWrite(test, false); 155 testReadWrite(test, false);
148 }; 156 };
149 157
150 exports.testReadAndSaveToFileWithExternalSubscription = function(test) 158 exports.testReadAndSaveToFileWithExternalSubscription = function(test)
151 { 159 {
152 testReadWrite(test, true); 160 testReadWrite(test, true);
153 }; 161 };
154 162
155 exports.testReadAndSaveToFileWithEmptySpecial = function(test) 163 exports.testReadAndSaveToFileWithEmptySpecial = function(test)
156 { 164 {
157 testReadWrite(test, false, true); 165 testReadWrite(test, false, true);
158 }; 166 };
159 167
160 exports.testImportExport = function(test) 168 exports.testImportExport = async function(test)
161 { 169 {
162 testData.then(lines => 170 try
163 { 171 {
172 let lines = await testData;
173
164 if (lines.length && lines[lines.length - 1] == "") 174 if (lines.length && lines[lines.length - 1] == "")
165 lines.pop(); 175 lines.pop();
166 176
167 let importer = filterStorage.importData(); 177 let importer = filterStorage.importData();
168 for (let line of lines) 178 for (let line of lines)
169 importer(line); 179 importer(line);
170 importer(null); 180 importer(null);
171 181
172 test.equal(filterStorage.fileProperties.version, filterStorage.formatVersion , "File format version"); 182 test.equal(filterStorage.fileProperties.version, filterStorage.formatVersion , "File format version");
173 183
174 let exported = Array.from(filterStorage.exportData()); 184 let exported = Array.from(filterStorage.exportData());
175 test.deepEqual(canonize(exported), canonize(lines), "Import/export result"); 185 test.deepEqual(canonize(exported), canonize(lines), "Import/export result");
176 }).catch(unexpectedError.bind(test)).then(() => test.done()); 186 }
187 catch (error)
188 {
189 unexpectedError.call(test, error);
190 }
191
192 test.done();
177 }; 193 };
178 194
179 exports.testSavingWithoutBackups = function(test) 195 exports.testSavingWithoutBackups = async function(test)
180 { 196 {
181 Prefs.patternsbackups = 0; 197 Prefs.patternsbackups = 0;
182 Prefs.patternsbackupinterval = 24; 198 Prefs.patternsbackupinterval = 24;
183 199
184 filterStorage.saveToDisk().then(() => 200 try
185 { 201 {
186 return filterStorage.saveToDisk(); 202 await filterStorage.saveToDisk();
187 }).then(() => 203 await filterStorage.saveToDisk();
188 { 204
189 test.ok(!IO._getFileContents(filterStorage.getBackupName(1)), 205 test.ok(!IO._getFileContents(filterStorage.getBackupName(1)),
190 "Backup shouldn't be created"); 206 "Backup shouldn't be created");
191 }).catch(unexpectedError.bind(test)).then(() => test.done()); 207 }
208 catch (error)
209 {
210 unexpectedError.call(test, error);
211 }
212
213 test.done();
192 }; 214 };
193 215
194 exports.testSavingWithBackups = function(test) 216 exports.testSavingWithBackups = async function(test)
195 { 217 {
196 Prefs.patternsbackups = 2; 218 Prefs.patternsbackups = 2;
197 Prefs.patternsbackupinterval = 24; 219 Prefs.patternsbackupinterval = 24;
198 220
199 let backupFile = filterStorage.getBackupName(1); 221 let backupFile = filterStorage.getBackupName(1);
200 let backupFile2 = filterStorage.getBackupName(2); 222 let backupFile2 = filterStorage.getBackupName(2);
201 let backupFile3 = filterStorage.getBackupName(3); 223 let backupFile3 = filterStorage.getBackupName(3);
202 224
203 let oldModifiedTime; 225 let oldModifiedTime;
204 226
205 filterStorage.saveToDisk().then(() => 227 try
206 { 228 {
229 await filterStorage.saveToDisk();
230
207 // Save again immediately 231 // Save again immediately
208 return filterStorage.saveToDisk(); 232 await filterStorage.saveToDisk();
209 }).then(() => 233
210 {
211 test.ok(IO._getFileContents(backupFile), "First backup created"); 234 test.ok(IO._getFileContents(backupFile), "First backup created");
212 235
213 oldModifiedTime = IO._getModifiedTime(backupFile) - 10000; 236 oldModifiedTime = IO._getModifiedTime(backupFile) - 10000;
214 IO._setModifiedTime(backupFile, oldModifiedTime); 237 IO._setModifiedTime(backupFile, oldModifiedTime);
215 return filterStorage.saveToDisk(); 238 await filterStorage.saveToDisk();
216 }).then(() => 239
217 {
218 test.equal(IO._getModifiedTime(backupFile), oldModifiedTime, "Backup not ove rwritten if it is only 10 seconds old"); 240 test.equal(IO._getModifiedTime(backupFile), oldModifiedTime, "Backup not ove rwritten if it is only 10 seconds old");
219 241
220 oldModifiedTime -= 40 * 60 * 60 * 1000; 242 oldModifiedTime -= 40 * 60 * 60 * 1000;
221 IO._setModifiedTime(backupFile, oldModifiedTime); 243 IO._setModifiedTime(backupFile, oldModifiedTime);
222 return filterStorage.saveToDisk(); 244 await filterStorage.saveToDisk();
223 }).then(() => 245
224 {
225 test.notEqual(IO._getModifiedTime(backupFile), oldModifiedTime, "Backup over written if it is 40 hours old"); 246 test.notEqual(IO._getModifiedTime(backupFile), oldModifiedTime, "Backup over written if it is 40 hours old");
226 247
227 test.ok(IO._getFileContents(backupFile2), "Second backup created when first backup is overwritten"); 248 test.ok(IO._getFileContents(backupFile2), "Second backup created when first backup is overwritten");
228 249
229 IO._setModifiedTime(backupFile, IO._getModifiedTime(backupFile) - 20000); 250 IO._setModifiedTime(backupFile, IO._getModifiedTime(backupFile) - 20000);
230 oldModifiedTime = IO._getModifiedTime(backupFile2); 251 oldModifiedTime = IO._getModifiedTime(backupFile2);
231 return filterStorage.saveToDisk(); 252 await filterStorage.saveToDisk();
232 }).then(() => 253
233 {
234 test.equal(IO._getModifiedTime(backupFile2), oldModifiedTime, "Second backup not overwritten if first one is only 20 seconds old"); 254 test.equal(IO._getModifiedTime(backupFile2), oldModifiedTime, "Second backup not overwritten if first one is only 20 seconds old");
235 255
236 IO._setModifiedTime(backupFile, IO._getModifiedTime(backupFile) - 25 * 60 * 60 * 1000); 256 IO._setModifiedTime(backupFile, IO._getModifiedTime(backupFile) - 25 * 60 * 60 * 1000);
237 oldModifiedTime = IO._getModifiedTime(backupFile2); 257 oldModifiedTime = IO._getModifiedTime(backupFile2);
238 return filterStorage.saveToDisk(); 258 await filterStorage.saveToDisk();
239 }).then(() => 259
240 {
241 test.notEqual(IO._getModifiedTime(backupFile2), oldModifiedTime, "Second bac kup overwritten if first one is 25 hours old"); 260 test.notEqual(IO._getModifiedTime(backupFile2), oldModifiedTime, "Second bac kup overwritten if first one is 25 hours old");
242 261
243 test.ok(!IO._getFileContents(backupFile3), "Third backup not created with pa tternsbackups = 2"); 262 test.ok(!IO._getFileContents(backupFile3), "Third backup not created with pa tternsbackups = 2");
244 }).catch(unexpectedError.bind(test)).then(() => test.done()); 263 }
264 catch (error)
265 {
266 unexpectedError.call(test, error);
267 }
268
269 test.done();
245 }; 270 };
246 271
247 exports.testRestoringBackup = function(test) 272 exports.testRestoringBackup = async function(test)
248 { 273 {
249 Prefs.patternsbackups = 2; 274 Prefs.patternsbackups = 2;
250 Prefs.patternsbackupinterval = 24; 275 Prefs.patternsbackupinterval = 24;
251 276
252 filterStorage.saveToDisk().then(() => 277 try
253 { 278 {
279 await filterStorage.saveToDisk();
280
254 test.equal([...filterStorage.subscriptions()][0].filterCount, 1, "Initial fi lter count"); 281 test.equal([...filterStorage.subscriptions()][0].filterCount, 1, "Initial fi lter count");
255 filterStorage.addFilter(Filter.fromText("barfoo")); 282 filterStorage.addFilter(Filter.fromText("barfoo"));
256 test.equal([...filterStorage.subscriptions()][0].filterCount, 2, "Filter cou nt after adding a filter"); 283 test.equal([...filterStorage.subscriptions()][0].filterCount, 2, "Filter cou nt after adding a filter");
257 return filterStorage.saveToDisk(); 284 await filterStorage.saveToDisk();
258 }).then(() => 285
286 await filterStorage.loadFromDisk();
287
288 test.equal([...filterStorage.subscriptions()][0].filterCount, 2, "Filter cou nt after adding filter and reloading");
289 await filterStorage.restoreBackup(1);
290
291 test.equal([...filterStorage.subscriptions()][0].filterCount, 1, "Filter cou nt after restoring backup");
292 await filterStorage.loadFromDisk();
293
294 test.equal([...filterStorage.subscriptions()][0].filterCount, 1, "Filter cou nt after reloading");
295 }
296 catch (error)
259 { 297 {
260 return filterStorage.loadFromDisk(); 298 unexpectedError.call(test, error);
261 }).then(() => 299 }
262 { 300
263 test.equal([...filterStorage.subscriptions()][0].filterCount, 2, "Filter cou nt after adding filter and reloading"); 301 test.done();
264 return filterStorage.restoreBackup(1);
265 }).then(() =>
266 {
267 test.equal([...filterStorage.subscriptions()][0].filterCount, 1, "Filter cou nt after restoring backup");
268 return filterStorage.loadFromDisk();
269 }).then(() =>
270 {
271 test.equal([...filterStorage.subscriptions()][0].filterCount, 1, "Filter cou nt after reloading");
272 }).catch(unexpectedError.bind(test)).then(() => test.done());
273 }; 302 };
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld