コード例 #1
0
ファイル: testJuiz.py プロジェクト: beatrijz/letscode
    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()
コード例 #2
0
ファイル: testJuiz.py プロジェクト: beatrijz/letscode
 def test_capturar_mensagem_algoritmo(self):
     codigo = "x = input('bla')\nprint(x)"
     testsCases = [TestCase("1", ["2"], "2")]
     questao = Questao("", testsCases)
     submissao = Submissao(codigo, None, questao)
     j = Juiz(submissao)
     self.assertEqual(["2"], j.respostaAlgoritmo("bla2\n2"))
コード例 #3
0
ファイル: testJuiz.py プロジェクト: beatrijz/letscode
    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()
コード例 #4
0
ファイル: testJuiz.py プロジェクト: beatrijz/letscode
    def test_capturar_textos_input(self):
        codigo = "x = input('blableble')\nprint(x)"

        testsCases = [TestCase("1", ["2", "3"], "2")]
        questao = Questao("", testsCases)
        submissao = Submissao(codigo, None, questao)
        j = Juiz(submissao)
        self.assertListEqual(["blableble"], j.obterTextosInput())
コード例 #5
0
ファイル: testJuiz.py プロジェクト: beatrijz/letscode
    def test_falha_match_input_codigo(self):
        codigo = "x = input('blableble')\nprint(x)"

        testsCases = [TestCase("1", ["2", "3"], "2")]
        questao = Questao("", testsCases)
        submissao = Submissao(codigo, None, questao)
        j = Juiz(submissao)
        self.assertFalse(j.matchInputCodigo(testsCases[0].entradas))
コード例 #6
0
ファイル: testJuiz.py プロジェクト: beatrijz/letscode
 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)
コード例 #7
0
ファイル: testJuiz.py プロジェクト: beatrijz/letscode
 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()
コード例 #8
0
ファイル: testJuiz.py プロジェクト: beatrijz/letscode
 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()
コード例 #9
0
ファイル: visualizacao.py プロジェクト: beatrijz/letscode
    def post(self, request, format=None):

        try:
            # TODO: verificações para ver se o JSON é válido
            if self.submissaoRequestValid(request):
                testsCases = TestCase.listAllByQuery(Query("questaoId", "==", request.data["questaoId"]))
                
                questao = Questao(request.data["questaoId"], testsCases)
                submissao = Submissao(None, request.data["codigo"], Estudante(request.data["estudanteId"], None), questao)

                juiz = Juiz(submissao)
                arquivo = ArquivoSubmissao(submissao.codigo)
                jsonVisualizacao = juiz.executarVisualizacao(arquivo)
                arquivo.apagarArquivo()
                return JsonResponse(jsonVisualizacao, safe=False, status=status.HTTP_201_CREATED)
            
        except Exception as exception:
            return JsonResponse({"erro":str(exception)}, safe=False, status=status.HTTP_500_INTERNAL_SERVER_ERROR)    
        return Response(status=status.HTTP_201_CREATED)
コード例 #10
0
    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
コード例 #11
0
ファイル: testJuiz.py プロジェクト: beatrijz/letscode
 def test_saida_valida(self):
     submissao = Submissao("x = 2", None, None)
     j = Juiz(submissao)
     self.assertTrue(j.compararSaidaEsperadaComSaidaAlgoritmo("2", "2"))
     arquivo = ArquivoSubmissao(submissao.codigo)
     arquivo.apagarArquivo()