Quellcode durchsuchen

Fixed test ShouldFail cases

Brian Fiete vor 3 Jahren
Ursprung
Commit
6c0b329d57
4 geänderte Dateien mit 38 neuen und 12 gelöschten Zeilen
  1. 26 11
      BeefRT/rt/Internal.cpp
  2. 10 0
      BeefySysLib/util/String.cpp
  3. 1 0
      BeefySysLib/util/String.h
  4. 1 1
      IDE/src/TestManager.bf

+ 26 - 11
BeefRT/rt/Internal.cpp

@@ -214,18 +214,20 @@ static void TestReadCmd(Beefy::String& str);
 
 static void Internal_FatalError(const char* error)
 {
-	if (gClientPipe != NULL)
+	if ((gClientPipe != NULL) && (!gTestBreakOnFailure))
 	{
 		Beefy::String str = ":TestFatal\t";
 		str += error;
+		str.Replace('\n', '\r');
 		str += "\n";
 		TestString(str);
 
  		Beefy::String result;
- 		TestReadCmd(result);
+ 		TestReadCmd(result);		
+		exit(1);
 	}
-
-	BfpSystem_FatalError(error, "BEEF FATAL ERROR");
+	else
+		BfpSystem_FatalError(error, "BEEF FATAL ERROR");
 }
 
 extern "C" BFRT_EXPORT int BF_CALLTYPE ftoa(float val, char* str)
@@ -396,6 +398,13 @@ void* Internal::UnsafeCastToPtr(Object* obj)
 
 void Internal::ThrowIndexOutOfRange(intptr stackOffset)
 {
+	if (gClientPipe != NULL)
+	{
+		Beefy::String str = ":TestFail\tIndex out of range\n";		
+		TestString(str);
+		exit(1);
+	}
+
 	if ((stackOffset != -1) && (::IsDebuggerPresent()))
 	{
 		SETUP_ERROR("Index out of range", (int)(2 + stackOffset));
@@ -406,7 +415,17 @@ void Internal::ThrowIndexOutOfRange(intptr stackOffset)
 }
 
 void Internal::FatalError(bf::System::String* error, intptr stackOffset)
-{		
+{	
+	if (gClientPipe != NULL)
+	{
+		Beefy::String str = ":TestFail\t";
+		str += error->CStr();
+		str.Replace('\n', '\r');
+		str += "\n";
+		TestString(str);
+		exit(1);
+	}
+	
 	if ((stackOffset != -1) && (::IsDebuggerPresent()))
 	{
 		SETUP_ERROR(error->CStr(), (int)(2 + stackOffset));
@@ -640,6 +659,7 @@ void Internal::Test_Error(char* error)
 	{
 		Beefy::String str = ":TestFail\t";
 		str += error;
+		str.Replace('\n', '\r');
 		str += "\n";
 		TestString(str);
 	}
@@ -651,12 +671,7 @@ void Internal::Test_Write(char* strPtr)
 	{
 		Beefy::String str = ":TestWrite\t";
 		str += strPtr;
-		for (char& c : str)
-		{
-			if (c == '\n')
-				c = '\r';
-		}
-
+		str.Replace('\n', '\r');
 		str += "\n";
 		TestString(str);
 	}

+ 10 - 0
BeefySysLib/util/String.cpp

@@ -690,6 +690,16 @@ void StringImpl::ReplaceLargerHelper(const StringView& find, const StringView& r
 	mLength = (int_strsize)destLength;
 }
 
+void StringImpl::Replace(char find, char replace)
+{
+	auto ptr = GetMutablePtr();
+	for (int i = 0; i < mLength; i++)
+	{
+		if (ptr[i] == find)
+			ptr[i] = replace;
+	}
+}
+
 void StringImpl::Replace(const StringView& find, const StringView & replace)
 {
 	if (replace.mLength > find.mLength)

+ 1 - 0
BeefySysLib/util/String.h

@@ -1015,6 +1015,7 @@ public:
 	}
 
 	void ReplaceLargerHelper(const StringView& find, const StringView& replace);
+	void Replace(char find, char replace);
 	void Replace(const StringView& find, const StringView& replace);
 	void TrimEnd();	
 	void TrimStart();	

+ 1 - 1
IDE/src/TestManager.bf

@@ -301,7 +301,7 @@ namespace IDE
 									testEntry.mExecuted = true;
 
 									String clientCmd = scope $":TestRun\t{testInstance.mCurTestIdx}";
-									if ((gApp.mTestBreakOnFailure) && (mDebug))
+									if ((gApp.mTestBreakOnFailure) && (mDebug) && (!testEntry.mShouldFail))
 										clientCmd.Append("\tFailBreak");
 									clientCmd.Append("\n");