* some more housekeeping re tests: gradle doesn't like .* imports for annotations, added @Disabled comments, made warnings go away

This commit is contained in:
meisl 2021-07-11 19:04:53 +02:00
parent 5e194536a8
commit c80a15846d
15 changed files with 61 additions and 43 deletions

View File

@ -1,6 +1,7 @@
package prog8tests package prog8tests
import org.junit.jupiter.api.* import org.junit.jupiter.api.TestInstance
import org.junit.jupiter.api.Test
import org.hamcrest.MatcherAssert.assertThat import org.hamcrest.MatcherAssert.assertThat
import org.hamcrest.Matchers.equalTo import org.hamcrest.Matchers.equalTo
import prog8tests.helpers.* import prog8tests.helpers.*

View File

@ -43,23 +43,23 @@ val fixturesDir = workingDir.resolve("test/fixtures")
val resourcesDir = workingDir.resolve("res") val resourcesDir = workingDir.resolve("res")
val outputDir = workingDir.resolve("build/tmp/test") val outputDir = workingDir.resolve("build/tmp/test")
inline fun assumeReadable(path: Path) { fun assumeReadable(path: Path) {
assertTrue(path.isReadable(), "sanity check: should be readable: ${path.absolute()}") assertTrue(path.isReadable(), "sanity check: should be readable: ${path.absolute()}")
} }
inline fun assumeReadableFile(path: Path) { fun assumeReadableFile(path: Path) {
assertTrue(path.isRegularFile(), "sanity check: should be normal file: ${path.absolute()}") assertTrue(path.isRegularFile(), "sanity check: should be normal file: ${path.absolute()}")
} }
inline fun assumeDirectory(path: Path) { fun assumeDirectory(path: Path) {
assertTrue(path.isDirectory(), "sanity check; should be directory: $path") assertTrue(path.isDirectory(), "sanity check; should be directory: $path")
} }
inline fun assumeNotExists(path: Path) { fun assumeNotExists(path: Path) {
assertFalse(path.exists(), "sanity check: should not exist: ${path.absolute()}") assertFalse(path.exists(), "sanity check: should not exist: ${path.absolute()}")
} }
inline fun sanityCheckDirectories(workingDirName: String? = null) { fun sanityCheckDirectories(workingDirName: String? = null) {
if (workingDirName != null) if (workingDirName != null)
assertEquals(workingDirName, workingDir.fileName.toString(), "name of current working dir") assertEquals(workingDirName, workingDir.fileName.toString(), "name of current working dir")
assumeDirectory(workingDir) assumeDirectory(workingDir)

View File

@ -1,6 +1,8 @@
package prog8tests package prog8tests
import org.junit.jupiter.api.* import org.junit.jupiter.api.TestInstance
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.BeforeAll
import kotlin.test.* import kotlin.test.*
import prog8tests.helpers.* import prog8tests.helpers.*

View File

@ -1,6 +1,9 @@
package prog8tests package prog8tests
import org.junit.jupiter.api.* import org.junit.jupiter.api.TestInstance
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.BeforeAll
import org.junit.jupiter.api.Disabled
import kotlin.test.* import kotlin.test.*
import prog8tests.helpers.* import prog8tests.helpers.*
@ -14,6 +17,7 @@ import prog8.compiler.target.ICompilationTarget
* They are not really unit tests, but rather tests of the whole process, * They are not really unit tests, but rather tests of the whole process,
* from source file loading all the way through to running 64tass. * from source file loading all the way through to running 64tass.
*/ */
//@Disabled("to save some time")
@TestInstance(TestInstance.Lifecycle.PER_CLASS) @TestInstance(TestInstance.Lifecycle.PER_CLASS)
class TestCompilerOnExamples { class TestCompilerOnExamples {
private val examplesDir = workingDir.resolve("../examples") private val examplesDir = workingDir.resolve("../examples")

View File

@ -1,7 +1,10 @@
package prog8tests package prog8tests
import org.junit.jupiter.api.* import org.junit.jupiter.api.TestInstance
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.BeforeAll
import kotlin.test.* import kotlin.test.*
import kotlin.io.path.*
import prog8tests.helpers.* import prog8tests.helpers.*
import prog8.ast.expressions.AddressOf import prog8.ast.expressions.AddressOf
@ -9,9 +12,7 @@ import prog8.ast.expressions.IdentifierReference
import prog8.ast.expressions.StringLiteralValue import prog8.ast.expressions.StringLiteralValue
import prog8.ast.statements.FunctionCallStatement import prog8.ast.statements.FunctionCallStatement
import prog8.ast.statements.Label import prog8.ast.statements.Label
import prog8.compiler.compileProgram
import prog8.compiler.target.Cx16Target import prog8.compiler.target.Cx16Target
import kotlin.io.path.name
/** /**

View File

@ -1,6 +1,7 @@
package prog8tests package prog8tests
import org.junit.jupiter.api.* import org.junit.jupiter.api.TestInstance
import org.junit.jupiter.api.Test
import kotlin.test.* import kotlin.test.*
import prog8tests.helpers.* import prog8tests.helpers.*
@ -14,6 +15,7 @@ import prog8.ast.expressions.*
import prog8.ast.statements.* import prog8.ast.statements.*
import prog8.compiler.target.C64Target import prog8.compiler.target.C64Target
@TestInstance(TestInstance.Lifecycle.PER_CLASS) @TestInstance(TestInstance.Lifecycle.PER_CLASS)
class TestMemory { class TestMemory {

View File

@ -1,6 +1,7 @@
package prog8tests package prog8tests
import org.junit.jupiter.api.* import org.junit.jupiter.api.TestInstance
import org.junit.jupiter.api.Test
import kotlin.test.* import kotlin.test.*
import org.hamcrest.MatcherAssert.assertThat import org.hamcrest.MatcherAssert.assertThat
import org.hamcrest.Matchers.closeTo import org.hamcrest.Matchers.closeTo

View File

@ -1,6 +1,7 @@
package prog8tests package prog8tests
import org.junit.jupiter.api.* import org.junit.jupiter.api.TestInstance
import org.junit.jupiter.api.Test
import kotlin.test.* import kotlin.test.*
import prog8.ast.base.DataType import prog8.ast.base.DataType

View File

@ -1,6 +1,7 @@
package prog8tests package prog8tests
import org.junit.jupiter.api.* import org.junit.jupiter.api.TestInstance
import org.junit.jupiter.api.Test
import kotlin.test.* import kotlin.test.*
import org.hamcrest.MatcherAssert.assertThat import org.hamcrest.MatcherAssert.assertThat
import org.hamcrest.Matchers.equalTo import org.hamcrest.Matchers.equalTo

View File

@ -1,6 +1,7 @@
package prog8tests package prog8tests
import org.junit.jupiter.api.* import org.junit.jupiter.api.TestInstance
import org.junit.jupiter.api.Test
import kotlin.test.* import kotlin.test.*
import prog8.ast.base.DataType import prog8.ast.base.DataType

View File

@ -20,23 +20,23 @@ val fixturesDir = workingDir.resolve("test/fixtures")
val resourcesDir = workingDir.resolve("res") val resourcesDir = workingDir.resolve("res")
val outputDir = workingDir.resolve("build/tmp/test") val outputDir = workingDir.resolve("build/tmp/test")
inline fun assumeReadable(path: Path) { fun assumeReadable(path: Path) {
assertTrue(path.isReadable(), "sanity check: should be readable: ${path.absolute()}") assertTrue(path.isReadable(), "sanity check: should be readable: ${path.absolute()}")
} }
inline fun assumeReadableFile(path: Path) { fun assumeReadableFile(path: Path) {
assertTrue(path.isRegularFile(), "sanity check: should be normal file: ${path.absolute()}") assertTrue(path.isRegularFile(), "sanity check: should be normal file: ${path.absolute()}")
} }
inline fun assumeDirectory(path: Path) { fun assumeDirectory(path: Path) {
assertTrue(path.isDirectory(), "sanity check; should be directory: $path") assertTrue(path.isDirectory(), "sanity check; should be directory: $path")
} }
inline fun assumeNotExists(path: Path) { fun assumeNotExists(path: Path) {
assertFalse(path.exists(), "sanity check: should not exist: ${path.absolute()}") assertFalse(path.exists(), "sanity check: should not exist: ${path.absolute()}")
} }
inline fun sanityCheckDirectories(workingDirName: String? = null) { fun sanityCheckDirectories(workingDirName: String? = null) {
if (workingDirName != null) if (workingDirName != null)
assertEquals(workingDirName, workingDir.fileName.toString(), "name of current working dir") assertEquals(workingDirName, workingDir.fileName.toString(), "name of current working dir")
assumeDirectory(workingDir) assumeDirectory(workingDir)

View File

@ -1,6 +1,8 @@
package prog8tests package prog8tests
import org.junit.jupiter.api.* import org.junit.jupiter.api.TestInstance
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.Disabled
import kotlin.test.* import kotlin.test.*
import prog8tests.helpers.* import prog8tests.helpers.*
@ -15,7 +17,7 @@ import prog8.parser.ParseError
@TestInstance(TestInstance.Lifecycle.PER_CLASS) @TestInstance(TestInstance.Lifecycle.PER_CLASS)
class TestAstToSourceCode { class TestAstToSourceCode {
fun generateP8(module: Module) : String { private fun generateP8(module: Module) : String {
val program = Program("test", mutableListOf(module), DummyFunctions, DummyMemsizer) val program = Program("test", mutableListOf(module), DummyFunctions, DummyMemsizer)
module.linkParents(program) module.linkParents(program)
module.program = program module.program = program
@ -27,7 +29,7 @@ class TestAstToSourceCode {
return generatedText return generatedText
} }
fun roundTrip(module: Module): Pair<String, Module> { private fun roundTrip(module: Module): Pair<String, Module> {
val generatedText = generateP8(module) val generatedText = generateP8(module)
try { try {
val parsedAgain = parseModule(SourceCode.of(generatedText)) val parsedAgain = parseModule(SourceCode.of(generatedText))
@ -41,7 +43,7 @@ class TestAstToSourceCode {
@Test @Test
fun testMentionsInternedStringsModule() { fun testMentionsInternedStringsModule() {
val orig = SourceCode.of("\n") val orig = SourceCode.of("\n")
val (txt, module) = roundTrip(parseModule(orig)) val (txt, _) = roundTrip(parseModule(orig))
// assertContains has *actual* first! // assertContains has *actual* first!
assertContains(txt, Regex(";.*$internedStringsModuleName")) assertContains(txt, Regex(";.*$internedStringsModuleName"))
} }
@ -49,7 +51,7 @@ class TestAstToSourceCode {
@Test @Test
fun testTargetDirectiveAndComment() { fun testTargetDirectiveAndComment() {
val orig = SourceCode.of("%target 42 ; invalid arg - shouldn't matter\n") val orig = SourceCode.of("%target 42 ; invalid arg - shouldn't matter\n")
val (txt, module) = roundTrip(parseModule(orig)) val (txt, _) = roundTrip(parseModule(orig))
// assertContains has *actual* first! // assertContains has *actual* first!
assertContains(txt, Regex("%target +42")) assertContains(txt, Regex("%target +42"))
} }
@ -57,7 +59,7 @@ class TestAstToSourceCode {
@Test @Test
fun testImportDirectiveWithLib() { fun testImportDirectiveWithLib() {
val orig = SourceCode.of("%import textio\n") val orig = SourceCode.of("%import textio\n")
val (txt, module) = roundTrip(parseModule(orig)) val (txt, _) = roundTrip(parseModule(orig))
// assertContains has *actual* first! // assertContains has *actual* first!
assertContains(txt, Regex("%import +textio")) assertContains(txt, Regex("%import +textio"))
} }
@ -65,7 +67,7 @@ class TestAstToSourceCode {
@Test @Test
fun testImportDirectiveWithUserModule() { fun testImportDirectiveWithUserModule() {
val orig = SourceCode.of("%import my_own_stuff\n") val orig = SourceCode.of("%import my_own_stuff\n")
val (txt, module) = roundTrip(parseModule(orig)) val (txt, _) = roundTrip(parseModule(orig))
// assertContains has *actual* first! // assertContains has *actual* first!
assertContains(txt, Regex("%import +my_own_stuff")) assertContains(txt, Regex("%import +my_own_stuff"))
} }
@ -78,7 +80,7 @@ class TestAstToSourceCode {
str s = "fooBar\n" str s = "fooBar\n"
} }
""") """)
val (txt, module) = roundTrip(parseModule(orig)) val (txt, _) = roundTrip(parseModule(orig))
// assertContains has *actual* first! // assertContains has *actual* first!
assertContains(txt, Regex("str +s += +\"fooBar\\\\n\"")) assertContains(txt, Regex("str +s += +\"fooBar\\\\n\""))
} }
@ -90,33 +92,33 @@ class TestAstToSourceCode {
str sAlt = @"fooBar\n" str sAlt = @"fooBar\n"
} }
""") """)
val (txt, module) = roundTrip(parseModule(orig)) val (txt, _) = roundTrip(parseModule(orig))
// assertContains has *actual* first! // assertContains has *actual* first!
assertContains(txt, Regex("str +sAlt += +@\"fooBar\\\\n\"")) assertContains(txt, Regex("str +sAlt += +@\"fooBar\\\\n\""))
} }
@Test @Test
@Disabled @Disabled("TODO: char literals should be kept until code gen - step 4, 'introduce AST node CharLiteral'")
fun testCharLiteral_noAlt() { fun testCharLiteral_noAlt() {
val orig = SourceCode.of(""" val orig = SourceCode.of("""
main { main {
ubyte c = 'x' ubyte c = 'x'
} }
""") """)
val (txt, module) = roundTrip(parseModule(orig)) val (txt, _) = roundTrip(parseModule(orig))
// assertContains has *actual* first! // assertContains has *actual* first!
assertContains(txt, Regex("ubyte +c += +'x'"), "char literal") assertContains(txt, Regex("ubyte +c += +'x'"), "char literal")
} }
@Test @Test
@Disabled @Disabled("TODO: char literals should be kept until code gen - step 4, 'introduce AST node CharLiteral'")
fun testCharLiteral_withAlt() { fun testCharLiteral_withAlt() {
val orig = SourceCode.of(""" val orig = SourceCode.of("""
main { main {
ubyte cAlt = @'x' ubyte cAlt = @'x'
} }
""") """)
val (txt, module) = roundTrip(parseModule(orig)) val (txt, _) = roundTrip(parseModule(orig))
// assertContains has *actual* first! // assertContains has *actual* first!
assertContains(txt, Regex("ubyte +cAlt += +@'x'"), "alt char literal") assertContains(txt, Regex("ubyte +cAlt += +@'x'"), "alt char literal")
} }

View File

@ -1,11 +1,10 @@
package prog8tests package prog8tests
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.TestInstance import org.junit.jupiter.api.TestInstance
import org.junit.jupiter.api.Test
import kotlin.test.* import kotlin.test.*
import prog8tests.helpers.* import prog8tests.helpers.*
import java.nio.file.Path // TODO: use kotlin.io.path.Path instead
import kotlin.io.path.* import kotlin.io.path.*
import prog8.ast.Program import prog8.ast.Program

View File

@ -1,6 +1,9 @@
package prog8tests package prog8tests
import org.junit.jupiter.api.* import org.junit.jupiter.api.TestInstance
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.Disabled
import org.junit.jupiter.api.BeforeAll
import kotlin.test.* import kotlin.test.*
import prog8tests.helpers.* import prog8tests.helpers.*
import kotlin.io.path.* import kotlin.io.path.*
@ -295,7 +298,7 @@ class TestProg8Parser {
* TODO: this test is testing way too much at once * TODO: this test is testing way too much at once
*/ */
@Test @Test
@Disabled @Disabled("TODO: fix .position of nodes below Module - step 8, 'refactor AST gen'")
fun testInnerNodePositionsForSourceFromString() { fun testInnerNodePositionsForSourceFromString() {
val srcText = """ val srcText = """
%target 16, "abc" ; DirectiveArg directly inherits from Node - neither an Expression nor a Statement..? %target 16, "abc" ; DirectiveArg directly inherits from Node - neither an Expression nor a Statement..?

View File

@ -1,5 +1,8 @@
package prog8tests package prog8tests
import org.junit.jupiter.api.TestInstance
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.BeforeAll
import org.junit.jupiter.api.* import org.junit.jupiter.api.*
import kotlin.test.* import kotlin.test.*
import prog8tests.helpers.* import prog8tests.helpers.*
@ -8,7 +11,6 @@ import kotlin.io.path.*
import prog8.parser.SourceCode import prog8.parser.SourceCode
@TestInstance(TestInstance.Lifecycle.PER_CLASS) @TestInstance(TestInstance.Lifecycle.PER_CLASS)
class TestSourceCode { class TestSourceCode {
@ -156,10 +158,8 @@ class TestSourceCode {
assertThrows<NoSuchFileException> { SourceCode.fromResources(pathString) } assertThrows<NoSuchFileException> { SourceCode.fromResources(pathString) }
} }
/** @Test
* TODO("inside resources: cannot tell apart a folder from a file") @Disabled("TODO: inside resources: cannot tell apart a folder from a file")
*/
//@Test
fun testFromResourcesWithDirectory() { fun testFromResourcesWithDirectory() {
val pathString = "/prog8lib" val pathString = "/prog8lib"
assertThrows<AccessDeniedException> { SourceCode.fromResources(pathString) } assertThrows<AccessDeniedException> { SourceCode.fromResources(pathString) }