def test_executar_codigo_com_erro(self): codigo = "x = input('bla')\nprint(y)" testsCases = [TestCase("1", ["2"], "2")] questao = Questao("", testsCases) submissao = Submissao(codigo, None, questao) arquivo = ArquivoSubmissao(submissao.codigo) j = Juiz(submissao) j.salvarResultados = stub_save with self.assertRaises(JuizError): j.executarTestes(arquivo) arquivo.apagarArquivo() codigo = "x = 2\nz = input('ble')\nprint(y)" testsCases = [TestCase("1", ["2"], "2")] questao = Questao("", testsCases) submissao = Submissao(codigo, None, questao) arquivo = ArquivoSubmissao(submissao.codigo) j = Juiz(submissao) j.salvarResultados = stub_save with self.assertRaisesRegex( JuizError, "O código apresentou o seguinte erro 'NameError' na linha 3"): j.executarTestes(arquivo) arquivo.apagarArquivo()
def test_executar_testes_questao_vazia(self): submissao = Submissao("x = 2", None, None) arquivo = ArquivoSubmissao(submissao.codigo) j = Juiz(submissao) with self.assertRaises(JuizError): j.executarTestes(arquivo) arquivo.apagarArquivo()
def test_executar_arquivo_inexistente(self): codigo = "x = input('bla')\nprint(y)" testsCases = [TestCase("1", ["2"], "2")] questao = Questao("", testsCases) submissao = Submissao(codigo, None, questao) arquivo = ArquivoSubmissao(submissao.codigo) j = Juiz(submissao) arquivo.apagarArquivo() with self.assertRaises(JuizError): j.executarTestes(arquivo)
def test_executar_codigo_com_menos_inputs(self): codigo = "x = input('blableble')\nprint(x)" testsCases = [TestCase("1", ["2", "3"], "2")] questao = Questao("", testsCases) submissao = Submissao(codigo, None, questao) arquivo = ArquivoSubmissao(submissao.codigo) j = Juiz(submissao) j.salvarResultados = stub_save with self.assertRaises(JuizError): j.executarTestes(arquivo) arquivo.apagarArquivo()
def test_executar_codigo_sucesso(self): codigo = "x = input('bla')\nprint(x)" testsCases = [TestCase("1", ["2"], "2")] questao = Questao("", testsCases) submissao = Submissao(codigo, None, questao) arquivo = ArquivoSubmissao(submissao.codigo) j = Juiz(submissao) j.salvarResultados = stub_save self.assertListEqual( [ResultadoTestCase(submissao, testsCases[0], ["2"], True)], j.executarTestes(arquivo)) arquivo.apagarArquivo()
def post(self, request, format=None): json = "" httpStatus = 201 try: if Submissao.validarJson(request.data): submissao = Submissao.fromJson(request.data) juiz = Juiz(submissao) arquivo = ArquivoSubmissao(submissao.codigo) if request.data["tipo"] == "visualização": json = juiz.executarVisualizacao(arquivo) else: if request.data["tipo"] == "testes": submissao.resultadosTestsCases = juiz.executarTestes( arquivo) #submissao.saida = juiz.executar(arquivo) json = submissao.toJson() else: httpStatus = 400 except pexpect.TIMEOUT as exception: json = { "mensagem": "TimedoutError: o tempo de execução do seu algoritmo expirou." } httpStatus = 408 except Exception as exception: json = {"mensagem": str(exception)} httpStatus = 500 finally: if arquivo != None: arquivo.apagarArquivo() response = JsonResponse(json, safe=False, status=httpStatus) response["Access-Control-Allow-Origin"] = "*" return response