|
1 | 1 | import os
|
2 | 2 | import os.path
|
3 | 3 | import unittest
|
| 4 | +import tempfile |
4 | 5 |
|
5 | 6 | from docker.client import Client
|
6 | 7 | from docker.errors import DockerException
|
7 | 8 | from docker.utils import (
|
8 | 9 | parse_repository_tag, parse_host, convert_filters, kwargs_from_env,
|
9 |
| - create_host_config, Ulimit, LogConfig, parse_bytes |
| 10 | + create_host_config, Ulimit, LogConfig, parse_bytes, parse_env_file |
10 | 11 | )
|
11 | 12 | from docker.utils.ports import build_port_bindings, split_port
|
12 | 13 | from docker.auth import resolve_repository_name, resolve_authconfig
|
|
17 | 18 | class UtilsTest(base.BaseTestCase):
|
18 | 19 | longMessage = True
|
19 | 20 |
|
| 21 | + def generate_tempfile(self, file_content=None): |
| 22 | + """ |
| 23 | + Generates a temporary file for tests with the content |
| 24 | + of 'file_content' and returns the filename. |
| 25 | + Don't forget to unlink the file with os.unlink() after. |
| 26 | + """ |
| 27 | + local_tempfile = tempfile.NamedTemporaryFile(delete=False) |
| 28 | + local_tempfile.write(file_content.encode('UTF-8')) |
| 29 | + local_tempfile.close() |
| 30 | + return local_tempfile.name |
| 31 | + |
20 | 32 | def setUp(self):
|
21 | 33 | self.os_environ = os.environ.copy()
|
22 | 34 |
|
@@ -95,6 +107,28 @@ def test_kwargs_from_env(self):
|
95 | 107 | except TypeError as e:
|
96 | 108 | self.fail(e)
|
97 | 109 |
|
| 110 | + def test_parse_env_file_proper(self): |
| 111 | + env_file = self.generate_tempfile( |
| 112 | + file_content='USER=jdoe\nPASS=secret') |
| 113 | + get_parse_env_file = parse_env_file(env_file) |
| 114 | + self.assertEqual(get_parse_env_file, |
| 115 | + {'USER': 'jdoe', 'PASS': 'secret'}) |
| 116 | + os.unlink(env_file) |
| 117 | + |
| 118 | + def test_parse_env_file_commented_line(self): |
| 119 | + env_file = self.generate_tempfile( |
| 120 | + file_content='USER=jdoe\n#PASS=secret') |
| 121 | + get_parse_env_file = parse_env_file((env_file)) |
| 122 | + self.assertEqual(get_parse_env_file, {'USER': 'jdoe'}) |
| 123 | + os.unlink(env_file) |
| 124 | + |
| 125 | + def test_parse_env_file_invalid_line(self): |
| 126 | + env_file = self.generate_tempfile( |
| 127 | + file_content='USER jdoe') |
| 128 | + self.assertRaises( |
| 129 | + DockerException, parse_env_file, env_file) |
| 130 | + os.unlink(env_file) |
| 131 | + |
98 | 132 | def test_convert_filters(self):
|
99 | 133 | tests = [
|
100 | 134 | ({'dangling': True}, '{"dangling": ["true"]}'),
|
|
0 commit comments