diff --git a/.github/workflows/build-test-publish.yml b/.github/workflows/build-test-publish.yml index 186dcd98..16d1dcca 100644 --- a/.github/workflows/build-test-publish.yml +++ b/.github/workflows/build-test-publish.yml @@ -12,6 +12,10 @@ jobs: - uses: actions/checkout@v2 + - uses: actions/setup-java@v1 + with: + java-version: '11' + - name: Build & Test uses: burrunan/gradle-cache-action@v1 with: diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml index cce0a9ce..3d1f238d 100644 --- a/.github/workflows/build-test.yml +++ b/.github/workflows/build-test.yml @@ -12,6 +12,10 @@ jobs: - uses: actions/checkout@v2 + - uses: actions/setup-java@v1 + with: + java-version: '11' + - name: Build & Test uses: burrunan/gradle-cache-action@v1 with: diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index ab27edf7..f5057b25 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -5,13 +5,17 @@ on: branches: [ master ] jobs: - build-test-publish: + publish: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 + - uses: actions/setup-java@v1 + with: + java-version: '11' + - name: Build Docs uses: burrunan/gradle-cache-action@v1 with: diff --git a/src/main/java/io/outfoxx/typescriptpoet/FileSpec.kt b/src/main/java/io/outfoxx/typescriptpoet/FileSpec.kt index b2c32be1..e83d1953 100644 --- a/src/main/java/io/outfoxx/typescriptpoet/FileSpec.kt +++ b/src/main/java/io/outfoxx/typescriptpoet/FileSpec.kt @@ -49,7 +49,7 @@ private constructor( val importsCollector = CodeWriter(NullAppendable, indent) importsCollector.use { emit(it, directory) } - val absPath = directory.resolve(modulePath) + val absPath = directory.resolve(modulePath).toAbsolutePath() val importedSymbols = importsCollector.referencedSymbols() diff --git a/src/test/java/io/outfoxx/typescriptpoet/test/FileSpecTests.kt b/src/test/java/io/outfoxx/typescriptpoet/test/FileSpecTests.kt index fad23a86..fe8ee014 100644 --- a/src/test/java/io/outfoxx/typescriptpoet/test/FileSpecTests.kt +++ b/src/test/java/io/outfoxx/typescriptpoet/test/FileSpecTests.kt @@ -18,6 +18,8 @@ package io.outfoxx.typescriptpoet.test import io.outfoxx.typescriptpoet.ClassSpec import io.outfoxx.typescriptpoet.FileSpec +import io.outfoxx.typescriptpoet.InterfaceSpec +import io.outfoxx.typescriptpoet.Modifier import io.outfoxx.typescriptpoet.ModuleSpec import io.outfoxx.typescriptpoet.SymbolSpec import io.outfoxx.typescriptpoet.TypeAliasSpec @@ -27,10 +29,89 @@ import org.hamcrest.CoreMatchers.equalTo import org.hamcrest.MatcherAssert.assertThat import org.junit.jupiter.api.DisplayName import org.junit.jupiter.api.Test +import java.nio.file.Path @DisplayName("FileSpec Tests") class FileSpecTests { + @Test + @DisplayName("Imports are not generated when type & class are exported together into relative directory") + fun testImportDetect() { + + val ifaceBuilder = + InterfaceSpec.builder("Test") + .addModifiers(Modifier.EXPORT) + .build() + + val classBuilder = + ClassSpec.builder("Test") + .addModifiers(Modifier.EXPORT) + .addMixin(TypeName.standard("Test@!test")) + .build() + + val testFile = + FileSpec.builder("test") + .addInterface(ifaceBuilder) + .addClass(classBuilder) + .build() + + assertThat( + buildString { + testFile.writeTo(this, Path.of("tester")) + }, + equalTo( + """ + + export interface Test { + } + + export class Test implements Test { + } + + """.trimIndent() + ) + ) + } + + @Test + @DisplayName("Imports are not generated when type & class are exported together into absolute directory") + fun testImportDetectAbsolute() { + + val ifaceBuilder = + InterfaceSpec.builder("Test") + .addModifiers(Modifier.EXPORT) + .build() + + val classBuilder = + ClassSpec.builder("Test") + .addModifiers(Modifier.EXPORT) + .addMixin(TypeName.standard("Test@!test")) + .build() + + val testFile = + FileSpec.builder("test") + .addInterface(ifaceBuilder) + .addClass(classBuilder) + .build() + + assertThat( + buildString { + testFile.writeTo(this, Path.of("tester").toAbsolutePath()) + }, + equalTo( + """ + + export interface Test { + } + + export class Test implements Test { + } + + """.trimIndent() + ) + ) + } + @Test @DisplayName("Tags on builders can be retrieved on builders and built specs") fun testTags() {