michael@0: /* Any copyright is dedicated to the Public Domain. michael@0: * http://creativecommons.org/publicdomain/zero/1.0/ michael@0: */ michael@0: michael@0: /* File in use inside removed dir complete MAR file patch apply success test */ michael@0: michael@0: function run_test() { michael@0: setupTestCommon(); michael@0: gTestFiles = gTestFilesCompleteSuccess; michael@0: gTestDirs = gTestDirsCompleteSuccess; michael@0: setupUpdaterTest(FILE_COMPLETE_MAR, false, true); michael@0: michael@0: let fileInUseBin = getApplyDirFile(gTestDirs[4].relPathDir + michael@0: gTestDirs[4].subDirs[0] + michael@0: gTestDirs[4].subDirFiles[0]); michael@0: // Remove the empty file created for the test so the helper application can michael@0: // replace it. michael@0: fileInUseBin.remove(false); michael@0: michael@0: let helperBin = getTestDirFile(FILE_HELPER_BIN); michael@0: let fileInUseDir = getApplyDirFile(gTestDirs[4].relPathDir + michael@0: gTestDirs[4].subDirs[0]); michael@0: helperBin.copyTo(fileInUseDir, gTestDirs[4].subDirFiles[0]); michael@0: michael@0: // Launch an existing file so it is in use during the update. michael@0: let args = [getApplyDirPath() + "a/b/", "input", "output", "-s", michael@0: HELPER_SLEEP_TIMEOUT]; michael@0: let fileInUseProcess = AUS_Cc["@mozilla.org/process/util;1"]. michael@0: createInstance(AUS_Ci.nsIProcess); michael@0: fileInUseProcess.init(fileInUseBin); michael@0: fileInUseProcess.run(false, args, args.length); michael@0: michael@0: do_timeout(TEST_HELPER_TIMEOUT, waitForHelperSleep); michael@0: } michael@0: michael@0: function doUpdate() { michael@0: runUpdate(0, STATE_SUCCEEDED); michael@0: } michael@0: michael@0: function checkUpdateApplied() { michael@0: setupHelperFinish(); michael@0: } michael@0: michael@0: function checkUpdate() { michael@0: checkFilesAfterUpdateSuccess(); michael@0: checkUpdateLogContains(ERR_BACKUP_DISCARD); michael@0: checkCallbackAppLog(); michael@0: }