Comments (4)
Hello, did you find any solution to this? I've a similar issue on visual studio 2013 but the crash happens on
void *VirtualTableBase::getCookie(int index) {
return _firstMethod[-2 - index];
}
from fakeit.
For me this is working. I am using the November 30 Update 1 and the MS testing tool. Test passes both x32 and x64. Dont't think its relevant, but OS is 8.1 Professional 64 bit.
from fakeit.
I have checked with Visual Studio 2015 update 3.
It crashes if the destructor is not the very first method of the interfaces:
If I place SomeMethod after the destructor, everything is OK:
struct SomeInterface
{
virtual ~SomeInterface() = default;
virtual void SomeMethod(int someParam) = 0;
};
void mock_virtual_dtor_with_when() {
int a = 0;
Mock<SomeInterface> mock;
When(Dtor(mock)).Return().Do([&](){a++; });
SomeInterface * i = &(mock.get());
delete i; // do nothing
delete i; // a++
ASSERT_EQUAL(1, a);
}
However, if I put SomeMethod above the destructor, it crashes:
struct SomeInterface
{
virtual void SomeMethod(int someParam) = 0;
virtual ~SomeInterface() = default;
};
void mock_virtual_dtor_with_when() {
int a = 0;
Mock<SomeInterface> mock;
When(Dtor(mock)).Return().Do([&](){a++; });
SomeInterface * i = &(mock.get());
delete i; // do nothing
delete i; // a++
ASSERT_EQUAL(1, a);
}
Error message is:
Exception thrown: read access violation.
invocationHandler was nullptr.
If there is a handler for this exception, the program may be safely continued.
Stack track is:
> all_tests.exe!fakeit::MethodProxyCreator<void>::methodProxy(unsigned int id) Line 45 C++
all_tests.exe!fakeit::MethodProxyCreator<void>::methodProxyX<0>() Line 51 C++
all_tests.exe!fakeit::VirtualTable<DtorMocking::SomeInterface>::dtor(int __formal) Line 219 C++
all_tests.exe!DtorMocking::mock_virtual_dtor_with_when() Line 54 C++
all_tests.exe!tpunit::TestFixture::__do_tests(tpunit::TestFixture::fixture * f) Line 500 C++
all_tests.exe!tpunit::TestFixture::__do_run() Line 360 C++
all_tests.exe!tpunit::Tests::Run() Line 550 C++
all_tests.exe!main() Line 31 C++
from fakeit.
Should be fixed by #312, it will be available in FakeIt 2.3.3 or 2.4.0 depending on which is the first to be released.
from fakeit.
Related Issues (20)
- Overloaded function in derived class hides base class function HOT 5
- compiled error with c++17 in VS2019 HOT 4
- SIGSEGV when when mock with shared_ptr HOT 16
- complied error when mock with unique_ptr HOT 3
- exception with unique_ptr HOT 13
- Can't mock override with ref-qualifiers? HOT 5
- Colliding MockingContext ids when used in multiple translation units because of __COUNTER__ HOT 7
- Can't stub method with vector of unique_ptr parameter HOT 5
- Clang 14.0.6 compile error HOT 7
- Undefined sanitizer issue HOT 4
- Seems latest version 2.3.1 is not available on conan yet HOT 3
- fakeit from conan center doesn't get header with integration (e.g. header with gtest integration) HOT 5
- Quickstart spy example does not work as expected HOT 2
- Cannot verify 0 times invocations using RepeatedSequence HOT 4
- There are deprecated warnings on OSX with C++20 and C++23 HOT 3
- FakeIt and CppUTest HOT 3
- Verify Using QString gives bad_alloc HOT 2
- Missing .CoReturn method HOT 1
- Not working with local classes? HOT 1
- Stubbing method returning the vector of unique_ptr's generates the compile error. HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from fakeit.