11import unittest
2+ import pytest
23
3- from juju .utils import juju_config_dir , juju_ssh_key_paths , parse_base_arg
4+ from juju .utils import series_selector , get_base_from_origin_or_channel , parse_base_arg , juju_config_dir , juju_ssh_key_paths , DEFAULT_SUPPORTED_LTS
45from juju .client import client
6+ from juju .errors import JujuError
7+ from juju .url import URL
58
69
710class TestDirResolve (unittest .TestCase ):
@@ -21,3 +24,32 @@ def test_parse_base_arg(self):
2124 assert isinstance (base , client .Base )
2225 assert base .name == 'ubuntu'
2326 assert base .channel == '22.04'
27+
28+
29+ class TestBaseFromSeries (unittest .TestCase ):
30+ def test_get_base_from_series (self ):
31+ b = get_base_from_origin_or_channel (client .CharmOrigin (track = 'latest' , risk = 'edge' ), series = 'jammy' )
32+ assert b .name == 'ubuntu'
33+ assert b .channel == '22.04/edge'
34+
35+
36+ class TestSeriesSelector (unittest .TestCase ):
37+ def test_series_arg (self ):
38+ assert series_selector ('jammy' , []) == 'jammy'
39+ assert series_selector ('jammy' , ['jammy' ]) == 'jammy'
40+ with pytest .raises (JujuError ):
41+ series_selector (series_arg = 'jammy' , supported_series = ['focal' ])
42+ assert series_selector (series_arg = 'foo' , supported_series = [], force = True ) == 'foo'
43+
44+ def test_charm_url (self ):
45+ assert series_selector (charm_url = URL .parse ('ch:jammy/ubuntu' ), supported_series = ['jammy' ]) == 'jammy'
46+
47+ def test_model_config (self ):
48+ mconf = {'default-base' : client .ConfigValue (value = 'ubuntu@22.04' )}
49+ assert series_selector (model_config = mconf , supported_series = ['jammy' ]) == 'jammy'
50+
51+ def test_charm_list_series (self ):
52+ assert series_selector (supported_series = ['focal' , 'jammy' ]) == 'jammy'
53+
54+ def test_return_lts (self ):
55+ assert series_selector () == DEFAULT_SUPPORTED_LTS
0 commit comments