Source code for aiida.backends.tests.orm.data.test_remote

# -*- coding: utf-8 -*-
###########################################################################
# Copyright (c), The AiiDA team. All rights reserved.                     #
# This file is part of the AiiDA code.                                    #
#                                                                         #
# The code is hosted on GitHub at https://github.com/aiidateam/aiida_core #
# For further information on the license, see the LICENSE.txt file        #
# For further information please visit http://www.aiida.net               #
###########################################################################
from __future__ import division
from __future__ import print_function
from __future__ import absolute_import

import errno
import io
import os
import shutil
import tempfile

from aiida.backends.testbase import AiidaTestCase
from aiida.orm import RemoteData, User, AuthInfo


[docs]class TestRemoteData(AiidaTestCase): """Test for the RemoteData class."""
[docs] @classmethod def setUpClass(cls): super(TestRemoteData, cls).setUpClass() user = User.objects.get_default() authinfo = AuthInfo(cls.computer, user) authinfo.store()
[docs] def setUp(self): """Create a dummy RemoteData on the default computer.""" self.tmp_path = tempfile.mkdtemp() self.remote = RemoteData(computer=self.computer) self.remote.set_remote_path(self.tmp_path) with io.open(os.path.join(self.tmp_path, 'file.txt'), 'w', encoding='utf8') as fhandle: fhandle.write(u'test string') self.remote.computer = self.computer self.remote.store()
[docs] def tearDown(self): """Delete the temporary path for the dummy RemoteData node.""" try: shutil.rmtree(self.tmp_path) except OSError as exception: if exception.errno == errno.ENOENT: pass elif exception.errno == errno.ENOTDIR: os.remove(self.tmp_path) else: raise IOError(exception)
[docs] def test_clean(self): """Try cleaning a RemoteData node.""" self.assertFalse(self.remote.is_empty) self.remote._clean() self.assertTrue(self.remote.is_empty)