Attempt to work around Mac g++ 4.0 bug in fswatcher unit test.
Don't define the class overriding a virtual base class method inside the test function as g++ 4.0 under OS X 10.5 fails to compile this for some mysterious reason. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67722 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -614,45 +614,59 @@ void FileSystemWatcherTestCase::TestEventAccess()
|
||||
tester.Run();
|
||||
}
|
||||
|
||||
namespace
|
||||
{
|
||||
|
||||
// We can't define this class locally inside TestNoEventsAfterRemove() for some
|
||||
// reason with g++ 4.0 under OS X 10.5, it results in the following mysterious
|
||||
// error:
|
||||
//
|
||||
// /var/tmp//ccTkNCkc.s:unknown:Non-global symbol:
|
||||
// __ZThn80_ZN25FileSystemWatcherTestCase23TestNoEventsAfterRemoveEvEN11EventTester6NotifyEv.eh
|
||||
// can't be a weak_definition
|
||||
//
|
||||
// So define this class outside the function instead.
|
||||
class NoEventsAfterRemoveEventTester : public EventHandler,
|
||||
public wxTimer
|
||||
{
|
||||
public:
|
||||
NoEventsAfterRemoveEventTester()
|
||||
{
|
||||
// We need to use an inactivity timer as we never get any file
|
||||
// system events in this test, so we consider that the test is
|
||||
// finished when this 1s timeout expires instead of, as usual,
|
||||
// stopping after getting the file system events.
|
||||
Start(1000, true);
|
||||
}
|
||||
|
||||
virtual void GenerateEvent()
|
||||
{
|
||||
m_watcher->Remove(EventGenerator::GetWatchDir());
|
||||
CPPUNIT_ASSERT(eg.CreateFile());
|
||||
}
|
||||
|
||||
virtual void CheckResult()
|
||||
{
|
||||
CPPUNIT_ASSERT( m_events.empty() );
|
||||
}
|
||||
|
||||
virtual wxFileSystemWatcherEvent ExpectedEvent()
|
||||
{
|
||||
CPPUNIT_FAIL( "Shouldn't be called" );
|
||||
|
||||
return wxFileSystemWatcherEvent(wxFSW_EVENT_ERROR);
|
||||
}
|
||||
|
||||
virtual void Notify()
|
||||
{
|
||||
SendIdle();
|
||||
}
|
||||
};
|
||||
|
||||
} // anonymous namespace
|
||||
|
||||
void FileSystemWatcherTestCase::TestNoEventsAfterRemove()
|
||||
{
|
||||
class EventTester : public EventHandler,
|
||||
public wxTimer
|
||||
{
|
||||
public:
|
||||
EventTester()
|
||||
{
|
||||
// We need to use an inactivity timer as we never get any file
|
||||
// system events in this test, so we consider that the test is
|
||||
// finished when this 1s timeout expires instead of, as usual,
|
||||
// stopping after getting the file system events.
|
||||
Start(1000, true);
|
||||
}
|
||||
|
||||
virtual void GenerateEvent()
|
||||
{
|
||||
m_watcher->Remove(EventGenerator::GetWatchDir());
|
||||
CPPUNIT_ASSERT(eg.CreateFile());
|
||||
}
|
||||
|
||||
virtual void CheckResult()
|
||||
{
|
||||
CPPUNIT_ASSERT( m_events.empty() );
|
||||
}
|
||||
|
||||
virtual wxFileSystemWatcherEvent ExpectedEvent()
|
||||
{
|
||||
CPPUNIT_FAIL( "Shouldn't be called" );
|
||||
|
||||
return wxFileSystemWatcherEvent(wxFSW_EVENT_ERROR);
|
||||
}
|
||||
|
||||
virtual void Notify()
|
||||
{
|
||||
SendIdle();
|
||||
}
|
||||
};
|
||||
|
||||
EventTester tester;
|
||||
NoEventsAfterRemoveEventTester tester;
|
||||
tester.Run();
|
||||
}
|
||||
|
Reference in New Issue
Block a user