소스 검색

Merge pull request #2726 from aanand/no-logs-on-interactive-run

Pass logs=False to dockerpty
Aanand Prasad 9 년 전
부모
커밋
49c83b16c2
2개의 변경된 파일37개의 추가작업 그리고 1개의 파일을 삭제
  1. 6 1
      compose/cli/main.py
  2. 31 0
      tests/unit/cli_test.py

+ 6 - 1
compose/cli/main.py

@@ -709,7 +709,12 @@ def run_one_off_container(container_options, project, service, options):
     signals.set_signal_handler_to_shutdown()
     try:
         try:
-            pty = PseudoTerminal(project.client, container.id, interactive=not options['-T'])
+            pty = PseudoTerminal(
+                project.client,
+                container.id,
+                interactive=not options['-T'],
+                logs=False,
+            )
             sockets = pty.sockets()
             service.start_container(container)
             pty.start(sockets)

+ 31 - 0
tests/unit/cli_test.py

@@ -71,6 +71,37 @@ class CLITestCase(unittest.TestCase):
         with self.assertRaises(NoSuchCommand):
             TopLevelCommand().dispatch(['help', 'nonexistent'], None)
 
+    @pytest.mark.xfail(IS_WINDOWS_PLATFORM, reason="requires dockerpty")
+    @mock.patch('compose.cli.main.PseudoTerminal', autospec=True)
+    def test_run_interactive_passes_logs_false(self, mock_pseudo_terminal):
+        command = TopLevelCommand()
+        mock_client = mock.create_autospec(docker.Client)
+        mock_project = mock.Mock(client=mock_client)
+        mock_project.get_service.return_value = Service(
+            'service',
+            client=mock_client,
+            environment=['FOO=ONE', 'BAR=TWO'],
+            image='someimage')
+
+        with pytest.raises(SystemExit):
+            command.run(mock_project, {
+                'SERVICE': 'service',
+                'COMMAND': None,
+                '-e': ['BAR=NEW', 'OTHER=bär'.encode('utf-8')],
+                '--user': None,
+                '--no-deps': None,
+                '-d': False,
+                '-T': None,
+                '--entrypoint': None,
+                '--service-ports': None,
+                '--publish': [],
+                '--rm': None,
+                '--name': None,
+            })
+
+        _, _, call_kwargs = mock_pseudo_terminal.mock_calls[0]
+        assert call_kwargs['logs'] is False
+
     @pytest.mark.xfail(IS_WINDOWS_PLATFORM, reason="requires dockerpty")
     @mock.patch('compose.cli.main.PseudoTerminal', autospec=True)
     def test_run_with_environment_merged_with_options_list(self, mock_pseudo_terminal):