Skip to content

Commit 7ff9cc2

Browse files
golluxveluca93
authored andcommitted
Test suite: AddSubmission --lang
1 parent 255df2c commit 7ff9cc2

File tree

1 file changed

+28
-20
lines changed

1 file changed

+28
-20
lines changed

cmstestsuite/unit_tests/cmscontrib/AddSubmissionTest.py

Lines changed: 28 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,11 @@
3838
_DIGEST_1 = bytes_digest(_CONTENT_1)
3939
_DIGEST_2 = bytes_digest(_CONTENT_2)
4040
_DIGEST_3 = bytes_digest(_CONTENT_3)
41-
_FILENAME_1 = "file.c"
41+
_FILENAME_1 = "file.cpp"
4242
_FILENAME_2 = "file"
4343
_FILENAME_3 = "file.py"
44-
_LANGUAGE_1 = "C11 / gcc"
44+
_LANGUAGE_1 = "C++20 / g++"
45+
_LANGUAGE_1_ALT = "C++17 / g++"
4546

4647

4748
class TestAddSubmissionMixin(DatabaseMixin, FileSystemMixin):
@@ -106,65 +107,72 @@ def setUp(self):
106107
def test_success(self):
107108
self.assertTrue(add_submission(
108109
self.contest.id, self.user.username, self.task.name, _TS,
109-
{"source.%l": self.get_path(_FILENAME_1)}))
110+
{"source.%l": self.get_path(_FILENAME_1)}, None))
110111
self.assertSubmissionInDb(_TS, self.task, _LANGUAGE_1,
111112
{"source.%l": _DIGEST_1})
112113

114+
def test_success_override_language(self):
115+
self.assertTrue(add_submission(
116+
self.contest.id, self.user.username, self.task.name, _TS,
117+
{"source.%l": self.get_path(_FILENAME_1)}, _LANGUAGE_1_ALT))
118+
self.assertSubmissionInDb(_TS, self.task, _LANGUAGE_1_ALT,
119+
{"source.%l": _DIGEST_1})
120+
113121
def test_fail_no_task(self):
114122
# We pass a non-existing task name.
115123
self.assertFalse(add_submission(
116124
self.contest.id, self.user.username, self.task.name + "_wrong",
117-
_TS, {}))
125+
_TS, {}, None))
118126
self.assertSubmissionNotInDb(_TS)
119127

120128
def test_fail_no_user(self):
121129
# We pass a non-existing username.
122130
self.assertFalse(add_submission(
123131
self.contest.id, self.user.username + "_wrong", self.task.name,
124-
_TS, {}))
132+
_TS, {}, None))
125133
self.assertSubmissionNotInDb(_TS)
126134

127135
def test_fail_no_contest(self):
128136
# We pass a non-existing contest id.
129137
self.assertFalse(add_submission(
130138
self.contest.id + 100, self.user.username, self.task.name, _TS,
131-
{}))
139+
{}, None))
132140
self.assertSubmissionNotInDb(_TS)
133141

134142
def test_fail_task_not_in_contest(self):
135143
# We pass a contest that does not contain the task.
136144
self.assertFalse(add_submission(
137145
self.other_contest.id, self.user.username, self.task.name, _TS,
138-
{}))
146+
{}, None))
139147
self.assertSubmissionNotInDb(_TS)
140148

141149
def test_fail_no_language_inferrable_missing_source(self):
142150
# Task requires a language, but we don't provide any file that
143151
# indicate it.
144152
self.assertFalse(add_submission(
145-
self.contest.id, self.user.username, self.task.name, _TS, {}))
153+
self.contest.id, self.user.username, self.task.name, _TS, {}, None))
146154
self.assertSubmissionNotInDb(_TS)
147155

148156
def test_fail_no_language_inferrable_missing_extension(self):
149157
# Task requires a language, but the file we provide does not have
150158
# an extension defining the language.
151159
self.assertFalse(add_submission(
152160
self.contest.id, self.user.username, self.task.name, _TS,
153-
{"source.%l": self.get_path(_FILENAME_2)}))
161+
{"source.%l": self.get_path(_FILENAME_2)}, None))
154162
self.assertSubmissionNotInDb(_TS)
155163

156164
def test_fail_file_not_found(self):
157165
# We provide a path, but the file does not exist.
158166
self.assertFalse(add_submission(
159167
self.contest.id, self.user.username, self.task.name, _TS,
160-
{"source.%l": self.get_path("source_not_existing.c")}))
168+
{"source.%l": self.get_path("source_not_existing.c")}, None))
161169
self.assertSubmissionNotInDb(_TS)
162170

