summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVitaly Takmazov <vitalyster@gmail.com>2017-06-16 07:53:01 (GMT)
committerTobias Markmann <tm@ayena.de>2017-06-26 10:01:55 (GMT)
commitcfd0f09744c543efb52dcfeaef8a760a766a4d71 (patch)
tree0386838162743561dba3f32a2dded6693798c32f
parentdfe840d2d49ad609ad067460f496d2e1833aa5db (diff)
downloadswift-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.h2
-rw-r--r--Swiften/FileTransfer/WriteBytestream.h1
-rw-r--r--Swiften/QA/StorageTest/FileWriteBytestreamTest.cpp2
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);