Skip to content

Commit

Permalink
Merge branch 'dev' into repl-console-link-stacktrace
Browse files Browse the repository at this point in the history
  • Loading branch information
tesonep committed Jul 11, 2017
2 parents e60f2d4 + a33b790 commit 10717fd
Show file tree
Hide file tree
Showing 47 changed files with 1,105 additions and 312 deletions.
9 changes: 6 additions & 3 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,13 @@ before_deploy:
# If there is an error I will try to upload the logs
after_failure:
- cd ..
- cd org.uqbar.project.wollok.tests/target
- cd org.uqbar.project.wollok.tests
- zip -r -9 target.zip target/
- curl -T target.zip -u$BINTRAY_ID:$BINTRAY_API_KEY "https://api.bintray.com/content/wollok/TravisTestLog/WollokTestLogs/$TRAVIS_JOB_ID/target-$TRAVIS_JOB_ID.zip?publish=1&override=1"
- cd target
- zip -r -9 surefire-reports.zip surefire-reports/
- curl -T surefire-reports.zip -u$BINTRAY_ID:$BINTRAY_API_KEY "https://api.bintray.com/content/wollok/TravisTestLog/WollokTestLogs/$TRAVIS_JOB_ID/surefire-reports.zip?publish=1&override=1"
- if [ -f work/data/.metadata/.log ] ; then curl -T work/data/.metadata/.log -u$BINTRAY_ID:$BINTRAY_API_KEY "https://api.bintray.com/content/wollok/TravisTestLog/WollokTestLogs/$TRAVIS_JOB_ID/log.txt?publish=1&override=1" ; fi
- curl -T surefire-reports.zip -u$BINTRAY_ID:$BINTRAY_API_KEY "https://api.bintray.com/content/wollok/TravisTestLog/WollokTestLogs/$TRAVIS_JOB_ID/surefire-reports-$TRAVIS_JOB_ID.zip?publish=1&override=1"
- if [ -f work/data/.metadata/.log ] ; then curl -T work/data/.metadata/.log -u$BINTRAY_ID:$BINTRAY_API_KEY "https://api.bintray.com/content/wollok/TravisTestLog/WollokTestLogs/$TRAVIS_JOB_ID/log-$TRAVIS_JOB_ID.txt?publish=1&override=1" ; fi

deploy:
- provider: s3
Expand Down
4 changes: 2 additions & 2 deletions org.uqbar.project.wollok.launch/.classpath
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src/"/>
<classpathentry kind="src" path="xtend-gen/"/>
<classpathentry exported="true" kind="lib" path="lib/lipermi-0-4-2.jar"/>
<classpathentry exported="true" kind="lib" path="lib/jansi-1.11.jar"/>
<classpathentry exported="true" kind="lib" path="lib/gson-2.4.jar"/>
<classpathentry exported="true" kind="lib" path="lib/jetty-all-9.3.9.v20160517-uber.jar"/>
<classpathentry kind="src" path="src/"/>
<classpathentry kind="src" path="xtend-gen/"/>
<classpathentry kind="output" path="target/classes"/>
</classpath>
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
package org.uqbar.project.wollok.debugger.server

import java.util.concurrent.CyclicBarrier
import org.apache.log4j.Logger
import org.eclipse.emf.ecore.EObject
import org.eclipse.xtend.lib.annotations.Accessors
import org.uqbar.project.wollok.debugger.server.out.XTextInterpreterEventPublisher
import org.uqbar.project.wollok.interpreter.api.XDebugger
import org.uqbar.project.wollok.interpreter.api.XInterpreter

import static extension org.uqbar.project.wollok.utils.XTextExtensions.*
import org.eclipse.xtend.lib.annotations.Accessors

