mumuki / mumuki-platform

Documentation and issues for the Mumuki Platform.
MIT License
1 stars 2 forks source link

Lenguaje para configurar sugerencias progresivas #318

Closed flbulgarelli closed 6 years ago

flbulgarelli commented 6 years ago

Relacionado con https://github.com/mumuki/mumuki-laboratory/issues/358 y https://github.com/mumuki/mumuki-laboratory/issues/952

Necesitamos una forma simple de configurar e ingresar en la herramienta de edición las sugerencias progresivas. Esta es mi propuesta:

rules: 

# Este mensaje se muestra cuando le estudiante envía una solución vacía
- type: content_empty
  message: >
   | Ojo, tenés que mandar una solución zaraza

# Este mensaje se muestra cuando le estudiante envía una solución que no compila
- type: submission_errored
  message: >
   | Ojo, ¡tu solución no compila!

# Este mensaje se muestra cuando le estudiante envía una solución que no compila
- type: submission_errored
  messages:
    first_attemp: > 
      | Ojo, ¡tu solución no compila!
    second_attemp: > 
      | Ojo, ¡tu solución no compila!
    default: > 
      | Ojo, ¡tu solución no compila!

# Este mensaje se muestra cuando le estudiante envía una solución que no compila
# y tiene un cierto texto
- type: submission_errored
  contains_text: 'missing method zaraza' 
  message: >
   | Ojo, no te olvides de que para que sean polimórficos tienen que...

# Este mensaje se muestra cuando le estudiante envía una solución que no compila
# y encaja con un cierto patrón
- type: submission_errored
  matches_regexp: 'missing method (.*)' 
  message: >
   | Ojo, no te olvides de que para que sean polimórficos tienen que...

# Este mensaje se muestra cuando le estudiante envía una solución que falla, 
# independientemente de la falla
- type: submission_failed
  message: >
   | Ojo, los tests no pasaron

# Este mensaje se muestra cuando le estudiante envía una solución que falla, 
# y falla el test dado, independientemente de las demás fallas
- type: submission_failed
  at_least_test: '....'
  message: >
   | Cuidado, vemos que falló el test zarza. Fijate si... 

# Este mensaje se muestra cuando le estudiante envía una solución que falla, 
# y falla el conjunto de tests dados, independientemente de las demás fallas
- type: submission_failed
  at_least_tests: 
  - 'test 1'
  - 'test 2'
  message: >
   | Ojo, parece que no estás soportando floantes

# Este mensaje se muestra cuando le estudiante envía una solución que falla, 
# y falla sólo el test dado
- type: submission_failed
  only_test: 'test 1'
  message: >
   | Ojo, parece que no estás soportando floantes

# Este mensaje se muestra cuando le estudiante envía una solución que falla, 
# y falla sólo el conjunto de tests dados
- type: submission_failed
  only_tests: 
  - 'test 1'
  - 'test 2'
  message: >
   | Ojo, parece que no estás soportando floantes

# Este mensaje se muestra cuando le estudiante envía una solución que falla, 
# y falla sólo el conjunto de tests dados
- type: submission_failed
  only_tests: 
  - 'test 1'
  - 'test 2'
  message: >
   | Ojo, parece que no estás soportando floantes

Explicación:

flbulgarelli commented 6 years ago

@mumuki/learning-experts

flbulgarelli commented 6 years ago

Segunda propuesta, con algunos recortes para simplificar la escritura y procesamiento de las reglas:

rules: 

# Este mensaje se muestra cuando le estudiante envía una solución vacía
- type: content_empty
  message: Ojo, tenés que mandar una solución zaraza

# Este mensaje se muestra cuando le estudiante envía una solución que no compila
- type: submission_errored
  message: Ojo, ¡tu solución no compila!

# Este mensaje se muestra cuando le estudiante envía una solución que no compila
- type: submission_errored
  message:
   - 1: Ojo, ¡tu solución no compila (primer intento)!
   - 2: Ojo, ¡tu solución no compila (segundo o tercer intento)!
   - 4: Ojo, ¡tu solución no compila (cuarto a noveno intento)!
   - 10: Ojo, ¡tu solución no compila (décimo intento en adelante)!

