mirror of https://github.com/catchorg/Catch2.git
Ability to register line# for testing
Factored file/ line storage and formatting into common class. Used in a static registry so failure messages can be asserted to have the file/ line in.
This commit is contained in:
parent
8d24143827
commit
7b449f7abe
|
@ -80,11 +80,36 @@ namespace Catch
|
||||||
std::for_each( container.begin(), container.end(), function );
|
std::for_each( container.begin(), container.end(), function );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct SourceLineInfo
|
||||||
|
{
|
||||||
|
SourceLineInfo
|
||||||
|
(
|
||||||
|
const std::string& file,
|
||||||
|
std::size_t line
|
||||||
|
)
|
||||||
|
: file( file ),
|
||||||
|
line( line )
|
||||||
|
{}
|
||||||
|
|
||||||
|
std::string file;
|
||||||
|
std::size_t line;
|
||||||
|
};
|
||||||
|
|
||||||
|
inline std::ostream& operator << ( std::ostream& os, const SourceLineInfo& info )
|
||||||
|
{
|
||||||
|
#ifndef __GNUG__
|
||||||
|
os << info.file << "(" << info.line << "): ";
|
||||||
|
#else
|
||||||
|
os << info.file << ":" << info.line << ": ";
|
||||||
|
#endif
|
||||||
|
return os;
|
||||||
|
}
|
||||||
|
|
||||||
ATTRIBUTE_NORETURN
|
ATTRIBUTE_NORETURN
|
||||||
inline void throwLogicError( const std::string& message, const std::string& file, long line )
|
inline void throwLogicError( const std::string& message, const std::string& file, long line )
|
||||||
{
|
{
|
||||||
std::ostringstream oss;
|
std::ostringstream oss;
|
||||||
oss << "Internal Catch error: '" << message << "' at: " << file << "(" << line << ")";
|
oss << "Internal Catch error: '" << message << "' at: " << SourceLineInfo( file, line );
|
||||||
throw std::logic_error( oss.str() );
|
throw std::logic_error( oss.str() );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -487,7 +487,7 @@ namespace Catch
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
std::ostringstream oss;
|
std::ostringstream oss;
|
||||||
oss << name << "@" << filename << ":" << line;
|
oss << name << "@" << SourceLineInfo( filename, line );
|
||||||
|
|
||||||
if( !m_runningTest->addSection( oss.str() ) )
|
if( !m_runningTest->addSection( oss.str() ) )
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -52,8 +52,8 @@ namespace Catch
|
||||||
{
|
{
|
||||||
const TestCaseInfo& prev = *m_functions.find( testInfo );
|
const TestCaseInfo& prev = *m_functions.find( testInfo );
|
||||||
std::cerr << "error: TEST_CASE( \"" << testInfo.getName() << "\" ) already defined.\n"
|
std::cerr << "error: TEST_CASE( \"" << testInfo.getName() << "\" ) already defined.\n"
|
||||||
<< "\tFirst seen at " << prev.getFilename() << ":" << prev.getLine() << "\n"
|
<< "\tFirst seen at " << SourceLineInfo( prev.getFilename(), prev.getLine() ) << "\n"
|
||||||
<< "\tRedefined at " << testInfo.getFilename() << ":" << testInfo.getLine() << std::endl;
|
<< "\tRedefined at " << SourceLineInfo( testInfo.getFilename(), testInfo.getLine() ) << std::endl;
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -174,11 +174,7 @@ namespace Catch
|
||||||
StartSpansLazily();
|
StartSpansLazily();
|
||||||
|
|
||||||
if( !resultInfo.getFilename().empty() )
|
if( !resultInfo.getFilename().empty() )
|
||||||
#ifndef __GNUG__
|
m_config.stream() << SourceLineInfo( resultInfo.getFilename(), resultInfo.getLine() );
|
||||||
m_config.stream() << resultInfo.getFilename() << "(" << resultInfo.getLine() << "): ";
|
|
||||||
#else
|
|
||||||
m_config.stream() << resultInfo.getFilename() << ":" << resultInfo.getLine() << ": ";
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if( resultInfo.hasExpression() )
|
if( resultInfo.hasExpression() )
|
||||||
{
|
{
|
||||||
|
|
|
@ -129,7 +129,7 @@ namespace Catch
|
||||||
{
|
{
|
||||||
oss << resultInfo.getMessage() << " at ";
|
oss << resultInfo.getMessage() << " at ";
|
||||||
}
|
}
|
||||||
oss << resultInfo.getFilename() << ":" << resultInfo.getLine();
|
oss << SourceLineInfo( resultInfo.getFilename(), resultInfo.getLine() );
|
||||||
stats.m_content = oss.str();
|
stats.m_content = oss.str();
|
||||||
stats.m_message = resultInfo.getExpandedExpression();
|
stats.m_message = resultInfo.getExpandedExpression();
|
||||||
stats.m_resultType = resultInfo.getTestMacroName();
|
stats.m_resultType = resultInfo.getTestMacroName();
|
||||||
|
|
|
@ -15,6 +15,8 @@
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <stdexcept>
|
#include <stdexcept>
|
||||||
|
|
||||||
|
#include "catch_self_test.hpp"
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
ATTRIBUTE_NORETURN
|
ATTRIBUTE_NORETURN
|
||||||
|
@ -114,9 +116,32 @@ TEST_CASE( "./failing/exceptions/in-section", "Exceptions thrown from sections r
|
||||||
{
|
{
|
||||||
SECTION( "the section", "" )
|
SECTION( "the section", "" )
|
||||||
{
|
{
|
||||||
SECTION( "the section2", "" )
|
CATCH_REGISTER_LINE_INFO( "the section2" ) SECTION( "the section2", "" )
|
||||||
{
|
{
|
||||||
throw std::domain_error( "Exception from section" );
|
throw std::domain_error( "Exception from section" );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_CASE( "./succeeding/exceptions/error messages", "The error messages produced by exceptions caught by Catch matched the expected form" )
|
||||||
|
{
|
||||||
|
Catch::EmbeddedRunner runner;
|
||||||
|
|
||||||
|
SECTION( "custom, unexpected", "" )
|
||||||
|
{
|
||||||
|
runner.runMatching( "./failing/exceptions/custom" );
|
||||||
|
INFO( runner.getOutput() );
|
||||||
|
CHECK( runner.getOutput().find( "Unexpected exception" ) != std::string::npos );
|
||||||
|
CHECK( runner.getOutput().find( "custom exception" ) != std::string::npos );
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTION( "in section", "" )
|
||||||
|
{
|
||||||
|
runner.runMatching( "./failing/exceptions/in-section" );
|
||||||
|
INFO( runner.getOutput() );
|
||||||
|
CHECK( runner.getOutput().find( "Unexpected exception" ) != std::string::npos );
|
||||||
|
CHECK( runner.getOutput().find( "Exception from section" ) != std::string::npos );
|
||||||
|
CHECK( runner.getOutput().find( CATCH_GET_LINE_INFO( "the section2" ) ) != std::string::npos );
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
|
@ -10,10 +10,6 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define CATCH_CONFIG_MAIN
|
|
||||||
#include "catch.hpp"
|
|
||||||
|
|
||||||
|
|
||||||
#include "catch_self_test.hpp"
|
#include "catch_self_test.hpp"
|
||||||
|
|
||||||
TEST_CASE( "selftest/main", "Runs all Catch self tests and checks their results" )
|
TEST_CASE( "selftest/main", "Runs all Catch self tests and checks their results" )
|
||||||
|
@ -47,7 +43,7 @@ TEST_CASE( "selftest/main", "Runs all Catch self tests and checks their results"
|
||||||
"Number of 'succeeding' tests is fixed" )
|
"Number of 'succeeding' tests is fixed" )
|
||||||
{
|
{
|
||||||
runner.runMatching( "./succeeding/*" );
|
runner.runMatching( "./succeeding/*" );
|
||||||
CHECK( runner.getSuccessCount() == 262 );
|
CHECK( runner.getSuccessCount() == 267 );
|
||||||
CHECK( runner.getFailureCount() == 0 );
|
CHECK( runner.getFailureCount() == 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,6 @@
|
||||||
|
|
||||||
namespace Catch
|
namespace Catch
|
||||||
{
|
{
|
||||||
|
|
||||||
class EmbeddedRunner
|
class EmbeddedRunner
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -26,29 +25,8 @@ namespace Catch
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
|
||||||
std::size_t runMatching
|
std::size_t runMatching
|
||||||
(
|
( const std::string& rawTestSpec );
|
||||||
const std::string& rawTestSpec
|
|
||||||
)
|
|
||||||
{
|
|
||||||
std::ostringstream oss;
|
|
||||||
Config config;
|
|
||||||
config.setStreamBuf( oss.rdbuf() );
|
|
||||||
config.setReporter( "basic" );
|
|
||||||
|
|
||||||
std::size_t result;
|
|
||||||
|
|
||||||
// Scoped because Runner doesn't report EndTesting until its destructor
|
|
||||||
{
|
|
||||||
Runner runner( config );
|
|
||||||
result = runner.runMatching( rawTestSpec );
|
|
||||||
m_successes = runner.getSuccessCount();
|
|
||||||
m_failures = runner.getFailureCount();
|
|
||||||
}
|
|
||||||
m_output = oss.str();
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
std::string getOutput
|
std::string getOutput
|
||||||
|
@ -148,6 +126,54 @@ namespace Catch
|
||||||
Expected::Result m_expectedResult;
|
Expected::Result m_expectedResult;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
struct LineInfoRegistry
|
||||||
|
{
|
||||||
|
static LineInfoRegistry& get
|
||||||
|
()
|
||||||
|
{
|
||||||
|
static LineInfoRegistry s_instance;
|
||||||
|
return s_instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
void registerLineInfo
|
||||||
|
(
|
||||||
|
const std::string& name,
|
||||||
|
const SourceLineInfo& info
|
||||||
|
)
|
||||||
|
{
|
||||||
|
m_registry.insert( std::make_pair( name, info ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
const SourceLineInfo* find( const std::string& name ) const
|
||||||
|
{
|
||||||
|
std::map<std::string, SourceLineInfo>::const_iterator it = m_registry.find( name );
|
||||||
|
return it == m_registry.end() ? NULL : &(it->second);
|
||||||
|
}
|
||||||
|
|
||||||
|
const std::string infoForName( const std::string& name ) const
|
||||||
|
{
|
||||||
|
std::map<std::string, SourceLineInfo>::const_iterator it = m_registry.find( name );
|
||||||
|
if( it == m_registry.end() )
|
||||||
|
return "";
|
||||||
|
std::ostringstream oss;
|
||||||
|
oss << it->second;
|
||||||
|
return oss.str();
|
||||||
|
}
|
||||||
|
|
||||||
|
std::map<std::string, SourceLineInfo> m_registry;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct LineInfoRegistrar
|
||||||
|
{
|
||||||
|
LineInfoRegistrar( const char* name, const SourceLineInfo& lineInfo )
|
||||||
|
{
|
||||||
|
LineInfoRegistry::get().registerLineInfo( name, lineInfo );
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define CATCH_REGISTER_LINE_INFO( name ) ::Catch::LineInfoRegistrar INTERNAL_CATCH_UNIQUE_NAME( lineRegistrar )( name, ::Catch::SourceLineInfo( __FILE__, __LINE__ ) );
|
||||||
|
#define CATCH_GET_LINE_INFO( name ) ::Catch::LineInfoRegistry::get().infoForName( name )
|
||||||
|
|
||||||
#endif // TWOBLUECUBES_CATCH_SELF_TEST_HPP_INCLUDED
|
#endif // TWOBLUECUBES_CATCH_SELF_TEST_HPP_INCLUDED
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
4A6D0C3D149B3D9E00DB3EAA /* MiscTests.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4A6D0C34149B3D9E00DB3EAA /* MiscTests.cpp */; };
|
4A6D0C3D149B3D9E00DB3EAA /* MiscTests.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4A6D0C34149B3D9E00DB3EAA /* MiscTests.cpp */; };
|
||||||
4A6D0C3E149B3D9E00DB3EAA /* TestMain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4A6D0C35149B3D9E00DB3EAA /* TestMain.cpp */; };
|
4A6D0C3E149B3D9E00DB3EAA /* TestMain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4A6D0C35149B3D9E00DB3EAA /* TestMain.cpp */; };
|
||||||
4A6D0C3F149B3D9E00DB3EAA /* TrickyTests.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4A6D0C36149B3D9E00DB3EAA /* TrickyTests.cpp */; };
|
4A6D0C3F149B3D9E00DB3EAA /* TrickyTests.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4A6D0C36149B3D9E00DB3EAA /* TrickyTests.cpp */; };
|
||||||
|
4A73282E14E9A6390044823F /* catch_self_test.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4A73282D14E9A6390044823F /* catch_self_test.cpp */; };
|
||||||
/* End PBXBuildFile section */
|
/* End PBXBuildFile section */
|
||||||
|
|
||||||
/* Begin PBXCopyFilesBuildPhase section */
|
/* Begin PBXCopyFilesBuildPhase section */
|
||||||
|
@ -82,6 +83,7 @@
|
||||||
4A6D0C66149B3E3D00DB3EAA /* catch_reporter_basic.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = catch_reporter_basic.hpp; sourceTree = "<group>"; };
|
4A6D0C66149B3E3D00DB3EAA /* catch_reporter_basic.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = catch_reporter_basic.hpp; sourceTree = "<group>"; };
|
||||||
4A6D0C67149B3E3D00DB3EAA /* catch_reporter_junit.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = catch_reporter_junit.hpp; sourceTree = "<group>"; };
|
4A6D0C67149B3E3D00DB3EAA /* catch_reporter_junit.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = catch_reporter_junit.hpp; sourceTree = "<group>"; };
|
||||||
4A6D0C68149B3E3D00DB3EAA /* catch_reporter_xml.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = catch_reporter_xml.hpp; sourceTree = "<group>"; };
|
4A6D0C68149B3E3D00DB3EAA /* catch_reporter_xml.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = catch_reporter_xml.hpp; sourceTree = "<group>"; };
|
||||||
|
4A73282D14E9A6390044823F /* catch_self_test.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = catch_self_test.cpp; sourceTree = "<group>"; };
|
||||||
/* End PBXFileReference section */
|
/* End PBXFileReference section */
|
||||||
|
|
||||||
/* Begin PBXFrameworksBuildPhase section */
|
/* Begin PBXFrameworksBuildPhase section */
|
||||||
|
@ -115,6 +117,8 @@
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
4A6D0C35149B3D9E00DB3EAA /* TestMain.cpp */,
|
4A6D0C35149B3D9E00DB3EAA /* TestMain.cpp */,
|
||||||
|
4A6D0C2E149B3D9E00DB3EAA /* catch_self_test.hpp */,
|
||||||
|
4A73282D14E9A6390044823F /* catch_self_test.cpp */,
|
||||||
4A6D0C40149B3DAB00DB3EAA /* Tests */,
|
4A6D0C40149B3DAB00DB3EAA /* Tests */,
|
||||||
4A6D0C41149B3DE900DB3EAA /* Catch */,
|
4A6D0C41149B3DE900DB3EAA /* Catch */,
|
||||||
4A6D0C26149B3D3B00DB3EAA /* CatchSelfTest.1 */,
|
4A6D0C26149B3D3B00DB3EAA /* CatchSelfTest.1 */,
|
||||||
|
@ -143,7 +147,6 @@
|
||||||
4A6D0C44149B3E1500DB3EAA /* catch.hpp */,
|
4A6D0C44149B3E1500DB3EAA /* catch.hpp */,
|
||||||
4A6D0C42149B3E1500DB3EAA /* catch_runner.hpp */,
|
4A6D0C42149B3E1500DB3EAA /* catch_runner.hpp */,
|
||||||
4A6D0C43149B3E1500DB3EAA /* catch_with_main.hpp */,
|
4A6D0C43149B3E1500DB3EAA /* catch_with_main.hpp */,
|
||||||
4A6D0C2E149B3D9E00DB3EAA /* catch_self_test.hpp */,
|
|
||||||
4A6D0C45149B3E3D00DB3EAA /* internal */,
|
4A6D0C45149B3E3D00DB3EAA /* internal */,
|
||||||
4A6D0C65149B3E3D00DB3EAA /* reporters */,
|
4A6D0C65149B3E3D00DB3EAA /* reporters */,
|
||||||
);
|
);
|
||||||
|
@ -259,6 +262,7 @@
|
||||||
4A6D0C3D149B3D9E00DB3EAA /* MiscTests.cpp in Sources */,
|
4A6D0C3D149B3D9E00DB3EAA /* MiscTests.cpp in Sources */,
|
||||||
4A6D0C3E149B3D9E00DB3EAA /* TestMain.cpp in Sources */,
|
4A6D0C3E149B3D9E00DB3EAA /* TestMain.cpp in Sources */,
|
||||||
4A6D0C3F149B3D9E00DB3EAA /* TrickyTests.cpp in Sources */,
|
4A6D0C3F149B3D9E00DB3EAA /* TrickyTests.cpp in Sources */,
|
||||||
|
4A73282E14E9A6390044823F /* catch_self_test.cpp in Sources */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
|
@ -343,6 +347,7 @@
|
||||||
4A6D0C2C149B3D3B00DB3EAA /* Release */,
|
4A6D0C2C149B3D3B00DB3EAA /* Release */,
|
||||||
);
|
);
|
||||||
defaultConfigurationIsVisible = 0;
|
defaultConfigurationIsVisible = 0;
|
||||||
|
defaultConfigurationName = Release;
|
||||||
};
|
};
|
||||||
/* End XCConfigurationList section */
|
/* End XCConfigurationList section */
|
||||||
};
|
};
|
||||||
|
|
|
@ -0,0 +1,42 @@
|
||||||
|
/*
|
||||||
|
* catch_self_test.cpp
|
||||||
|
* Catch
|
||||||
|
*
|
||||||
|
* Created by Phil on 14/02/2012.
|
||||||
|
* Copyright 2012 Two Blue Cubes Ltd. All rights reserved.
|
||||||
|
*
|
||||||
|
* Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
|
* file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define CATCH_CONFIG_MAIN
|
||||||
|
#include "catch_self_test.hpp"
|
||||||
|
|
||||||
|
namespace Catch
|
||||||
|
{
|
||||||
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
std::size_t EmbeddedRunner::runMatching
|
||||||
|
(
|
||||||
|
const std::string& rawTestSpec
|
||||||
|
)
|
||||||
|
{
|
||||||
|
std::ostringstream oss;
|
||||||
|
Config config;
|
||||||
|
config.setStreamBuf( oss.rdbuf() );
|
||||||
|
config.setReporter( "basic" );
|
||||||
|
|
||||||
|
std::size_t result;
|
||||||
|
|
||||||
|
// Scoped because Runner doesn't report EndTesting until its destructor
|
||||||
|
{
|
||||||
|
Runner runner( config );
|
||||||
|
result = runner.runMatching( rawTestSpec );
|
||||||
|
m_successes = runner.getSuccessCount();
|
||||||
|
m_failures = runner.getFailureCount();
|
||||||
|
}
|
||||||
|
m_output = oss.str();
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,263 @@
|
||||||
|
// !$*UTF8*$!
|
||||||
|
{
|
||||||
|
archiveVersion = 1;
|
||||||
|
classes = {
|
||||||
|
};
|
||||||
|
objectVersion = 46;
|
||||||
|
objects = {
|
||||||
|
|
||||||
|
/* Begin PBXBuildFile section */
|
||||||
|
4A73280A14E66CFC0044823F /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4A73280914E66CFC0044823F /* UIKit.framework */; };
|
||||||
|
4A73280C14E66CFC0044823F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4A73280B14E66CFC0044823F /* Foundation.framework */; };
|
||||||
|
4A73280E14E66CFC0044823F /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4A73280D14E66CFC0044823F /* CoreGraphics.framework */; };
|
||||||
|
4A73281414E66CFC0044823F /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 4A73281214E66CFC0044823F /* InfoPlist.strings */; };
|
||||||
|
4A73281614E66CFC0044823F /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A73281514E66CFC0044823F /* main.m */; };
|
||||||
|
4A73281A14E66CFC0044823F /* TBCAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A73281914E66CFC0044823F /* TBCAppDelegate.m */; };
|
||||||
|
/* End PBXBuildFile section */
|
||||||
|
|
||||||
|
/* Begin PBXFileReference section */
|
||||||
|
4A73280514E66CFC0044823F /* iOSTest.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = iOSTest.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
|
4A73280914E66CFC0044823F /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
|
||||||
|
4A73280B14E66CFC0044823F /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
|
||||||
|
4A73280D14E66CFC0044823F /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
|
||||||
|
4A73281114E66CFC0044823F /* iOSTest-Info.plist */ = {isa = PBXFileReference; path = "iOSTest-Info.plist"; sourceTree = "<group>"; };
|
||||||
|
4A73281314E66CFC0044823F /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
|
||||||
|
4A73281514E66CFC0044823F /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
|
||||||
|
4A73281714E66CFC0044823F /* iOSTest-Prefix.pch */ = {isa = PBXFileReference; path = "iOSTest-Prefix.pch"; sourceTree = "<group>"; };
|
||||||
|
4A73281814E66CFC0044823F /* TBCAppDelegate.h */ = {isa = PBXFileReference; path = TBCAppDelegate.h; sourceTree = "<group>"; };
|
||||||
|
4A73281914E66CFC0044823F /* TBCAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TBCAppDelegate.m; sourceTree = "<group>"; };
|
||||||
|
/* End PBXFileReference section */
|
||||||
|
|
||||||
|
/* Begin PBXFrameworksBuildPhase section */
|
||||||
|
4A73280214E66CFC0044823F /* Frameworks */ = {
|
||||||
|
isa = PBXFrameworksBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
4A73280A14E66CFC0044823F /* UIKit.framework in Frameworks */,
|
||||||
|
4A73280C14E66CFC0044823F /* Foundation.framework in Frameworks */,
|
||||||
|
4A73280E14E66CFC0044823F /* CoreGraphics.framework in Frameworks */,
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
|
/* End PBXFrameworksBuildPhase section */
|
||||||
|
|
||||||
|
/* Begin PBXGroup section */
|
||||||
|
4A7327FA14E66CFC0044823F = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
4A73280F14E66CFC0044823F /* iOSTest */,
|
||||||
|
4A73280814E66CFC0044823F /* Frameworks */,
|
||||||
|
4A73280614E66CFC0044823F /* Products */,
|
||||||
|
);
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
4A73280614E66CFC0044823F /* Products */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
4A73280514E66CFC0044823F /* iOSTest.app */,
|
||||||
|
);
|
||||||
|
name = Products;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
4A73280814E66CFC0044823F /* Frameworks */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
4A73280914E66CFC0044823F /* UIKit.framework */,
|
||||||
|
4A73280B14E66CFC0044823F /* Foundation.framework */,
|
||||||
|
4A73280D14E66CFC0044823F /* CoreGraphics.framework */,
|
||||||
|
);
|
||||||
|
name = Frameworks;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
4A73280F14E66CFC0044823F /* iOSTest */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
4A73281814E66CFC0044823F /* TBCAppDelegate.h */,
|
||||||
|
4A73281914E66CFC0044823F /* TBCAppDelegate.m */,
|
||||||
|
4A73281014E66CFC0044823F /* Supporting Files */,
|
||||||
|
);
|
||||||
|
path = iOSTest;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
4A73281014E66CFC0044823F /* Supporting Files */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
4A73281114E66CFC0044823F /* iOSTest-Info.plist */,
|
||||||
|
4A73281214E66CFC0044823F /* InfoPlist.strings */,
|
||||||
|
4A73281514E66CFC0044823F /* main.m */,
|
||||||
|
4A73281714E66CFC0044823F /* iOSTest-Prefix.pch */,
|
||||||
|
);
|
||||||
|
name = "Supporting Files";
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
/* End PBXGroup section */
|
||||||
|
|
||||||
|
/* Begin PBXNativeTarget section */
|
||||||
|
4A73280414E66CFC0044823F /* iOSTest */ = {
|
||||||
|
isa = PBXNativeTarget;
|
||||||
|
buildConfigurationList = 4A73281D14E66CFC0044823F /* Build configuration list for PBXNativeTarget "iOSTest" */;
|
||||||
|
buildPhases = (
|
||||||
|
4A73280114E66CFC0044823F /* Sources */,
|
||||||
|
4A73280214E66CFC0044823F /* Frameworks */,
|
||||||
|
4A73280314E66CFC0044823F /* Resources */,
|
||||||
|
);
|
||||||
|
buildRules = (
|
||||||
|
);
|
||||||
|
dependencies = (
|
||||||
|
);
|
||||||
|
name = iOSTest;
|
||||||
|
productName = iOSTest;
|
||||||
|
productReference = 4A73280514E66CFC0044823F /* iOSTest.app */;
|
||||||
|
productType = "com.apple.product-type.application";
|
||||||
|
};
|
||||||
|
/* End PBXNativeTarget section */
|
||||||
|
|
||||||
|
/* Begin PBXProject section */
|
||||||
|
4A7327FC14E66CFC0044823F /* Project object */ = {
|
||||||
|
isa = PBXProject;
|
||||||
|
attributes = {
|
||||||
|
LastUpgradeCheck = 0420;
|
||||||
|
};
|
||||||
|
buildConfigurationList = 4A7327FF14E66CFC0044823F /* Build configuration list for PBXProject "iOSTest" */;
|
||||||
|
compatibilityVersion = "Xcode 3.2";
|
||||||
|
developmentRegion = English;
|
||||||
|
hasScannedForEncodings = 0;
|
||||||
|
knownRegions = (
|
||||||
|
en,
|
||||||
|
);
|
||||||
|
mainGroup = 4A7327FA14E66CFC0044823F;
|
||||||
|
productRefGroup = 4A73280614E66CFC0044823F /* Products */;
|
||||||
|
projectDirPath = "";
|
||||||
|
projectRoot = "";
|
||||||
|
targets = (
|
||||||
|
4A73280414E66CFC0044823F /* iOSTest */,
|
||||||
|
);
|
||||||
|
};
|
||||||
|
/* End PBXProject section */
|
||||||
|
|
||||||
|
/* Begin PBXResourcesBuildPhase section */
|
||||||
|
4A73280314E66CFC0044823F /* Resources */ = {
|
||||||
|
isa = PBXResourcesBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
4A73281414E66CFC0044823F /* InfoPlist.strings in Resources */,
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
|
/* End PBXResourcesBuildPhase section */
|
||||||
|
|
||||||
|
/* Begin PBXSourcesBuildPhase section */
|
||||||
|
4A73280114E66CFC0044823F /* Sources */ = {
|
||||||
|
isa = PBXSourcesBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
4A73281614E66CFC0044823F /* main.m in Sources */,
|
||||||
|
4A73281A14E66CFC0044823F /* TBCAppDelegate.m in Sources */,
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
|
/* End PBXSourcesBuildPhase section */
|
||||||
|
|
||||||
|
/* Begin PBXVariantGroup section */
|
||||||
|
4A73281214E66CFC0044823F /* InfoPlist.strings */ = {
|
||||||
|
isa = PBXVariantGroup;
|
||||||
|
children = (
|
||||||
|
4A73281314E66CFC0044823F /* en */,
|
||||||
|
);
|
||||||
|
name = InfoPlist.strings;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
/* End PBXVariantGroup section */
|
||||||
|
|
||||||
|
/* Begin XCBuildConfiguration section */
|
||||||
|
4A73281B14E66CFC0044823F /* Debug */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
|
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
|
||||||
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||||
|
COPY_PHASE_STRIP = NO;
|
||||||
|
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||||
|
GCC_DYNAMIC_NO_PIC = NO;
|
||||||
|
GCC_OPTIMIZATION_LEVEL = 0;
|
||||||
|
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||||
|
"DEBUG=1",
|
||||||
|
"$(inherited)",
|
||||||
|
);
|
||||||
|
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
||||||
|
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
|
||||||
|
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
|
||||||
|
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||||
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
|
IPHONEOS_DEPLOYMENT_TARGET = 5.0;
|
||||||
|
SDKROOT = iphoneos;
|
||||||
|
TARGETED_DEVICE_FAMILY = "1,2";
|
||||||
|
};
|
||||||
|
name = Debug;
|
||||||
|
};
|
||||||
|
4A73281C14E66CFC0044823F /* Release */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
|
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
|
||||||
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||||
|
COPY_PHASE_STRIP = YES;
|
||||||
|
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||||
|
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
|
||||||
|
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
|
||||||
|
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||||
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
|
IPHONEOS_DEPLOYMENT_TARGET = 5.0;
|
||||||
|
OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
|
||||||
|
SDKROOT = iphoneos;
|
||||||
|
TARGETED_DEVICE_FAMILY = "1,2";
|
||||||
|
VALIDATE_PRODUCT = YES;
|
||||||
|
};
|
||||||
|
name = Release;
|
||||||
|
};
|
||||||
|
4A73281E14E66CFC0044823F /* Debug */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||||
|
GCC_PREFIX_HEADER = "iOSTest/iOSTest-Prefix.pch";
|
||||||
|
INFOPLIST_FILE = "iOSTest/iOSTest-Info.plist";
|
||||||
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
WRAPPER_EXTENSION = app;
|
||||||
|
};
|
||||||
|
name = Debug;
|
||||||
|
};
|
||||||
|
4A73281F14E66CFC0044823F /* Release */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||||
|
GCC_PREFIX_HEADER = "iOSTest/iOSTest-Prefix.pch";
|
||||||
|
INFOPLIST_FILE = "iOSTest/iOSTest-Info.plist";
|
||||||
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
WRAPPER_EXTENSION = app;
|
||||||
|
};
|
||||||
|
name = Release;
|
||||||
|
};
|
||||||
|
/* End XCBuildConfiguration section */
|
||||||
|
|
||||||
|
/* Begin XCConfigurationList section */
|
||||||
|
4A7327FF14E66CFC0044823F /* Build configuration list for PBXProject "iOSTest" */ = {
|
||||||
|
isa = XCConfigurationList;
|
||||||
|
buildConfigurations = (
|
||||||
|
4A73281B14E66CFC0044823F /* Debug */,
|
||||||
|
4A73281C14E66CFC0044823F /* Release */,
|
||||||
|
);
|
||||||
|
defaultConfigurationIsVisible = 0;
|
||||||
|
defaultConfigurationName = Release;
|
||||||
|
};
|
||||||
|
4A73281D14E66CFC0044823F /* Build configuration list for PBXNativeTarget "iOSTest" */ = {
|
||||||
|
isa = XCConfigurationList;
|
||||||
|
buildConfigurations = (
|
||||||
|
4A73281E14E66CFC0044823F /* Debug */,
|
||||||
|
4A73281F14E66CFC0044823F /* Release */,
|
||||||
|
);
|
||||||
|
defaultConfigurationIsVisible = 0;
|
||||||
|
};
|
||||||
|
/* End XCConfigurationList section */
|
||||||
|
};
|
||||||
|
rootObject = 4A7327FC14E66CFC0044823F /* Project object */;
|
||||||
|
}
|
Loading…
Reference in New Issue