Details
-
Bug
-
Status: Closed
-
Minor
-
Resolution: Fixed
-
2.9.0
-
None
-
None
-
Android v4.3 emulator
Description
I wrote a Jasmine test case which attempts to write to the android_assets folder.
The test expects the FileWriter.onerror callback will be called with some appropriate error code. Instead, Cordova fails internally.
It appears that FileHelper.getRealPath returns null, which the FileUtils.write is not coping with, and when the null is passed to FileOutputStream that throws NPE, which nobody is handling...
Test code fragment:
it("onerror is called if write to file:///android_asset", function() { var theWriter, filePath = "file:///android_asset/jumpyfox.txt", // file content fox = "The quick brown fox"; // callbacks var onerrorCB = jasmine.createSpy().andCallFake(function(a) { expect(theWriter.error.code).toBe(FileError.NO_MODIFICATION_ALLOWED_ERR); expect(a.target.error.code).toBe(FileError.NO_MODIFICATION_ALLOWED_ERR); }); // writes initial file content var write_file = function(file) { theWriter = new FileWriter(file); theWriter.onerror = onerrorCB; theWriter.write(fox); }; // create file, then write to it runs(function() { var file = new File(); file.fullPath = filePath; write_file(file); }); waitsFor(function() { return onerrorCB.wasCalled; }, "onerrorCB never called", Tests.TEST_TIMEOUT); });
Maybe other scenarios which call FileHelper.getRealPath could have similar consequences if it returns null.