@@ -368,6 +368,75 @@ def test_leaderboard_submission_ranked(database, submit_leaderboard):
368368 },
369369 ]
370370
371+
372+ def test_failed_secret_run_hides_submission_from_rankings (database , submit_leaderboard ):
373+ submit_time = datetime .datetime .now (tz = datetime .timezone .utc )
374+ failed_secret = dataclasses .replace (sample_run_result (), passed = False )
375+
376+ with database as db :
377+ hacked = db .create_submission (
378+ "submit-leaderboard" , "fast.py" , 5 , "fast" , submit_time , user_name = "user5"
379+ )
380+ _create_submission_run (db , hacked , mode = "leaderboard" , runner = "A100" , score = 1.0 )
381+ _create_submission_run (
382+ db ,
383+ hacked ,
384+ mode = "leaderboard" ,
385+ secret = True ,
386+ runner = "A100" ,
387+ score = None ,
388+ result = failed_secret ,
389+ )
390+ db .mark_submission_done (hacked )
391+
392+ valid = db .create_submission (
393+ "submit-leaderboard" , "valid.py" , 6 , "valid" , submit_time , user_name = "user6"
394+ )
395+ _create_submission_run (db , valid , mode = "leaderboard" , runner = "A100" , score = 2.0 )
396+ _create_submission_run (
397+ db ,
398+ valid ,
399+ mode = "leaderboard" ,
400+ secret = True ,
401+ runner = "A100" ,
402+ score = None ,
403+ )
404+ db .mark_submission_done (valid )
405+
406+ with database as db :
407+ ranked = db .get_leaderboard_submissions ("submit-leaderboard" , "A100" )
408+ assert [row ["submission_id" ] for row in ranked ] == [valid ]
409+ assert db .get_leaderboard_submission_count ("submit-leaderboard" , "A100" ) == 1
410+ assert db .get_leaderboard_submission_count ("submit-leaderboard" , "A100" , "5" ) == 0
411+
412+
413+ def test_failed_secret_run_hides_user_submission_scores (database , submit_leaderboard ):
414+ submit_time = datetime .datetime .now (tz = datetime .timezone .utc )
415+ failed_secret = dataclasses .replace (sample_run_result (), passed = False )
416+
417+ with database as db :
418+ sub_id = db .create_submission (
419+ "submit-leaderboard" , "fast.py" , 5 , "fast" , submit_time , user_name = "user5"
420+ )
421+ _create_submission_run (db , sub_id , mode = "leaderboard" , runner = "A100" , score = 1.0 )
422+ _create_submission_run (
423+ db ,
424+ sub_id ,
425+ mode = "leaderboard" ,
426+ secret = True ,
427+ runner = "A100" ,
428+ score = None ,
429+ result = failed_secret ,
430+ )
431+ db .mark_submission_done (sub_id )
432+
433+ with database as db :
434+ submissions = db .get_user_submissions ("5" , leaderboard_name = "submit-leaderboard" )
435+ assert len (submissions ) == 1
436+ assert submissions [0 ]["id" ] == sub_id
437+ assert submissions [0 ]["runs" ] == []
438+
439+
371440def test_validate_identity_web_auth_happy_path (database , submit_leaderboard ):
372441 with database as db :
373442 db .cursor .execute (
0 commit comments