163171
def test_fail_file_not_in_submission_format(self):
164172
# We provide a file, but for the wrong filename.
165173
self.assertFalse(add_submission(
166174
self.contest.id, self.user.username, self.task.name, _TS,
167-
{"wrong_source.%l": self.get_path(_FILENAME_1)}))
175+
{"wrong_source.%l": self.get_path(_FILENAME_1)}, None))
168176
self.assertSubmissionNotInDb(_TS)
169177

170178

@@ -186,7 +194,7 @@ def test_success_many(self):
186194
self.contest.id, self.user.username, self.task.name, _TS, {
187195
"source1.%l": self.get_path(_FILENAME_1),
188196
"source2.%l": self.get_path(_FILENAME_1),
189-
}))
197+
}, None))
190198
self.assertSubmissionInDb(_TS, self.task, _LANGUAGE_1, {
191199
"source1.%l": _DIGEST_1,
192200
"source2.%l": _DIGEST_1,
@@ -197,7 +205,7 @@ def test_success_missing_file(self):
197205
# the language.
198206
self.assertTrue(add_submission(
199207
self.contest.id, self.user.username, self.task.name, _TS,
200-
{"source1.%l": self.get_path(_FILENAME_1)}))
208+
{"source1.%l": self.get_path(_FILENAME_1)}, None))
201209
self.assertSubmissionInDb(_TS, self.task, _LANGUAGE_1,
202210
{"source1.%l": _DIGEST_1})
203211

@@ -206,7 +214,7 @@ def test_fail_language_only_in_one(self):
206214
self.contest.id, self.user.username, self.task.name, _TS, {
207215
"source1.%l": self.get_path(_FILENAME_1),
208216
"source2.%l": self.get_path(_FILENAME_2),
209-
}))
217+
}, None))
210218
self.assertSubmissionNotInDb(_TS)
211219

212220
def test_fail_inconsistent_language(self):
@@ -215,7 +223,7 @@ def test_fail_inconsistent_language(self):
215223
self.contest.id, self.user.username, self.task.name, _TS, {
216224
"source1.%l": self.get_path(_FILENAME_1),
217225
"source2.%l": self.get_path(_FILENAME_3),
218-
}))
226+
}, None))
219227
self.assertSubmissionNotInDb(_TS)
220228

221229

@@ -237,7 +245,7 @@ def test_success_many(self):
237245
self.contest.id, self.user.username, self.task.name, _TS, {
238246
"source1.%l": self.get_path(_FILENAME_1),
239247
"source2": self.get_path(_FILENAME_2),
240-
}))
248+
}, None))
241249
self.assertSubmissionInDb(_TS, self.task, _LANGUAGE_1, {
242250
"source1.%l": _DIGEST_1,
243251
"source2": _DIGEST_2,
@@ -248,7 +256,7 @@ def test_success_missing_source_without_language(self):
248256
# the language.
249257
self.assertTrue(add_submission(
250258
self.contest.id, self.user.username, self.task.name, _TS,
251-
{"source1.%l": self.get_path(_FILENAME_1)}))
259+
{"source1.%l": self.get_path(_FILENAME_1)}, None))
252260
self.assertSubmissionInDb(_TS, self.task, _LANGUAGE_1,
253261
{"source1.%l": _DIGEST_1})
254262

@@ -257,7 +265,7 @@ def test_fail_missing_source_with_language(self):
257265
# the language.
258266
self.assertFalse(add_submission(
259267
self.contest.id, self.user.username, self.task.name, _TS,
260-
{"source2": self.get_path(_FILENAME_2)}))
268+
{"source2": self.get_path(_FILENAME_2)}, None))
261269
self.assertSubmissionNotInDb(_TS)
262270

263271

@@ -276,13 +284,13 @@ def setUp(self):
276284
def test_success_no_language(self):
277285
self.assertTrue(add_submission(
278286
self.contest.id, self.user.username, self.task.name, _TS,
279-
{"source": self.get_path(_FILENAME_2)}))
287+
{"source": self.get_path(_FILENAME_2)}, None))
280288
self.assertSubmissionInDb(_TS, self.task, None, {"source": _DIGEST_2})
281289

282290
def test_success_no_source(self):
283291
# Here we don't provide any file, but language is not required.
284292
self.assertTrue(add_submission(
285-
self.contest.id, self.user.username, self.task.name, _TS, {}))
293+
self.contest.id, self.user.username, self.task.name, _TS, {}, None))
286294
self.assertSubmissionInDb(_TS, self.task, None, {})
287295

288296

0 commit comments

Comments
 (0)