From c6e602cf19c660c8c00642ecca9367da40d03e18 Mon Sep 17 00:00:00 2001 From: Zongle Wang Date: Sat, 9 Mar 2024 17:44:27 +0800 Subject: [PATCH 1/2] Add test case for File and Path assertions --- .../kotlin/test/assertk/assertions/FileTest.kt | 7 +++++++ .../kotlin/test/assertk/assertions/PathTest.kt | 18 ++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/assertk/src/jvmTest/kotlin/test/assertk/assertions/FileTest.kt b/assertk/src/jvmTest/kotlin/test/assertk/assertions/FileTest.kt index 3518c891..e124c043 100644 --- a/assertk/src/jvmTest/kotlin/test/assertk/assertions/FileTest.kt +++ b/assertk/src/jvmTest/kotlin/test/assertk/assertions/FileTest.kt @@ -207,6 +207,13 @@ class FileTest { assertThat(fileWithText).text().contains("Forty-two") } + //region bytes + @Test + fun hasBytes_correct_value_passes() { + assertThat(fileWithText).bytes().isEqualTo(fileWithText.readBytes()) + } + //endregion + @Test fun contains_wrong_substring_fails() { val error = assertFailsWith { diff --git a/assertk/src/jvmTest/kotlin/test/assertk/assertions/PathTest.kt b/assertk/src/jvmTest/kotlin/test/assertk/assertions/PathTest.kt index 86a92368..2a6f9c3e 100644 --- a/assertk/src/jvmTest/kotlin/test/assertk/assertions/PathTest.kt +++ b/assertk/src/jvmTest/kotlin/test/assertk/assertions/PathTest.kt @@ -59,6 +59,24 @@ class PathTest { } //endregion + + //region isExecutable + @Test + fun isExecutable_value_regular_file_executable_passes() { + regularFile!!.toFile().setExecutable(true) + assertThat(regularFile!!).isExecutable() + } + + @Test + fun isExecutable_value_regular_file_not_executable_fails() { + regularFile!!.toFile().setExecutable(false) + val error = assertFailsWith { + assertThat(regularFile!!).isExecutable() + } + assertEquals("expected <$regularFile> to be an executable, but it is not", error.message) + } + //endregion + //region isHidden @Test fun isHidden_value_regular_file_not_hidden_fails() { From 3ad2d951bc95b038dac3df73c97b4e7d21e586a0 Mon Sep 17 00:00:00 2001 From: Goooler Date: Thu, 9 May 2024 11:56:59 +0800 Subject: [PATCH 2/2] Add canExecute assertion for File Like `isExecutable` for `Path`. --- .../jvmMain/kotlin/assertk/assertions/file.kt | 6 ++++++ .../kotlin/test/assertk/assertions/FileTest.kt | 17 +++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/assertk/src/jvmMain/kotlin/assertk/assertions/file.kt b/assertk/src/jvmMain/kotlin/assertk/assertions/file.kt index ec20ae94..a78f3eac 100644 --- a/assertk/src/jvmMain/kotlin/assertk/assertions/file.kt +++ b/assertk/src/jvmMain/kotlin/assertk/assertions/file.kt @@ -64,6 +64,12 @@ fun Assert.isFile() = given { actual -> expected("to be a file") } +/** Assert that the file is an executable. */ +fun Assert.canExecute() = given { actual -> + if (actual.canExecute()) return + expected("to be executable") +} + /** * Asserts the file is hidden. * @see [isNotHidden] diff --git a/assertk/src/jvmTest/kotlin/test/assertk/assertions/FileTest.kt b/assertk/src/jvmTest/kotlin/test/assertk/assertions/FileTest.kt index e124c043..f5de0091 100644 --- a/assertk/src/jvmTest/kotlin/test/assertk/assertions/FileTest.kt +++ b/assertk/src/jvmTest/kotlin/test/assertk/assertions/FileTest.kt @@ -58,6 +58,23 @@ class FileTest { } //endregion + //region canExecute + @Test + fun canExecute_value_regular_file_passes() { + file.setExecutable(true) + assertThat(file).canExecute() + } + + @Test + fun canExecute_value_directory_fails() { + file.setExecutable(false) + val error = assertFailsWith { + assertThat(file).canExecute() + } + assertEquals("expected to be executable", error.message) + } + //endregion + //region isNotHidden @Test fun isNotHidden_value_regular_file_passes() {