Skip to content

Commit 892d514

Browse files
kmoensgesellix
authored andcommitted
bugfix: the parsing of a expanded volumes block with a nocopy entry triggered an exception
1 parent 6361e6b commit 892d514

File tree

4 files changed

+41
-1
lines changed

4 files changed

+41
-1
lines changed

src/main/kotlin/de/gesellix/docker/compose/adapters/ListToServiceVolumesAdapter.kt

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,24 @@ class ListToServiceVolumesAdapter {
8181
val value = reader.nextInt()
8282
writePropery(volume, name, value)
8383
}
84+
JsonReader.Token.BEGIN_OBJECT -> {
85+
reader.beginObject()
86+
val volumeVolume = ServiceVolumeVolume()
87+
while (reader.hasNext()) {
88+
val name = reader.nextName()
89+
when (reader.peek()) {
90+
JsonReader.Token.BOOLEAN -> {
91+
val value = reader.nextBoolean()
92+
writePropery(volumeVolume, name, value)
93+
}
94+
else -> {
95+
// ...
96+
}
97+
}
98+
}
99+
reader.endObject()
100+
writePropery(volume, name, volumeVolume)
101+
}
84102
else -> {
85103
// ...
86104
}

src/main/kotlin/de/gesellix/docker/compose/types/ServiceVolumeVolume.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@ package de.gesellix.docker.compose.types
22

33
data class ServiceVolumeVolume(
44

5-
var noCopy: Boolean
5+
var nocopy: Boolean = false
66
)

src/test/kotlin/de/gesellix/docker/compose/ComposeFileReaderTest.kt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,18 @@ class ComposeFileReaderTest : DescribeSpec({
218218
assertEquals(ServiceVolumeType.TypeBind.typeName, result.services!!.getValue("foo").volumes!!.first().type)
219219
}
220220
}
221+
222+
context("volumes_nocopy/sample.yaml") {
223+
224+
val composeFile = ComposeFileReaderTest::class.java.getResource("volumes_nocopy/sample.yaml")
225+
val workingDir = Paths.get(composeFile.toURI()).parent.toString()
226+
val result = ComposeFileReader().load(composeFile.openStream(), workingDir, System.getenv())!!
227+
228+
it("should set volume type and nocopy") {
229+
assertEquals(ServiceVolumeType.TypeVolume.typeName, result.services!!.getValue("foo").volumes!!.first().type)
230+
assertTrue(result.services!!.getValue("foo").volumes!!.first().volume!!.nocopy)
231+
}
232+
}
221233
}
222234

223235
describe("configs") {
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
version: "3"
2+
services:
3+
foo:
4+
image: busybox
5+
volumes:
6+
- source: myvol
7+
target: /foo
8+
type: volume
9+
volume:
10+
nocopy: true

0 commit comments

Comments
 (0)