From 19b40540b0254c47d7a70eef12c2200bb96a4b9d Mon Sep 17 00:00:00 2001 From: James Graham <j.graham@soton.ac.uk> Date: Sat, 9 Oct 2021 16:21:06 +0100 Subject: [PATCH] fix: backup forcefield directories instead of overwrite --- pycgtool/forcefield.py | 3 ++- tests/test_forcefield.py | 22 ++++++++++++++-------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/pycgtool/forcefield.py b/pycgtool/forcefield.py index 89f2090..be34b57 100644 --- a/pycgtool/forcefield.py +++ b/pycgtool/forcefield.py @@ -8,7 +8,7 @@ import shutil import typing from .parsers import CFG -from .util import any_starts_with, file_write_lines +from .util import any_starts_with, backup_file, file_write_lines PathLike = typing.Union[pathlib.Path, str] @@ -32,6 +32,7 @@ class ForceField: :param str name: Forcefield name to open/create """ self.directory = pathlib.Path(dir_path).joinpath(f'ff{name}.ff') + backup_file(self.directory) self.directory.mkdir(parents=True, exist_ok=True) with open(self.directory.joinpath('forcefield.itp'), 'w') as itp: diff --git a/tests/test_forcefield.py b/tests/test_forcefield.py index 05aee8a..57d5ed8 100644 --- a/tests/test_forcefield.py +++ b/tests/test_forcefield.py @@ -1,6 +1,7 @@ -import unittest -import os import collections +import pathlib +import tempfile +import unittest from pycgtool.forcefield import ForceField @@ -57,13 +58,18 @@ class ForceFieldTest(unittest.TestCase): self.bondset = DummyBondSet(self.bonds, "Dummy") def test_create(self): - name = "test" - dirname = "fftest.ff" + with tempfile.TemporaryDirectory() as t: + tmp_dir = pathlib.Path(t) + + name = "test" + ff_dir = tmp_dir.joinpath('fftest.ff') + + ForceField(name, dir_path=tmp_dir) + self.assertTrue(ff_dir.exists()) + self.assertTrue(ff_dir.is_dir()) - ForceField(name) - self.assertTrue(os.path.exists(dirname)) - self.assertTrue(os.path.isdir(dirname)) - ForceField(name) + # Makes a backup of the existing ff and replaces it + ForceField(name, dir_path=tmp_dir) def test_bond_section(self): expected = [ -- GitLab