def test_valid_interpolations(self): self.assertEqual(interpolate('$foo', bddict(foo='hi')), 'hi') self.assertEqual(interpolate('${foo}', bddict(foo='hi')), 'hi') self.assertEqual(interpolate('${subject} love you', bddict(subject='i')), 'i love you') self.assertEqual(interpolate('i ${verb} you', bddict(verb='love')), 'i love you') self.assertEqual(interpolate('i love ${object}', bddict(object='you')), 'i love you')
def test_invalid_strings(self): self.assertRaises(InvalidInterpolation, lambda: interpolate('${', bddict())) self.assertRaises(InvalidInterpolation, lambda: interpolate('$}', bddict())) self.assertRaises(InvalidInterpolation, lambda: interpolate('${}', bddict())) self.assertRaises(InvalidInterpolation, lambda: interpolate('${ }', bddict())) self.assertRaises(InvalidInterpolation, lambda: interpolate('${ foo}', bddict())) self.assertRaises(InvalidInterpolation, lambda: interpolate('${foo }', bddict())) self.assertRaises(InvalidInterpolation, lambda: interpolate('${foo!}', bddict()))
def get_version_info(self, original_fnc, no_cache=False, pull=False, force_rm=False): tmp_docker_file_name_with_path = None if 'build' in self.options: environment = merge_two_dicts(self.options.get('environment', {}), dict(Environment.from_env_file('.'))) build_path = self.options['build']['context'] if 'dockerfile' in self.options['build']: docker_file_name = self.options['build']['dockerfile'] else: docker_file_name = 'Dockerfile' docker_file_name_with_path = os.path.join(build_path, docker_file_name) tmp_docker_file_name_with_path = os.path.join( build_path, '.tmp_' + docker_file_name) with open(docker_file_name_with_path, 'r') as docker_file,\ open(tmp_docker_file_name_with_path, 'w') as tmp_docker_file: for line in docker_file: line_to_write = None for command in docker_build_interpolatable_commands: if line.strip().startswith(command): line_to_write = interpolate(line, environment) if line_to_write is None: line_to_write = line tmp_docker_file.write(line_to_write) self.options['build']['dockerfile'] = tmp_docker_file_name_with_path try: return_value = original_fnc(self, no_cache, pull, force_rm) if tmp_docker_file_name_with_path is not None: os.remove(tmp_docker_file_name_with_path) return return_value except BuildError as e: if tmp_docker_file_name_with_path is not None: os.remove(tmp_docker_file_name_with_path) raise e
def test_escaped_interpolation(self): self.assertEqual(interpolate('$${foo}', bddict(foo='hi')), '${foo}')
def test_unset_value(self): self.assertEqual(interpolate('${foo}', bddict()), '')
def test_empty_value(self): self.assertEqual(interpolate('${foo}', bddict(foo='')), '')