mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Add unit tests for GenerateCodegenSchemaTask
Summary: Adding tests for the `GenerateCodegenSchemaTask`. Plus fixing a bug where `delete()` was used instead of `deleteRecursively` causing the files inside the output folder to don't be properly cleaned up. Changelog: [Internal] [Changed] - Add unit tests for GenerateCodegenSchemaTask Reviewed By: ShikaSD Differential Revision: D31142346 fbshipit-source-id: 69bb026fa2c64d91193a153fdc99c9b5d0a9e1ff
This commit is contained in:
committed by
Facebook GitHub Bot
parent
0d9b32769c
commit
861acce530
+9
-2
@@ -35,11 +35,19 @@ abstract class GenerateCodegenSchemaTask : Exec() {
|
||||
val generatedSchemaFile: Provider<RegularFile> = generatedSrcDir.file("schema.json")
|
||||
|
||||
override fun exec() {
|
||||
wipeOutputDir()
|
||||
setupCommandLine()
|
||||
super.exec()
|
||||
}
|
||||
|
||||
internal fun wipeOutputDir() {
|
||||
generatedSrcDir.asFile.get().apply {
|
||||
delete()
|
||||
deleteRecursively()
|
||||
mkdirs()
|
||||
}
|
||||
}
|
||||
|
||||
internal fun setupCommandLine() {
|
||||
commandLine(
|
||||
windowsAwareYarn(
|
||||
*nodeExecutableAndArgs.get().toTypedArray(),
|
||||
@@ -51,6 +59,5 @@ abstract class GenerateCodegenSchemaTask : Exec() {
|
||||
generatedSchemaFile.get().asFile.absolutePath,
|
||||
jsRootDir.asFile.get().absolutePath,
|
||||
))
|
||||
super.exec()
|
||||
}
|
||||
}
|
||||
|
||||
+116
@@ -0,0 +1,116 @@
|
||||
/*
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
package com.facebook.react.tasks
|
||||
|
||||
import com.facebook.react.tests.OS
|
||||
import com.facebook.react.tests.OsRule
|
||||
import com.facebook.react.tests.WithOs
|
||||
import com.facebook.react.tests.createTestTask
|
||||
import java.io.File
|
||||
import org.gradle.api.tasks.*
|
||||
import org.junit.Assert.*
|
||||
import org.junit.Rule
|
||||
import org.junit.Test
|
||||
import org.junit.rules.TemporaryFolder
|
||||
|
||||
class GenerateCodegenSchemaTaskTest {
|
||||
|
||||
@get:Rule val tempFolder = TemporaryFolder()
|
||||
|
||||
@get:Rule val osRule = OsRule()
|
||||
|
||||
@Test
|
||||
fun generateCodegenSchema_inputFiles_areSetCorrectly() {
|
||||
val jsRootDir =
|
||||
tempFolder.newFolder("js").apply {
|
||||
File(this, "file.js").createNewFile()
|
||||
File(this, "ignore.txt").createNewFile()
|
||||
}
|
||||
|
||||
val task = createTestTask<GenerateCodegenSchemaTask> { it.jsRootDir.set(jsRootDir) }
|
||||
|
||||
assertEquals(jsRootDir, task.jsInputFiles.dir)
|
||||
assertEquals(setOf("**/*.js"), task.jsInputFiles.includes)
|
||||
assertEquals(1, task.jsInputFiles.files.size)
|
||||
assertEquals(setOf(File(jsRootDir, "file.js")), task.jsInputFiles.files)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun generateCodegenSchema_outputFile_isSetCorrectly() {
|
||||
val outputDir = tempFolder.newFolder("output")
|
||||
|
||||
val task = createTestTask<GenerateCodegenSchemaTask> { it.generatedSrcDir.set(outputDir) }
|
||||
|
||||
assertEquals(File(outputDir, "schema.json"), task.generatedSchemaFile.get().asFile)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun generateCodegenSchema_nodeExecutablesArgs_areInsideInput() {
|
||||
val task =
|
||||
createTestTask<GenerateCodegenSchemaTask> {
|
||||
it.nodeExecutableAndArgs.set(listOf("npm", "help"))
|
||||
}
|
||||
|
||||
assertEquals(listOf("npm", "help"), task.nodeExecutableAndArgs.get())
|
||||
assertTrue(task.inputs.properties.containsKey("nodeExecutableAndArgs"))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun wipeOutputDir_willCreateOutputDir() {
|
||||
val task =
|
||||
createTestTask<GenerateCodegenSchemaTask> {
|
||||
it.generatedSrcDir.set(File(tempFolder.root, "output"))
|
||||
}
|
||||
|
||||
task.wipeOutputDir()
|
||||
|
||||
assertTrue(File(tempFolder.root, "output").exists())
|
||||
assertEquals(0, File(tempFolder.root, "output").listFiles()?.size)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun wipeOutputDir_willWipeOutputDir() {
|
||||
val outputDir =
|
||||
tempFolder.newFolder("output").apply { File(this, "some-generated-file").createNewFile() }
|
||||
|
||||
val task = createTestTask<GenerateCodegenSchemaTask> { it.generatedSrcDir.set(outputDir) }
|
||||
|
||||
task.wipeOutputDir()
|
||||
|
||||
assertTrue(outputDir.exists())
|
||||
assertEquals(0, outputDir.listFiles()?.size)
|
||||
}
|
||||
|
||||
@Test
|
||||
@WithOs(OS.UNIX)
|
||||
fun setupCommandLine_willSetupCorrectly() {
|
||||
val codegenDir = tempFolder.newFolder("codegen")
|
||||
val jsRootDir = tempFolder.newFolder("js")
|
||||
val outputDir = tempFolder.newFolder("output")
|
||||
|
||||
val task =
|
||||
createTestTask<GenerateCodegenSchemaTask> {
|
||||
it.codegenDir.set(codegenDir)
|
||||
it.jsRootDir.set(jsRootDir)
|
||||
it.generatedSrcDir.set(outputDir)
|
||||
it.nodeExecutableAndArgs.set(listOf("--verbose"))
|
||||
}
|
||||
|
||||
task.setupCommandLine()
|
||||
|
||||
assertEquals(
|
||||
listOf(
|
||||
"yarn",
|
||||
"--verbose",
|
||||
File(codegenDir, "lib/cli/combine/combine-js-to-schema-cli.js").toString(),
|
||||
File(outputDir, "schema.json").toString(),
|
||||
jsRootDir.toString(),
|
||||
),
|
||||
task.commandLine.toMutableList())
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user