def test_package_ops_namespacing(self): cfgs = { 'config-example': {'k1': 'v1'}, 'pkg1': {'p1': 'p2'}, 'ubuntu-core': {'c1': 'c2'}, 'notinstalled.smoser': {'s1': 's2'}, } cfg = {'config-example-k1': 'config-example-k2'} ret = get_package_ops( packages=['config-example.canonical'], configs=cfgs, installed=['config-example.smoser', 'pkg1.canonical', 'ubuntu-core']) expected_configs = [ makeop('config', 'pkg1', config=cfgs['pkg1']), makeop('config', 'ubuntu-core', config=cfgs['ubuntu-core'])] expected_installs = [ makeop('install', 'config-example.canonical', config=cfgs['config-example'])] installs = [i for i in ret if i['op'] == 'install'] configs = [c for c in ret if c['op'] == 'config'] self.assertEqual(installs, expected_installs) # configs are not ordered self.assertEqual(len(configs), len(expected_configs)) self.assertTrue(all(found in expected_configs for found in configs))
def test_package_ops_namespacing(self): cfgs = { "config-example": {"k1": "v1"}, "pkg1": {"p1": "p2"}, "ubuntu-core": {"c1": "c2"}, "notinstalled.smoser": {"s1": "s2"}, } ret = get_package_ops( packages=["config-example.canonical"], configs=cfgs, installed=["config-example.smoser", "pkg1.canonical", "ubuntu-core"], ) expected_configs = [ makeop("config", "pkg1", config=cfgs["pkg1"]), makeop("config", "ubuntu-core", config=cfgs["ubuntu-core"]), ] expected_installs = [makeop("install", "config-example.canonical", config=cfgs["config-example"])] installs = [i for i in ret if i["op"] == "install"] configs = [c for c in ret if c["op"] == "config"] self.assertEqual(installs, expected_installs) # configs are not ordered self.assertEqual(len(configs), len(expected_configs)) self.assertTrue(all(found in expected_configs for found in configs))
def test_package_ops_1(self): ret = get_package_ops( packages=['pkg1', 'pkg2', 'pkg3'], configs={'pkg2': b'mycfg2'}, installed=[]) self.assertEqual( ret, [makeop('install', 'pkg1', None, None), makeop('install', 'pkg2', b'mycfg2', None), makeop('install', 'pkg3', None, None)])
def test_package_ops_install_and_config(self): ret = get_package_ops( packages=["pkg3", "pkg2"], configs={"pkg2": b"mycfg2", "xinstalled": b"xcfg"}, installed=["xinstalled"] ) self.assertEqual( ret, [makeop("install", "pkg3"), makeop("install", "pkg2", b"mycfg2"), makeop("config", "xinstalled", b"xcfg")], )
def test_package_ops_install_and_config(self): ret = get_package_ops( packages=['pkg3', 'pkg2'], configs={'pkg2': b'mycfg2', 'xinstalled': b'xcfg'}, installed=['xinstalled']) self.assertEqual( ret, [makeop('install', 'pkg3'), makeop('install', 'pkg2', b'mycfg2'), makeop('config', 'xinstalled', b'xcfg')])
def test_package_ops_1(self): ret = get_package_ops(packages=['pkg1', 'pkg2', 'pkg3'], configs={'pkg2': b'mycfg2'}, installed=[]) self.assertEqual(ret, [ makeop('install', 'pkg1', None, None), makeop('install', 'pkg2', b'mycfg2', None), makeop('install', 'pkg3', None, None) ])
def test_package_ops_1(self): ret = get_package_ops(packages=["pkg1", "pkg2", "pkg3"], configs={"pkg2": b"mycfg2"}, installed=[]) self.assertEqual( ret, [ makeop("install", "pkg1", None, None), makeop("install", "pkg2", b"mycfg2", None), makeop("install", "pkg3", None, None), ], )
def test_package_ops_install_and_config(self): ret = get_package_ops(packages=['pkg3', 'pkg2'], configs={ 'pkg2': b'mycfg2', 'xinstalled': b'xcfg' }, installed=['xinstalled']) self.assertEqual(ret, [ makeop('install', 'pkg3'), makeop('install', 'pkg2', b'mycfg2'), makeop('config', 'xinstalled', b'xcfg') ])
def test_render_op_config_bytes(self): name = "snapf1" mycfg = b'myconfig' op = makeop('config', name, config=mycfg) render_snap_op(**op) self.assertEqual( self.snapcmds, [['config', 'snapf1', {'config': {name: mycfg}}]])
def test_render_op_config_string(self): name = 'snapf1' mycfg = 'myconfig: foo\nhisconfig: bar\n' op = makeop('config', name, config=mycfg) render_snap_op(**op) self.assertEqual( self.snapcmds, [['config', 'snapf1', {'config': {name: mycfg}}]])
def makeop_tmpd(tmpd, op, name, config=None, path=None, cfgfile=None): if cfgfile: cfgfile = os.path.sep.join([tmpd, cfgfile]) if path: path = os.path.sep.join([tmpd, path]) return (makeop(op=op, name=name, config=config, path=path, cfgfile=cfgfile))
def test_render_op_snap_config(self): mycfg = {'key1': 'value1'} name = "snapf1" op = makeop('install', name, config=mycfg) render_snap_op(**op) self.assertEqual( self.snapcmds, [['install', name, {'config': {name: mycfg}}]])
def test_render_long_configs_short(self): # install a namespaced package should have un-namespaced config mycfg = {"k1": "k2"} name = "snapf1" op = makeop("install", name + ".smoser", config=mycfg) render_snap_op(**op) data_found = self.snapcmds[0][2] self.assertEqual(mycfg, data_found["config"][name])
def test_render_op_config_list(self): # config entry for package can be a list, not a string blob mycfg = ["foo", "bar", "wark", {"f1": "b1"}] name = "snapf1" op = makeop("config", name, config=mycfg) render_snap_op(**op) data_found = self.snapcmds[0][2] self.assertEqual(mycfg, data_found["config"][name])
def test_package_ops_install_long_config_short(self): # a package can be installed by full name, but have config by short cfg = {'k1': 'k2'} ret = get_package_ops(packages=['config-example.canonical'], configs={'config-example': cfg}, installed=[]) self.assertEqual(ret, [makeop('install', 'config-example.canonical', cfg)])
def test_package_ops_install_long_config_short(self): # a package can be installed by full name, but have config by short cfg = {'k1': 'k2'} ret = get_package_ops( packages=['config-example.canonical'], configs={'config-example': cfg}, installed=[]) self.assertEqual( ret, [makeop('install', 'config-example.canonical', cfg)])
def test_render_op_config_int(self): # config entry for package can be a list, not a string blob mycfg = 1 name = 'snapf1' op = makeop('config', name, config=mycfg) render_snap_op(**op) data_found = self.snapcmds[0][2] self.assertEqual(mycfg, data_found['config'][name])
def test_render_op_config_list(self): # config entry for package can be a list, not a string blob mycfg = ['foo', 'bar', 'wark', {'f1': 'b1'}] name = "snapf1" op = makeop('config', name, config=mycfg) render_snap_op(**op) data_found = self.snapcmds[0][2] self.assertEqual(mycfg, data_found['config'][name])
def test_render_long_configs_short(self): # install a namespaced package should have un-namespaced config mycfg = {'k1': 'k2'} name = 'snapf1' op = makeop('install', name + ".smoser", config=mycfg) render_snap_op(**op) data_found = self.snapcmds[0][2] self.assertEqual(mycfg, data_found['config'][name])
def test_render_op_config_dict(self): # config entry for package can be a dict, not a string blob mycfg = {'foo': 'bar'} name = 'snapf1' op = makeop('config', name, config=mycfg) render_snap_op(**op) # snapcmds is a list of 3-entry lists. data_found will be the # blob of data in the file in 'snappy install --config=<file>' data_found = self.snapcmds[0][2] self.assertEqual(mycfg, data_found['config'][name])
def test_render_op_config_bytes(self): name = "snapf1" mycfg = b'myconfig' op = makeop('config', name, config=mycfg) render_snap_op(**op) self.assertEqual(self.snapcmds, [['config', 'snapf1', { 'config': { name: mycfg } }]])
def test_render_op_config_string(self): name = 'snapf1' mycfg = 'myconfig: foo\nhisconfig: bar\n' op = makeop('config', name, config=mycfg) render_snap_op(**op) self.assertEqual(self.snapcmds, [['config', 'snapf1', { 'config': { name: mycfg } }]])
def test_render_op_snap_config(self): mycfg = {'key1': 'value1'} name = "snapf1" op = makeop('install', name, config=mycfg) render_snap_op(**op) self.assertEqual(self.snapcmds, [['install', name, { 'config': { name: mycfg } }]])
def test_package_ops_with_file(self): self.populate_tmp( {"snapf1.snap": b"foo1", "snapf1.config": b"snapf1cfg", "snapf2.snap": b"foo2", "foo.bar": "ignored"}) ret = get_package_ops( packages=['pkg1'], configs={}, installed=[], fspath=self.tmp) self.assertEqual( ret, [makeop_tmpd(self.tmp, 'install', 'snapf1', path="snapf1.snap", cfgfile="snapf1.config"), makeop_tmpd(self.tmp, 'install', 'snapf2', path="snapf2.snap"), makeop('install', 'pkg1')])
def test_package_ops_namespacing(self): cfgs = { 'config-example': { 'k1': 'v1' }, 'pkg1': { 'p1': 'p2' }, 'ubuntu-core': { 'c1': 'c2' }, 'notinstalled.smoser': { 's1': 's2' }, } cfg = {'config-example-k1': 'config-example-k2'} ret = get_package_ops(packages=['config-example.canonical'], configs=cfgs, installed=[ 'config-example.smoser', 'pkg1.canonical', 'ubuntu-core' ]) expected_configs = [ makeop('config', 'pkg1', config=cfgs['pkg1']), makeop('config', 'ubuntu-core', config=cfgs['ubuntu-core']) ] expected_installs = [ makeop('install', 'config-example.canonical', config=cfgs['config-example']) ] installs = [i for i in ret if i['op'] == 'install'] configs = [c for c in ret if c['op'] == 'config'] self.assertEqual(installs, expected_installs) # configs are not ordered self.assertEqual(len(configs), len(expected_configs)) self.assertTrue(all(found in expected_configs for found in configs))
def test_package_ops_with_file(self): self.populate_tmp({ "snapf1.snap": b"foo1", "snapf1.config": b"snapf1cfg", "snapf2.snap": b"foo2", "foo.bar": "ignored" }) ret = get_package_ops(packages=['pkg1'], configs={}, installed=[], fspath=self.tmp) self.assertEqual(ret, [ makeop_tmpd(self.tmp, 'install', 'snapf1', path="snapf1.snap", cfgfile="snapf1.config"), makeop_tmpd(self.tmp, 'install', 'snapf2', path="snapf2.snap"), makeop('install', 'pkg1') ])
def test_render_op_config_bytes(self): name = "snapf1" mycfg = b"myconfig" op = makeop("config", name, config=mycfg) render_snap_op(**op) self.assertEqual(self.snapcmds, [["config", "snapf1", {"config": {name: mycfg}}]])
def test_package_ops_config_only(self): ret = get_package_ops(packages=None, configs={'pkg2': b'mycfg2'}, installed=['pkg1', 'pkg2']) self.assertEqual(ret, [makeop('config', 'pkg2', b'mycfg2')])
def test_render_op_snap(self): op = makeop("install", "snapf1") render_snap_op(**op) self.assertEqual(self.snapcmds, [["install", "snapf1", None]])
def test_render_op_config_string(self): name = "snapf1" mycfg = "myconfig: foo\nhisconfig: bar\n" op = makeop("config", name, config=mycfg) render_snap_op(**op) self.assertEqual(self.snapcmds, [["config", "snapf1", {"config": {name: mycfg}}]])
def makeop_tmpd(tmpd, op, name, config=None, path=None, cfgfile=None): if cfgfile: cfgfile = os.path.sep.join([tmpd, cfgfile]) if path: path = os.path.sep.join([tmpd, path]) return(makeop(op=op, name=name, config=config, path=path, cfgfile=cfgfile))
def test_package_ops_install_long_config_short(self): # a package can be installed by full name, but have config by short cfg = {"k1": "k2"} ret = get_package_ops(packages=["config-example.canonical"], configs={"config-example": cfg}, installed=[]) self.assertEqual(ret, [makeop("install", "config-example.canonical", cfg)])
def test_package_ops_config_only(self): ret = get_package_ops( packages=None, configs={'pkg2': b'mycfg2'}, installed=['pkg1', 'pkg2']) self.assertEqual( ret, [makeop('config', 'pkg2', b'mycfg2')])
def test_package_ops_config_only(self): ret = get_package_ops(packages=None, configs={"pkg2": b"mycfg2"}, installed=["pkg1", "pkg2"]) self.assertEqual(ret, [makeop("config", "pkg2", b"mycfg2")])
def test_render_op_snap_config(self): mycfg = {"key1": "value1"} name = "snapf1" op = makeop("install", name, config=mycfg) render_snap_op(**op) self.assertEqual(self.snapcmds, [["install", name, {"config": {name: mycfg}}]])
def test_render_op_snap(self): op = makeop('install', 'snapf1') render_snap_op(**op) self.assertEqual(self.snapcmds, [['install', 'snapf1', None]])
def test_render_op_snap(self): op = makeop('install', 'snapf1') render_snap_op(**op) self.assertEqual( self.snapcmds, [['install', 'snapf1', None]])