예제 #1
0
 def test_use_python_tool(self):
     tm, am, amt = self._make_test_tm()
     amt.add_recipes(self.RECIPES)
     amt.publish(self.DESCRIPTORS)
     cuchillo = PD.parse('cuchillo-1.0.0')
     tm.ensure_tools(cuchillo)
     rv = tm.run_tool(PD.parse('steel-1.0.0'), ['steel_exe.py', '6'], {})
     self.assertEqual(0, rv.exit_code)
     self.assertEqual('steel_exe.py: 16', rv.stdout.strip())
예제 #2
0
 def _make_cabbage_pm(self):
     t = AMT(recipes=self.VEGGIES)
     t.publish('cabbage;1.0.0;0;0;linux;release;x86_64;ubuntu;18')
     t.publish('unset;1.0.0;0;0;linux;release;x86_64;ubuntu;18')
     pm = self._make_caca_test_pm(t.am)
     cabbage = PD.parse('cabbage-1.0.0')
     bt = BT.parse_path('linux-ubuntu-18/x86_64/release')
     pm.install_package(cabbage, bt, ['RUN'])
     pm.install_package(PD.parse('unset-1.0.0'), bt, ['RUN'])
     return pm, cabbage
예제 #3
0
    def test_install_packages(self):
        pm = self._make_test_pm_with_am()

        packages = [
            PD.parse('water-1.0.0'),
            PD.parse('mercury-1.2.8'),
            PD.parse('arsenic-1.2.9'),
        ]

        pm.install_packages(packages, self.TEST_BUILD_TARGET, ['BUILD', 'RUN'])

        self.assertEqual(['arsenic-1.2.9', 'mercury-1.2.8', 'water-1.0.0'],
                         pm.list_all(include_version=True))
예제 #4
0
 def test_transform_env(self):
     tm, am, amt = self._make_test_tm()
     amt.add_recipes(self.RECIPES)
     amt.publish(self.DESCRIPTORS)
     cuchillo = PD.parse('cuchillo-1.0.0')
     tm.ensure_tools(cuchillo)
     env = tm.transform_env({}, cuchillo)
     replacements = {tm.root_dir: '$ROOT_DIR'}
     env2 = copy.deepcopy(env)
     dict_util.replace_values(env2, replacements)
     self.assertEqual(
         {
             'WOOD_ENV1':
             'wood_env1',
             'CUCHILLO_ENV1':
             'cuchillo_env1',
             'STEEL_ENV1':
             'steel_env1',
             'IRON_ENV1':
             'iron_env1',
             'CARBON_ENV1':
             'carbon_env1',
             'PATH':
             '/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:.:$ROOT_DIR/steel_1_0_0/linux-ubuntu-18/x86_64/stuff/bin:$ROOT_DIR/wood_1_0_0/linux-ubuntu-18/x86_64/stuff/bin:$ROOT_DIR/cuchillo_1_0_0/linux-ubuntu-18/x86_64/stuff/bin',
             'PYTHONPATH':
             '$ROOT_DIR/steel_1_0_0/linux-ubuntu-18/x86_64/stuff/lib/python:$ROOT_DIR/wood_1_0_0/linux-ubuntu-18/x86_64/stuff/lib/python:$ROOT_DIR/cuchillo_1_0_0/linux-ubuntu-18/x86_64/stuff/lib/python',
             'PKG_CONFIG_PATH':
             '$ROOT_DIR/steel_1_0_0/linux-ubuntu-18/x86_64/stuff/lib/pkgconfig:$ROOT_DIR/steel_1_0_0/linux-ubuntu-18/x86_64/stuff/share/pkgconfig:$ROOT_DIR/wood_1_0_0/linux-ubuntu-18/x86_64/stuff/lib/pkgconfig:$ROOT_DIR/wood_1_0_0/linux-ubuntu-18/x86_64/stuff/share/pkgconfig:$ROOT_DIR/cuchillo_1_0_0/linux-ubuntu-18/x86_64/stuff/lib/pkgconfig:$ROOT_DIR/cuchillo_1_0_0/linux-ubuntu-18/x86_64/stuff/share/pkgconfig',
             'LD_LIBRARY_PATH':
             '$ROOT_DIR/steel_1_0_0/linux-ubuntu-18/x86_64/stuff/lib:$ROOT_DIR/wood_1_0_0/linux-ubuntu-18/x86_64/stuff/lib:$ROOT_DIR/cuchillo_1_0_0/linux-ubuntu-18/x86_64/stuff/lib',
         }, env2)
