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();
|
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()
|
void FileSystemWatcherTestCase::TestNoEventsAfterRemove()
|
||||||
{
|
{
|
||||||
class EventTester : public EventHandler,
|
NoEventsAfterRemoveEventTester tester;
|
||||||
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;
|
|
||||||
tester.Run();
|
tester.Run();
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user