Skip to content

Commit c89d366

Browse files
committed
Merge pull request #848 from docker/845-fix
Client.logs(tail=0) now shows no past logs (expected behavior)
2 parents fe858f5 + 0e13a0d commit c89d366

File tree

2 files changed

+32
-19
lines changed

2 files changed

+32
-19
lines changed

docker/api/container.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@ def logs(self, container, stdout=True, stderr=True, stream=False,
192192
'follow': stream and 1 or 0,
193193
}
194194
if utils.compare_version('1.13', self._version) >= 0:
195-
if tail != 'all' and (not isinstance(tail, int) or tail <= 0):
195+
if tail != 'all' and (not isinstance(tail, int) or tail < 0):
196196
tail = 'all'
197197
params['tail'] = tail
198198
url = self._url("/containers/{0}/logs", container)

tests/integration/container_test.py

Lines changed: 31 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -613,8 +613,8 @@ def test_logs(self):
613613
BUSYBOX, 'echo {0}'.format(snippet)
614614
)
615615
id = container['Id']
616-
self.client.start(id)
617616
self.tmp_containers.append(id)
617+
self.client.start(id)
618618
exitcode = self.client.wait(id)
619619
self.assertEqual(exitcode, 0)
620620
logs = self.client.logs(id)
@@ -627,43 +627,56 @@ def test_logs_tail_option(self):
627627
BUSYBOX, 'echo "{0}"'.format(snippet)
628628
)
629629
id = container['Id']
630-
self.client.start(id)
631630
self.tmp_containers.append(id)
631+
self.client.start(id)
632632
exitcode = self.client.wait(id)
633633
self.assertEqual(exitcode, 0)
634634
logs = self.client.logs(id, tail=1)
635-
self.assertEqual(logs, ('Line2\n').encode(encoding='ascii'))
635+
self.assertEqual(logs, 'Line2\n'.encode(encoding='ascii'))
636636

637-
# def test_logs_streaming(self):
638-
# snippet = 'Flowering Nights (Sakuya Iyazoi)'
639-
# container = self.client.create_container(
640-
# BUSYBOX, 'echo {0}'.format(snippet)
641-
# )
642-
# id = container['Id']
643-
# self.client.start(id)
644-
# self.tmp_containers.append(id)
645-
# logs = bytes() if six.PY3 else str()
646-
# for chunk in self.client.logs(id, stream=True):
647-
# logs += chunk
637+
def test_logs_streaming(self):
638+
snippet = 'Flowering Nights (Sakuya Iyazoi)'
639+
container = self.client.create_container(
640+
BUSYBOX, 'echo {0}'.format(snippet)
641+
)
642+
id = container['Id']
643+
self.tmp_containers.append(id)
644+
self.client.start(id)
645+
logs = six.binary_type()
646+
for chunk in self.client.logs(id, stream=True):
647+
logs += chunk
648648

649-
# exitcode = self.client.wait(id)
650-
# self.assertEqual(exitcode, 0)
649+
exitcode = self.client.wait(id)
650+
self.assertEqual(exitcode, 0)
651651

652-
# self.assertEqual(logs, (snippet + '\n').encode(encoding='ascii'))
652+
self.assertEqual(logs, (snippet + '\n').encode(encoding='ascii'))
653653

654654
def test_logs_with_dict_instead_of_id(self):
655655
snippet = 'Flowering Nights (Sakuya Iyazoi)'
656656
container = self.client.create_container(
657657
BUSYBOX, 'echo {0}'.format(snippet)
658658
)
659659
id = container['Id']
660-
self.client.start(id)
661660
self.tmp_containers.append(id)
661+
self.client.start(id)
662662
exitcode = self.client.wait(id)
663663
self.assertEqual(exitcode, 0)
664664
logs = self.client.logs(container)
665665
self.assertEqual(logs, (snippet + '\n').encode(encoding='ascii'))
666666

667+
def test_logs_with_tail_0(self):
668+
snippet = 'Flowering Nights (Sakuya Iyazoi)'
669+
container = self.client.create_container(
670+
BUSYBOX, 'echo "{0}"'.format(snippet)
671+
)
672+
id = container['Id']
673+
self.tmp_containers.append(id)
674+
self.client.start(id)
675+
exitcode = self.client.wait(id)
676+
self.assertEqual(exitcode, 0)
677+
logs = self.client.logs(id, tail=0)
678+
self.assertEqual(logs, ''.encode(encoding='ascii'))
679+
667680

668681
class DiffTest(api_test.BaseTestCase):
669682
def test_diff(self):

0 commit comments

Comments
 (0)