Index: test/FileSystemJsObject.cpp
diff --git a/test/FileSystemJsObject.cpp b/test/FileSystemJsObject.cpp
index 96c07cadc8184a16e000369290ac3e162af7034f..051febde8770e490c543ce58249d8e98d0b0f54c 100644
--- a/test/FileSystemJsObject.cpp
+++ b/test/FileSystemJsObject.cpp
@@ -21,6 +21,8 @@
 
 using namespace AdblockPlus;
 
+extern std::string jsSources[];
+
 namespace
 {
   class MockFileSystem : public AdblockPlus::IFileSystem
@@ -398,4 +400,27 @@ _fileSystem.readFromFile("foo",
 )js");
   EXPECT_EQ(2u, readLines.size());
   EXPECT_EQ("Error: my-error at undefined:8", error);
-}
\ No newline at end of file
+}
+
+TEST_F(FileSystemJsObjectTest, MoveNonExistingFile)
+{
+  mockFileSystem->success = false;
+  auto& jsEngine = GetJsEngine();
+  const std::vector<std::string> jsFiles = {"compat.js", "io.js"};
+  for (int i = 0; !jsSources[i].empty(); i += 2)
+  {
+    if (jsFiles.end() != std::find(jsFiles.begin(), jsFiles.end(), jsSources[i]))
+    {
+      jsEngine.Evaluate(jsSources[i + 1], jsSources[i]);
+    }
+  }
+  jsEngine.Evaluate(R"js(
+    let hasError = false;
+    let isNextHandlerCalled = false;
+    require("io").IO.renameFile("foo", "bar")
+      .catch((e) => {hasError = e})
+      .then(() => isNextHandlerCalled = true);
+  )js");
+  EXPECT_EQ("Unable to move foo to bar", jsEngine.Evaluate("hasError").AsString());
+  EXPECT_TRUE(jsEngine.Evaluate("isNextHandlerCalled").AsBool());
+}
