Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error al ejecutar un test que tiene mismo nombre que el archivo principal #14

Closed
FerRomMu opened this issue Jun 3, 2022 · 6 comments
Closed

Comments

@FerRomMu
Copy link
Contributor

FerRomMu commented Jun 3, 2022

Si tanto el .wtest como alguno de los archivos .wlk tienen el mismo nombre al intentar ejecutarlo falla.
Por ej en este repositorio:
https://github.com/obj1unq/2021s1-simulacro-superpoderoses-lgassman

Ambos archivos se llaman igual: "superpoderoses.wlk" y "superpoderoses.wtest".

El error es el siguiente:
Captura de pantalla de 2022-06-03 15-19-23

@asanzo
Copy link
Contributor

asanzo commented Jun 6, 2022

En Wollok XText se puede hacer esto porque supone que todo import es hacer import de un archivo .wlk , en otras palabras, en XText no se podía hacer import de un archivo de test.

Por otro lado, si yo defino dos archivos de test así:

// archivo definoObjeto.wtest
object estoyEnElTest { method saluda() = "soy el del test"}

y

// archivo importoObjeto.wtest
test "Importa bien desde un test" {
	assert.equals("soy el del test", estoyEnElTest.saluda())
}

Eso anda en WollokTS pero estalla en WollokXText

¿Qué queremos @uqbar-project/wollok ?

¿Queremos que se pueda importar objetos desde un archivo de test? Esto implica lanzar error cuando alguien pone el mismo nombre de archivo para un test que para un .wlk.

¿O preferimos lo otro? (No poder importar objetos desde otro test, pero permitir que dos archivos tengan el mismo nombre)

@nscarcella sospecho que me vas a decir que lo segundo es difícil de implementar, ¿verdad?

@nscarcella
Copy link
Member

No, te voy a decir que esto no se trata de importar, se trata de referenciar. Todo en el ambiente tiene que tener un nombre único si querés referenciarlo(por ejemplo, para correr un test tenés que primero encontrarlo).

También digo que las extensiones de archivo diferentes son algo heredado del eclipse, pero no se usan para nada. Un archivo es un package y vos podrías definir adentro tests u objetos o cualquier entidad y, obviamente, no pueden tener el mismo nombre.
Pero el motor no se encarga de leer archivos, le llega el contenido con el nombre del archivo en que salió, así que si querés un entorno dónde puedas tener archivos con el mismo nombre y distintas extensiones solamente tenés que agregarle alguna falopa al nombre de los archivos con extensión wtest.

Dicho eso, si hay dos packages con el mismo nombre el linker los combina, así que tal vez habría que revisar si esa validación está haciendo lo que esperamos que haga porque, en principio, no veo el problema.

@asanzo
Copy link
Contributor

asanzo commented Jun 6, 2022

GRACIAS ❤️

Ok, me parece entonces que complejizar todo más es al dope, yo me quedaría con que el nombre del archivo es el nombre del package, y no importa la extensión.

Si el linker se encuentra esto:

// archivo definoObjeto.wlk
object estoyEnElWlk { method saluda() = "soy el del wlk"}

y

// archivo definoObjeto.wtest
object estoyEnElWTest { method saluda() = "soy el del wtest"}

Entonces es cierto que tengo a disposición ambos:

image

PERO

Si en el wtest hay tests, me tira un error rarísimo:

[ERROR]: shouldMatchFileExtension at src/definoObjeto.wlk:6

cuando esa línea 6 no existe en definoObjeto.wlk pero sí existe en definoObjeto.wtest, y ese wtest sí tiene una línea 6 con el test.

¿Puede ser que el linker al "mergear" y luego tener que dar un error esté tomando el archivo original incorrecto?

@nscarcella
Copy link
Member

nscarcella commented Jun 6, 2022 via email

@asanzo
Copy link
Contributor

asanzo commented Jun 8, 2022

Hay un poquito de discusión sobre esto por acá también:
https://discord.com/channels/737094307902914570/982059683550486578/983431134585188402

@PalumboN
Copy link
Contributor

Con los últimos cambios, el repo del ejemplo solamente se queja del mismo nombre entre los archivos .wlk y .wtest, que es el comportamiento esperado actualmente.

Igual todo se puede ejecutar si se skipean las validaciones.

  2021s1-simulacro-superpoderoses-lgassman git:(master) wollok test
🧪 Running all tests on /Users/palumbon/git/2021s1-simulacro-superpoderoses-lgassman
🌏 Building environment for /Users/palumbon/git/2021s1-simulacro-superpoderoses-lgassman...

[ERROR]: shouldNotDuplicatePackageName at src/superpoderoses.wlk:--
[ERROR]: shouldReturnAValueOnAllFlows at src/superpoderoses.wlk:66
[ERROR]: shouldNotDuplicatePackageName at src/superpoderoses.wtest:--
💥 Uh-oh... Unexpected Error!
Fatal error while running validations. Aborting run due to validation errors!
➜  2021s1-simulacro-superpoderoses-lgassman git:(master) ✗ wollok test --skip-validations
error: unknown option '--skip-validations'
(Did you mean --skipValidations?)
➜  2021s1-simulacro-superpoderoses-lgassman git:(master) ✗ wollok test --skipValidations 
🧪 Running all tests on /Users/palumbon/git/2021s1-simulacro-superpoderoses-lgassman
🌏 Building environment for /Users/palumbon/git/2021s1-simulacro-superpoderoses-lgassman...

Running 14 tests...
 src
   superpoderoses
     "Superpoderoses""punto 1.1 capacidad de batalla que aporta un poder""punto 1.2 capacidad de batalla de un personaje""punto 2.1 Saber el miembro vulnerable de un equipo""punto 2.2 Saber la calidad de un equipo""punto 2.3 Saber los mejores poderes de un equipo""punto 3.1 personajes contra el peligro""punto 3.2 Saber si un peligro es sensato ""punto 4.1 Afrontar peligro individualmente: OK""punto 4.1 Afrontar peligro individualmente: no OK por radioactividad""punto 4.1 Afrontar peligro individualmente: no OK por capacidad de batalla""punto 4.2  Afrontar peligro (moderado) en equipo  ""punto 4.2  Afrontar peligro (alto) en equipo (no ok)""punto 5.1  Metahumano ""punto 5.2  Mago "


 ✓ 14 passing  

También esetá el error shouldReturnAValueOnAllFlows que no debería, está reportado acá: uqbar-project/wollok-ts#253

También cambiamos la API para tener más control de lo que se ejecuta: #162

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants