aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bot/exts/utils/snekbox/_eval.py2
-rw-r--r--tests/bot/exts/utils/test_snekbox.py21
2 files changed, 22 insertions, 1 deletions
diff --git a/bot/exts/utils/snekbox/_eval.py b/bot/exts/utils/snekbox/_eval.py
index 748b58a3b..56a02d981 100644
--- a/bot/exts/utils/snekbox/_eval.py
+++ b/bot/exts/utils/snekbox/_eval.py
@@ -105,7 +105,7 @@ class EvalResult:
names = []
for file in self.failed_files:
char_max -= len(file)
- if char_max <= 0 or len(names) >= file_max:
+ if char_max < 0 or len(names) >= file_max:
names.append("...")
break
names.append(file)
diff --git a/tests/bot/exts/utils/test_snekbox.py b/tests/bot/exts/utils/test_snekbox.py
index afe48dceb..5e13ac4bb 100644
--- a/tests/bot/exts/utils/test_snekbox.py
+++ b/tests/bot/exts/utils/test_snekbox.py
@@ -151,6 +151,27 @@ class SnekboxTests(unittest.IsolatedAsyncioTestCase):
msg = result.files_error_message
self.assertEqual(msg, expected_msg)
+ @patch("bot.exts.utils.snekbox._eval.FILE_COUNT_LIMIT", 2)
+ def test_eval_result_files_error_str(self):
+ """EvalResult.files_error_message, should return files error message."""
+ max_file_name = "a" * 32
+ cases = [
+ (["x.ini"], "x.ini"),
+ (["dog.py", "cat.py"], "dog.py, cat.py"),
+ # 3 files limit
+ (["a", "b", "c"], "a, b, c"),
+ (["a", "b", "c", "d"], "a, b, c, ..."),
+ (["x", "y", "z"] + ["a"] * 100, "x, y, z, ..."),
+ # 32 char limit
+ ([max_file_name], max_file_name),
+ ([max_file_name, "b"], f"{max_file_name}, ..."),
+ ([max_file_name + "a"], "...")
+ ]
+ for failed_files, expected in cases:
+ result = EvalResult("", 0, [], failed_files)
+ msg = result.failed_files_str(char_max=32, file_max=3)
+ self.assertEqual(msg, expected)
+
@patch('bot.exts.utils.snekbox._eval.Signals', side_effect=ValueError)
def test_eval_result_message_invalid_signal(self, _mock_signals: Mock):
result = EvalResult(stdout="", returncode=127)