diff --git a/pycgtool/forcefield.py b/pycgtool/forcefield.py index 89f2090ca483e61ec5289eee9d750318e50b03f3..be34b5727fe000f62e2a0b13ec82c766bfe0c5d6 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 05aee8ad73ea42ff51eadf9f76892903077b21a5..57d5ed869f3d70e42f600c6627320f91158cbb56 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 = [