Pegjs: Característica: tiempo de ejecución que requiere archivos pegjs

Creado en 3 dic. 2019  ·  8Comentarios  ·  Fuente: pegjs/pegjs

Tipo de problema

  • Informe de error: no
  • Solicitud de función:
  • Pregunta: no
  • No es un problema: no

requisitos previos

  • ¿Puedes reproducir el problema?: n/a
  • ¿Buscaste los temas del repositorio?: si
  • ¿Revisaste los foros?: No veo enlaces a foros
  • ¿Hiciste una búsqueda en la web (google, yahoo, etc.)?:

Descripción

Si bien puede haber otros casos de uso para poder requerir archivos PEGJS directamente en Node en tiempo de ejecución, la intención principal de este problema es la cobertura del código (por ejemplo, para las pruebas de Mocha).

Este último caso de uso de cobertura de código primero necesitaría #93 (que proporciona mapas de origen) para implementarse primero. Si se implementa, se podría evitar la necesidad de una copia instrumentada separada de las pruebas + el código de clavija.

Veo que require.extensions de Node se usa para lograr esto por ts-node , y aunque require.extensions está técnicamente obsoleto en Node , según las discusiones sobre https://stackoverflow.com/ question/28884377/better-way-to-require-extensions-with-node-js (particularmente en el sentido de esta respuesta ), parece ser el único mecanismo práctico aquí, y según el comentario, no creo tenemos que preocuparnos de que Node rompa Babel.

feature

Comentario más útil

@ brettz9 - Estaba a punto de decir "Estoy hablando con otra persona sobre lo mismo" y luego me di cuenta de que eres tú, así que voy a detener esta instancia de esta discusión a favor de la similar que estamos. teniendo el #633, si te parece bien

Estoy escribiendo algo largo allí actualmente

Todos 8 comentarios

Preferiría no permitir esto.

@ExE-Boss: para nuestro caso de uso, solo sería para probar (también, no estoy seguro si notó que este es el repositorio de pegjs).

Sé que este es el repositorio PEG.js , que es exactamente el motivo por el que me opongo a implementarlo aquí.

Ok, genial... (A veces puedo seguir un enlace a otro repositorio sin darme cuenta de que no es un problema aparte, así que solo me aseguro) :)

No habrá más funciones hasta que salgan las dos líneas de 2017 que nos permiten usar módulos y flechas es6.

Además, parece que lo que realmente quieres es probar

No pones los ganchos de cobertura en la biblioteca. Los pones en el archivo de prueba.

Si desea cobertura, puede instalar jest y listo. Incluye automáticamente todo lo que necesita y no es necesario realizar modificaciones en la biblioteca. Las herramientas de cobertura están diseñadas para agregarse desde el exterior, no desde el interior.

Este generador de analizadores no debería vincularse repentinamente al ecosistema de paquetes node.js como una característica interna.

Además, la cobertura es un falso deseo de un analizador. Considera lo siguiente:

Food
    / "Peanuts"
    / "Shellfish"
    / "Rice"

Ahora, solo escribe una prueba para el arroz. peg intentará Peanuts primero, luego, cuando no funcione peg intentará Shellfish , luego peg intentará Rice

Observe que solo escribió una prueba para Rice , pero está mostrando incorrectamente la cobertura para los tres

La forma en que funciona un analizador packrat (honestamente, la forma en que se me ocurre) significa que la cobertura es falsa

no pierdas tu tiempo

En cuanto a poner ganchos de cobertura en la biblioteca, normalmente uno los pone en las pruebas, sí, pero cuando un analizador se genera automáticamente con algunas ramas relevantes y otras no, entonces tiene sentido que el autogenerador produzca esto. para que aquellos proyectos que no deseen ignorar su archivo analizador puedan hacerlo. No está relacionado con la cobertura de la biblioteca pegjs (que tiene sus propios requisitos de cobertura), sino con la cobertura del uso de la gramática por parte del analizador generado.

En su ejemplo, el analizador generado tiene líneas de código para verificar "Maní", "Mariscos" y "Arroz", y si no están cubiertos, de hecho se pueden informar.

Se vuelve más una pregunta abierta si una regla como ruleA = ruleB / ruleC debe verificar que "reglaA" tiene casos con "reglaB" y "reglaC", o si es suficiente para verificar que "reglaA", "reglaB" , y "ruleC" se cubren de alguna manera (por ejemplo, si hay un ruleD = ruleB / ruleF , algunos proyectos pueden considerar que su cobertura de ruleB es suficiente para evitar la necesidad de verificar que esté cubierto dentro de "regla A", especialmente si hay muchas alternativas y combinaciones).

En cuanto a este problema, podría haber un archivo de entrada que agregara la función y otro que no.

@ brettz9 - Estaba a punto de decir "Estoy hablando con otra persona sobre lo mismo" y luego me di cuenta de que eres tú, así que voy a detener esta instancia de esta discusión a favor de la similar que estamos. teniendo el #633, si te parece bien

Estoy escribiendo algo largo allí actualmente

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

audinue picture audinue  ·  13Comentarios

Coffee2CodeNL picture Coffee2CodeNL  ·  13Comentarios

dmajda picture dmajda  ·  15Comentarios

futagoza picture futagoza  ·  6Comentarios

marek-baranowski picture marek-baranowski  ·  6Comentarios