diff options
author | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
---|---|---|
committer | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
commit | 5f8de423f190bbb79a62f804151bc24824fa32d8 (patch) | |
tree | 10027f336435511475e392454359edea8e25895d /toolkit/components/osfile/tests/xpcshell/test_osfile_writeAtomic_backupTo_option.js | |
parent | 49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff) | |
download | UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip |
Add m-esr52 at 52.6.0
Diffstat (limited to 'toolkit/components/osfile/tests/xpcshell/test_osfile_writeAtomic_backupTo_option.js')
-rw-r--r-- | toolkit/components/osfile/tests/xpcshell/test_osfile_writeAtomic_backupTo_option.js | 143 |
1 files changed, 143 insertions, 0 deletions
diff --git a/toolkit/components/osfile/tests/xpcshell/test_osfile_writeAtomic_backupTo_option.js b/toolkit/components/osfile/tests/xpcshell/test_osfile_writeAtomic_backupTo_option.js new file mode 100644 index 000000000..adf345b0c --- /dev/null +++ b/toolkit/components/osfile/tests/xpcshell/test_osfile_writeAtomic_backupTo_option.js @@ -0,0 +1,143 @@ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ */ + +"use strict"; + +var {OS: {File, Path, Constants}} = Components.utils.import("resource://gre/modules/osfile.jsm", {}); +Components.utils.import("resource://gre/modules/Task.jsm"); + +/** + * Remove all temporary files and back up files, including + * test_backupTo_option_with_tmpPath.tmp + * test_backupTo_option_with_tmpPath.tmp.backup + * test_backupTo_option_without_tmpPath.tmp + * test_backupTo_option_without_tmpPath.tmp.backup + * test_non_backupTo_option.tmp + * test_non_backupTo_option.tmp.backup + * test_backupTo_option_without_destination_file.tmp + * test_backupTo_option_without_destination_file.tmp.backup + * test_backupTo_option_with_backup_file.tmp + * test_backupTo_option_with_backup_file.tmp.backup + */ +function clearFiles() { + return Task.spawn(function () { + let files = ["test_backupTo_option_with_tmpPath.tmp", + "test_backupTo_option_without_tmpPath.tmp", + "test_non_backupTo_option.tmp", + "test_backupTo_option_without_destination_file.tmp", + "test_backupTo_option_with_backup_file.tmp"]; + for (let file of files) { + let path = Path.join(Constants.Path.tmpDir, file); + yield File.remove(path); + yield File.remove(path + ".backup"); + } + }); +} + +function run_test() { + run_next_test(); +} + +add_task(function* init() { + yield clearFiles(); +}); + +/** + * test when + * |backupTo| specified + * |tmpPath| specified + * destination file exists + * @result destination file will be backed up + */ +add_task(function* test_backupTo_option_with_tmpPath() { + let DEFAULT_CONTENTS = "default contents" + Math.random(); + let WRITE_CONTENTS = "abc" + Math.random(); + let path = Path.join(Constants.Path.tmpDir, + "test_backupTo_option_with_tmpPath.tmp"); + yield File.writeAtomic(path, DEFAULT_CONTENTS); + yield File.writeAtomic(path, WRITE_CONTENTS, { tmpPath: path + ".tmp", + backupTo: path + ".backup" }); + do_check_true((yield File.exists(path + ".backup"))); + let contents = yield File.read(path + ".backup"); + do_check_eq(DEFAULT_CONTENTS, (new TextDecoder()).decode(contents)); +}); + +/** + * test when + * |backupTo| specified + * |tmpPath| not specified + * destination file exists + * @result destination file will be backed up + */ +add_task(function* test_backupTo_option_without_tmpPath() { + let DEFAULT_CONTENTS = "default contents" + Math.random(); + let WRITE_CONTENTS = "abc" + Math.random(); + let path = Path.join(Constants.Path.tmpDir, + "test_backupTo_option_without_tmpPath.tmp"); + yield File.writeAtomic(path, DEFAULT_CONTENTS); + yield File.writeAtomic(path, WRITE_CONTENTS, { backupTo: path + ".backup" }); + do_check_true((yield File.exists(path + ".backup"))); + let contents = yield File.read(path + ".backup"); + do_check_eq(DEFAULT_CONTENTS, (new TextDecoder()).decode(contents)); +}); + +/** + * test when + * |backupTo| not specified + * |tmpPath| not specified + * destination file exists + * @result destination file will not be backed up + */ +add_task(function* test_non_backupTo_option() { + let DEFAULT_CONTENTS = "default contents" + Math.random(); + let WRITE_CONTENTS = "abc" + Math.random(); + let path = Path.join(Constants.Path.tmpDir, + "test_non_backupTo_option.tmp"); + yield File.writeAtomic(path, DEFAULT_CONTENTS); + yield File.writeAtomic(path, WRITE_CONTENTS); + do_check_false((yield File.exists(path + ".backup"))); +}); + +/** + * test when + * |backupTo| specified + * |tmpPath| not specified + * destination file not exists + * @result no back up file exists + */ +add_task(function* test_backupTo_option_without_destination_file() { + let DEFAULT_CONTENTS = "default contents" + Math.random(); + let WRITE_CONTENTS = "abc" + Math.random(); + let path = Path.join(Constants.Path.tmpDir, + "test_backupTo_option_without_destination_file.tmp"); + yield File.remove(path); + yield File.writeAtomic(path, WRITE_CONTENTS, { backupTo: path + ".backup" }); + do_check_false((yield File.exists(path + ".backup"))); +}); + +/** + * test when + * |backupTo| specified + * |tmpPath| not specified + * backup file exists + * destination file exists + * @result destination file will be backed up + */ +add_task(function* test_backupTo_option_with_backup_file() { + let DEFAULT_CONTENTS = "default contents" + Math.random(); + let WRITE_CONTENTS = "abc" + Math.random(); + let path = Path.join(Constants.Path.tmpDir, + "test_backupTo_option_with_backup_file.tmp"); + yield File.writeAtomic(path, DEFAULT_CONTENTS); + + yield File.writeAtomic(path + ".backup", new Uint8Array(1000)); + + yield File.writeAtomic(path, WRITE_CONTENTS, { backupTo: path + ".backup" }); + do_check_true((yield File.exists(path + ".backup"))); + let contents = yield File.read(path + ".backup"); + do_check_eq(DEFAULT_CONTENTS, (new TextDecoder()).decode(contents)); +}); + +add_task(function* cleanup() { + yield clearFiles(); +}); |