diff options
Diffstat (limited to 'toolkit/components/filewatcher')
17 files changed, 4 insertions, 841 deletions
diff --git a/toolkit/components/filewatcher/moz.build b/toolkit/components/filewatcher/moz.build index 5ce94b5d26..948a67bf99 100644 --- a/toolkit/components/filewatcher/moz.build +++ b/toolkit/components/filewatcher/moz.build @@ -4,20 +4,14 @@ # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. -XPCSHELL_TESTS_MANIFESTS += ['tests/xpcshell/xpcshell.ini'] +XPIDL_MODULE = 'toolkit_filewatcher' + +XPIDL_SOURCES += ['nsINativeFileWatcher.idl'] if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows': EXPORTS += ['NativeFileWatcherWin.h'] - UNIFIED_SOURCES += [ - 'NativeFileWatcherWin.cpp', - ] + UNIFIED_SOURCES += ['NativeFileWatcherWin.cpp'] else: EXPORTS += ['NativeFileWatcherNotSupported.h'] -XPIDL_MODULE = 'toolkit_filewatcher' - -XPIDL_SOURCES += [ - 'nsINativeFileWatcher.idl', -] - FINAL_LIBRARY = 'xul' diff --git a/toolkit/components/filewatcher/tests/xpcshell/.eslintrc.js b/toolkit/components/filewatcher/tests/xpcshell/.eslintrc.js deleted file mode 100644 index d35787cd2c..0000000000 --- a/toolkit/components/filewatcher/tests/xpcshell/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -"use strict"; - -module.exports = { - "extends": [ - "../../../../../testing/xpcshell/xpcshell.eslintrc.js" - ] -}; diff --git a/toolkit/components/filewatcher/tests/xpcshell/head.js b/toolkit/components/filewatcher/tests/xpcshell/head.js deleted file mode 100644 index 73f8ac4f5f..0000000000 --- a/toolkit/components/filewatcher/tests/xpcshell/head.js +++ /dev/null @@ -1,29 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -"use strict"; - -var {classes: Cc, interfaces: Ci, results: Cr, utils: Cu} = Components; - -Cu.import("resource://gre/modules/osfile.jsm", this); -Cu.import("resource://gre/modules/Promise.jsm", this); - -function makeWatcher() { - let watcher = - Cc['@mozilla.org/toolkit/filewatcher/native-file-watcher;1'] - .getService(Ci.nsINativeFileWatcherService); - return watcher; -} - -function promiseAddPath(watcher, resource, onChange=null, onError=null) { - return new Promise(resolve => - watcher.addPath(resource, onChange, onError, resolve) - ); -} - -function promiseRemovePath(watcher, resource, onChange=null, onError=null) { - return new Promise(resolve => - watcher.removePath(resource, onChange, onError, resolve) - ); -} diff --git a/toolkit/components/filewatcher/tests/xpcshell/test_arguments.js b/toolkit/components/filewatcher/tests/xpcshell/test_arguments.js deleted file mode 100644 index 7e62b1cb60..0000000000 --- a/toolkit/components/filewatcher/tests/xpcshell/test_arguments.js +++ /dev/null @@ -1,79 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -"use strict"; - -function run_test() { - // Set up profile. We will use profile path create some test files. - do_get_profile(); - - // Start executing the tests. - run_next_test(); -} - -/** - * Test for addPath usage with null arguments. - */ -add_task(function* test_null_args_addPath() { - - let watcher = makeWatcher(); - let testPath = 'someInvalidPath'; - - // Define a dummy callback function. In this test no callback is - // expected to be called. - let dummyFunc = function(changed) { - do_throw("Not expected in this test."); - }; - - // Check for error when passing a null first argument - try { - watcher.addPath(testPath, null, dummyFunc); - } catch (ex) { - if (ex.result != Cr.NS_ERROR_NULL_POINTER) - throw ex; - do_print("Initialisation thrown NS_ERROR_NULL_POINTER as expected."); - } - - // Check for error when passing both null arguments - try { - watcher.addPath(testPath, null, null); - } catch (ex) { - if (ex.result != Cr.NS_ERROR_NULL_POINTER) - throw ex; - do_print("Initialisation thrown NS_ERROR_NULL_POINTER as expected."); - } -}); - -/** - * Test for removePath usage with null arguments. - */ -add_task(function* test_null_args_removePath() { - - let watcher = makeWatcher(); - let testPath = 'someInvalidPath'; - - // Define a dummy callback function. In this test no callback is - // expected to be called. - let dummyFunc = function(changed) { - do_throw("Not expected in this test."); - }; - - // Check for error when passing a null first argument - try { - watcher.removePath(testPath, null, dummyFunc); - } catch (ex) { - if (ex.result != Cr.NS_ERROR_NULL_POINTER) - throw ex; - do_print("Initialisation thrown NS_ERROR_NULL_POINTER as expected."); - } - - // Check for error when passing both null arguments - try { - watcher.removePath(testPath, null, null); - } catch (ex) { - if (ex.result != Cr.NS_ERROR_NULL_POINTER) - throw ex; - do_print("Initialisation thrown NS_ERROR_NULL_POINTER as expected."); - } -}); diff --git a/toolkit/components/filewatcher/tests/xpcshell/test_no_error_callback.js b/toolkit/components/filewatcher/tests/xpcshell/test_no_error_callback.js deleted file mode 100644 index e5ceb33e55..0000000000 --- a/toolkit/components/filewatcher/tests/xpcshell/test_no_error_callback.js +++ /dev/null @@ -1,69 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -"use strict"; - -function run_test() { - // Set up profile. We will use profile path create some test files. - do_get_profile(); - - // Start executing the tests. - run_next_test(); -} - -/** - * Test the component behaves correctly when no error callback is - * provided and an error occurs. - */ -add_task(function* test_error_with_no_error_callback() { - - let watcher = makeWatcher(); - let testPath = 'someInvalidPath'; - - // Define a dummy callback function. In this test no callback is - // expected to be called. - let dummyFunc = function(changed) { - do_throw("Not expected in this test."); - }; - - // We don't pass an error callback and try to watch an invalid - // path. - watcher.addPath(testPath, dummyFunc); -}); - -/** - * Test the component behaves correctly when no error callback is - * provided (no error should occur). - */ -add_task(function* test_watch_single_path_file_creation_no_error_cb() { - - // Create and watch a sub-directory of the profile directory so we don't - // catch notifications we're not interested in (i.e. "startupCache"). - let watchedDir = OS.Path.join(OS.Constants.Path.profileDir, "filewatcher_playground"); - yield OS.File.makeDir(watchedDir); - - let tempFileName = "test_filecreation.tmp"; - - // Instantiate and initialize the native watcher. - let watcher = makeWatcher(); - let deferred = Promise.defer(); - - // Watch the profile directory but do not pass an error callback. - yield promiseAddPath(watcher, watchedDir, deferred.resolve); - - // Create a file within the watched directory. - let tmpFilePath = OS.Path.join(watchedDir, tempFileName); - yield OS.File.writeAtomic(tmpFilePath, "some data"); - - // Wait until the watcher informs us that the file was created. - let changed = yield deferred.promise; - do_check_eq(changed, tmpFilePath); - - // Remove the watch and free the associated memory (we need to - // reuse 'deferred.resolve' to unregister). - watcher.removePath(watchedDir, deferred.resolve); - - // Remove the test directory and all of its content. - yield OS.File.removeDir(watchedDir); -}); diff --git a/toolkit/components/filewatcher/tests/xpcshell/test_remove_non_watched.js b/toolkit/components/filewatcher/tests/xpcshell/test_remove_non_watched.js deleted file mode 100644 index 1375584a38..0000000000 --- a/toolkit/components/filewatcher/tests/xpcshell/test_remove_non_watched.js +++ /dev/null @@ -1,39 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -"use strict"; - -function run_test() { - // Set up profile. We will use profile path create some test files. - do_get_profile(); - - // Start executing the tests. - run_next_test(); -} - -/** - * Test removing non watched path - */ -add_task(function* test_remove_not_watched() { - let nonExistingDir = - OS.Path.join(OS.Constants.Path.profileDir, "absolutelyNotExisting"); - - // Instantiate the native watcher. - let watcher = makeWatcher(); - - // Try to un-watch a path which wasn't being watched. - watcher.removePath( - nonExistingDir, - function(changed) { - do_throw("No change is expected in this test."); - }, - function(xpcomError, osError) { - // When removing a resource which wasn't being watched, it should silently - // ignore the request. - do_throw("Unexpected exception: " - + xpcomError + " (XPCOM) " - + osError + " (OS Error)"); - } - ); -}); diff --git a/toolkit/components/filewatcher/tests/xpcshell/test_shared_callback.js b/toolkit/components/filewatcher/tests/xpcshell/test_shared_callback.js deleted file mode 100644 index 482ba6b8b1..0000000000 --- a/toolkit/components/filewatcher/tests/xpcshell/test_shared_callback.js +++ /dev/null @@ -1,62 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -"use strict"; - -function run_test() { - // Set up profile. We will use profile path create some test files. - do_get_profile(); - - // Start executing the tests. - run_next_test(); -} - -/** - * Test the watcher correctly handles two watches sharing the same - * change callback. - */ -add_task(function* test_watch_with_shared_callback() { - - // Create and watch two sub-directories of the profile directory so we don't - // catch notifications we're not interested in (i.e. "startupCache"). - let watchedDirs = - [ - OS.Path.join(OS.Constants.Path.profileDir, "filewatcher_playground"), - OS.Path.join(OS.Constants.Path.profileDir, "filewatcher_playground2") - ]; - - yield OS.File.makeDir(watchedDirs[0]); - yield OS.File.makeDir(watchedDirs[1]); - - let tempFileName = "test_filecreation.tmp"; - - // Instantiate and initialize the native watcher. - let watcher = makeWatcher(); - let deferred = Promise.defer(); - - // Watch both directories using the same callbacks. - yield promiseAddPath(watcher, watchedDirs[0], deferred.resolve, deferred.reject); - yield promiseAddPath(watcher, watchedDirs[1], deferred.resolve, deferred.reject); - - // Remove the watch for the first directory, but keep watching - // for changes in the second: we need to make sure the callback - // survives the removal of the first watch. - watcher.removePath(watchedDirs[0], deferred.resolve, deferred.reject); - - // Create a file within the watched directory. - let tmpFilePath = OS.Path.join(watchedDirs[1], tempFileName); - yield OS.File.writeAtomic(tmpFilePath, "some data"); - - // Wait until the watcher informs us that the file was created. - let changed = yield deferred.promise; - do_check_eq(changed, tmpFilePath); - - // Remove the watch and free the associated memory (we need to - // reuse 'deferred.resolve' and 'deferred.reject' to unregister). - watcher.removePath(watchedDirs[1], deferred.resolve, deferred.reject); - - // Remove the test directories and all of their content. - yield OS.File.removeDir(watchedDirs[0]); - yield OS.File.removeDir(watchedDirs[1]); -}); diff --git a/toolkit/components/filewatcher/tests/xpcshell/test_watch_directory_creation_single.js b/toolkit/components/filewatcher/tests/xpcshell/test_watch_directory_creation_single.js deleted file mode 100644 index a434ec751a..0000000000 --- a/toolkit/components/filewatcher/tests/xpcshell/test_watch_directory_creation_single.js +++ /dev/null @@ -1,49 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -"use strict"; - -function run_test() { - // Set up profile. We will use profile path create some test files - do_get_profile(); - - // Start executing the tests - run_next_test(); -} - -/** - * Tests that the watcher correctly notifies of a directory creation when watching - * a single path. - */ -add_task(function* test_watch_single_path_directory_creation() { - - // Create and watch a sub-directory of the profile directory so we don't - // catch notifications we're not interested in (i.e. "startupCache"). - let watchedDir = OS.Path.join(OS.Constants.Path.profileDir, "filewatcher_playground"); - yield OS.File.makeDir(watchedDir); - - let tmpDirPath = OS.Path.join(watchedDir, "testdir"); - - // Instantiate and initialize the native watcher. - let watcher = makeWatcher(); - let deferred = Promise.defer(); - - // Add the profile directory to the watch list and wait for the file watcher - // to start watching. - yield promiseAddPath(watcher, watchedDir, deferred.resolve, deferred.reject); - - // Once ready, create a directory within the watched directory. - yield OS.File.makeDir(tmpDirPath); - - // Wait until the watcher informs us that the file has changed. - let changed = yield deferred.promise; - do_check_eq(changed, tmpDirPath); - - // Remove the watch and free the associated memory (we need to - // reuse 'deferred.resolve' and 'deferred.reject' to unregister). - yield promiseRemovePath(watcher, watchedDir, deferred.resolve, deferred.reject); - - // Clean up the test directory. - yield OS.File.removeDir(watchedDir); -}); diff --git a/toolkit/components/filewatcher/tests/xpcshell/test_watch_directory_deletion_single.js b/toolkit/components/filewatcher/tests/xpcshell/test_watch_directory_deletion_single.js deleted file mode 100644 index 2c74a93616..0000000000 --- a/toolkit/components/filewatcher/tests/xpcshell/test_watch_directory_deletion_single.js +++ /dev/null @@ -1,46 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -"use strict"; - -function run_test() { - // Set up profile. We will use profile path create some test files. - do_get_profile(); - - // Start executing the tests. - run_next_test(); -} - -/** - * Tests that the watcher correctly notifies of a directory deletion when watching - * a single path. - */ -add_task(function* test_watch_single_path_directory_deletion() { - - let watchedDir = OS.Constants.Path.profileDir; - let tempDirName = "test"; - let tmpDirPath = OS.Path.join(watchedDir, tempDirName); - - // Instantiate and initialize the native watcher. - let watcher = makeWatcher(); - let deferred = Promise.defer(); - - // Create a directory within the watched directory. - yield OS.File.makeDir(tmpDirPath); - - // Add the profile directory to the watch list and wait for the file watcher - // to start watching it. - yield promiseAddPath(watcher, watchedDir, deferred.resolve, deferred.reject); - - // Remove the directory. - OS.File.removeDir(tmpDirPath); - - // Wait until the watcher informs us that the file has changed. - let changed = yield deferred.promise; - do_check_eq(changed, tmpDirPath); - - // Remove the watch and free the associated memory (we need to - // reuse 'deferred.resolve' and 'deferred.reject' to unregister). - yield promiseRemovePath(watcher, watchedDir, deferred.resolve, deferred.reject); -}); diff --git a/toolkit/components/filewatcher/tests/xpcshell/test_watch_file_creation_single.js b/toolkit/components/filewatcher/tests/xpcshell/test_watch_file_creation_single.js deleted file mode 100644 index 9f87793f44..0000000000 --- a/toolkit/components/filewatcher/tests/xpcshell/test_watch_file_creation_single.js +++ /dev/null @@ -1,51 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -"use strict"; - -function run_test() { - // Set up profile. We will use profile path create some test files. - do_get_profile(); - - // Start executing the tests. - run_next_test(); -} - -/** - * Test the watcher correctly notifies of a file creation when watching - * a single path. - */ -add_task(function* test_watch_single_path_file_creation() { - - // Create and watch a sub-directory of the profile directory so we don't - // catch notifications we're not interested in (i.e. "startupCache"). - let watchedDir = OS.Path.join(OS.Constants.Path.profileDir, "filewatcher_playground"); - yield OS.File.makeDir(watchedDir); - - let tempFileName = "test_filecreation.tmp"; - - // Instantiate and initialize the native watcher. - let watcher = makeWatcher(); - let deferred = Promise.defer(); - - let tmpFilePath = OS.Path.join(watchedDir, tempFileName); - - // Add the profile directory to the watch list and wait for the file watcher - // to start watching. - yield promiseAddPath(watcher, watchedDir, deferred.resolve, deferred.reject); - - // create the file within the watched directory. - yield OS.File.writeAtomic(tmpFilePath, "some data"); - - // Wait until the watcher informs us that the file was created. - let changed = yield deferred.promise; - do_check_eq(changed, tmpFilePath); - - // Remove the watch and free the associated memory (we need to - // reuse 'deferred.resolve' and 'deferred.reject' to unregister). - yield promiseRemovePath(watcher, watchedDir, deferred.resolve, deferred.reject); - - // Remove the test directory and all of its content. - yield OS.File.removeDir(watchedDir); -}); diff --git a/toolkit/components/filewatcher/tests/xpcshell/test_watch_file_deletion_single.js b/toolkit/components/filewatcher/tests/xpcshell/test_watch_file_deletion_single.js deleted file mode 100644 index 97d2d61bc2..0000000000 --- a/toolkit/components/filewatcher/tests/xpcshell/test_watch_file_deletion_single.js +++ /dev/null @@ -1,54 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -"use strict"; - -function run_test() { - // Set up profile. We will use profile path create some test files. - do_get_profile(); - - // Start executing the tests. - run_next_test(); -} -/** - * Test the watcher correctly notifies of a file deletion when watching - * a single path. - */ -add_task(function* test_watch_single_path_file_deletion() { - - // Create and watch a sub-directory of the profile directory so we don't - // catch notifications we're not interested in (i.e. "startupCache"). - let watchedDir = OS.Path.join(OS.Constants.Path.profileDir, "filewatcher_playground"); - yield OS.File.makeDir(watchedDir); - - let tempFileName = "test_filedeletion.tmp"; - - // Instantiate and initialize the native watcher. - let watcher = makeWatcher(); - let deferred = Promise.defer(); - - // Create a file within the directory to be watched. We do this - // before watching the directory so we do not get the creation notification. - let tmpFilePath = OS.Path.join(watchedDir, tempFileName); - yield OS.File.writeAtomic(tmpFilePath, "some data"); - - // Add the profile directory to the watch list and wait for the file watcher - // to start watching it. - yield promiseAddPath(watcher, watchedDir, deferred.resolve, deferred.reject); - - // Remove the file we created (should trigger a notification). - do_print('Removing ' + tmpFilePath); - yield OS.File.remove(tmpFilePath); - - // Wait until the watcher informs us that the file was deleted. - let changed = yield deferred.promise; - do_check_eq(changed, tmpFilePath); - - // Remove the watch and free the associated memory (we need to - // reuse 'deferred.resolve' and 'deferred.reject' to unregister). - yield promiseRemovePath(watcher, watchedDir, deferred.resolve, deferred.reject); - - // Remove the test directory and all of its content. - yield OS.File.removeDir(watchedDir); -}); diff --git a/toolkit/components/filewatcher/tests/xpcshell/test_watch_file_modification_single.js b/toolkit/components/filewatcher/tests/xpcshell/test_watch_file_modification_single.js deleted file mode 100644 index ba25fdff63..0000000000 --- a/toolkit/components/filewatcher/tests/xpcshell/test_watch_file_modification_single.js +++ /dev/null @@ -1,54 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -"use strict"; - -function run_test() { - // Set up profile. We will use profile path create some test files - do_get_profile(); - - // Start executing the tests - run_next_test(); -} - -/** - * Tests that the watcher correctly notifies of a file modification when watching - * a single path. - */ -add_task(function* test_watch_single_path_file_modification() { - - // Create and watch a sub-directory of the profile directory so we don't - // catch notifications we're not interested in (i.e. "startupCache"). - let watchedDir = OS.Path.join(OS.Constants.Path.profileDir, "filewatcher_playground"); - yield OS.File.makeDir(watchedDir); - - let tempFileName = "test_filemodification.tmp"; - - // Instantiate and initialize the native watcher. - let watcher = makeWatcher(); - let deferred = Promise.defer(); - - // Create a file within the directory to be watched. We do this - // before watching the directory so we do not get the creation notification. - let tmpFilePath = OS.Path.join(watchedDir, tempFileName); - yield OS.File.writeAtomic(tmpFilePath, "some data"); - - // Add the profile directory to the watch list and wait for the file watcher - // to start watching it. - yield promiseAddPath(watcher, watchedDir, deferred.resolve, deferred.reject); - - // Once ready, modify the file to trigger the notification. - yield OS.File.writeAtomic(tmpFilePath, "some new data"); - - // Wait until the watcher informs us that the file has changed. - let changed = yield deferred.promise; - do_check_eq(changed, tmpFilePath); - - // Remove the watch and free the associated memory (we need to - // reuse 'deferred.resolve' and 'deferred.reject' to unregister). - yield promiseRemovePath(watcher, watchedDir, deferred.resolve, deferred.reject); - - // Remove the test directory and all of its content. - yield OS.File.removeDir(watchedDir); -}); diff --git a/toolkit/components/filewatcher/tests/xpcshell/test_watch_many_changes.js b/toolkit/components/filewatcher/tests/xpcshell/test_watch_many_changes.js deleted file mode 100644 index c236c6e1de..0000000000 --- a/toolkit/components/filewatcher/tests/xpcshell/test_watch_many_changes.js +++ /dev/null @@ -1,73 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -"use strict"; - -function run_test() { - // Set up profile. We will use profile path create some test files - do_get_profile(); - - // Start executing the tests - run_next_test(); -} - -/** - * Test that we correctly handle watching directories when hundreds of files - * change simultaneously. - */ -add_task(function* test_fill_notification_buffer() { - - // Create and watch a sub-directory of the profile directory so we don't - // catch notifications we're not interested in (i.e. "startupCache"). - let watchedDir = OS.Path.join(OS.Constants.Path.profileDir, "filewatcher_playground"); - yield OS.File.makeDir(watchedDir); - - // The number of files to create. - let numberOfFiles = 100; - let fileNameBase = "testFile"; - - // This will be used to keep track of the number of changes within the watched - // directory. - let detectedChanges = 0; - - // We expect at least the following notifications for each file: - // - File creation - // - File deletion - let expectedChanges = numberOfFiles * 2; - - // Instantiate the native watcher. - let watcher = makeWatcher(); - let deferred = Promise.defer(); - - // Initialise the change callback. - let changeCallback = function(changed) { - do_print(changed + " has changed."); - - detectedChanges += 1; - - // Resolve the promise if we get all the expected changes. - if (detectedChanges >= expectedChanges) { - deferred.resolve(); - } - }; - - // Add the profile directory to the watch list and wait for the file watcher - // to start watching it. - yield promiseAddPath(watcher, watchedDir, changeCallback, deferred.reject); - - // Create and then remove the files within the watched directory. - for (let i = 0; i < numberOfFiles; i++) { - let tmpFilePath = OS.Path.join(watchedDir, fileNameBase + i); - yield OS.File.writeAtomic(tmpFilePath, "test content"); - yield OS.File.remove(tmpFilePath); - } - - // Wait until the watcher informs us that all the files were - // created, modified and removed. - yield deferred.promise; - - // Remove the watch and free the associated memory (we need to - // reuse 'changeCallback' and 'errorCallback' to unregister). - yield promiseRemovePath(watcher, watchedDir, changeCallback, deferred.reject); -}); diff --git a/toolkit/components/filewatcher/tests/xpcshell/test_watch_multi_paths.js b/toolkit/components/filewatcher/tests/xpcshell/test_watch_multi_paths.js deleted file mode 100644 index c55b262f19..0000000000 --- a/toolkit/components/filewatcher/tests/xpcshell/test_watch_multi_paths.js +++ /dev/null @@ -1,114 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -"use strict"; - -function run_test() { - // Set up profile. We will use profile path create some test files - do_get_profile(); - - // Start executing the tests - run_next_test(); -} - -/** - * Tests the watcher by watching several resources. - * This test creates the specified number of directory inside the profile - * directory, adds each one of them to the watched list the creates - * a file in them in order to trigger the notification. - * The test keeps track of the number of times the changes callback is - * called in order to verify the success of the test. - */ -add_task(function* test_watch_multi_paths() { - - // The number of resources to watch. We expect changes for - // creating a file within each directory. - let resourcesToWatch = 5; - let watchedDir = OS.Constants.Path.profileDir; - - // The directories to be watched will be created with. - let tempDirNameBase = "FileWatcher_Test_"; - let tempFileName = "test.tmp"; - - // Instantiate the native watcher. - let watcher = makeWatcher(); - - // This will be used to keep track of the number of changes within the watched - // resources. - let detectedChanges = 0; - let watchedResources = 0; - let unwatchedResources = 0; - - let deferredChanges = Promise.defer(); - let deferredSuccesses = Promise.defer(); - let deferredShutdown = Promise.defer(); - - // Define the change callback function. - let changeCallback = function(changed) { - do_print(changed + " has changed."); - - detectedChanges += 1; - - // Resolve the promise if we get all the expected changes. - if (detectedChanges === resourcesToWatch) { - deferredChanges.resolve(); - } - }; - - // Define the watch success callback function. - let watchSuccessCallback = function(resourcePath) { - do_print(resourcePath + " is being watched."); - - watchedResources += 1; - - // Resolve the promise when all the resources are being - // watched. - if (watchedResources === resourcesToWatch) { - deferredSuccesses.resolve(); - } - }; - - // Define the watch success callback function. - let unwatchSuccessCallback = function(resourcePath) { - do_print(resourcePath + " is being un-watched."); - - unwatchedResources += 1; - - // Resolve the promise when all the resources are being - // watched. - if (unwatchedResources === resourcesToWatch) { - deferredShutdown.resolve(); - } - }; - - // Create the directories and add them to the watched resources list. - for (let i = 0; i < resourcesToWatch; i++) { - let tmpSubDirPath = OS.Path.join(watchedDir, tempDirNameBase + i); - do_print("Creating the " + tmpSubDirPath + " directory."); - yield OS.File.makeDir(tmpSubDirPath); - watcher.addPath(tmpSubDirPath, changeCallback, deferredChanges.reject, watchSuccessCallback); - } - - // Wait until the watcher informs us that all the desired resources - // are being watched. - yield deferredSuccesses.promise; - - // Create a file within each watched directory. - for (let i = 0; i < resourcesToWatch; i++) { - let tmpFilePath = OS.Path.join(watchedDir, tempDirNameBase + i, tempFileName); - yield OS.File.writeAtomic(tmpFilePath, "test content"); - } - - // Wait until the watcher informs us that all the files were created. - yield deferredChanges.promise; - - // Remove the directories we have created. - for (let i = 0; i < resourcesToWatch; i++) { - let tmpSubDirPath = OS.Path.join(watchedDir, tempDirNameBase + i); - watcher.removePath(tmpSubDirPath, changeCallback, deferredChanges.reject, unwatchSuccessCallback); - } - - // Wait until the watcher un-watches the resources. - yield deferredShutdown.promise; -}); diff --git a/toolkit/components/filewatcher/tests/xpcshell/test_watch_recursively.js b/toolkit/components/filewatcher/tests/xpcshell/test_watch_recursively.js deleted file mode 100644 index 13a3de8d36..0000000000 --- a/toolkit/components/filewatcher/tests/xpcshell/test_watch_recursively.js +++ /dev/null @@ -1,55 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -"use strict"; - -function run_test() { - // Set up profile. We will use profile path create some test files. - do_get_profile(); - - // Start executing the tests. - run_next_test(); -} - -/** - * Test the watcher correctly notifies of a file creation in a subdirectory - * of the watched sub-directory (recursion). - */ -add_task(function* test_watch_recursively() { - - // Create and watch a sub-directory of the profile directory so we don't - // catch notifications we're not interested in (i.e. "startupCache"). - let watchedDir = OS.Path.join(OS.Constants.Path.profileDir, "filewatcher_playground"); - yield OS.File.makeDir(watchedDir); - - // We need at least 2 levels of directories to test recursion. - let subdirectory = OS.Path.join(watchedDir, "level1"); - yield OS.File.makeDir(subdirectory); - - let tempFileName = "test_filecreation.tmp"; - - // Instantiate and initialize the native watcher. - let watcher = makeWatcher(); - let deferred = Promise.defer(); - - let tmpFilePath = OS.Path.join(subdirectory, tempFileName); - - // Add the profile directory to the watch list and wait for the file watcher - // to start watching it. - yield promiseAddPath(watcher, watchedDir, deferred.resolve, deferred.reject); - - // Create a file within the subdirectory of the watched directory. - yield OS.File.writeAtomic(tmpFilePath, "some data"); - - // Wait until the watcher informs us that the file was created. - let changed = yield deferred.promise; - do_check_eq(changed, tmpFilePath); - - // Remove the watch and free the associated memory (we need to - // reuse 'deferred.resolve' and 'deferred.reject' to unregister). - yield promiseRemovePath(watcher, watchedDir, deferred.resolve, deferred.reject); - - // Remove the test directory and all of its content. - yield OS.File.removeDir(watchedDir); -}); diff --git a/toolkit/components/filewatcher/tests/xpcshell/test_watch_resource.js b/toolkit/components/filewatcher/tests/xpcshell/test_watch_resource.js deleted file mode 100644 index fffdff24b7..0000000000 --- a/toolkit/components/filewatcher/tests/xpcshell/test_watch_resource.js +++ /dev/null @@ -1,32 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -"use strict"; - -function run_test() { - // Set up profile. We will use profile path create some test files - do_get_profile(); - - // Start executing the tests - run_next_test(); -} - -/** - * Test watching non-existing path - */ -add_task(function* test_watching_non_existing() { - let notExistingDir = - OS.Path.join(OS.Constants.Path.profileDir, "absolutelyNotExisting"); - - // Instantiate the native watcher. - let watcher = makeWatcher(); - let deferred = Promise.defer(); - - // Try watch a path which doesn't exist. - watcher.addPath(notExistingDir, deferred.reject, deferred.resolve); - - // Wait until the watcher informs us that there was an error. - let error = yield deferred.promise; - do_check_eq(error, Components.results.NS_ERROR_FILE_NOT_FOUND); -}); diff --git a/toolkit/components/filewatcher/tests/xpcshell/xpcshell.ini b/toolkit/components/filewatcher/tests/xpcshell/xpcshell.ini deleted file mode 100644 index d6cc968ebd..0000000000 --- a/toolkit/components/filewatcher/tests/xpcshell/xpcshell.ini +++ /dev/null @@ -1,18 +0,0 @@ -[DEFAULT] -head = head.js -tail = -skip-if = os != "win" - -[test_arguments.js] -[test_no_error_callback.js] -[test_remove_non_watched.js] -[test_shared_callback.js] -[test_watch_file_creation_single.js] -[test_watch_file_deletion_single.js] -[test_watch_file_modification_single.js] -[test_watch_directory_creation_single.js] -[test_watch_directory_deletion_single.js] -[test_watch_many_changes.js] -[test_watch_multi_paths.js] -[test_watch_recursively.js] -[test_watch_resource.js] |