# Este mensaje se muestra cuando le estudiante envía una solución que no compila
# y tiene un cierto texto
- type: submission_errored
  contains: 'missing method zaraza' 
  message: Ojo, no te olvides de que para que sean polimórficos tienen que...

# Este mensaje se muestra cuando le estudiante envía una solución que falla, 
# independientemente de la falla
- type: submission_failed
  message: Ojo, los tests no pasaron

# Este mensaje se muestra cuando le estudiante envía una solución que falla, 
# y falla el conjunto de tests dados, independientemente de las demás fallas
- type: submission_failed
  tests: 
    - 'f -2 should return 1'
    - 'f -5 should return 1'
  message: Ojo, tu solución debe funcionar con números negativos 

# Este mensaje se muestra cuando le estudiante envía una solución que falla, 
# y falla SOLO el conjunto de tests dados (los demás dan verde)
- type: submission_failed
  tests: 
    - 'f -2 should return 1'
    - 'f -5 should return 1'
  exact: true
  message: Ojo, tu solución debe funcionar con números negativos 
flbulgarelli commented 6 years ago

Y propuesta para el feedback de las expectativas:

rules: 
# Este mensaje se muestra cuando le estudiante envía una solución que pasa pero tiene 
# inspecciones que fallan, y falla el conjunto de inspecciones dadas, independientemente
# de las demás
- type: submission_passed_with_warnings
  expectations: 
    - 'Foo DeclaresMethod:getBar'
    - 'Foo DeclareAttribute:bar'
    - 'Foo.bar TypesAs:int'
    - 'Foo.getBar TypesReturnAs:int'
  message: Tu solución debe declarar el atributo bar, de tipo int, y el getter correspondiente. 
flbulgarelli commented 6 years ago

Propuesta final, tal como se implementa en PR:

rules: 

# Este mensaje se muestra cuando le estudiante envía una solución vacía
- when: content_empty
  then: ojo, tenés que mandar una solución zaraza

# Este mensaje se muestra cuando le estudiante envía una solución que no compila
- when: submission_errored
  then: ojo, ¡tu solución no compila!

# Este mensaje se muestra cuando le estudiante envía una solución que no compila
- when: submission_errored
  then:
   - Ojo, ¡tu solución no compila (primer a tercer intento)!
   - Ojo, ¡tu solución no compila (cuarto a sexto intento)!
   - Ojo, ¡tu solución no compila (séptimo intento o más)!

# Este mensaje se muestra cuando le estudiante envía una solución que no compila
# y tiene un cierto texto
- when: 
    error_contains: 'missing method zaraza' 
  then: ojo, no te olvides de que para que sean polimórficos tienen que...

# Este mensaje se muestra cuando le estudiante envía una solución que falla, 
# independientemente de la falla
- when: submission_failed
  then: ojo, los tests no pasaron

# Este mensaje se muestra cuando le estudiante envía una solución que falla, 
# y falla el conjunto de tests dados, independientemente de las demás fallas
- when: 
    these_test_failed: 
      - 'f -2 should return 1'
      - 'f -5 should return 1'
  then: ojo, tu solución debe funcionar con números negativos 

# Este mensaje se muestra cuando le estudiante envía una solución que falla, 
# y falla SOLO el conjunto de tests dados (los demás dan verde)
- when: 
    only_these_tests_failed:
      - 'f -2 should return 1'
      - 'f -5 should return 1'
  then: ojo, tu solución debe funcionar con números negativos 

# Este mensaje se muestra cuando le estudiante envía una solución que pasa pero tiene 
# expectativas que fallan
- when: submission_passed_with_warnings
  then: rcordá que tu solución debe ser polimórica

# Este mensaje se muestra cuando le estudiante envía una solución que pasa pero tiene 
# inspecciones que fallan, y falla el conjunto de inspecciones dadas, independientemente
# de las demás
- when: 
    these_expectations_failed: 
      - 'Foo DeclaresMethod:getBar'
      - 'Foo DeclareAttribute:bar'
      - 'Foo.bar TypesAs:int'
      - 'Foo.getBar TypesReturnAs:int'
  then: Tu solución debe declarar el atributo bar, de tipo int, y el getter correspondiente.