Skip to content

Commit

Permalink
Merge pull request #204 from priyaaank/add-file-contains-string
Browse files Browse the repository at this point in the history
Add support for shouldContainLineWithString and shouldNotContainLineWithString assertions
  • Loading branch information
MarkusAmshove committed Oct 28, 2021
2 parents 39ce8c9 + a4ce18d commit b5120e2
Show file tree
Hide file tree
Showing 7 changed files with 93 additions and 41 deletions.
75 changes: 38 additions & 37 deletions AUTHORS.md
Expand Up @@ -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))
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))
3 changes: 3 additions & 0 deletions docs/FileSystem.md
Expand Up @@ -19,4 +19,7 @@ file.shouldNotHaveExtension("txt")

file.shouldHaveName("myFile")
file.shouldNotHaveName("myFile")

file.shouldContainLineWithString("aSampleString")
file.shouldNotContainLineWithString("aSampleString")
```
4 changes: 4 additions & 0 deletions jvm/src/main/kotlin/org/amshove/kluent/File.kt
Expand Up @@ -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())
Expand All @@ -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

7 changes: 5 additions & 2 deletions jvm/src/main/kotlin/org/amshove/kluent/FileBacktick.kt
Expand Up @@ -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)

Expand Up @@ -3,10 +3,10 @@ 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("")
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")
Expand Down
@@ -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") }
}
}
@@ -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") }
}
}

0 comments on commit b5120e2

Please sign in to comment.