From b2e61155f8e92154cd1493c3be245d7e2afa52f5 Mon Sep 17 00:00:00 2001
From: Kelvin Rodriguez <kr788@nau.edu>
Date: Mon, 26 Aug 2019 12:04:38 -0700
Subject: [PATCH] Removed config file from ALE (#251)

* kernel list support added

* simple spice as fixture

* removed abstractmethod tags

* added property tags

* addressed comments

* removed config, combined kernel and metakernel methods, added test for metakerenl queries

* added test to env var

* Add short name test for dawn

* Add other short name tests
---
 ale/__init__.py                               | 29 ++++----------
 ale/base/base.py                              |  4 ++
 ale/base/data_isis.py                         |  1 -
 ale/base/data_naif.py                         | 14 +++----
 ale/config.yml                                |  8 ----
 ale/drivers/__init__.py                       |  2 +-
 .../{cassini_drivers.py => co_drivers.py}     | 19 ---------
 ale/drivers/dawn_drivers.py                   | 20 ----------
 ale/drivers/lro_drivers.py                    | 28 +++----------
 .../{messenger_drivers.py => mes_drivers.py}  | 37 ------------------
 ale/drivers/mex_drivers.py                    | 19 ---------
 ale/drivers/mro_drivers.py                    | 39 -------------------
 .../{kaguya_drivers.py => selene_drivers.py}  | 21 +---------
 bin/change_mk_data_path.py                    |  2 +-
 tests/pytests/test_cassini_drivers.py         |  9 +++--
 tests/pytests/test_data_naif.py               |  1 -
 tests/pytests/test_dawn_drivers.py            |  3 ++
 tests/pytests/test_env.py                     | 16 ++++++++
 tests/pytests/test_kaguya_drivers.py          |  9 +++--
 tests/pytests/test_lro_drivers.py             |  2 +
 tests/pytests/test_mdis_drivers.py            | 13 ++++---
 tests/pytests/test_mro_drivers.py             |  3 ++
 22 files changed, 69 insertions(+), 230 deletions(-)
 delete mode 100644 ale/config.yml
 rename ale/drivers/{cassini_drivers.py => co_drivers.py} (95%)
 rename ale/drivers/{messenger_drivers.py => mes_drivers.py} (91%)
 rename ale/drivers/{kaguya_drivers.py => selene_drivers.py} (96%)
 create mode 100644 tests/pytests/test_env.py

diff --git a/ale/__init__.py b/ale/__init__.py
index ee4529a..08269ea 100644
--- a/ale/__init__.py
+++ b/ale/__init__.py
@@ -1,28 +1,7 @@
 import os
-import pathlib
-from shutil import copyfile
-import yaml
+import warnings
 from pkg_resources import get_distribution, DistributionNotFound
 
-class DotDict(dict):
-    """dot.notation access to dictionary attributes"""""
-    __getattr__ = dict.get
-    __setattr__ = dict.__setitem__
-    __delattr__ = dict.__delitem__
-
-    def __str__(self):
-        return yaml.dump(dict(self))
-
-home_path = os.path.expanduser('~')
-config_dir = pathlib.Path(os.path.join(home_path, '.ale'))
-config_file_path = pathlib.Path(os.path.join(home_path, '.ale', 'config.yml'))
-
-config_dir.mkdir(parents=True, exist_ok=True)
-
-if not config_file_path.is_file():
-  copyfile(os.path.join(os.path.dirname(__file__), 'config.yml'), config_file_path)
-
-config = DotDict(yaml.load(open(config_file_path), Loader=yaml.FullLoader))
 
 try:
     _dist = get_distribution('ale')
@@ -37,6 +16,12 @@ except DistributionNotFound:
 else:
     __version__ = _dist.version
 
+try:
+    spice_root = os.environ['ALESPICEROOT']
+except:
+    warnings.warn('ALESPICEROOT environment variable not set, Spice Drivers will not function correctly')
+    spice_root = None
+
 # bring ale stuff into main ale module
 from . import drivers
 from . import formatters
diff --git a/ale/base/base.py b/ale/base/base.py
index 896a25a..83a435e 100644
--- a/ale/base/base.py
+++ b/ale/base/base.py
@@ -308,3 +308,7 @@ class Driver():
           Center ephemeris time for an image
         """
         return (self.ephemeris_start_time + self.ephemeris_stop_time) / 2
+
+    @property
+    def short_mission_name(self):
+        return self.__module__.split('.')[-1].split('_')[0]
diff --git a/ale/base/data_isis.py b/ale/base/data_isis.py
index 67acb61..3cd979d 100644
--- a/ale/base/data_isis.py
+++ b/ale/base/data_isis.py
@@ -11,7 +11,6 @@ import pvl
 import spiceypy as spice
 from ale.rotation import ConstantRotation, TimeDependentRotation
 from ale.transformation import FrameChain
-from ale import config
 
 from scipy.interpolate import interp1d, BPoly
 
diff --git a/ale/base/data_naif.py b/ale/base/data_naif.py
index 36af7b5..ee4309e 100644
--- a/ale/base/data_naif.py
+++ b/ale/base/data_naif.py
@@ -4,6 +4,7 @@ import numpy as np
 from ale.base.type_sensor import Framer
 from ale.transformation import FrameChain
 from ale.rotation import TimeDependentRotation
+from ale import util
 
 class NaifSpice():
     def __enter__(self):
@@ -13,8 +14,6 @@ class NaifSpice():
         """
         if self.kernels:
             [spice.furnsh(k) for k in self.kernels]
-        elif self.metakernel:
-            spice.furnsh(self.metakernel)
         return self
 
     def __exit__(self, exc_type, exc_val, exc_tb):
@@ -25,18 +24,17 @@ class NaifSpice():
         """
         if self.kernels:
             [spice.unload(k) for k in self.kernels]
-        else:
-            spice.unload(self.metakernel)
 
     @property
     def kernels(self):
         if not hasattr(self, '_kernels'):
-            self._kernels =  self._props.get('kernels', None)
+            if 'kernels' in self._props.keys():
+                self._kernels =  self._props['kernels']
+            else:
+                search_results = util.get_metakernels(missions=self.short_mission_name, years=self.utc_start_time.year, versions='latest')
+                self._kernels = [search_results['data'][0]['path']]
         return self._kernels
 
-    def metakernel(self):
-        pass
-
     @property
     def light_time_correction(self):
         """
diff --git a/ale/config.yml b/ale/config.yml
deleted file mode 100644
index f39a9aa..0000000
--- a/ale/config.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-spice_root: "/data/spice/"
-cassini: '/scratch/jlaura/spice/co-s_j_e_v-spice-6-v1.0/cosp_1000/extras/mk/' # Cassini ISS
-mdis: '/scratch/jlaura/spice/mess-e_v_h-spice-6-v1.0/messsp_1000/extras/mk' # Messenger
-mex: '/scratch/jlaura/spice/mex-e_m-spice-6-v1.0/mexsp_1000/EXTRAS/MK' # Mars Explorer
-mro: '/data/spice/mro-m-spice-6-v1.0/mrosp_1000/extras/mk' # Mars Reconnaissance Orbiter
-kaguya: '/data/spice/SELENE/kernels/mk/'
-dawn: '/scratch/spice/dawn-m_a-spice-6-v1.0/dawnsp_1000/extras/mk/'
-lro: '/scratch/jlaura/spice/lro-l-spice-6-v1.0/lrosp_1000/extras/mk/' # LRO
diff --git a/ale/drivers/__init__.py b/ale/drivers/__init__.py
index 9bfaeaa..36f4cb2 100644
--- a/ale/drivers/__init__.py
+++ b/ale/drivers/__init__.py
@@ -46,7 +46,7 @@ class JsonEncoder(json.JSONEncoder):
         return json.JSONEncoder.default(self, obj)
 
 
-def load(label, formatter='usgscsm'):
+def load(file_path, formatter='usgscsm'):
     """
     Attempt to load a given label from all possible drivers
 
diff --git a/ale/drivers/cassini_drivers.py b/ale/drivers/co_drivers.py
similarity index 95%
rename from ale/drivers/cassini_drivers.py
rename to ale/drivers/co_drivers.py
index e7d10c3..25eb209 100644
--- a/ale/drivers/cassini_drivers.py
+++ b/ale/drivers/co_drivers.py
@@ -5,7 +5,6 @@ import numpy as np
 
 import pvl
 import spiceypy as spice
-from ale import config
 from ale.base import Driver
 from ale.base.data_naif import NaifSpice
 from ale.base.label_pds3 import Pds3Label
@@ -80,24 +79,6 @@ class CassiniIssPds3LabelNaifSpiceDriver(Framer, Pds3Label, NaifSpice, RadialDis
         ("P120","UV3"):2002.71
     }
 
-
-    @property
-    def metakernel(self):
-        """
-        Returns latest instrument metakernels
-
-        Returns
-        -------
-        : string
-          Path to latest metakernel file
-        """
-        metakernel_dir = config.cassini
-        year = self.utc_start_time.year
-
-        if not hasattr(self, '_metakernel'):
-            self._metakernel = find_latest_metakernel(metakernel_dir, year)
-        return self._metakernel
-
     @property
     def instrument_id(self):
         """
diff --git a/ale/drivers/dawn_drivers.py b/ale/drivers/dawn_drivers.py
index 7d7f9fb..48d3a4a 100644
--- a/ale/drivers/dawn_drivers.py
+++ b/ale/drivers/dawn_drivers.py
@@ -5,7 +5,6 @@ import os
 from glob import glob
 
 import ale
-from ale import config
 from ale.base import Driver
 from ale.base.data_naif import NaifSpice
 from ale.base.label_pds3 import Pds3Label
@@ -35,25 +34,6 @@ class DawnFcPds3NaifSpiceDriver(Framer, Pds3Label, NaifSpice, Driver):
 
         return "DAWN_{}_FILTER_{}".format(instrument_id, filter_number)
 
-    @property
-    def metakernel(self):
-        """
-        Returns latest instrument metakernels
-
-        Returns
-        -------
-        : string
-          Path to latest metakernel file
-        """
-        metakernel_dir = config.dawn
-        mks = sorted(glob(os.path.join(metakernel_dir,'*.tm')))
-        if not hasattr(self, '_metakernel'):
-            self._metakernel = None
-            for mk in mks:
-                if str(self.utc_start_time.year) in os.path.basename(mk):
-                    self._metakernel = mk
-        return self._metakernel
-
     @property
     def label(self):
         """
diff --git a/ale/drivers/lro_drivers.py b/ale/drivers/lro_drivers.py
index 9fc6076..5246e6e 100644
--- a/ale/drivers/lro_drivers.py
+++ b/ale/drivers/lro_drivers.py
@@ -4,7 +4,6 @@ import pvl
 import spiceypy as spice
 from glob import glob
 
-from ale import config
 from ale.util import get_metakernels
 from ale.base import Driver
 from ale.base.data_naif import NaifSpice
@@ -42,28 +41,6 @@ class LroLrocPds3LabelNaifSpiceDriver(LineScanner, NaifSpice, Pds3Label, Driver)
         elif instrument == "LROC" and frame_id == "RIGHT":
             return "LRO_LROCNACR"
 
-
-    @property
-    def metakernel(self):
-        """
-        Returns latest instrument metakernels
-
-        Returns
-        -------
-        : str
-          Path to latest metakernel file
-        """
-        metakernel_dir = config.lro
-
-        mks = sorted(glob(os.path.join(metakernel_dir, '*.tm')))
-        if not hasattr(self, '_metakernel'):
-            self._metakernel = None
-            for mk in mks:
-                if str(self.utc_start_time.year) in os.path.basename(mk):
-                    self._metakernel = mk
-        return self._metakernel
-
-
     @property
     def spacecraft_name(self):
         """
@@ -225,6 +202,11 @@ class LroLrocPds3LabelNaifSpiceDriver(LineScanner, NaifSpice, Pds3Label, Driver)
          """
         return 1024.0
 
+    @property
+    def mission_name(self):
+        return self.label['MISSION_NAME']
+
+
     @property
     def sampling_factor(self):
         """
diff --git a/ale/drivers/messenger_drivers.py b/ale/drivers/mes_drivers.py
similarity index 91%
rename from ale/drivers/messenger_drivers.py
rename to ale/drivers/mes_drivers.py
index 18171c1..801472c 100644
--- a/ale/drivers/messenger_drivers.py
+++ b/ale/drivers/mes_drivers.py
@@ -5,7 +5,6 @@ import pvl
 import spiceypy as spice
 import numpy as np
 
-from ale import config
 from ale.base import Driver
 from ale.base.data_naif import NaifSpice
 from ale.base.label_pds3 import Pds3Label
@@ -23,24 +22,6 @@ class MessengerMdisPds3NaifSpiceDriver(Framer, Pds3Label, NaifSpice, Driver):
     ephemeris and instrument data located exclusively in spice kernels.
     """
 
-    @property
-    def metakernel(self):
-        """
-        Returns latest instrument metakernels
-
-        Returns
-        -------
-        : string
-          Path to latest metakernel file
-        """
-        metakernel_dir = config.mdis
-        mks = sorted(glob(os.path.join(metakernel_dir,'*.tm')))
-        if not hasattr(self, '_metakernel'):
-            for mk in mks:
-                if str(self.utc_start_time.year) in os.path.basename(mk):
-                    self._metakernel = mk
-        return self._metakernel
-
     @property
     def spacecraft_name(self):
         """
@@ -233,24 +214,6 @@ class MessengerMdisIsisLabelNaifSpiceDriver(IsisLabel, NaifSpice, Framer, Driver
     into ISIS from PDS EDR images but have not been spiceinit'd yet.
     """
 
-    @property
-    def metakernel(self):
-        """
-        Returns latest instrument metakernels
-
-        Returns
-        -------
-        : string
-          Path to latest metakernel file
-        """
-        metakernel_dir = config.mdis
-        mks = sorted(glob(os.path.join(metakernel_dir,'*.tm')))
-        if not hasattr(self, '_metakernel'):
-            for mk in mks:
-                if str(self.utc_start_time.year) in os.path.basename(mk):
-                    self._metakernel = mk
-        return self._metakernel
-
     @property
     def instrument_id(self):
         """
diff --git a/ale/drivers/mex_drivers.py b/ale/drivers/mex_drivers.py
index 725ca92..61af9fd 100644
--- a/ale/drivers/mex_drivers.py
+++ b/ale/drivers/mex_drivers.py
@@ -8,7 +8,6 @@ import struct
 import spiceypy as spice
 import warnings
 
-from ale import config
 from ale.base import Driver
 from ale.base.data_naif import NaifSpice
 from ale.base.label_pds3 import Pds3Label
@@ -88,24 +87,6 @@ class MexHrscPds3NaifSpiceDriver(LineScanner, Pds3Label, NaifSpice, RadialDistor
 
     """
 
-
-    @property
-    def metakernel(self):
-        """
-        Returns latest instrument metakernels
-
-        Returns
-        -------
-        : string
-          Path to latest metakernel file
-        """
-        warnings.warn('This driver has currently not been tested! Use at your own risk.')
-        self._metakernel_dir = config.mex
-        if not hasattr(self, '_metakernel'):
-            self._metakernel = find_latest_metakernel(self._metakernel_dir, self.utc_start_time.year)
-        return self._metakernel
-
-
     @property
     def odtk(self):
         """
diff --git a/ale/drivers/mro_drivers.py b/ale/drivers/mro_drivers.py
index 8112b56..e1c5c66 100644
--- a/ale/drivers/mro_drivers.py
+++ b/ale/drivers/mro_drivers.py
@@ -5,7 +5,6 @@ import numpy as np
 import pvl
 import spiceypy as spice
 
-from ale import config
 from ale.base import Driver
 from ale.base.data_naif import NaifSpice
 from ale.base.data_isis import IsisSpice
@@ -70,25 +69,6 @@ class MroCtxIsisLabelNaifSpiceDriver(LineScanner, IsisLabel, NaifSpice, RadialDi
     Driver for reading CTX ISIS labels.
     """
 
-    @property
-    def metakernel(self):
-        """
-        Returns latest instrument metakernels
-
-        Returns
-        -------
-        : string
-          Path to latest metakernel file
-        """
-        metakernel_dir = config.mro
-        mks = sorted(glob(os.path.join(metakernel_dir,'*.tm')))
-        if not hasattr(self, '_metakernel'):
-            self._metakernel = None
-            for mk in mks:
-                if str(self.utc_start_time.year) in os.path.basename(mk):
-                    self._metakernel = mk
-        return self._metakernel
-
     @property
     def instrument_id(self):
         """
@@ -198,25 +178,6 @@ class MroCtxPds3LabelNaifSpiceDriver(LineScanner, Pds3Label, NaifSpice, RadialDi
     ephemeris and instrument data located exclusively in spice kernels.
     """
 
-    @property
-    def metakernel(self):
-        """
-        Returns latest instrument metakernels
-
-        Returns
-        -------
-        : string
-          Path to latest metakernel file
-        """
-        metakernel_dir = config.mro
-        mks = sorted(glob(os.path.join(metakernel_dir,'*.tm')))
-        if not hasattr(self, '_metakernel'):
-            self._metakernel = None
-            for mk in mks:
-                if str(self.utc_start_time.year) in os.path.basename(mk):
-                    self._metakernel = mk
-        return self._metakernel
-
     @property
     def instrument_id(self):
         """
diff --git a/ale/drivers/kaguya_drivers.py b/ale/drivers/selene_drivers.py
similarity index 96%
rename from ale/drivers/kaguya_drivers.py
rename to ale/drivers/selene_drivers.py
index cf83124..3fdbd74 100644
--- a/ale/drivers/kaguya_drivers.py
+++ b/ale/drivers/selene_drivers.py
@@ -2,7 +2,7 @@ import os
 from glob import glob
 import numpy as np
 import spiceypy as spice
-from ale import config
+
 from ale.base import Driver
 from ale.base.data_naif import NaifSpice
 from ale.base.label_pds3 import Pds3Label
@@ -23,25 +23,6 @@ class KaguyaTcPds3NaifSpiceDriver(LineScanner, Pds3Label, NaifSpice, Driver):
       Therefore, methods normally in the Distortion classes are reimplemented here.
     """
 
-    @property
-    def metakernel(self):
-        """
-        Returns latest instrument metakernels
-
-        Returns
-        -------
-        : string
-          Path to latest metakernel file
-        """
-        metakernel_dir = config.kaguya
-        mks = sorted(glob(os.path.join(metakernel_dir,'*.tm')))
-        if not hasattr(self, '_metakernel'):
-            self._metakernel = None
-            for mk in mks:
-                if str(self.utc_start_time.year) in os.path.basename(mk):
-                    self._metakernel = mk
-        return self._metakernel
-
 
     @property
     def utc_start_time(self):
diff --git a/bin/change_mk_data_path.py b/bin/change_mk_data_path.py
index e616a1a..d9a48f6 100755
--- a/bin/change_mk_data_path.py
+++ b/bin/change_mk_data_path.py
@@ -26,7 +26,7 @@ for mk in mks:
         print(f'No path values in {mk}')
 
     for i in lines_to_change:
-        lines[i] = f'      PATH_VALUES     = ( \'{new_data_dir}\' )\n'
+        lines[i] = f'      PATH_VALUES     = ( \'{args.new_data_path}\' )\n'
     with open(mk, 'w') as f:
         f.write(''.join(lines))
 
diff --git a/tests/pytests/test_cassini_drivers.py b/tests/pytests/test_cassini_drivers.py
index 811f0cd..4b99580 100644
--- a/tests/pytests/test_cassini_drivers.py
+++ b/tests/pytests/test_cassini_drivers.py
@@ -1,7 +1,7 @@
 import pytest
 
 import ale
-from ale.drivers import cassini_drivers
+from ale.drivers import co_drivers
 from ale.base import data_naif
 from ale.base import label_pds3
 
@@ -13,10 +13,10 @@ from conftest import SimpleSpice, get_mockkernels
 simplespice = SimpleSpice()
 
 data_naif.spice = simplespice
-cassini_drivers.spice = simplespice
+co_drivers.spice = simplespice
 label_pds3.spice = simplespice
 
-from ale.drivers.cassini_drivers import CassiniIssPds3LabelNaifSpiceDriver
+from ale.drivers.co_drivers import CassiniIssPds3LabelNaifSpiceDriver
 
 CassiniIssPds3LabelNaifSpiceDriver.metakernel = get_mockkernels
 
@@ -24,6 +24,9 @@ CassiniIssPds3LabelNaifSpiceDriver.metakernel = get_mockkernels
 def driver():
     return CassiniIssPds3LabelNaifSpiceDriver("")
 
+def test_short_mission_name(driver):
+    assert driver.short_mission_name=='co'
+
 def test_instrument_id(driver):
     with patch('ale.base.label_pds3.Pds3Label.instrument_id', new_callable=PropertyMock) as mock_instrument_id:
         mock_instrument_id.return_value = 'ISSNA'
diff --git a/tests/pytests/test_data_naif.py b/tests/pytests/test_data_naif.py
index f3d1b12..3e758aa 100644
--- a/tests/pytests/test_data_naif.py
+++ b/tests/pytests/test_data_naif.py
@@ -30,7 +30,6 @@ def test_naif_data_with_kernels():
     FakeNaifDriver = type("FakeNaifDriver", (base.Driver, data_naif.NaifSpice), {})
     return FakeNaifDriver("", props={'kernels': kernels})
 
-
 def test_target_id(test_naif_data):
     assert test_naif_data.target_id == -12345
 
diff --git a/tests/pytests/test_dawn_drivers.py b/tests/pytests/test_dawn_drivers.py
index 3c672ef..04b5f3c 100644
--- a/tests/pytests/test_dawn_drivers.py
+++ b/tests/pytests/test_dawn_drivers.py
@@ -24,6 +24,9 @@ DawnFcPds3NaifSpiceDriver.metakernel = get_mockkernels
 def driver():
     return DawnFcPds3NaifSpiceDriver("")
 
+def test_short_mission_name(driver):
+    assert driver.short_mission_name=='dawn'
+
 @patch('ale.base.label_pds3.Pds3Label.instrument_id', 1)
 @patch('ale.base.label_pds3.Pds3Label.filter_number', 2)
 def test_instrument_id(driver):
diff --git a/tests/pytests/test_env.py b/tests/pytests/test_env.py
new file mode 100644
index 0000000..9263d46
--- /dev/null
+++ b/tests/pytests/test_env.py
@@ -0,0 +1,16 @@
+import pytest
+import warnings
+from importlib import reload
+
+import ale
+
+def test_env_not_set(monkeypatch):
+    monkeypatch.delenv('ALESPICEROOT', raising=False)
+    with pytest.warns(UserWarning, match='ALESPICEROOT environment variable not set'):
+        reload(ale)
+        assert not ale.spice_root
+
+def test_env_set(monkeypatch):
+    monkeypatch.setenv('ALESPICEROOT', '/foo/bar')
+    reload(ale)
+    assert ale.spice_root == '/foo/bar'
diff --git a/tests/pytests/test_kaguya_drivers.py b/tests/pytests/test_kaguya_drivers.py
index 81f6809..a67023e 100644
--- a/tests/pytests/test_kaguya_drivers.py
+++ b/tests/pytests/test_kaguya_drivers.py
@@ -3,7 +3,7 @@ import numpy as np
 import pvl
 
 import ale
-from ale.drivers import kaguya_drivers
+from ale.drivers import selene_drivers
 from ale.base import data_naif
 from ale.base import label_pds3
 
@@ -15,10 +15,10 @@ from conftest import SimpleSpice, get_mockkernels
 simplespice = SimpleSpice()
 
 data_naif.spice = simplespice
-kaguya_drivers.spice = simplespice
+selene_drivers.spice = simplespice
 label_pds3.spice = simplespice
 
-from ale.drivers.kaguya_drivers import KaguyaTcPds3NaifSpiceDriver
+from ale.drivers.selene_drivers import KaguyaTcPds3NaifSpiceDriver
 
 KaguyaTcPds3NaifSpiceDriver.metakernel = get_mockkernels
 
@@ -26,6 +26,9 @@ KaguyaTcPds3NaifSpiceDriver.metakernel = get_mockkernels
 def driver():
     return KaguyaTcPds3NaifSpiceDriver("")
 
+def test_short_mission_name(driver):
+    assert driver.short_mission_name=='selene'
+
 @patch('ale.base.label_pds3.Pds3Label.instrument_id', 123)
 def test_instrument_id(driver):
     with patch.dict(driver.label, {'SWATH_MODE_ID':'NOMINAL', 'PRODUCT_SET_ID':'TC_w_Level2B0' }) as f:
diff --git a/tests/pytests/test_lro_drivers.py b/tests/pytests/test_lro_drivers.py
index 5a39108..f3277ee 100644
--- a/tests/pytests/test_lro_drivers.py
+++ b/tests/pytests/test_lro_drivers.py
@@ -28,6 +28,8 @@ LroLrocPds3LabelNaifSpiceDriver.metakernel = get_mockkernels
 def driver():
     return LroLrocPds3LabelNaifSpiceDriver("")
 
+def test_short_mission_name(driver):
+    assert driver.short_mission_name=='lro'
 
 @patch('ale.base.label_pds3.Pds3Label.instrument_id', 'LROC')
 def test_instrument_id_left(driver):
diff --git a/tests/pytests/test_mdis_drivers.py b/tests/pytests/test_mdis_drivers.py
index 12fa0ee..3ebb76e 100644
--- a/tests/pytests/test_mdis_drivers.py
+++ b/tests/pytests/test_mdis_drivers.py
@@ -2,7 +2,7 @@ import pytest
 import pvl
 
 import ale
-from ale.drivers import messenger_drivers
+from ale.drivers import mes_drivers
 from ale.base import data_naif
 from ale.base import label_pds3
 from ale.base import label_isis
@@ -15,11 +15,11 @@ from conftest import SimpleSpice, get_mockkernels
 simplespice = SimpleSpice()
 
 data_naif.spice = simplespice
-messenger_drivers.spice = simplespice
+mes_drivers.spice = simplespice
 label_pds3.spice = simplespice
 
-from ale.drivers.messenger_drivers import MessengerMdisPds3NaifSpiceDriver
-from ale.drivers.messenger_drivers import MessengerMdisIsisLabelNaifSpiceDriver
+from ale.drivers.mes_drivers import MessengerMdisPds3NaifSpiceDriver
+from ale.drivers.mes_drivers import MessengerMdisIsisLabelNaifSpiceDriver
 
 MessengerMdisPds3NaifSpiceDriver.metakernel = get_mockkernels
 MessengerMdisIsisLabelNaifSpiceDriver.metakernel = get_mockkernels
@@ -28,6 +28,9 @@ MessengerMdisIsisLabelNaifSpiceDriver.metakernel = get_mockkernels
 def Pds3Driver():
     return MessengerMdisPds3NaifSpiceDriver("")
 
+def test_short_mission_name(Pds3Driver):
+    assert Pds3Driver.short_mission_name=='mes'
+
 @pytest.fixture
 def IsisLabelDriver():
     return MessengerMdisIsisLabelNaifSpiceDriver("")
@@ -99,7 +102,7 @@ def test_fikid_isis(IsisLabelDriver):
     with patch.dict(IsisLabelDriver.label, {'IsisCube': {'BandBin' : {'Number' : 10 }}}) as f:
         assert IsisLabelDriver.fikid == 90
 
-@patch('ale.drivers.messenger_drivers.MessengerMdisIsisLabelNaifSpiceDriver.fikid', 1)
+@patch('ale.drivers.mes_drivers.MessengerMdisIsisLabelNaifSpiceDriver.fikid', 1)
 def test_focal_length_isis(IsisLabelDriver):
     with patch.dict(IsisLabelDriver.label, {'IsisCube': {'Instrument': {'FocalPlaneTemperature':
     pvl._collections.Units(value=1, units='<DEGC>')}}}) as f:
diff --git a/tests/pytests/test_mro_drivers.py b/tests/pytests/test_mro_drivers.py
index 453d093..b576b70 100644
--- a/tests/pytests/test_mro_drivers.py
+++ b/tests/pytests/test_mro_drivers.py
@@ -25,6 +25,9 @@ MroCtxPds3LabelNaifSpiceDriver.metakernel = get_mockkernels
 def Pds3NaifDriver():
     return MroCtxPds3LabelNaifSpiceDriver("")
 
+def test_short_mission_name(Pds3NaifDriver):
+    assert Pds3NaifDriver.short_mission_name=='mro'
+
 @pytest.fixture
 def IsisLabelNaifDriver():
     return MroCtxIsisLabelNaifSpiceDriver("")
-- 
GitLab