mirror of
				https://github.com/irmen/prog8.git
				synced 2025-11-04 10:16:13 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			69 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Kotlin
		
	
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Kotlin
		
	
	
	
	
	
package prog8tests.compiler
 | 
						|
 | 
						|
import io.kotest.core.spec.style.FunSpec
 | 
						|
import io.kotest.matchers.shouldNotBe
 | 
						|
import prog8.code.target.Cx16Target
 | 
						|
import prog8.compiler.CompilationResult
 | 
						|
import prog8.compiler.CompilerArguments
 | 
						|
import prog8.compiler.compileProgram
 | 
						|
import prog8tests.helpers.assumeReadableFile
 | 
						|
import prog8tests.helpers.fixturesDir
 | 
						|
import prog8tests.helpers.outputDir
 | 
						|
import prog8tests.helpers.workingDir
 | 
						|
import java.nio.file.Path
 | 
						|
import kotlin.io.path.absolute
 | 
						|
 | 
						|
/**
 | 
						|
 * ATTENTION: this is just kludge!
 | 
						|
 * They are not really unit tests, but rather tests of the whole process,
 | 
						|
 * from source file loading all the way through to running 64tass.
 | 
						|
 */
 | 
						|
class TestCompilerOptionSourcedirs: FunSpec({
 | 
						|
 | 
						|
    fun compileFile(filePath: Path, sourceDirs: List<String>): CompilationResult? {
 | 
						|
        val args = CompilerArguments(
 | 
						|
            filepath = filePath,
 | 
						|
            optimize = false,
 | 
						|
            writeAssembly = true,
 | 
						|
            warnSymbolShadowing = false,
 | 
						|
            quietAssembler = true,
 | 
						|
            asmListfile = false,
 | 
						|
            includeSourcelines = false,
 | 
						|
            experimentalCodegen = false,
 | 
						|
            dumpVariables = false,
 | 
						|
            dumpSymbols = false,
 | 
						|
            varsHighBank = null,
 | 
						|
            varsGolden = false,
 | 
						|
            slabsHighBank = null,
 | 
						|
            slabsGolden = false,
 | 
						|
            compilationTarget = Cx16Target.NAME,
 | 
						|
            dontSplitWordArrays = false,
 | 
						|
            breakpointCpuInstruction = null,
 | 
						|
            printAst1 = false,
 | 
						|
            printAst2 = false,
 | 
						|
            ignoreFootguns = false,
 | 
						|
            symbolDefs = emptyMap(),
 | 
						|
            sourceDirs,
 | 
						|
            outputDir
 | 
						|
        )
 | 
						|
        return compileProgram(args)
 | 
						|
    }
 | 
						|
 | 
						|
    test("testAbsoluteFilePathOutsideWorkingDir") {
 | 
						|
        val filepath = assumeReadableFile(fixturesDir, "ast_simple_main.p8")
 | 
						|
        compileFile(filepath.absolute(), listOf()) shouldNotBe null
 | 
						|
    }
 | 
						|
 | 
						|
    test("testFilePathOutsideWorkingDirRelativeToWorkingDir") {
 | 
						|
        val filepath = workingDir.relativize(assumeReadableFile(fixturesDir, "ast_simple_main.p8").absolute())
 | 
						|
        compileFile(filepath, listOf()) shouldNotBe null
 | 
						|
    }
 | 
						|
 | 
						|
    test("testFilePathOutsideWorkingDirRelativeTo1stInSourcedirs") {
 | 
						|
        val filepath = assumeReadableFile(fixturesDir, "ast_simple_main.p8")
 | 
						|
        val sourcedirs = listOf("$fixturesDir")
 | 
						|
        compileFile(filepath.fileName, sourcedirs) shouldNotBe null
 | 
						|
    }
 | 
						|
 | 
						|
})
 |