From fdaf74f51e5e6efc9a3d0be003c46c19e2daa3a0 Mon Sep 17 00:00:00 2001
From: David Fairbrother <DavidFair@users.noreply.github.com>
Date: Mon, 8 May 2017 14:22:12 +0100
Subject: [PATCH] Re #19500 Store file extension if specified to use at load
 time

---
 .../gem_routines/gem_param_mapping.py            |  1 +
 .../pearl_routines/pearl_param_mapping.py        |  1 +
 .../polaris_routines/polaris_param_mapping.py    |  1 +
 .../isis_powder/routines/run_details.py          | 16 ++++++++++------
 scripts/test/ISISPowderRunDetailsTest.py         |  6 ++++--
 5 files changed, 17 insertions(+), 8 deletions(-)

diff --git a/scripts/Diffraction/isis_powder/gem_routines/gem_param_mapping.py b/scripts/Diffraction/isis_powder/gem_routines/gem_param_mapping.py
index 0b6cdb07213..0b6cbddd04b 100644
--- a/scripts/Diffraction/isis_powder/gem_routines/gem_param_mapping.py
+++ b/scripts/Diffraction/isis_powder/gem_routines/gem_param_mapping.py
@@ -11,6 +11,7 @@ attr_mapping = \
      ParamMapEntry(ext_name="calibration_mapping_file",  int_name="cal_mapping_path"),
      ParamMapEntry(ext_name="config_file",               int_name="config_file"),
      ParamMapEntry(ext_name="do_absorb_corrections",     int_name="do_absorb_corrections"),
+     ParamMapEntry(ext_name="file_ext",                  int_name="file_extension"),
      ParamMapEntry(ext_name="focused_cropping_values",   int_name="focused_cropping_values"),
      ParamMapEntry(ext_name="grouping_file_name",        int_name="grouping_file_name"),
      ParamMapEntry(ext_name="input_mode",                int_name="input_batching", enum_class=INPUT_BATCHING),
diff --git a/scripts/Diffraction/isis_powder/pearl_routines/pearl_param_mapping.py b/scripts/Diffraction/isis_powder/pearl_routines/pearl_param_mapping.py
index 1e07be4b10f..e116958d956 100644
--- a/scripts/Diffraction/isis_powder/pearl_routines/pearl_param_mapping.py
+++ b/scripts/Diffraction/isis_powder/pearl_routines/pearl_param_mapping.py
@@ -11,6 +11,7 @@ attr_mapping = \
         ParamMapEntry(ext_name="calibration_config_path",    int_name="cal_mapping_path"),
         ParamMapEntry(ext_name="calibration_directory",      int_name="calibration_dir"),
         ParamMapEntry(ext_name="do_absorb_corrections",      int_name="absorb_corrections"),
+        ParamMapEntry(ext_name="file_ext",                   int_name="file_extension"),
         ParamMapEntry(ext_name="focus_mode",                 int_name="focus_mode", enum_class=PEARL_FOCUS_MODES),
         ParamMapEntry(ext_name="long_mode",                  int_name="long_mode"),
         ParamMapEntry(ext_name="monitor_lambda_crop_range",  int_name="monitor_lambda"),
diff --git a/scripts/Diffraction/isis_powder/polaris_routines/polaris_param_mapping.py b/scripts/Diffraction/isis_powder/polaris_routines/polaris_param_mapping.py
index 50d351e942f..d5ad57c5149 100644
--- a/scripts/Diffraction/isis_powder/polaris_routines/polaris_param_mapping.py
+++ b/scripts/Diffraction/isis_powder/polaris_routines/polaris_param_mapping.py
@@ -12,6 +12,7 @@ attr_mapping = \
      ParamMapEntry(ext_name="config_file",              int_name="config_file"),
      ParamMapEntry(ext_name="do_absorb_corrections",    int_name="do_absorb_corrections"),
      ParamMapEntry(ext_name="do_van_normalisation",     int_name="do_van_normalisation"),
+     ParamMapEntry(ext_name="file_ext",                 int_name="file_extension"),
      ParamMapEntry(ext_name="focused_cropping_values",  int_name="focused_cropping_values"),
      ParamMapEntry(ext_name="grouping_file_name",       int_name="grouping_file_name"),
      ParamMapEntry(ext_name="input_mode",               int_name="input_mode", enum_class=INPUT_BATCHING),
