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 dir2
sam
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 PMshouldHaveSameTreeAndContents
sam
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: File
sam
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.gz
Javier
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, b
sam
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"