Skip to content

Commit

Permalink
Re #11886 Should fix unit test on Unix
Browse files Browse the repository at this point in the history
and better logic behind replacing sample file.
  • Loading branch information
abuts committed Jun 3, 2015
1 parent 55038a0 commit 7fb7b1d
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 23 deletions.
34 changes: 16 additions & 18 deletions Code/Mantid/scripts/Inelastic/Direct/ISISDirecInelasticConfig.py
Expand Up @@ -4,6 +4,7 @@
import re
import copy
from datetime import date
import time

# the list of instruments this configuration is applicable to
INELASTIC_INSTRUMENTS = ['MAPS','LET','MERLIN','MARI','HET']
Expand Down Expand Up @@ -207,34 +208,26 @@ def config_need_replacing(self,config_file_name):
#
def script_need_replacing(self,source_script_name,target_script_name):
"""Method specifies conditions when existing reduction file should be replaced
by sample file
by a sample file.
"""
if self._force_change_script:
return True
# missing file should always be replaced
# non-existing file should always be replaced
if not os.path.isfile(target_script_name):
return True
# if user already started -- do not replace his config
#except when changes are forced
now_is = date.today()
#Always replace sample file if it has not been touched
start_date = self._user.get_start_date()
if now_is >start_date:
return False
#
time_targ = os.path.getmtime(target_script_name)

time_source = os.path.getmtime(source_script_name)
# we may want better granularity in a future
# source_mod_date = date.fromtimestamp(time_source)
# targ_mod_date = date.fromtimestamp(time_targ)
if time_targ < time_source:
# this time is set up to the file, copied from the repository
sample_file_time = time.mktime(start_date.timetuple())
targ_file_time = os.path.getmtime(target_script_name)
if sample_file_time == targ_file_time:
return True
else:
else: # somebody have modified the target file. Leave it alone
return False
#
def copy_reduction_sample(self,InstrName,CycleID,rb_folder):
""" Method copies sample reduction script from user script repository
to user folder.
"""Method copies sample reduction script from user script repository
to user folder.
"""

source_file = self._sample_reduction_file(InstrName)
Expand All @@ -254,8 +247,13 @@ def copy_reduction_sample(self,InstrName,CycleID,rb_folder):
os.remove(full_target)
shutil.copyfile(full_source,full_target)
os.chmod(full_target,0777)

if platform.system() != 'Windows':
os.system('chown '+self._fedid+':'+self._fedid+' '+full_target)
# Set up the file creation and modification dates to the users start date
start_date = self._user.get_start_date()
file_time = time.mktime(start_date.timetuple())
os.utime(full_target,(file_time,file_time))


def get_data_folder_name(self,instr,cycle_ID):
Expand Down
13 changes: 8 additions & 5 deletions Code/Mantid/scripts/test/ISISDirecInelasticConfigTest.py
Expand Up @@ -227,7 +227,7 @@ def test_build_3Experiments_config(self):
os.makedirs(user1RootDir)
#
user1 = UserProperties()
user1.set_user_properties('MARI','39990124','CYCLE39991',rbdir2)
user1.set_user_properties('MARI','20990124','CYCLE20991',rbdir2)

mcf.init_user(user1ID,user1)
source_file = self.makeFakeSourceReductionFile(mcf)
Expand All @@ -247,11 +247,14 @@ def test_build_3Experiments_config(self):
target_file = mcf._target_reduction_file(instr,cycle_id)
full_target_file = os.path.join(full_rb_path,target_file)
self.assertTrue(os.path.exists(full_target_file))
# target file does not need replacing
# Fresh target file should always be replaced
self.assertTrue(mcf.script_need_replacing(source_file,full_target_file))
# modify target file access time:
access_time = os.path.getmtime(full_target_file)
now = time.time()
os.utime(full_target_file,(access_time ,now))
# should not replace modified target file
self.assertFalse(mcf.script_need_replacing(source_file,full_target_file))
# make new fake configuration file
new_source = self.makeFakeSourceReductionFile(mcf,'New')
self.assertTrue(mcf.script_need_replacing(new_source,full_target_file))

#--------------------------------------------------------------------
# clean up
Expand Down

0 comments on commit 7fb7b1d

Please sign in to comment.