Javier
10/17/2021, 3:56 AMJim
10/17/2021, 3:59 AMsam
10/17/2021, 4:04 AMsam
10/17/2021, 4:04 AMdir1 shouldHaveSomeStrutureAs dir2sam
10/17/2021, 4:04 AMsam
10/17/2021, 4:04 AMLeoColman
10/17/2021, 10:25 AMJavier
10/17/2021, 11:35 AMJavier
10/17/2021, 12:11 PMJavier
10/17/2021, 3:20 PMsam
10/17/2021, 3:22 PMsam
10/17/2021, 3:22 PMJavier
10/17/2021, 3:22 PMshouldHaveSameTreeAndContents to be more explicit, feels free to suggest if I should change itJavier
10/17/2021, 3:23 PMsam
10/17/2021, 3:23 PMsam
10/17/2021, 3:23 PMJavier
10/17/2021, 3:23 PMsam
10/17/2021, 3:23 PMshouldHaveSameStructure ?Javier
10/17/2021, 3:23 PMJavier
10/17/2021, 3:27 PMsam
10/17/2021, 3:30 PMsam
10/17/2021, 3:30 PMJavier
10/17/2021, 9:35 PM\ instead of / and so onJavier
10/17/2021, 9:36 PMJavier
10/17/2021, 9:36 PMexpectFiles.zip(actualFiles).forEach { (expect, actual) ->
expect.replaceSlash()
actual.replaceSlash()
when {
expect.extension == "gz" -> println("`.gz` files are ignored")
expect.extension == "json" -> println("`.gz` files are ignored")
expect.isDirectory -> actual.shouldBeADirectory()
expect.isFile -> actual.shouldHaveSameContentAs(actual)
}
}sam
10/17/2021, 9:36 PMJavier
10/17/2021, 9:36 PMtransform lambda and filter predicate?Javier
10/17/2021, 9:36 PMJavier
10/17/2021, 9:36 PMJavier
10/17/2021, 9:36 PMsam
10/17/2021, 9:37 PMsam
10/17/2021, 9:37 PMsam
10/17/2021, 9:37 PMJavier
10/17/2021, 9:37 PMsam
10/17/2021, 9:37 PMJavier
10/17/2021, 9:37 PMshouldHaveSameTreeAndContentssam
10/17/2021, 9:37 PMJim
10/17/2021, 9:37 PMsam
10/17/2021, 9:37 PMJavier
10/17/2021, 9:37 PMJavier
10/17/2021, 9:38 PMJim
10/17/2021, 9:38 PMsam
10/17/2021, 9:38 PMJavier
10/17/2021, 9:38 PMJavier
10/17/2021, 9:38 PMJavier
10/17/2021, 9:38 PMJavier
10/17/2021, 9:38 PMJavier
10/17/2021, 9:38 PMsam
10/17/2021, 9:38 PMsam
10/17/2021, 9:38 PMJavier
10/17/2021, 9:39 PMJavier
10/17/2021, 9:40 PMsam
10/17/2021, 9:40 PMJavier
10/17/2021, 9:40 PMsam
10/17/2021, 9:41 PMsam
10/17/2021, 9:41 PMJavier
10/17/2021, 9:41 PM\ in its content in windowssam
10/17/2021, 9:41 PMJavier
10/17/2021, 9:41 PMJavier
10/17/2021, 9:41 PMJavier
10/17/2021, 9:41 PMJavier
10/17/2021, 9:41 PMsam
10/17/2021, 9:42 PMsam
10/17/2021, 9:42 PMJavier
10/17/2021, 9:42 PMfun File.shouldHaveSameStructure(file: File, transform: transform: (T) -> Unit, filter: (T) -> Boolean)Javier
10/17/2021, 9:43 PMsam
10/17/2021, 9:43 PMJim
10/17/2021, 9:43 PMsam
10/17/2021, 9:43 PMJim
10/17/2021, 9:44 PMJim
10/17/2021, 9:44 PMother: Filesam
10/17/2021, 9:45 PMJavier
10/17/2021, 9:45 PMJavier
10/17/2021, 9:45 PMsam
10/17/2021, 9:45 PMJavier
10/17/2021, 9:45 PMsam
10/17/2021, 9:46 PMJavier
10/17/2021, 9:46 PMsam
10/17/2021, 9:46 PMJavier
10/17/2021, 9:48 PMsam
10/17/2021, 9:48 PMJavier
10/17/2021, 9:48 PMJavier
10/17/2021, 9:48 PMJavier
10/17/2021, 9:49 PMsam
10/17/2021, 9:50 PMsam
10/17/2021, 9:50 PMJavier
10/17/2021, 9:57 PMfun File.shouldHaveSameStructure(
file: File,
filter: (expect: File, actual: File) -> Boolean
) {
val expectFiles = this.walkTopDown().toList()
val actualFiles = file.walkTopDown().toList()
expectFiles shouldBeSameSizeAs actualFiles
expectFiles.zip(actualFiles) { expect, actual ->
when {
filter(expect, actual) -> {}
expect.isDirectory -> actual.shouldBeADirectory()
expect.isFile -> expect shouldHavePath actual.path
else -> error("There is an unexpected error analyzing file trees")
}
}
}Javier
10/17/2021, 9:58 PMsam
10/17/2021, 9:58 PMsam
10/17/2021, 9:58 PMJavier
10/17/2021, 9:58 PMsam
10/17/2021, 9:58 PMsam
10/17/2021, 9:59 PMJavier
10/17/2021, 9:59 PMJavier
10/17/2021, 9:59 PMJavier
10/17/2021, 10:00 PMfileA.shouldHaveSameStructure(fileB, filter = { a, b -> a.extension == "html" })sam
10/17/2021, 10:00 PMsam
10/17/2021, 10:01 PMJavier
10/17/2021, 10:01 PMJavier
10/17/2021, 10:01 PMJavier
10/17/2021, 10:01 PMJavier
10/17/2021, 10:01 PMJavier
10/17/2021, 10:01 PMfileA.shouldHaveSameStructure(fileB, filter = { a, b -> a.readlines().size == 2 || b.readlines().size == 5 })sam
10/17/2021, 10:02 PMJim
10/17/2021, 10:02 PMJavier
10/17/2021, 10:02 PMsam
10/17/2021, 10:03 PMsam
10/17/2021, 10:03 PMJavier
10/17/2021, 10:03 PMJavier
10/17/2021, 10:04 PMJavier
10/17/2021, 10:05 PM.gzJavier
10/17/2021, 10:06 PMJim
10/17/2021, 10:06 PMJavier
10/17/2021, 10:07 PMfilter name?Jim
10/17/2021, 10:10 PMit instead of a, bsam
10/17/2021, 10:12 PMJavier
10/17/2021, 10:12 PMfun File.shouldHaveSameStructure(
file: File,
filter: (File) -> Boolean
) {
val expectFiles = this.walkTopDown().toList()
val actualFiles = file.walkTopDown().toList()
expectFiles shouldBeSameSizeAs actualFiles
expectFiles.zip(actualFiles) { expect, actual ->
when {
filter(expect) -> {}
expect.isDirectory -> actual.shouldBeADirectory()
expect.isFile -> expect shouldHavePath actual.path
else -> error("There is an unexpected error analyzing file trees")
}
}
}sam
10/17/2021, 10:12 PMsam
10/17/2021, 10:12 PMfun File.shouldHaveSameStructure(
file: File,
filter: (File) -> Boolean
)
or
fun File.shouldHaveSameStructure(
file: File,
filterLhs: (File) -> Boolean,
filterRhs: (File-> Boolean,
)
If you really really want to filter the two sides separatelyJavier
10/17/2021, 10:13 PMJavier
10/17/2021, 10:14 PMtransform, I should do that too?sam
10/17/2021, 10:15 PMsam
10/17/2021, 10:15 PMJavier
10/17/2021, 10:15 PM&& or ||
filterLhs(expect) && filterRhs(actual) -> {}sam
10/17/2021, 10:16 PMJavier
10/17/2021, 10:16 PMJavier
10/17/2021, 10:19 PMsam
10/17/2021, 10:19 PMJavier
10/17/2021, 10:20 PMsam
10/17/2021, 10:20 PMJavier
10/17/2021, 10:21 PMJavier
10/17/2021, 10:21 PMsam
10/17/2021, 10:21 PMJavier
10/17/2021, 10:24 PMJavier
10/17/2021, 10:25 PMJavier
10/17/2021, 10:25 PMfun File.shouldHaveSameStructure(
file: File,
filterLhs: (File) -> Boolean,
filterRhs: (File) -> Boolean,
) {Javier
10/17/2021, 10:25 PMJavier
10/17/2021, 10:51 PMcompare, my head did "tick"