diff --git a/scripts/Diffraction/isis_powder/routines/run_details.py b/scripts/Diffraction/isis_powder/routines/run_details.py
index 423ce13a6bf..20a9dbe1573 100644
--- a/scripts/Diffraction/isis_powder/routines/run_details.py
+++ b/scripts/Diffraction/isis_powder/routines/run_details.py
@@ -37,8 +37,11 @@ def create_run_details_object(run_number_string, inst_settings, is_vanadium_run,
         run_number = vanadium_run_string
         output_run_string = vanadium_run_string
     else:
+        # Otherwise set it to the user input
         output_run_string = run_number_string
 
+    # Get the file extension if set
+    file_extension = getattr(inst_settings, "file_extension", None)
     # Sample empty if there is one
     sample_empty = getattr(inst_settings, "sample_empty", None)
 
@@ -49,11 +52,11 @@ def create_run_details_object(run_number_string, inst_settings, is_vanadium_run,
     splined_van_path = os.path.join(calibration_dir, label, results_dict["splined_van_name"])
     van_absorb_path = os.path.join(calibration_dir, van_abs_file_name) if van_abs_file_name else None
 
-    return _RunDetails(empty_run_number=results_dict["empty_runs"], run_number=run_number,
-                       output_run_string=output_run_string, label=label, offset_file_path=offset_file_path,
-                       grouping_file_path=grouping_file_path, splined_vanadium_path=splined_van_path,
-                       vanadium_run_number=vanadium_run_string, sample_empty=sample_empty,
-                       vanadium_abs_path=van_absorb_path)
+    return _RunDetails(empty_run_number=results_dict["empty_runs"], file_extension=file_extension,
+                       run_number=run_number, output_run_string=output_run_string, label=label,
+                       offset_file_path=offset_file_path, grouping_file_path=grouping_file_path,
+                       splined_vanadium_path=splined_van_path, vanadium_run_number=vanadium_run_string,
+                       sample_empty=sample_empty, vanadium_abs_path=van_absorb_path)
 
 
 def _get_customisable_attributes(cal_dict, inst_settings, empty_run_call, grouping_name_call, vanadium_run_call,
@@ -158,7 +161,7 @@ class _RunDetails(object):
     This class holds the full file paths associated with each run and various other useful attributes
     """
 
-    def __init__(self, empty_run_number, run_number, output_run_string, label,
+    def __init__(self, empty_run_number, file_extension, run_number, output_run_string, label,
                  offset_file_path, grouping_file_path, splined_vanadium_path, vanadium_run_number,
                  sample_empty, vanadium_abs_path):
 
@@ -176,5 +179,6 @@ class _RunDetails(object):
         self.vanadium_run_numbers = vanadium_run_number
 
         # Optional
+        self.file_extension = file_extension
         self.sample_empty = sample_empty
         self.vanadium_absorption_path = vanadium_abs_path
diff --git a/scripts/test/ISISPowderRunDetailsTest.py b/scripts/test/ISISPowderRunDetailsTest.py
index 9f2319f54e1..2770b0889eb 100644
--- a/scripts/test/ISISPowderRunDetailsTest.py
+++ b/scripts/test/ISISPowderRunDetailsTest.py
@@ -14,13 +14,15 @@ from isis_powder.routines import run_details
 class ISISPowderInstrumentRunDetailsTest(unittest.TestCase):
     def setup_mock_inst_settings(self, yaml_file_path):
         calibration_dir = tempfile.mkdtemp()
+        # Keep track of list of folders to remove
         self._folders_to_remove = [calibration_dir]
 
+        # Check the required unit test files could be found
         test_configuration_path = mantid.api.FileFinder.getFullPath(yaml_file_path)
         if not test_configuration_path or len(test_configuration_path) <= 0:
             self.fail("Could not find the unit test input file called: " + str(yaml_file_path))
-        mock_inst = MockInstSettings(cal_file_path=test_configuration_path, calibration_dir=calibration_dir)
-        return mock_inst
+
+        return MockInstSettings(cal_file_path=test_configuration_path, calibration_dir=calibration_dir)
 
     def tearDown(self):
         for folder in self._folders_to_remove:
-- 
GitLab