diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 5057ef421..ef9a726a3 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -3314,9 +3314,8 @@ cmTest* cmMakefile::CreateTest(const char* testName) { return test; } - test = new cmTest; + test = new cmTest(this); test->SetName(testName); - test->SetMakefile(this); this->Tests[testName] = test; return test; } diff --git a/Source/cmTest.cxx b/Source/cmTest.cxx index 5cf759842..8686e0669 100644 --- a/Source/cmTest.cxx +++ b/Source/cmTest.cxx @@ -21,15 +21,25 @@ #include "cmMakefile.h" //---------------------------------------------------------------------------- -cmTest::cmTest() +cmTest::cmTest(cmMakefile* mf) { - this->Makefile = 0; + this->Makefile = mf; this->OldStyle = true; + this->Properties.SetCMakeInstance(mf->GetCMakeInstance()); + this->Backtrace = new cmListFileBacktrace; + this->Makefile->GetBacktrace(*this->Backtrace); } //---------------------------------------------------------------------------- cmTest::~cmTest() { + delete this->Backtrace; +} + +//---------------------------------------------------------------------------- +cmListFileBacktrace const& cmTest::GetBacktrace() const +{ + return *this->Backtrace; } //---------------------------------------------------------------------------- @@ -88,13 +98,6 @@ void cmTest::AppendProperty(const char* prop, const char* value) this->Properties.AppendProperty(prop, value, cmProperty::TEST); } -//---------------------------------------------------------------------------- -void cmTest::SetMakefile(cmMakefile* mf) -{ - this->Makefile = mf; - this->Properties.SetCMakeInstance(mf->GetCMakeInstance()); -} - //---------------------------------------------------------------------------- void cmTest::DefineProperties(cmake *cm) { diff --git a/Source/cmTest.h b/Source/cmTest.h index 0d601ec79..76c79d5b4 100644 --- a/Source/cmTest.h +++ b/Source/cmTest.h @@ -20,6 +20,7 @@ #include "cmCustomCommand.h" #include "cmPropertyMap.h" class cmMakefile; +class cmListFileBacktrace; /** \class cmTest * \brief Represent a test @@ -31,7 +32,7 @@ class cmTest public: /** */ - cmTest(); + cmTest(cmMakefile* mf); ~cmTest(); ///! Set the test name @@ -59,10 +60,12 @@ public: // Define the properties static void DefineProperties(cmake *cm); - ///! Set the cmMakefile that owns this test - void SetMakefile(cmMakefile *mf); + /** Get the cmMakefile instance that owns this test. */ cmMakefile *GetMakefile() { return this->Makefile;}; + /** Get the backtrace of the command that created this test. */ + cmListFileBacktrace const& GetBacktrace() const; + /** Get/Set whether this is an old-style test. */ bool GetOldStyle() const { return this->OldStyle; } void SetOldStyle(bool b) { this->OldStyle = b; } @@ -74,9 +77,8 @@ private: bool OldStyle; - // The cmMakefile instance that owns this target. This should - // always be set. - cmMakefile* Makefile; + cmMakefile* Makefile; + cmListFileBacktrace* Backtrace; }; #endif