From 3aa82a6882413420a85a69eeef3a54958eb25ee4 Mon Sep 17 00:00:00 2001 From: Priyank Gupta Date: Thu, 14 Oct 2021 22:11:39 +0100 Subject: [PATCH 1/4] Add support for shouldContainLineWithString and shouldNotContainLineWithString assertions --- .../main/kotlin/org/amshove/kluent/File.kt | 4 ++++ .../kotlin/org/amshove/kluent/FileBacktick.kt | 7 +++++-- .../tests/assertions/file/FileTestHelper.kt | 2 +- .../file/ShouldContainLineWithStringShould.kt | 20 ++++++++++++++++++ .../ShouldNotContainLineWithStringShould.kt | 21 +++++++++++++++++++ 5 files changed, 51 insertions(+), 3 deletions(-) create mode 100644 jvm/src/test/kotlin/org/amshove/kluent/tests/assertions/file/ShouldContainLineWithStringShould.kt create mode 100644 jvm/src/test/kotlin/org/amshove/kluent/tests/assertions/file/ShouldNotContainLineWithStringShould.kt diff --git a/jvm/src/main/kotlin/org/amshove/kluent/File.kt b/jvm/src/main/kotlin/org/amshove/kluent/File.kt index e63e65dc..8b0285e9 100644 --- a/jvm/src/main/kotlin/org/amshove/kluent/File.kt +++ b/jvm/src/main/kotlin/org/amshove/kluent/File.kt @@ -3,6 +3,7 @@ package org.amshove.kluent import org.amshove.kluent.internal.assertFalse import org.amshove.kluent.internal.assertTrue import java.io.File +import java.nio.charset.Charset fun File.shouldExist() = assertTrue("The file '${this.absolutePath}' should exist, but does not", this.exists()) fun File.shouldNotExist() = assertFalse("The file '${this.absolutePath}' should not exist, but does", this.exists()) @@ -19,3 +20,6 @@ infix fun File.shouldNotHaveExtension(other: String) = this.extension shouldNotB infix fun File.shouldHaveName(other: String) = this.name shouldBeEqualTo other infix fun File.shouldNotHaveName(other: String) = this.name shouldNotBeEqualTo other +infix fun File.shouldContainLineWithString(other: String) = this.readText(Charset.defaultCharset()) shouldContain other +infix fun File.shouldNotContainLineWithString(other: String) = this.readText(Charset.defaultCharset()) shouldNotContain other + diff --git a/jvm/src/main/kotlin/org/amshove/kluent/FileBacktick.kt b/jvm/src/main/kotlin/org/amshove/kluent/FileBacktick.kt index 331a00eb..7846edc1 100644 --- a/jvm/src/main/kotlin/org/amshove/kluent/FileBacktick.kt +++ b/jvm/src/main/kotlin/org/amshove/kluent/FileBacktick.kt @@ -14,6 +14,9 @@ fun File.`should not be file`() = this.shouldNotBeFile() infix fun File.`should have extension`(other: String) = this shouldHaveExtension(other) infix fun File.`should not have extension`(other: String) = this shouldNotHaveExtension(other) -infix fun File.`should have name`(other: String) = this shouldHaveName(other) -infix fun File.`should not have name`(other: String) = this shouldNotHaveName(other) +infix fun File.`should have name`(other: String) = this shouldHaveName (other) +infix fun File.`should not have name`(other: String) = this shouldNotHaveName (other) + +infix fun File.`should contain line with string`(other: String) = this shouldContainLineWithString (other) +infix fun File.`should not contain line with string`(other: String) = this shouldNotContainLineWithString (other) diff --git a/jvm/src/test/kotlin/org/amshove/kluent/tests/assertions/file/FileTestHelper.kt b/jvm/src/test/kotlin/org/amshove/kluent/tests/assertions/file/FileTestHelper.kt index 9dc270a4..5620a3bf 100644 --- a/jvm/src/test/kotlin/org/amshove/kluent/tests/assertions/file/FileTestHelper.kt +++ b/jvm/src/test/kotlin/org/amshove/kluent/tests/assertions/file/FileTestHelper.kt @@ -6,7 +6,7 @@ import java.io.File * Constructs a directory or a plain file with no content and deletes it after the body has run */ fun File.useFile(isDir: Boolean = false, body: (file: File) -> Unit) = try { - if (isDir) this.mkdir() else this.writeText("") + if (isDir) this.mkdir() else this.writeText("quick brown fox over a lazy dog") body(this) } finally { if (!this.delete()) throw Exception("Could not delete file") diff --git a/jvm/src/test/kotlin/org/amshove/kluent/tests/assertions/file/ShouldContainLineWithStringShould.kt b/jvm/src/test/kotlin/org/amshove/kluent/tests/assertions/file/ShouldContainLineWithStringShould.kt new file mode 100644 index 00000000..5a64aed6 --- /dev/null +++ b/jvm/src/test/kotlin/org/amshove/kluent/tests/assertions/file/ShouldContainLineWithStringShould.kt @@ -0,0 +1,20 @@ +package org.amshove.kluent.tests.assertions.file + +import org.amshove.kluent.internal.assertFails +import org.amshove.kluent.shouldContainLineWithString +import org.junit.Test +import java.io.File + +class ShouldContainLineWithStringShould { + private val file = File("test") + + @Test + fun passWhenFileContainsLineWithString() { + file.useFile { it.shouldContainLineWithString("brown fox") } + } + + @Test + fun failWhenFileDoesNotContainLineWithString() { + assertFails { file.shouldContainLineWithString("blue whale") } + } +} \ No newline at end of file diff --git a/jvm/src/test/kotlin/org/amshove/kluent/tests/assertions/file/ShouldNotContainLineWithStringShould.kt b/jvm/src/test/kotlin/org/amshove/kluent/tests/assertions/file/ShouldNotContainLineWithStringShould.kt new file mode 100644 index 00000000..f3a71002 --- /dev/null +++ b/jvm/src/test/kotlin/org/amshove/kluent/tests/assertions/file/ShouldNotContainLineWithStringShould.kt @@ -0,0 +1,21 @@ +package org.amshove.kluent.tests.assertions.file + +import org.amshove.kluent.internal.assertFails +import org.amshove.kluent.shouldContainLineWithString +import org.amshove.kluent.shouldNotContainLineWithString +import org.junit.Test +import java.io.File + +class ShouldNotContainLineWithStringShould { + private val file = File("test") + + @Test + fun passWhenFileDoesNotContainsLineWithString() { + file.useFile { it.shouldNotContainLineWithString("brown dog") } + } + + @Test + fun failWhenFileContainsLineWithString() { + assertFails { file.shouldNotContainLineWithString("lazy dog") } + } +} \ No newline at end of file From 62137ba5014e3699a0a464800e2350a1e1d33bff Mon Sep 17 00:00:00 2001 From: Priyank Gupta Date: Thu, 14 Oct 2021 22:19:54 +0100 Subject: [PATCH 2/4] Added name in the contributor list --- AUTHORS.md | 75 +++++++++++++++++++++++++++--------------------------- 1 file changed, 38 insertions(+), 37 deletions(-) diff --git a/AUTHORS.md b/AUTHORS.md index 4f5e92ea..248e2edf 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -5,40 +5,41 @@ # Contributors 1. Andreas Volkmann - [@goreRatzete](https://github.com/goreRatzete) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=goreRatzete)) -1. Egor Andreevici - [@Egorand](https://github.com/Egorand) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=Egorand)) -1. Karun Japhet - [@javatarz](https://github.com/javatarz) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=javatarz)) -1. Eric Burke - [@eburke56](https://github.com/eburke56) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=eburke56)) -1. Günther Grill - [@guenhter](https://github.com/guenhter) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=guenhter)) -1. jpopadak -[@jpopadak](https://github.com/jpopadak) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=jpopadak)) -1. Nikolai Hellwig - [@nhellwig](https://github.com/nhellwig) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=nhellwig)) -1. Greg Woodfill - [@gregwoodfill](https://github.com/gregwoodfill) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=gregwoodfill)) -1. cketti -[@cketti](https://github.com/cketti) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=cketti)) -1. Grzegorz Miszewski - [@miszmaniac](https://github.com/miszmaniac) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=miszmaniac)) -1. Yahor Berdnikau - [@Tapchicoma](https://github.com/Tapchicoma) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=Tapchicoma)) -1. Alan Evans - [@westonal](https://github.com/westonal) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=westonal)) -1. Victor J - Reventos [@vjames19](https://github.com/vjames19) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=vjames19)) -1. B. K. Oxley - [@binkley](https://github.com/binkley) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=binkley)) -1. Vasili Chyrvon - [@Jeevuz](https://github.com/Jeevuz) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=Jeevuz)) -1. Yannick - [@fishb6nes](https://github.com/fishb6nes) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=fishb6nes)) -1. Ole Kristian - Sandum [@okkero](https://github.com/okkero) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=okkero)) -1. Gabriel Aumala - [@GAumala](https://github.com/GAumala) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=GAumala)) -1. Deconinck Alban - [@neyb](https://github.com/neyb) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=neyb)) -1. Fabrício Rissetto - [@fabriciorissetto](https://github.com/fabriciorissetto) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=fabriciorissetto)) -1. Vitus Ortner - [@vitusortner](https://github.com/vitusortner) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=vitusortner)) -1. Caleb Brinkman - [@floralvikings](https://github.com/floralvikings) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=floralvikings)) -1. Jonathan Cornaz - [@jcornaz](https://github.com/jcornaz) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=jcornaz)) -1. Ivan Atanasov - [@IvanAtanasov89](https://github.com/IvanAtanasov89) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=IvanAtanasov89)) -1. Ruben Gees - [@rubengees](https://github.com/rubengees) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=rubengees)) -1. Juechen Wang - [@wangjuechen](https://github.com/wangjuechen) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=wangjuechen)) -1. Anton Sheihman [@sheix_](https://github.com/sheix_) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=rubengees)) -1. Vaios Tsitsonis [@St4B](https://github.com/St4B) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=st4b)) -1. Jógvan Olsen - [@jeggy](https://github.com/jeggy) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=jeggy)) -1. Yang C - [@ychescale9](https://github.com/ychescale9) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=ychescale9)) -1. Christian Ivicevic - [@ChristianIvicevic](https://github.com/ChristianIvicevic) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=ChristianIvicevic)) -1. Ivan Mikhnovich - [@Murtaught](https://github.com/Murtaught) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=Murtaught)) -1. Jc Miñarro - [@JcMinarro](https://github.com/JcMinarro) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=JcMinarro)) -1. Kshitij Patil [@Kshitij09](https://github.com/Kshitij09) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=Kshitij09)) -1. Keivan Esbati - [@Tenkei](https://github.com/Tenkei) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=Tenkei)) -1. Sam Neirinck - [@samneirinck](https://github.com/samneirinck) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=samneirinck)) -1. Maxim Ivanov [@drcolombo](https://github.com/drcolombo) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=drcolombo)) -1. Piotr Bakalarski [@piotrb5e3](https://github.com/piotrb5e3) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=piotrb5e3)) \ No newline at end of file +2. Egor Andreevici - [@Egorand](https://github.com/Egorand) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=Egorand)) +3. Karun Japhet - [@javatarz](https://github.com/javatarz) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=javatarz)) +4. Eric Burke - [@eburke56](https://github.com/eburke56) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=eburke56)) +5. Günther Grill - [@guenhter](https://github.com/guenhter) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=guenhter)) +6. jpopadak -[@jpopadak](https://github.com/jpopadak) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=jpopadak)) +7. Nikolai Hellwig - [@nhellwig](https://github.com/nhellwig) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=nhellwig)) +8. Greg Woodfill - [@gregwoodfill](https://github.com/gregwoodfill) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=gregwoodfill)) +9. cketti -[@cketti](https://github.com/cketti) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=cketti)) +10. Grzegorz Miszewski - [@miszmaniac](https://github.com/miszmaniac) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=miszmaniac)) +11. Yahor Berdnikau - [@Tapchicoma](https://github.com/Tapchicoma) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=Tapchicoma)) +12. Alan Evans - [@westonal](https://github.com/westonal) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=westonal)) +13. Victor J - Reventos [@vjames19](https://github.com/vjames19) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=vjames19)) +14. B. K. Oxley - [@binkley](https://github.com/binkley) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=binkley)) +15. Vasili Chyrvon - [@Jeevuz](https://github.com/Jeevuz) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=Jeevuz)) +16. Yannick - [@fishb6nes](https://github.com/fishb6nes) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=fishb6nes)) +17. Ole Kristian - Sandum [@okkero](https://github.com/okkero) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=okkero)) +18. Gabriel Aumala - [@GAumala](https://github.com/GAumala) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=GAumala)) +19. Deconinck Alban - [@neyb](https://github.com/neyb) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=neyb)) +20. Fabrício Rissetto - [@fabriciorissetto](https://github.com/fabriciorissetto) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=fabriciorissetto)) +21. Vitus Ortner - [@vitusortner](https://github.com/vitusortner) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=vitusortner)) +22. Caleb Brinkman - [@floralvikings](https://github.com/floralvikings) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=floralvikings)) +23. Jonathan Cornaz - [@jcornaz](https://github.com/jcornaz) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=jcornaz)) +24. Ivan Atanasov - [@IvanAtanasov89](https://github.com/IvanAtanasov89) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=IvanAtanasov89)) +25. Ruben Gees - [@rubengees](https://github.com/rubengees) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=rubengees)) +26. Juechen Wang - [@wangjuechen](https://github.com/wangjuechen) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=wangjuechen)) +27. Anton Sheihman [@sheix_](https://github.com/sheix_) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=rubengees)) +28. Vaios Tsitsonis [@St4B](https://github.com/St4B) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=st4b)) +29. Jógvan Olsen - [@jeggy](https://github.com/jeggy) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=jeggy)) +30. Yang C - [@ychescale9](https://github.com/ychescale9) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=ychescale9)) +31. Christian Ivicevic - [@ChristianIvicevic](https://github.com/ChristianIvicevic) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=ChristianIvicevic)) +32. Ivan Mikhnovich - [@Murtaught](https://github.com/Murtaught) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=Murtaught)) +33. Jc Miñarro - [@JcMinarro](https://github.com/JcMinarro) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=JcMinarro)) +34. Kshitij Patil [@Kshitij09](https://github.com/Kshitij09) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=Kshitij09)) +35. Keivan Esbati - [@Tenkei](https://github.com/Tenkei) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=Tenkei)) +36. Sam Neirinck - [@samneirinck](https://github.com/samneirinck) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=samneirinck)) +37. Maxim Ivanov [@drcolombo](https://github.com/drcolombo) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=drcolombo)) +38. Piotr Bakalarski [@piotrb5e3](https://github.com/piotrb5e3) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=piotrb5e3)) +39. Priyank Gupta [@priyaaank](https://github.com/priyaaank) ([Contributions](https://github.com/MarkusAmshove/Kluent/commits?author=priyaaank)) \ No newline at end of file From cd655e05252fc07a09d2318b9c93ae5c2570320b Mon Sep 17 00:00:00 2001 From: Priyank Gupta Date: Wed, 27 Oct 2021 16:43:23 +0100 Subject: [PATCH 3/4] Adding documentation for the file based operators --- docs/FileSystem.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/FileSystem.md b/docs/FileSystem.md index e1fe5708..fd2aa7fc 100644 --- a/docs/FileSystem.md +++ b/docs/FileSystem.md @@ -19,4 +19,7 @@ file.shouldNotHaveExtension("txt") file.shouldHaveName("myFile") file.shouldNotHaveName("myFile") + +file.shouldContainLineWithString("aSampleString") +file.shouldNotContainLineWithString("aSampleString") ``` From a4ce18de8009825b788c3e4b8a2e8f5865a30d01 Mon Sep 17 00:00:00 2001 From: Priyank Gupta Date: Wed, 27 Oct 2021 16:44:01 +0100 Subject: [PATCH 4/4] Removing 'no content' as the test file is now created with content --- .../org/amshove/kluent/tests/assertions/file/FileTestHelper.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jvm/src/test/kotlin/org/amshove/kluent/tests/assertions/file/FileTestHelper.kt b/jvm/src/test/kotlin/org/amshove/kluent/tests/assertions/file/FileTestHelper.kt index 5620a3bf..388b53bd 100644 --- a/jvm/src/test/kotlin/org/amshove/kluent/tests/assertions/file/FileTestHelper.kt +++ b/jvm/src/test/kotlin/org/amshove/kluent/tests/assertions/file/FileTestHelper.kt @@ -3,7 +3,7 @@ package org.amshove.kluent.tests.assertions.file import java.io.File /** - * Constructs a directory or a plain file with no content and deletes it after the body has run + * Constructs a directory or a plain file with text content and deletes it after the body has run */ fun File.useFile(isDir: Boolean = false, body: (file: File) -> Unit) = try { if (isDir) this.mkdir() else this.writeText("quick brown fox over a lazy dog")