예제 #5
0
 def test_use_binary_tool_shared(self):
     tm, am, amt = self._make_test_tm()
     knife = PD.parse('knife-1.0.0')
     tm.ensure_tools(knife)
     rv = tm.run_tool(knife, ['links_with_shared.exe'], {})
     self.assertEqual(0, rv.exit_code)
     self.assertEqual('22', rv.stdout.strip())
예제 #6
0
 def test_use_shell_tool(self):
     tm, am, amt = self._make_test_tm()
     knife = PD.parse('knife-1.0.0')
     tm.ensure_tools(knife)
     rv = tm.run_tool(knife, ['cut.sh', 'a', 'b', '666'], {})
     self.assertEqual(0, rv.exit_code)
     self.assertEqual('cut.sh: a b 666', rv.stdout.strip())
예제 #7
0
 def _install_package(self, pm, desc, bt):
     if check.is_string(desc):
         desc = PD.parse(desc)
     check.check_package_descriptor(desc)
     if check.is_string(bt):
         bt = BT.parse_path(bt)
     check.check_build_target(bt)
     pm.install_package(desc, bt, ['RUN'])
예제 #8
0
 def _make_two_env_files_pm(self, code1, code2):
     recipe = self.TWO_ENV_FILES_RECIPE % (code1, code2)
     t = AMT(recipes=recipe)
     t.publish('two_env_files;1.0.0;0;0;linux;release;x86_64;ubuntu;18')
     pm = self._make_caca_test_pm(t.am)
     pdesc = PD.parse('two_env_files-1.0.0')
     bt = BT.parse_path('linux-ubuntu-18/x86_64/release')
     pm.install_package(pdesc, bt, ['RUN'])
     return pm
예제 #9
0
 def test_dep_map(self):
     pm = self._make_test_pm_with_am()
     packages = [
         PD.parse('water-1.0.0'),
         PD.parse('fiber-1.0.0'),
         PD.parse('fructose-3.4.5-6'),
         PD.parse('fruit-1.0.0'),
         PD.parse('apple-1.2.3-1'),
     ]
     pm.install_packages(packages, self.TEST_BUILD_TARGET, ['RUN'])
     self.assertEqual([
         'apple-1.2.3-1', 'fiber-1.0.0', 'fructose-3.4.5-6', 'fruit-1.0.0',
         'water-1.0.0'
     ], pm.list_all(include_version=True))
     self.assertEqual(
         {
             'apple': set(['fruit']),
             'fiber': set([]),
             'fructose': set([]),
             'fruit': set(['fiber', 'fructose', 'water']),
             'water': set([]),
         }, pm.dep_map())
예제 #10
0
 def test_ensure_tool(self):
     tm, am, amt = self._make_test_tm()
     knife_desc = PD.parse('knife-6.6.6')
     tm.ensure_tools(knife_desc)
     self.assertEqual([
         'knife_6_6_6/linux-ubuntu-18/x86_64/db/packages.db',
         'knife_6_6_6/linux-ubuntu-18/x86_64/env/framework/env/bes_framework.sh',
         'knife_6_6_6/linux-ubuntu-18/x86_64/env/knife_env.sh',
         'knife_6_6_6/linux-ubuntu-18/x86_64/run.sh',
         'knife_6_6_6/linux-ubuntu-18/x86_64/setup.sh',
         'knife_6_6_6/linux-ubuntu-18/x86_64/stuff/bin/cut.exe',
         'knife_6_6_6/linux-ubuntu-18/x86_64/stuff/bin/cut.sh',
         'knife_6_6_6/linux-ubuntu-18/x86_64/stuff/bin/links_with_shared.exe',
         'knife_6_6_6/linux-ubuntu-18/x86_64/stuff/bin/links_with_static.exe',
         'knife_6_6_6/linux-ubuntu-18/x86_64/stuff/include/libfoo_shared.h',
         'knife_6_6_6/linux-ubuntu-18/x86_64/stuff/include/libfoo_static.h',
         'knife_6_6_6/linux-ubuntu-18/x86_64/stuff/lib/libfoo_shared.so',
         'knife_6_6_6/linux-ubuntu-18/x86_64/stuff/lib/libfoo_static.a',
         'knife_6_6_6/run.sh',
         'knife_6_6_6/setup.sh',
     ], file_find.find(tm.root_dir))
