diff options
author | Vitaly Takmazov <vitalyster@gmail.com> | 2017-06-16 07:53:01 (GMT) |
---|---|---|
committer | Tobias Markmann <tm@ayena.de> | 2017-06-26 10:01:55 (GMT) |
commit | cfd0f09744c543efb52dcfeaef8a760a766a4d71 (patch) | |
tree | 0386838162743561dba3f32a2dded6693798c32f | |
parent | dfe840d2d49ad609ad067460f496d2e1833aa5db (diff) | |
download | swift-cfd0f09744c543efb52dcfeaef8a760a766a4d71.zip swift-cfd0f09744c543efb52dcfeaef8a760a766a4d71.tar.bz2 |
Fix FileWriteBytestreamTest under Windows
License:
This patch is BSD-licensed, see Documentation/Licenses/BSD-simplified.txt for details.
Test-Information:
Fixes FileWriteBytestreamTest by closing WriteStream before file
deletion which passes.
Tests performed under Windows 10 1703
Change-Id: I0be891af652138af23f8db9e5526d927d39c9856
-rw-r--r-- | Swiften/FileTransfer/FileWriteBytestream.h | 2 | ||||
-rw-r--r-- | Swiften/FileTransfer/WriteBytestream.h | 1 | ||||
-rw-r--r-- | Swiften/QA/StorageTest/FileWriteBytestreamTest.cpp | 2 |
3 files changed, 3 insertions, 2 deletions
diff --git a/Swiften/FileTransfer/FileWriteBytestream.h b/Swiften/FileTransfer/FileWriteBytestream.h index c563789..26ab98e 100644 --- a/Swiften/FileTransfer/FileWriteBytestream.h +++ b/Swiften/FileTransfer/FileWriteBytestream.h @@ -1,28 +1,28 @@ /* * Copyright (c) 2010-2016 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ #pragma once #include <boost/filesystem/fstream.hpp> #include <boost/filesystem/path.hpp> #include <Swiften/Base/API.h> #include <Swiften/FileTransfer/WriteBytestream.h> namespace Swift { class SWIFTEN_API FileWriteBytestream : public WriteBytestream { public: FileWriteBytestream(const boost::filesystem::path& file); virtual ~FileWriteBytestream(); virtual bool write(const std::vector<unsigned char>&); - void close(); + virtual void close(); private: boost::filesystem::path file; boost::filesystem::ofstream* stream; }; } diff --git a/Swiften/FileTransfer/WriteBytestream.h b/Swiften/FileTransfer/WriteBytestream.h index 5d9c3f8..5452317 100644 --- a/Swiften/FileTransfer/WriteBytestream.h +++ b/Swiften/FileTransfer/WriteBytestream.h @@ -1,32 +1,33 @@ /* * Copyright (c) 2010-2016 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ #pragma once #include <memory> #include <vector> #include <boost/signals2.hpp> #include <Swiften/Base/API.h> namespace Swift { class SWIFTEN_API WriteBytestream { public: typedef std::shared_ptr<WriteBytestream> ref; virtual ~WriteBytestream(); /** * Write data from vector argument to bytestream. * * On success true is returned and \ref onWrite is called. On failure false is returned. */ virtual bool write(const std::vector<unsigned char>&) = 0; + virtual void close() {} boost::signals2::signal<void (const std::vector<unsigned char>&)> onWrite; }; } diff --git a/Swiften/QA/StorageTest/FileWriteBytestreamTest.cpp b/Swiften/QA/StorageTest/FileWriteBytestreamTest.cpp index 7823519..393d1d7 100644 --- a/Swiften/QA/StorageTest/FileWriteBytestreamTest.cpp +++ b/Swiften/QA/StorageTest/FileWriteBytestreamTest.cpp @@ -7,52 +7,52 @@ #include <boost/bind.hpp> #include <boost/filesystem.hpp> #include <boost/signals2.hpp> #include <cppunit/extensions/HelperMacros.h> #include <cppunit/extensions/TestFactoryRegistry.h> #include <Swiften/Base/ByteArray.h> #include <Swiften/FileTransfer/FileWriteBytestream.h> using namespace Swift; class FileWriteBytestreamTest : public CppUnit::TestFixture { CPPUNIT_TEST_SUITE(FileWriteBytestreamTest); CPPUNIT_TEST(testSuccessfulWrite); CPPUNIT_TEST(testFailingWrite); CPPUNIT_TEST_SUITE_END(); public: void setUp() { onWriteWasCalled = false; } void testSuccessfulWrite() { boost::filesystem::path filename = boost::filesystem::unique_path("write_file_bytestream_test_%%%%%%%%%%%%%%%%.bin"); std::shared_ptr<WriteBytestream> writeBytestream = std::make_shared<FileWriteBytestream>(filename.string()); writeBytestream->onWrite.connect(boost::bind(&FileWriteBytestreamTest::handleOnWrite, this, _1)); CPPUNIT_ASSERT_EQUAL(true, writeBytestream->write(createByteArray("Some data."))); CPPUNIT_ASSERT_EQUAL(true, onWriteWasCalled); - + writeBytestream->close(); boost::filesystem::remove(filename); } void testFailingWrite() { std::shared_ptr<WriteBytestream> writeBytestream = std::make_shared<FileWriteBytestream>(""); writeBytestream->onWrite.connect(boost::bind(&FileWriteBytestreamTest::handleOnWrite, this, _1)); CPPUNIT_ASSERT_EQUAL(false, writeBytestream->write(createByteArray("Some data."))); CPPUNIT_ASSERT_EQUAL(false, onWriteWasCalled); } void handleOnWrite(const std::vector<unsigned char>& /*data*/) { onWriteWasCalled = true; } private: bool onWriteWasCalled; }; CPPUNIT_TEST_SUITE_REGISTRATION(FileWriteBytestreamTest); |