How to use Path.shouldContainFiles method of io.kotest.matchers.paths.paths class

Best Kotest code snippet using io.kotest.matchers.paths.paths.Path.shouldContainFiles

FileMatchersTest.kt

Source:FileMatchersTest.kt Github

copy

Full Screen

1package com.sksamuel.kotest.matchers.file2import io.kotest.assertions.throwables.shouldThrow3import io.kotest.core.spec.style.FunSpec4import io.kotest.matchers.file.aDirectory5import io.kotest.matchers.file.aFile6import io.kotest.matchers.file.beAbsolute7import io.kotest.matchers.file.beRelative8import io.kotest.matchers.file.exist9import io.kotest.matchers.file.haveExtension10import io.kotest.matchers.file.shouldBeADirectory11import io.kotest.matchers.file.shouldBeAFile12import io.kotest.matchers.file.shouldBeAbsolute13import io.kotest.matchers.file.shouldBeEmptyDirectory14import io.kotest.matchers.file.shouldBeRelative15import io.kotest.matchers.file.shouldBeSymbolicLink16import io.kotest.matchers.file.shouldExist17import io.kotest.matchers.file.shouldHaveExtension18import io.kotest.matchers.file.shouldHaveParent19import io.kotest.matchers.file.shouldHaveSameStructureAs20import io.kotest.matchers.file.shouldHaveSameStructureAndContentAs21import io.kotest.matchers.file.shouldNotBeADirectory22import io.kotest.matchers.file.shouldNotBeAFile23import io.kotest.matchers.file.shouldNotBeEmptyDirectory24import io.kotest.matchers.file.shouldNotBeSymbolicLink25import io.kotest.matchers.file.shouldNotExist26import io.kotest.matchers.file.shouldNotHaveExtension27import io.kotest.matchers.file.shouldNotHaveParent28import io.kotest.matchers.file.shouldStartWithPath29import io.kotest.matchers.file.startWithPath30import io.kotest.matchers.paths.shouldBeLarger31import io.kotest.matchers.paths.shouldBeSmaller32import io.kotest.matchers.paths.shouldBeSymbolicLink33import io.kotest.matchers.paths.shouldContainFile34import io.kotest.matchers.paths.shouldContainFileDeep35import io.kotest.matchers.paths.shouldContainFiles36import io.kotest.matchers.paths.shouldHaveParent37import io.kotest.matchers.paths.shouldNotBeSymbolicLink38import io.kotest.matchers.paths.shouldNotContainFile39import io.kotest.matchers.paths.shouldNotContainFileDeep40import io.kotest.matchers.paths.shouldNotContainFiles41import io.kotest.matchers.paths.shouldNotHaveParent42import io.kotest.matchers.should43import io.kotest.matchers.shouldBe44import io.kotest.matchers.shouldNot45import io.kotest.matchers.string.shouldEndWith46import io.kotest.matchers.string.shouldMatch47import java.io.File48import java.nio.file.Files49import java.nio.file.Paths50import org.apache.commons.lang3.SystemUtils.IS_OS_WINDOWS51@Suppress("BlockingMethodInNonBlockingContext")52class FileMatchersTest : FunSpec() {53 init {54 test("relative() should match only relative files") {55 File("sammy/boy") shouldBe beRelative()56 File("sammy/boy").shouldBeRelative()57 }58 test("absolute() should match only absolute files") {59 val root = if (IS_OS_WINDOWS) "C:/" else "/"60 File("${root}sammy/boy") shouldBe beAbsolute()61 File("${root}sammy/boy").shouldBeAbsolute()62 }63 test("startWithPath() should only match files that start with the given path") {64 File("sammy/boy") should startWithPath("sammy")65 File("sammy/boy") should startWithPath(Paths.get("sammy"))66 File("/sammy/boy") should startWithPath("${File.separator}sammy")67 File("/sammy/boy") should startWithPath(Paths.get("/sammy"))68 File("/sammy/boy").shouldStartWithPath("${File.separator}sammy")69 File("/sammy/boy").shouldStartWithPath(Paths.get("/sammy"))70 }71 test("exist() file matcher") {72 val file = Files.createTempFile("test", "test").toFile()73 file should exist()74 shouldThrow<AssertionError> {75 File("qweqwewqewqewee") should exist()76 }.message shouldBe "File qweqwewqewqewee should exist"77 file.shouldExist()78 shouldThrow<AssertionError> {79 file.shouldNotExist()80 }81 file.delete()82 }83 test("haveExtension") {84 val file = Files.createTempFile("test", ".test").toFile()85 file should haveExtension(".test")86 file shouldNot haveExtension(".wibble")87 shouldThrow<AssertionError> {88 file should haveExtension(".jpeg")89 }.message.shouldEndWith("with one of .jpeg")90 shouldThrow<AssertionError> {91 file.shouldHaveExtension(".jpeg")92 }.message.shouldEndWith("with one of .jpeg")93 file.shouldHaveExtension(".test")94 file.shouldNotHaveExtension(".wibble")95 file.delete()96 }97 test("aFile() file matcher") {98 val file = Files.createTempFile("test", "test").toFile()99 file shouldBe aFile()100 file.shouldBeAFile()101 shouldThrow<AssertionError> {102 file shouldBe aDirectory()103 }104 shouldThrow<AssertionError> {105 file.shouldNotBeAFile()106 }107 shouldThrow<AssertionError> {108 file.shouldBeADirectory()109 }110 file.delete()111 }112 test("aDirectory() file matcher") {113 val dir = Files.createTempDirectory("testdir").toFile()114 dir shouldBe aDirectory()115 dir.shouldBeADirectory()116 shouldThrow<AssertionError> {117 dir shouldBe aFile()118 }119 shouldThrow<AssertionError> {120 dir.shouldNotBeADirectory()121 }122 shouldThrow<AssertionError> {123 dir shouldBe aFile()124 }125 }126 test("directory should be empty (deprecated)") {127 val dir = Files.createTempDirectory("testdir").toFile()128 dir.shouldBeEmptyDirectory()129 dir.resolve("testfile.txt").writeBytes(byteArrayOf(1, 2, 3))130 dir.shouldNotBeEmptyDirectory()131 }132 test("directory should be empty") {133 val dir = Files.createTempDirectory("testdir").toFile()134 dir.shouldBeEmptyDirectory()135 dir.resolve("testfile.txt").writeBytes(byteArrayOf(1, 2, 3))136 dir.shouldNotBeEmptyDirectory()137 }138 test("directory contains file matching predicate") {139 val dir = Files.createTempDirectory("testdir")140 dir.resolve("a").toFile().createNewFile()141 dir.resolve("b").toFile().createNewFile()142 dir.shouldContainFile("a")143 dir.shouldNotContainFile("c")144 shouldThrow<AssertionError> {145 dir.shouldContainFile("c")146 }.message?.shouldMatch("^Directory .+ should contain a file with filename c \\(detected 2 other files\\)$".toRegex())147 }148 test("beSmaller should compare file sizes") {149 val dir = Files.createTempDirectory("testdir")150 Files.write(dir.resolve("a"), byteArrayOf(1, 2))151 Files.write(dir.resolve("b"), byteArrayOf(1, 2, 3))152 dir.resolve("a").shouldBeSmaller(dir.resolve("b"))153 shouldThrow<AssertionError> {154 dir.resolve("b").shouldBeSmaller(dir.resolve("a"))155 }.message shouldBe "Path ${dir.resolve("b")} (3 bytes) should be smaller than ${dir.resolve("a")} (2 bytes)"156 }157 test("beLarger should compare file sizes") {158 val dir = Files.createTempDirectory("testdir")159 Files.write(dir.resolve("a"), byteArrayOf(1, 2, 3))160 Files.write(dir.resolve("b"), byteArrayOf(1, 2))161 dir.resolve("a").shouldBeLarger(dir.resolve("b"))162 shouldThrow<AssertionError> {163 dir.resolve("b").shouldBeLarger(dir.resolve("a"))164 }.message shouldBe "File ${dir.resolve("b")} (2 bytes) should be larger than ${dir.resolve("a")} (3 bytes)"165 }166 test("containsFileDeep should find file deep") {167 val rootFileName = "super_dooper_hyper_file_root"168 val innerFileName = "super_dooper_hyper_file_inner"169 val nonExistentFileName = "super_dooper_hyper_non_existent_file"170 val rootDir = Files.createTempDirectory("testdir")171 val innerDir = Files.createDirectories(rootDir.resolve("innerfolder"))172 Files.write(rootDir.resolve(rootFileName), byteArrayOf(1, 2, 3))173 Files.write(innerDir.resolve(innerFileName), byteArrayOf(1, 2, 3))174 rootDir.shouldContainFileDeep(rootFileName)175 rootDir.shouldContainFileDeep(innerFileName)176 shouldThrow<AssertionError> {177 rootDir.shouldContainFileDeep(nonExistentFileName)178 }.message shouldBe "Path $nonExistentFileName should exist in $rootDir"179 shouldThrow<AssertionError> {180 rootDir.shouldNotContainFileDeep(rootFileName)181 }.message shouldBe "Path $rootFileName should not exist in $rootDir"182 }183 test("shouldContainFiles should check if files exists") {184 val testDir = Files.createTempDirectory("testdir")185 Files.write(testDir.resolve("a.txt"), byteArrayOf(1, 2, 3))186 Files.write(testDir.resolve("b.gif"), byteArrayOf(1, 2, 3))187 Files.write(testDir.resolve("c.doc"), byteArrayOf(1, 2, 3))188 testDir.shouldContainFiles("a.txt", "b.gif", "c.doc")189 testDir.shouldNotContainFiles("d.txt", "e.gif", "f.doc")190 shouldThrow<AssertionError> {191 testDir.shouldContainFiles("d.txt")192 }.message shouldBe "File d.txt should exist in $testDir"193 shouldThrow<AssertionError> {194 testDir.shouldContainFiles("d.txt", "e.gif")195 }.message shouldBe "Files d.txt, e.gif should exist in $testDir"196 shouldThrow<AssertionError> {197 testDir.shouldNotContainFiles("a.txt")198 }.message shouldBe "File a.txt should not exist in $testDir"199 shouldThrow<AssertionError> {200 testDir.shouldNotContainFiles("a.txt", "b.gif")201 }.message shouldBe "Files a.txt, b.gif should not exist in $testDir"202 }203 test("shouldBeSymbolicLink should check if file is symbolic link").config(enabled = isNotWindowsOrIsWindowsElevated()) {204 val testDir = Files.createTempDirectory("testdir")205 val existingFile = Files.write(testDir.resolve("original.txt"), byteArrayOf(1, 2, 3, 4))206 val existingFileAsFile = existingFile.toFile()207 val link = Files.createSymbolicLink(testDir.resolve("a.txt"), existingFile)208 val linkAsFile = link.toFile()209 link.shouldBeSymbolicLink()210 linkAsFile.shouldBeSymbolicLink()211 existingFile.shouldNotBeSymbolicLink()212 existingFileAsFile.shouldNotBeSymbolicLink()213 }214 test("shouldHaveParent should check if file has any parent with given name") {215 val testDir = Files.createTempDirectory("testdir")216 val subdir = Files.createDirectory(testDir.resolve("sub_testdir"))217 val file = Files.write(subdir.resolve("a.txt"), byteArrayOf(1, 2, 3, 4))218 val fileAsFile = file.toFile()219 file.shouldHaveParent(testDir.toFile().name)220 file.shouldHaveParent(subdir.toFile().name)221 file.shouldNotHaveParent("super_hyper_long_random_file_name")222 fileAsFile.shouldHaveParent(testDir.toFile().name)223 fileAsFile.shouldHaveParent(subdir.toFile().name)224 fileAsFile.shouldNotHaveParent("super_hyper_long_random_file_name")225 }226 test("shouldHaveSameStructureAs and shouldHaveSameStructureAndContentAs two file trees") {227 val testDir = Files.createTempDirectory("testdir")228 val expectDir = File("$testDir/expect").apply {229 File("$this/a.txt").createWithContent(byteArrayOf(1, 2, 3))230 File("$this/b.txt").createWithContent(byteArrayOf(1, 2, 3, 4))231 File("$this/subfolder/b.txt").createWithContent(byteArrayOf(1, 2, 3, 4))232 File("$this/subfolder/subfolder-two/c.txt").createWithContent(byteArrayOf(1, 2))233 }234 val actualDir = File("$testDir/actual").apply {235 File("$this/a.txt").createWithContent(byteArrayOf(1, 2, 3))236 File("$this/b.txt").createWithContent(byteArrayOf(1, 2, 3, 4))237 File("$this/subfolder/b.txt").createWithContent(byteArrayOf(1, 2, 3, 4))238 File("$this/subfolder/subfolder-two/c.txt").createWithContent(byteArrayOf(1, 2))239 }240 expectDir shouldHaveSameStructureAs actualDir241 expectDir shouldHaveSameStructureAndContentAs actualDir242 File("$expectDir/z.txt").createWithContent(byteArrayOf(1, 2, 3))243 shouldThrow<AssertionError> { expectDir shouldHaveSameStructureAs actualDir }244 shouldThrow<AssertionError> { expectDir shouldHaveSameStructureAndContentAs actualDir }245 File("$actualDir/z.txt").createWithContent(byteArrayOf(1, 2, 3, 4))246 expectDir shouldHaveSameStructureAs actualDir247 shouldThrow<AssertionError> { expectDir shouldHaveSameStructureAndContentAs actualDir }248 }249 test("shouldHaveSameStructureAs with filter should check if two file trees are the same and files have the same content") {250 val testDir = Files.createTempDirectory("testdir")251 val expectDir = File("$testDir/expect").apply {252 File("$this/a.txt").createWithContent("a/b")253 File("$this/b.txt").createWithContent("b/c")254 File("$this/subfolder/b.txt").createWithContent("b/c")255 File("$this/subfolder/subfolder-two/c.txt").createWithContent("c/d")256 File("$this/z.txt").createWithContent("z")257 }258 val actualDir = File("$testDir/actual").apply {259 File("$this/a.txt").createWithContent("a/b")260 File("$this/b.txt").createWithContent("b/c")261 File("$this/subfolder/b.txt").createWithContent("b/c")262 File("$this/subfolder/subfolder-two/c.txt").createWithContent("c/d")263 File("$this/z.txt").createWithContent("zz")264 }265 expectDir.shouldHaveSameStructureAs(actualDir, filterLhs = { it.name == "z.txt" })266 expectDir.shouldHaveSameStructureAs(actualDir, filterRhs = { it.name == "z.txt" })267 }268 test("shouldHaveSameStructureAndContentAs with compare and filter should check if two file trees are the same and files have the same content") {269 val testDir = Files.createTempDirectory("testdir")270 val expectDir = File("$testDir/expect").apply {271 File("$this/a.txt").createWithContent("a/b")272 File("$this/b.txt").createWithContent("b/c")273 File("$this/subfolder/b.txt").createWithContent("b/c")274 File("$this/subfolder/subfolder-two/c.txt").createWithContent("c/d")275 }276 val actualDir = File("$testDir/actual").apply {277 File("$this/a.txt").createWithContent("a/b")278 File("$this/b.txt").createWithContent("b\\c")279 File("$this/subfolder/b.txt").createWithContent("b\\c")280 File("$this/subfolder/subfolder-two/c.txt").createWithContent("c\\d")281 }282 expectDir.shouldHaveSameStructureAs(actualDir) { a, b ->283 a.isFile && b.isFile && a.readText() == b.readText().replace("\\", "/")284 }285 expectDir.shouldHaveSameStructureAndContentAs(actualDir, filterLhs = { it.name != "a.txt" })286 expectDir.shouldHaveSameStructureAndContentAs(actualDir, filterRhs = { it.name != "a.txt" })287 }288 }289}290private fun File.createWithContent(content: String) {291 this.parentFile.mkdirs()292 createNewFile()293 writeText(content)294}295private fun File.createWithContent(content: ByteArray) {296 this.parentFile.mkdirs()297 createNewFile()298 writeBytes(content)299}300private fun isNotWindowsOrIsWindowsElevated(): Boolean {301 return if (!IS_OS_WINDOWS) {302 true303 } else {304 try {305 val p = Runtime.getRuntime().exec("""reg query "HKU\S-1-5-19"""")306 p.waitFor()307 0 == p.exitValue()308 } catch (ex: Exception) {309 println("Failed to determine if process had elevated permissions, assuming it does not.")310 false311 }312 }313}...

Full Screen

Full Screen

paths.kt

Source:paths.kt Github

copy

Full Screen

1package io.kotest.matchers.paths2import io.kotest.matchers.Matcher3import io.kotest.matchers.MatcherResult4import io.kotest.matchers.file.beLarger5import io.kotest.matchers.file.beEmptyDirectory6import io.kotest.matchers.file.containNFiles7import io.kotest.matchers.should8import io.kotest.matchers.shouldBe9import io.kotest.matchers.shouldNot10import io.kotest.matchers.shouldNotBe11import java.io.File12import java.nio.file.Files13import java.nio.file.Path14import kotlin.streams.toList15infix fun Path.shouldStartWithPath(file: File) = this should startWithPath(file)16infix fun Path.shouldNotStartWithPath(file: File) = this shouldNot startWithPath(file)17infix fun Path.shouldStartWithPath(prefix: String) = this should startWithPath(prefix)18infix fun Path.shouldNotStartWithPath(prefix: String) = this shouldNot startWithPath(prefix)19infix fun Path.shouldStartWithPath(path: Path) = this should startWithPath(path)20infix fun Path.shouldNotStartWithPath(path: Path) = this shouldNot startWithPath(path)21fun startWithPath(path: Path) = startWithPath(path.toString())22fun startWithPath(file: File) = startWithPath(file.toPath())23fun startWithPath(prefix: String) = object : Matcher<Path> {24 override fun test(value: Path): MatcherResult = MatcherResult(25 value.toString().startsWith(prefix),26 { "Path $value should start with $prefix" },27 { "Path $value should not start with $prefix" })28}29fun Path.shouldExist() = this should exist()30fun Path.shouldNotExist() = this shouldNot exist()31fun exist() = object : Matcher<Path> {32 override fun test(value: Path) =33 MatcherResult(34 Files.exists(value),35 { "Path $value should exist" },36 { "Path $value should not exist" })37}38infix fun Path.shouldHaveFileSize(size: Long) = this should haveFileSize(size)39infix fun Path.shouldNotHaveFileSize(size: Long) = this shouldNot haveFileSize(size)40fun haveFileSize(size: Long): Matcher<Path> = object : Matcher<Path> {41 override fun test(value: Path): MatcherResult = MatcherResult(42 Files.size(value) == size,43 { "Path $value should have size $size" },44 { "Path $value should not have size $size" })45}46fun Path.shouldBeADirectory() = this should aDirectory()47fun Path.shouldNotBeADirectory() = this shouldNot aDirectory()48fun aDirectory(): Matcher<Path> = object : Matcher<Path> {49 override fun test(value: Path): MatcherResult = MatcherResult(50 Files.isDirectory(value),51 { "File $value should be a directory" },52 { "File $value should not be a directory" })53}54fun Path.shouldBeAFile() = this should aFile()55fun Path.shouldNotBeAFile() = this shouldNot aFile()56fun aFile(): Matcher<Path> = object : Matcher<Path> {57 override fun test(value: Path): MatcherResult = MatcherResult(58 !Files.isDirectory(value),59 { "File $value should be a directory" },60 { "File $value should not be a directory" })61}62fun Path.shouldBeAbsolute() = this should beAbsolute()63fun Path.shouldNotBeAbsolute() = this shouldNot beAbsolute()64fun beAbsolute(): Matcher<Path> = object : Matcher<Path> {65 override fun test(value: Path): MatcherResult =66 MatcherResult(67 value.isAbsolute,68 { "Path $value should be absolute" },69 { "Path $value should not be absolute" })70}71fun Path.shouldBeRelative() = this should beRelative()72fun Path.shouldNotBeRelative() = this shouldNot beRelative()73fun beRelative(): Matcher<Path> = object : Matcher<Path> {74 override fun test(value: Path): MatcherResult =75 MatcherResult(76 !value.isAbsolute,77 { "Path $value should be relative" },78 { "Path $value should not be relative" })79}80fun Path.shouldBeReadable() = this should beReadable()81fun Path.shouldNotBeReadable() = this shouldNot beReadable()82fun beReadable(): Matcher<Path> = object : Matcher<Path> {83 override fun test(value: Path): MatcherResult =84 MatcherResult(85 Files.isReadable(value),86 { "Path $value should be readable" },87 { "Path $value should not be readable" }88 )89}90fun Path.shouldBeWriteable() = this should beWriteable()91fun Path.shouldNotBeWriteable() = this shouldNot beWriteable()92fun beWriteable(): Matcher<Path> = object : Matcher<Path> {93 override fun test(value: Path): MatcherResult =94 MatcherResult(95 Files.isWritable(value),96 { "Path $value should be writeable" },97 { "Path $value should not be writeable" }98 )99}100fun Path.shouldBeExecutable() = this should beExecutable()101fun Path.shouldNotBeExecutable() = this shouldNot beExecutable()102fun beExecutable(): Matcher<Path> = object : Matcher<Path> {103 override fun test(value: Path): MatcherResult = MatcherResult(104 Files.isExecutable(value),105 { "Path $value should be executable" },106 { "Path $value should not be executable" }107 )108}109infix fun Path.shouldContainNFiles(n: Int) = this.toFile() shouldBe containNFiles(n)110infix fun Path.shouldNotContainNFiles(n: Int) = this.toFile() shouldNotBe containNFiles(n)111@Deprecated(message ="checks if a directory is empty. Deprecated since 4.3.", replaceWith = ReplaceWith("shouldBeEmptyDirectory()"))112fun Path.shouldBeNonEmptyDirectory() = this.toFile() shouldNot beEmptyDirectory()113@Deprecated(message ="checks if a directory is not empty. Deprecated since 4.3.", replaceWith = ReplaceWith("shouldBeNonEmptyDirectory()"))114fun Path.shouldNotBeNonEmptyDirectory() = this.toFile() should beEmptyDirectory()115fun Path.shouldBeEmptyDirectory() = this.toFile() should beEmptyDirectory()116fun Path.shouldNotBeEmptyDirectory() = this.toFile() shouldNot beEmptyDirectory()117fun Path.shouldBeHidden() = this should beHidden()118fun Path.shouldNotBeHidden() = this shouldNot beHidden()119fun beHidden(): Matcher<Path> = object : Matcher<Path> {120 override fun test(value: Path): MatcherResult =121 MatcherResult(122 Files.isHidden(value),123 { "Path $value should be hidden" },124 { "Path $value should not be hidden" })125}126fun Path.shouldBeCanonical() = this should beCanonicalPath()127fun Path.shouldNotBeCanonical() = this shouldNot beCanonicalPath()128fun beCanonicalPath(): Matcher<Path> = object : Matcher<Path> {129 override fun test(value: Path): MatcherResult = MatcherResult(130 value.toFile().canonicalPath == value.toFile().path,131 { "File $value should be canonical" },132 { "File $value should not be canonical" })133}134infix fun Path.shouldContainFile(name: String) = this should containFile(name)135infix fun Path.shouldNotContainFile(name: String) = this shouldNot containFile(name)136fun containFile(name: String) = object : Matcher<Path> {137 override fun test(value: Path): MatcherResult {138 val contents = Files.list(value).map { it.fileName.toString() }.toList()139 val passed = Files.isDirectory(value) && contents.contains(name)140 return MatcherResult(141 passed,142 { "Directory $value should contain a file with filename $name (detected ${contents.size} other files)" },143 { "Directory $value should not contain a file with filename $name" })144 }145}146infix fun Path.shouldBeLarger(other: Path) = this.toFile() should beLarger(other.toFile())147infix fun Path.shouldBeLarger(other: File) = this.toFile() should beLarger(other)148infix fun Path.shouldNotBeLarger(other: Path) = this.toFile() shouldNot beLarger(other.toFile())149infix fun Path.shouldNotBeLarger(other: File) = this.toFile() shouldNot beLarger(other)150fun beLarger(other: Path): Matcher<Path> = object : Matcher<Path> {151 override fun test(value: Path): MatcherResult {152 val sizea = Files.size(value)153 val sizeb = Files.size(other)154 return MatcherResult(155 sizea > sizeb,156 { "Path $value ($sizea bytes) should be larger than $other ($sizeb bytes)" },157 { "Path $value ($sizea bytes) should not be larger than $other ($sizeb bytes)"})158 }159}160infix fun Path.shouldBeSmaller(other: Path) = this should beSmaller(other)161infix fun Path.shouldBeSmaller(other: File) = this should beSmaller(other.toPath())162infix fun Path.shouldNotBeSmaller(other: Path) = this shouldNot beSmaller(other)163infix fun Path.shouldNotBeSmaller(other: File) = this shouldNot beSmaller(other.toPath())164fun beSmaller(other: Path): Matcher<Path> = object : Matcher<Path> {165 override fun test(value: Path): MatcherResult {166 val sizea = Files.size(value)167 val sizeb = Files.size(other)168 return MatcherResult(169 sizea < sizeb,170 { "Path $value ($sizea bytes) should be smaller than $other ($sizeb bytes)" },171 { "Path $value ($sizea bytes) should not be smaller than $other ($sizeb bytes)" })172 }173}174infix fun Path.shouldContainFileDeep(name: String) = this should containFileDeep(name)175infix fun Path.shouldNotContainFileDeep(name: String) = this shouldNot containFileDeep(name)176fun containFileDeep(name: String): Matcher<Path> = object : Matcher<Path> {177 private fun fileExists(dir: Path): Boolean {178 val contents = Files.list(dir).toList()179 val (dirs, files) = contents.partition { Files.isDirectory(it) }180 return files.map { it.fileName.toString() }.contains(name) || dirs.any(::fileExists)181 }182 override fun test(value: Path): MatcherResult = MatcherResult(183 fileExists(value),184 { "Path $name should exist in $value" },185 { "Path $name should not exist in $value" }186 )187}188fun Path.shouldContainFiles(vararg files: String) = this should containFiles(files.asList())189fun Path.shouldNotContainFiles(vararg files: String) = this shouldNot containFiles(files.asList())190fun containFiles(names: List<String>) = object : Matcher<Path> {191 override fun test(value: Path): MatcherResult {192 val files = Files.list(value).toList().map { it.fileName.toString() }193 val existingFiles = names.intersect(files)194 val nonExistingFiles = names.subtract(existingFiles)195 return MatcherResult(196 nonExistingFiles.isEmpty(),197 { buildMessage(value, nonExistingFiles, false) },198 {199 buildMessage(value, existingFiles, true)200 })201 }202 private fun buildMessage(path: Path, fileList: Set<String>, isNegative: Boolean): String {203 val fileString = if (fileList.size > 1) "Files" else "File"204 val negativeWord = if (isNegative) " not" else ""205 val filesString = fileList.sorted().joinToString(", ")206 return "$fileString $filesString should$negativeWord exist in $path"207 }208}209fun Path.shouldBeSymbolicLink() = this should beSymbolicLink()210fun Path.shouldNotBeSymbolicLink() = this shouldNot beSymbolicLink()211fun beSymbolicLink() = object : Matcher<Path> {212 override fun test(value: Path) = MatcherResult(213 Files.isSymbolicLink(value),214 { "Path $value should be a symbolic link" },215 { "Path $value should not be a symbolic link" }216 )217}218infix fun Path.shouldHaveParent(name: String) = this should haveParent(name)219infix fun Path.shouldNotHaveParent(name: String) = this shouldNot haveParent(name)220fun haveParent(name: String) = object : Matcher<Path> {221 private fun isParentEqualExpected(parent: Path?): Boolean {222 if (parent == null) return false223 return parent.fileName?.toString() == name || isParentEqualExpected(parent.parent)224 }225 override fun test(value: Path) = MatcherResult(226 isParentEqualExpected(value.parent),227 { "Path $value should have parent $name" },228 { "Path $value should not have parent $name" }229 )230}...

Full Screen

Full Screen

Path.shouldContainFiles

Using AI Code Generation

copy

Full Screen

1Path("/tmp").shouldContainFiles("a.txt", "b.txt")2Path("/tmp").shouldContainDirectories("a", "b")3Path("/tmp/a.txt").shouldHaveExtension("txt")4Path("/tmp/a.txt").shouldNotHaveExtension("txt")5Path("/tmp/a.txt").shouldHaveFileName("a.txt")6Path("/tmp/a.txt").shouldNotHaveFileName("a.txt")7Path("/tmp/a.txt").shouldHaveName("a")8Path("/tmp/a.txt").shouldNotHaveName("a")9Path("/tmp/a.txt").shouldBeReadable()10Path("/tmp/a.txt").shouldBeWritable()11Path("/tmp/a.txt").shouldBeExecutable()12Path("/tmp/a.txt").shouldBeHidden()13Path("/tmp/a.txt").shouldBeAbsolute()14Path("/tmp/a.txt").shouldBeRelative()15Path("/tmp/a.txt").shouldBeSymbolicLink()16Path("/tmp/a.txt").shouldBeRegularFile()

Full Screen

Full Screen

Path.shouldContainFiles

Using AI Code Generation

copy

Full Screen

1import io.kotest.matchers.paths.shouldContainFiles2import io.kotest.matchers.paths.shouldContainDirectory3import io.kotest.matchers.paths.shouldHaveExtension4import io.kotest.matchers.paths.shouldNotHaveExtension5import io.kotest.matchers.paths.shouldHaveFileName6import io.kotest.matchers.paths.shouldNotHaveFileName7import io.kotest.matchers.paths.shouldHaveParent8import io.kotest.matchers.paths.shouldNotHaveParent9import io.kotest.matchers.paths.shouldHaveName10import io.kotest.matchers.paths.shouldNotHaveName11import io.kotest.matchers.paths.shouldHaveRoot12import io.kotest.matchers.paths.shouldNotHaveRoot13import io.kotest.matchers.paths.shouldBeReadable14import io.kotest.matchers.paths.shouldBeWritable15import io.kotest.matchers.paths.shouldBeExecutable16import io.kotest.matchers.paths

Full Screen

Full Screen

Path.shouldContainFiles

Using AI Code Generation

copy

Full Screen

1val path = Paths.get("src/test/resources")2path shouldContainFiles listOf("kotest.properties", "kotest.yaml")3val path = Paths.get("src/test/resources")4val path = Paths.get("src/test/resources/kotest.properties")5val path = Paths.get("src/test/resources/kotest.properties")6val path = Paths.get("src/test/resources/kotest.properties")7val path = Paths.get("src/test/resources/kotest.properties")8val path = Paths.get("src/test/resources/kotest.properties")9val path = Paths.get("src/test/resources/kotest.properties")10val path = Paths.get("src/test/resources/kotest.properties")11val path = Paths.get("src/test/resources")12val path = Paths.get("src/test/resources")13val path = Paths.get("src/test/resources/kotest.properties")

Full Screen

Full Screen

Path.shouldContainFiles

Using AI Code Generation

copy

Full Screen

1@DisplayName ( "Path should contain files test" )2fun `path should contain files` () {3val path = Paths . get ( "src/test/resources" )4path . shouldContainFiles ( "test.txt" , "test2.txt" )5}6@DisplayName ( "Path should contain directories test" )7fun `path should contain directories` () {8val path = Paths . get ( "src/test/resources" )9path . shouldContainDirectories ( "subdir" )10}11@DisplayName ( "Path should have extension test" )12fun `path should have extension` () {13val path = Paths . get ( "src/test/resources/test.txt" )14path . shouldHaveExtension ( "txt" )15}16@DisplayName ( "Path should have filename test" )17fun `path should have filename` () {18val path = Paths . get ( "src/test/resources/test.txt" )19path . shouldHaveFileName ( "test.txt" )20}21@DisplayName ( "Path should have parent test" )22fun `path should have parent` () {23val path = Paths . get ( "src/test/resources/test.txt" )24path . shouldHaveParent ( "resources" )25}26@DisplayName ( "Path should have sibling test" )27fun `path should have sibling` () {28val path = Paths . get ( "src/test/resources/test.txt" )29path . shouldHaveSibling ( "test2.txt" )30}31@DisplayName ( "Path should have subpath test" )32fun `path should have subpath` () {33val path = Paths . get ( "src/test/resources/test.txt" )34path . shouldHaveSubpath ( "resources" , "test.txt" )35}

Full Screen

Full Screen

Path.shouldContainFiles

Using AI Code Generation

copy

Full Screen

1@DisplayName("File System Test")2class FileSystemTest {3@DisplayName("Test file system")4fun testFileSystem() {5val file1 = tempDir.resolve("file1.txt")6val file2 = tempDir.resolve("file2.txt")7file1.writeText("Hello")8file2.writeText("World")9tempDir.shouldContainFiles("file1.txt", "file2.txt")10}11}

Full Screen

Full Screen

Path.shouldContainFiles

Using AI Code Generation

copy

Full Screen

1import io.kotest.matchers.paths.shouldContainFiles2class TestClass {3fun testMethod() {4 val path = Paths.get("C:\\test\\")5}6}7import io.kotest.matchers.paths.shouldNotContainFiles8class TestClass {9fun testMethod() {10 val path = Paths.get("C:\\test\\")11}12}13import io.kotest.matchers.paths.shouldBeReadable14class TestClass {15fun testMethod() {16 val path = Paths.get("C:\\test\\")17}18}19import io.kotest.matchers.paths.shouldBeWritable20class TestClass {21fun testMethod() {22 val path = Paths.get("C:\\test\\")23}24}25import io.kotest.matchers.paths.shouldBeExecutable26class TestClass {27fun testMethod() {28 val path = Paths.get("C:\\test\\")29}30}31import io.kotest.matchers.paths.shouldBeHidden32class TestClass {33fun testMethod() {34 val path = Paths.get("C:\\test\\")35}36}37import io.kotest.matchers.paths.shouldBeSymbolicLink38class TestClass {39fun testMethod() {40 val path = Paths.get("C:\\test\\")41}42}

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful