#!/usr/bin/env python
# Software License Agreement (GPL)
#
# \file      test_virtualenv_script
# \authors   Paul Bovbel <pbovbel@locusrobotics.com>
# \copyright Copyright (c) (2017,), Locus Robotics, All rights reserved.
#
# This program is free software: you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation, either version 2 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import importlib
import rostest
import distro
import sys
import unittest



class TestVirtualenv(unittest.TestCase):

    def test_inherited_distro_specific_package_version(self):
        """
        Verify that the virtualenv picked the correct exported requirements file.

        This package exports distro-specific requirements files, so the virtualenv
        should have installed:

        - On Jammy: colorama==0.4.4 (from requirements-jammy.txt)
        - On Noble: colorama==0.4.5 (from requirements-noble.txt)
        - On other distros: colorama==0.4.3 (from requirements.txt)
        """
        colorama = importlib.import_module("colorama")
        codename = distro.codename().lower()

        expected_versions = {
            "jammy": "0.4.4",
            "noble": "0.4.5",
        }
        expected = expected_versions.get(codename, "0.4.3")

        self.assertEqual(
            colorama.__version__,
            expected,
            f"Expected colorama {expected} on {codename}, got {colorama.__version__}",
        )

if __name__ == '__main__':
    rostest.rosrun('test_catkin_virtualenv_distro_codename', 'test_virtualenv_script', TestVirtualenv, sys.argv)
