Skip to content

Commit

Permalink
Merge pull request #285 from polystat/more-tests
Browse files Browse the repository at this point in the history
Added & refined tests
  • Loading branch information
dours authored Jun 21, 2022
2 parents ad60f8f + d1d86cd commit b00ffb7
Show file tree
Hide file tree
Showing 200 changed files with 190 additions and 13 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/github-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ jobs:
with:
name: artifacts
path: |
transpiler/src/test/resources/org/polystat/py2eo/transpiler/simple-tests/*/genCageEO/*.eo
transpiler/src/test/resources/org/polystat/py2eo/transpiler/results/*.eo
scalastyle-output.xml
- name: Rename jar
run: cp transpiler/target/transpiler-*-jar-with-dependencies.jar transpiler.jar
Expand Down Expand Up @@ -109,7 +109,7 @@ jobs:
name: artifacts
path: ./
- name: Build with Maven
run: cp transpiler/src/test/resources/org/polystat/py2eo/transpiler/simple-tests/*/genCageEO/*.eo ./runEO && cp -a transpiler/src/main/eo/preface ./runEO && cd ./runEO && mvn clean test
run: cp transpiler/src/test/resources/org/polystat/py2eo/transpiler/results/*.eo ./runEO && cp -a transpiler/src/main/eo/preface ./runEO && cd ./runEO && mvn clean test
- name: upload artifacts
uses: actions/upload-artifact@v2
with:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@ python: |
def test():
class A:
a = 123
x = A()
return x.a.__class__ == int
return x.a.__class__ == int
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
enabled: True
python: |
def bitwiseAnd():
a = 0b1101
return a & 0b0110 == 0b100
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
enabled: True
python: |
def bitwiseXor():
a = 0b10
return a ^ 0b11 == 1
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
enabled: True
python: |
def bitwiseOr():
a = 0b1010
return a | 0b1100 == 0b1110
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
enabled: True
python: |
def booleanAnd():
a = True
return a and False == False
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
enabled: True
python: |
def booleanNot():
a = False
return not a
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
enabled: True
python: |
def booleanOr():
a = False
return a or True
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
enabled: False
python: |
def cond2():
b = 2
a = 1 == b if "asd" else 1
return a == 1
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
enabled: False
python: |
def setDisplay():
def setDisplayComprehension():
l = { x : x * x for x in range(1, 6) if (x % 2) == 1 }
return l == { 1 : 1, 3 : 9, 5 : 25 }
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
enabled: False
python: |
def setDisplayComprehension():
l = { 1 : "fst", 2 : "snd" }
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
enabled: False
python: |
def evaluationOrder():
xlist = []
def fst():
xlist.append(1)
return 1
def snd():
xlist.append(2)
return 2
b = fst() + snd()
return b == 3 and xlist[0] == 1 and xlist[1] == 2
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
enabled: True
python: |
def listDisplay():
l = [1, 2, 3]
return True
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
enabled: True
python: |
def floatLiteral():
2.4
return True
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
enabled: True
python: |
def intLiteral():
2
return True
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
enabled: True
python: |
def stringLiteral():
"asf"
return True
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
enabled: False
python: |
def test():
a = 5
b = 6
return (a + 5) * b == 60
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
enabled: False
python: |
def test():
a = 5
b = 6
c = 13
return (a + b) / c == 1
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
enabled: True
python: |
def powerOperator():
return 10 ** 2 == 100
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
enabled: False
python: |
def setDisplay():
def setDisplayComprehension():
l = { x * x for x in range(1, 6) if (x % 2) == 1 }
return l == { 1, 9, 25 }
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
enabled: False
python: |
def setDisplay():
l = { 1, 2, 3, 1 }
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
enabled: True
python: |
def shiftingLeft():
a = 1
return a << 1 == 2
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
enabled: True
python: |
def shiftingRight():
a = 3
return a >> 1 == 1
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
enabled: False
python: |
def unaryInvert():
a = 2
return ~a == -3
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
enabled: True
python: |
def unaryMinus():
a = 2
return -a + 2 == 0
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
enabled: True
python: |
def unaryPlus():
a = 2
return +a == 2
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
enabled: True
python: |
def listGet():
list = [1, 2, 3]
list2 = list.append(4)
return list[1] == 2 and list[3] == 4
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
enabled: True
python: |
def listGet():
list = [1,2, 3]
return list[1] == 2
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
enabled: True
python: |
def listLen():
list = [1,2, 3]
return len(list) == 3
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
enabled: True
python: |
def printString():
print("Hello world!")
return True
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
enabled: True
python: |
def comments():
# this comment doesn't interfere
return True
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
enabled: False
python: |
def comments():
return \
True
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
enabled: True
python: |
def indentation():
return True
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
enabled: True
python: |
def whitespaces():
return True
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
enabled: True
python: |
def pass1():
pass
return True
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import scala.sys.process.{Process, ProcessLogger}

trait Commons {
val testsPrefix: String = System.getProperty("user.dir") + "/src/test/resources/org/polystat/py2eo/transpiler"
val resultsPrefix: String = "src/test/resources/org/polystat/py2eo/transpiler/results"

def yaml2python(f: File): String = {
val map = new Yaml().load[java.util.Map[String, String]](new FileInputStream(f))
Expand All @@ -36,17 +37,21 @@ trait Commons {
if (match1.group(1) == "2") "python3" else "python"
}


def chopExtension(fileName: String): String = fileName.substring(0, fileName.lastIndexOf("."))

def useCageHolder(test: File): Unit = {
Transpile.transpileOption(debugPrinter(test))(
test.getName.replace(".yaml", ""),
Transpile.Parameters(wrapInAFunction = false),
yaml2python(test)
) match {
val results = new File(resultsPrefix)
if (!results.exists) {
results.mkdirs()
}

val name = test.getName.replace(".yaml", "")
Transpile(name, Transpile.Parameters(wrapInAFunction = false), yaml2python(test)) match {
case None => fail(s"could not transpile ${test.getName}");
case Some(transpiled) => writeFile(test, "genCageEO", ".eo", transpiled)
case Some(transpiled) =>
val output = new FileWriter(results + File.separator + name + ".eo")
output.write(transpiled)
output.close()
}
}

Expand Down

1 comment on commit b00ffb7

@0pdd
Copy link
Member

@0pdd 0pdd commented on b00ffb7 Jun 21, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wasn't able to retrieve PDD puzzles from the code base and submit them to GitHub. If you think that it's a bug on our side, please submit it to yegor256/0pdd:

set -x && set -e && set -o pipefail && cd /tmp/0pdd20220612-12-q4n2xj/polystat/py2eo && pdd -v -f /tmp/20220621-19685-1z0sk3j [1]: + set -e + set -o pipefail + cd /tmp/0pdd20220612-12-q4n2xj/polystat/py2eo + pdd -v -f /tmp/20220621-19685-1z0sk3j My version is 0.20.6 Ruby version is 2.6.0 at...

Please, copy and paste this stack trace to GitHub:

UserError
set -x && set -e && set -o pipefail && cd /tmp/0pdd20220612-12-q4n2xj/polystat/py2eo && pdd -v -f /tmp/20220621-19685-1z0sk3j [1]:
+ set -e
+ set -o pipefail
+ cd /tmp/0pdd20220612-12-q4n2xj/polystat/py2eo
+ pdd -v -f /tmp/20220621-19685-1z0sk3j

My version is 0.20.6
Ruby version is 2.6.0 at x86_64-linux
Reading /tmp/0pdd20220612-12-q4n2xj/polystat/py2eo
628 file(s) found, 920 excluded
Reading runEO/pom.xml...
Reading .gitignore...
Reading README.md...
Reading transpiler/pom.xml...
Reading transpiler/src/main/eo/preface/continue.eo...
Reading transpiler/src/main/eo/preface/fakeclasses.eo...
Reading transpiler/src/main/eo/preface/pyfloat.eo...
Reading transpiler/src/main/eo/preface/pyint.eo...
Reading transpiler/src/main/eo/preface/xZeroDivisionError.eo...
Reading transpiler/src/main/eo/preface/break.eo...
Reading transpiler/src/main/eo/preface/xrange.eo...
Reading transpiler/src/main/eo/preface/pycomplex.eo...
Reading transpiler/src/main/eo/preface/pybool.eo...
Reading transpiler/src/main/eo/preface/raiseNothing.eo...
Reading transpiler/src/main/eo/preface/newUID.eo...
Reading transpiler/src/main/eo/preface/xmyArray.eo...
Reading transpiler/src/main/eo/preface/raiseEmpty.eo...
Reading transpiler/src/main/eo/preface/mkCopy.eo...
Reading transpiler/src/main/eo/preface/xlen.eo...
Reading transpiler/src/main/eo/preface/xStopIteration.eo...
Reading transpiler/src/main/eo/preface/pystring.eo...
Reading transpiler/src/main/eo/preface/return.eo...
Reading transpiler/src/main/eo/my-array.eo...
Reading transpiler/src/main/scala/org/polystat/py2eo/transpiler/PrintLinearizedMutableEOWithCage.scala...
Reading transpiler/src/main/scala/org/polystat/py2eo/transpiler/Main.scala...
Reading transpiler/src/main/scala/org/polystat/py2eo/transpiler/Transpile.scala...
Reading transpiler/src/main/scala/org/polystat/py2eo/transpiler/FindBadConstructs.scala...
Reading transpiler/src/main/scala/org/polystat/py2eo/transpiler/SimplePass.scala...
Reading transpiler/src/main/scala/org/polystat/py2eo/transpiler/SimpleAnalysis.scala...
Reading transpiler/src/main/scala/org/polystat/py2eo/transpiler/ClosureWithCage.scala...
Reading transpiler/src/main/scala/org/polystat/py2eo/transpiler/PrintEO.scala...
Reading transpiler/src/main/scala/org/polystat/py2eo/transpiler/Common.scala...
Reading transpiler/src/main/java/org/polystat/py2eo/transpiler/dummy.java...
Reading transpiler/src/main/python/inheritance.py...
Reading transpiler/src/main/python/C3.py...
Reading transpiler/src/main/python/closureRuntime.py...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/eo/map-tests.eo...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_abstract_numbers.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_userstring.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_symtable.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_class.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_imghdr.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_uuid.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_cmd.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_index.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_smtpd.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_dict_version.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_rlcompleter.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_random.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_fileio.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_urllib2net.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_funcattrs.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_quopri.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_types.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_bool.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_codecencodings_cn.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_flufl.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_univnewlines.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_pyexpat.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_colorsys.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_compile.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_coroutines.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_linecache.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_gc.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_site.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_platform.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_property.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_functools.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_int_literal.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_audioop.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_asyncgen.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_pulldom.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_modulefinder.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_typechecks.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_unpack.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_pkgutil.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_fstring.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_with.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_userlist.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_threading_local.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_context.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_webbrowser.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_asyncore.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/README.md...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_metaclass.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_csv.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_thread.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_codecmaps_jp.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_struct.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_http_cookies.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_fractions.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_pwd.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_syslog.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_codecencodings_iso2022.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_pickletools.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_genericpath.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_asynchat.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_xdrlib.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_locale.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_codeop.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_mailbox.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_timeout.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_bufio.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_httpservers.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_dict.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_decorators.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_grp.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_imaplib.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_bigmem.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_posix.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_sndhdr.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_aifc.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_wave.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_re.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_httplib.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_codecencodings_hk.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_keywordonlyarg.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_poll.yaml...
Reading transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_smtplib.yaml...
ERROR: transpiler/src/test/resources/org/polystat/py2eo/transpiler/testParserPrinter/test_smtplib.yaml; puzzle at line #1122; TODO must have a leading space to become a puzzle, as this page explains: https://github.com/yegor256/pdd#how-to-format
If you can't understand the cause of this issue or you don't know how to fix it, please submit a GitHub issue, we will try to help you: https://github.com/yegor256/pdd/issues. This tool is still in its beta version and we will appreciate your feedback. Here is where you can find more documentation: https://github.com/yegor256/pdd/blob/master/README.md.
Exit code is 1

/app/objects/git_repo.rb:66:in `rescue in block in xml'
/app/objects/git_repo.rb:63:in `block in xml'
/app/vendor/ruby-2.6.0/lib/ruby/2.6.0/tempfile.rb:295:in `open'
/app/objects/git_repo.rb:62:in `xml'
/app/objects/puzzles.rb:36:in `deploy'
/app/objects/job.rb:38:in `proceed'
/app/objects/job_starred.rb:33:in `proceed'
/app/objects/job_recorded.rb:32:in `proceed'
/app/objects/job_emailed.rb:35:in `proceed'
/app/objects/job_commiterrors.rb:36:in `proceed'
/app/objects/job_detached.rb:48:in `exclusive'
/app/objects/job_detached.rb:36:in `block in proceed'
/app/objects/job_detached.rb:36:in `fork'
/app/objects/job_detached.rb:36:in `proceed'
/app/0pdd.rb:366:in `block in <top (required)>'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:1675:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:1675:in `block in compile!'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:1013:in `block (3 levels) in route!'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:1032:in `route_eval'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:1013:in `block (2 levels) in route!'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:1061:in `block in process_route'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:1059:in `catch'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:1059:in `process_route'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:1011:in `block in route!'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:1008:in `each'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:1008:in `route!'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:1129:in `block in dispatch!'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:1101:in `block in invoke'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:1101:in `catch'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:1101:in `invoke'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:1124:in `dispatch!'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:939:in `block in call!'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:1101:in `block in invoke'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:1101:in `catch'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:1101:in `invoke'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:939:in `call!'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:929:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/rack-protection-2.1.0/lib/rack/protection/xss_header.rb:18:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/rack-protection-2.1.0/lib/rack/protection/path_traversal.rb:16:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/rack-protection-2.1.0/lib/rack/protection/json_csrf.rb:26:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/rack-protection-2.1.0/lib/rack/protection/base.rb:50:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/rack-protection-2.1.0/lib/rack/protection/base.rb:50:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/rack-protection-2.1.0/lib/rack/protection/frame_options.rb:31:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/rack-2.2.3/lib/rack/logger.rb:17:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/rack-2.2.3/lib/rack/common_logger.rb:38:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:253:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:246:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/rack-2.2.3/lib/rack/head.rb:12:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/rack-2.2.3/lib/rack/method_override.rb:24:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:216:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:1991:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:1542:in `block in call'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:1769:in `synchronize'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:1542:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/rack-2.2.3/lib/rack/handler/webrick.rb:95:in `service'
/app/vendor/ruby-2.6.0/lib/ruby/2.6.0/webrick/httpserver.rb:140:in `service'
/app/vendor/ruby-2.6.0/lib/ruby/2.6.0/webrick/httpserver.rb:96:in `run'
/app/vendor/ruby-2.6.0/lib/ruby/2.6.0/webrick/server.rb:307:in `block in start_thread'

Please sign in to comment.