예제 #11
0
 def test_tool_installed_files(self):
     tm, am, amt = self._make_test_tm()
     amt.add_recipes(self.RECIPES)
     amt.publish(self.DESCRIPTORS)
     cuchillo = PD.parse('cuchillo-1.0.0')
     tm.ensure_tools(cuchillo)
     self.assertEqual([
         'cuchillo_1_0_0/linux-ubuntu-18/x86_64/db/packages.db',
         'cuchillo_1_0_0/linux-ubuntu-18/x86_64/env/cuchillo_env.sh',
         'cuchillo_1_0_0/linux-ubuntu-18/x86_64/env/framework/env/bes_framework.sh',
         'cuchillo_1_0_0/linux-ubuntu-18/x86_64/run.sh',
         'cuchillo_1_0_0/linux-ubuntu-18/x86_64/setup.sh',
         'cuchillo_1_0_0/linux-ubuntu-18/x86_64/stuff/bin/cuchillo.py',
         'cuchillo_1_0_0/run.sh',
         'cuchillo_1_0_0/setup.sh',
         'steel_1_0_0/linux-ubuntu-18/x86_64/db/packages.db',
         'steel_1_0_0/linux-ubuntu-18/x86_64/env/carbon_env.sh',
         'steel_1_0_0/linux-ubuntu-18/x86_64/env/framework/env/bes_framework.sh',
         'steel_1_0_0/linux-ubuntu-18/x86_64/env/iron_env.sh',
         'steel_1_0_0/linux-ubuntu-18/x86_64/env/steel_env.sh',
         'steel_1_0_0/linux-ubuntu-18/x86_64/run.sh',
         'steel_1_0_0/linux-ubuntu-18/x86_64/setup.sh',
         'steel_1_0_0/linux-ubuntu-18/x86_64/stuff/bin/carbon.py',
         'steel_1_0_0/linux-ubuntu-18/x86_64/stuff/bin/iron.py',
         'steel_1_0_0/linux-ubuntu-18/x86_64/stuff/bin/steel_exe.py',
         'steel_1_0_0/linux-ubuntu-18/x86_64/stuff/lib/python/easy-install.pth',
         'steel_1_0_0/linux-ubuntu-18/x86_64/stuff/lib/python/site.py',
         'steel_1_0_0/linux-ubuntu-18/x86_64/stuff/lib/python/steel.py',
         'steel_1_0_0/run.sh',
         'steel_1_0_0/setup.sh',
         'wood_1_0_0/linux-ubuntu-18/x86_64/db/packages.db',
         'wood_1_0_0/linux-ubuntu-18/x86_64/env/framework/env/bes_framework.sh',
         'wood_1_0_0/linux-ubuntu-18/x86_64/env/wood_env.sh',
         'wood_1_0_0/linux-ubuntu-18/x86_64/run.sh',
         'wood_1_0_0/linux-ubuntu-18/x86_64/setup.sh',
         'wood_1_0_0/linux-ubuntu-18/x86_64/stuff/bin/wood.py',
         'wood_1_0_0/run.sh',
         'wood_1_0_0/setup.sh',
     ], file_find.find(tm.root_dir))
예제 #12
0
    def test_db_add(self):
        tmp_db = self._make_tmp_db_path()
        db = DB(tmp_db)
        self.assertFalse(db.has_package('foo'))
        files = package_files(FCL([('f1', 'c1'), ('f2', 'c2')]),
                              FCL([('e1', 'ec1'), ('e2', 'ec2')]), 'f_chk',
                              'ef_chk')
        reqs = None
        new_entry = PE('foo', '1.2.3', 1, 0, [], {}, files)
        db.add_package(new_entry)
        self.assertTrue(db.has_package('foo'))
        self.assertEqual(['foo'], db.list_all())
        self.assertEqual(['foo-1.2.3-1'], db.list_all(include_version=True))
        self.assertEqual([PD.parse('foo-1.2.3-1')], db.descriptors())
        self.assertEqual(PE('foo', '1.2.3', 1, 0, [], {}, files),
                         db.find_package('foo'))

        del db
        recreated_db = DB(tmp_db)
        self.assertTrue(recreated_db.has_package('foo'))
        self.assertEqual(['foo'], recreated_db.list_all())
        actual_package = recreated_db.find_package('foo')
        expected_package = PE('foo', '1.2.3', 1, 0, [], {}, files)
        self.assertEqual(expected_package, actual_package)