/**
* xdebugger implementation that actually
Expand Down
4 changes: 2 additions & 2 deletions org.uqbar.project.wollok.tests/.classpath
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry exported="true" kind="lib" path="lib/mockito-all-1.9.5.jar"/>
<classpathentry exported="true" kind="lib" path="lib/lipermi-0-4-2.jar"/>
<classpathentry kind="src" path="src/"/>
<classpathentry kind="src" path="src-gen/"/>
<classpathentry kind="src" path="xtend-gen/"/>
<classpathentry exported="true" kind="lib" path="lib/mockito-all-1.9.5.jar"/>
<classpathentry exported="true" kind="lib" path="lib/lipermi-0-4-2.jar"/>
<classpathentry kind="output" path="target/classes"/>
</classpath>
Original file line number Diff line number Diff line change
Expand Up @@ -87,14 +87,15 @@ abstract class AbstractXDebuggerImplTestCase extends AbstractWollokInterpreterTe
var List<XStackFrame> steps = newArrayList
var XStackFrame lastStackElement = null
do {
Thread.sleep(100)
clientSide.waitUntilSuspended

lastStackElement = realDebugger.stack.lastElement
steps += lastStackElement.clone

val code = lastStackElement.code(programContent)
println("Evaluating "+ lastStackElement + " => " + code.replaceAll('\n', ''))

clientSide.suspended = false;
realDebugger.stepInto()
} while (!clientSide.isTerminated);

Expand Down Expand Up @@ -135,6 +136,8 @@ abstract class AbstractXDebuggerImplTestCase extends AbstractWollokInterpreterTe
class TestTextInterpreterEventPublisher implements XTextInterpreterEventPublisher, DebuggerEventAssertion {
var boolean started = false
var boolean terminated = false
var boolean suspended = false

List<DebuggerEventListener> listeners = newArrayList
// an object to manipulate the VM: pause, resume, etc.
DebugCommandHandler vm
Expand All @@ -144,17 +147,21 @@ class TestTextInterpreterEventPublisher implements XTextInterpreterEventPublishe
override started() {
println("STARTED")
started = true
suspended = false
notify [ started(vm) ]
}

override terminated() {
println("TERMINATED")
println("TERMINATED")
terminated = true
suspended = false

notify [ terminated(vm) ]
}

override suspendStep() {
println("SUSPENDED")
suspended = true
notify [ suspended(vm) ]
}
override resumeStep() {
Expand All @@ -168,6 +175,7 @@ class TestTextInterpreterEventPublisher implements XTextInterpreterEventPublishe

def waitUntilStarted() { waitUntil [isStarted] }
def waitUntilTerminated() { waitUntil [isTerminated] }
def waitUntilSuspended() { waitUntil[isSuspended || isTerminated]}

// utils

Expand All @@ -183,7 +191,8 @@ class TestTextInterpreterEventPublisher implements XTextInterpreterEventPublishe

protected def waitUntil(()=>Boolean condition) {
// REVIEW: this is an active wait. Not good, but well.. just for testing.
while (!condition.apply && assertionFailed != null) Thread.sleep(100)
while (!condition.apply && assertionFailed == null)
Thread.sleep(100)
}

def expect((DebuggerEventAssertion)=>Object director) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,11 +35,15 @@ abstract class AbstractWollokInterpreterTestCase extends Assert {
@Before
def void setUp() {
interpreter.classLoader = AbstractWollokInterpreterTestCase.classLoader

new File("target/test-files").mkdirs
new File("target/test-files/WOLLOK.ROOT").createNewFile
}

@After
def void tearDown() {
interpreter = null
new File("target/test-files")
}

def interpret(String... programAsString) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ class WollokParseHelper extends ParseHelper<WFile>{
val f = new File(uri.toFileString)

if (!f.exists) {
f.parentFile.mkdirs
f.createNewFile
}
}
Expand All @@ -48,6 +49,6 @@ class WollokParseHelper extends ParseHelper<WFile>{
if (file.key == null)
computeUnusedUri(resourceSetToUse)
else
URI.createURI(file.key + "." + fileExtension);
URI.createURI("target/test-files/" + file.key + "." + fileExtension);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ import org.junit.Ignore
* Test the different combinations and functionality of imports.
*
* @author jfernandes
* @author tesonep
*
*/
class ImportsTest extends AbstractWollokInterpreterTestCase {

Expand All @@ -20,7 +22,7 @@ class ImportsTest extends AbstractWollokInterpreterTestCase {
''',
'entrenador' -> '''
import aves.pepita
import aves.*
object mostaza {
method entrenar() {
Expand All @@ -29,7 +31,7 @@ class ImportsTest extends AbstractWollokInterpreterTestCase {
}
''',
'programa' -> '''
import entrenador.mostaza
import entrenador.*
program a {
const nombre = mostaza.entrenar()
Expand All @@ -39,6 +41,92 @@ class ImportsTest extends AbstractWollokInterpreterTestCase {
].interpretAsFilesPropagatingErrors
}

@Test
def void testImportObjectMultiLevel() {
#['model/aves' -> '''
object pepita {
method getNombre() = "pepita"
}
''',
'model/entrenador' -> '''
import model.aves.*
object mostaza {
method entrenar() {
return pepita.getNombre()
}
}
''',
'pgm/programa' -> '''
import model.entrenador.*
program a {
const nombre = mostaza.entrenar()
assert.equals('pepita', nombre)
}
'''
].interpretAsFilesPropagatingErrors
}

@Test
def void testImportObjectMultiLevelRelative() {
#['model/aves' -> '''
object pepita {
method getNombre() = "pepita"
}
''',
'model/entrenador' -> '''
import aves.*
object mostaza {
method entrenar() {
return pepita.getNombre()
}
}
''',
'pgm/programa' -> '''
import model.entrenador.*
program a {
const nombre = mostaza.entrenar()
assert.equals('pepita', nombre)
}
'''
].interpretAsFilesPropagatingErrors
}


@Test
def void testImportObjectInSrc() {
#['src/model/aves' -> '''
object pepita {
method getNombre() = "pepita"
}
''',
'src/model/entrenador' -> '''
import aves.*
object mostaza {
method entrenar() {
return pepita.getNombre()
}
}
''',
'src/pgm/programa' -> '''
import model.entrenador.*
program a {
const nombre = mostaza.entrenar()
assert.equals('pepita', nombre)
}
'''
].interpretAsFilesPropagatingErrors
}


@Test
def void testMultipleObjectsImports() {
#['aves' -> '''
Expand Down Expand Up @@ -113,6 +201,39 @@ class ImportsTest extends AbstractWollokInterpreterTestCase {
].interpretAsFilesPropagatingErrors
}

@Test
def void importWithPackages(){
#["model/armas" -> '''
package xxx {
class Arma {
method disparar() {
}
}
}
class Guerrero {
}
''',
"test/test" -> '''
import model.*
import model.armas.*
test "test con arma" {
const arma = new armas.xxx.Arma()
assert.that(true)
}
test "thor pelea duro" {
const thor = new armas.Guerrero()
const thor2 = new Guerrero()
assert.that(true)
}
'''
].interpretAsFilesPropagatingErrors
}

@Test
@Ignore // No puedo armar una gramática válida que funcione.
def void mustUseFullNameToReferenceObjectFromSameFileButDifferentPackage() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,9 @@ program natives {
catch e {
assert.equals(
"wollok.lang.Exception: SoundGarden
at [natives.wpgm]
at natives.Repeater.ntimes(n,closure) [natives.wpgm]
at [natives.wpgm]
at [/natives.wpgm:8]
at natives.Repeater.ntimes(n,closure) [/natives.wpgm:2]
at [/natives.wpgm:10]
",e.getStackTraceAsString())
}
}
Expand Down
Loading

0 comments on commit 10717fd

Please sign in to comment.