def test_delete_instruction(self, dfparser, instruction, existing, delete_key, expected): existing = [instruction + ' ' + i for i in existing] if isinstance(expected, list): expected = [instruction + ' ' + i for i in expected] dfparser.lines = ["FROM xyz\n"] + existing if isinstance(expected, KeyError): with pytest.raises(KeyError): dfparser._delete_instructions(instruction, delete_key) else: dfparser._delete_instructions(instruction, delete_key) assert set(dfparser.lines[1:]) == set(expected)
def test_add_del_instruction(self, dfparser): df_content = """\ CMD xyz LABEL a=b c=d LABEL x=\"y z\" ENV h i ENV j='k' l=m """ dfparser.content = df_content dfparser._add_instruction('FROM', 'fedora') assert dfparser.baseimage == 'fedora' dfparser._delete_instructions('FROM') assert dfparser.baseimage is None dfparser._add_instruction('FROM', 'fedora') assert dfparser.baseimage == 'fedora' dfparser._delete_instructions('FROM', 'fedora') assert dfparser.baseimage is None dfparser._add_instruction('LABEL', ('Name', 'self')) assert len(dfparser.labels) == 4 assert dfparser.labels.get('Name') == 'self' dfparser._delete_instructions('LABEL') assert dfparser.labels == {} dfparser._add_instruction('ENV', ('Name', 'self')) assert len(dfparser.envs) == 4 assert dfparser.envs.get('Name') == 'self' dfparser._delete_instructions('ENV') assert dfparser.envs == {} assert dfparser.cmd == 'xyz'