def test_utilio_ls_valid_directory_empty(self):
        with redirect_stdout() as stream:
            with prepare_workdir() as empty_dir:
                listed = ls(empty_dir)

        self.assertTrue(listed)
        self.assertEqual(stream.getvalue(), '')
Beispiel #2
0
    def test_utilio_copy(self):
        check_dir_01 = os.path.join(self.assets_dir, 'copy-check-01')
        check_dir_02 = os.path.join(self.assets_dir, 'copy-check-02')

        with prepare_workdir() as work_dir:
            # (directories)

            # copy the first batch of assets into the working directory
            result = path_copy(check_dir_01, work_dir, critical=False)
            self.assertTrue(result)
            self.assertExists(work_dir, 'test-file-a')
            self.assertExists(work_dir, 'test-file-b')
            self.assertExists(work_dir, 'test-file-x')
            cc1 = compare_contents(os.path.join(check_dir_01, 'test-file-b'),
                                   os.path.join(work_dir, 'test-file-b'))
            self.assertIsNone(cc1, cc1)

            # override the working directory with the second batch
            result = path_copy(check_dir_02, work_dir, critical=False)
            self.assertTrue(result)
            self.assertExists(work_dir, 'test-file-a')
            self.assertExists(work_dir, 'test-file-b')
            self.assertExists(work_dir, 'test-file-c')
            self.assertExists(work_dir, 'test-file-x')
            cc2 = compare_contents(os.path.join(check_dir_02, 'test-file-b'),
                                   os.path.join(work_dir, 'test-file-b'))
            self.assertIsNone(cc2, cc2)

            # (files)
            sub_dir = os.path.join(work_dir, 'sub', 'dir', 'xyz', '')
            copied_file_a = os.path.join(work_dir, 'test-file-a')
            copied_file_b = os.path.join(work_dir, 'test-file-b')
            target_ow = os.path.join(sub_dir, 'test-file-a')

            # copy individual files (file to new directory)
            result = path_copy(copied_file_a, sub_dir, critical=False)
            self.assertTrue(result)
            self.assertExists(target_ow)
            cc3 = compare_contents(copied_file_a, target_ow)
            self.assertIsNone(cc3, cc3)

            # copy individual files (overwrite)
            result = path_copy(copied_file_b, target_ow, critical=False)
            self.assertTrue(result)
            cc4 = compare_contents(copied_file_b, target_ow)
            self.assertIsNone(cc4, cc4)

            # force a directory target with a non-trailing path separator
            force_src = os.path.join(work_dir, 'test-file-a')
            self.assertExists(force_src)

            force1 = os.path.join(work_dir, 'force1')
            result = path_copy(force_src, force1, critical=False)
            self.assertTrue(result)
            self.assertTrue(os.path.isfile(force1))

            force2 = os.path.join(work_dir, 'force2')
            result = path_copy(force_src, force2, critical=False, dst_dir=True)
            self.assertTrue(result)
            self.assertTrue(os.path.isdir(force2))
Beispiel #3
0
    def test_utilio_cat_invalid_file(self):
        with redirect_stdout() as stream:
            with prepare_workdir() as test_dir:
                output = cat(test_dir)

        self.assertFalse(output)
        self.assertEqual(stream.getvalue(), '')
    def run(self, result=None):
        self.opts = RelengExtractOptions()
        self.opts.strip_count = 0

        with prepare_workdir() as work_dir:
            self.opts.work_dir = work_dir

            super(TestExtractArchive, self).run(result)
Beispiel #5
0
    def test_engine_run_args_out_dir(self):
        with prepare_workdir() as out_dir:
            config = {
                'out_dir': out_dir,
            }

            with prepare_testenv(config=config) as engine:
                self.assertEqual(engine.opts.out_dir, out_dir)
Beispiel #6
0
    def test_engine_run_args_cache_dir(self):
        with prepare_workdir() as cache_dir:
            config = {
                'cache_dir': cache_dir,
            }

            with prepare_testenv(config=config) as engine:
                self.assertEqual(engine.opts.cache_dir, cache_dir)
Beispiel #7
0
    def test_engine_run_args_dl_dir(self):
        with prepare_workdir() as dl_dir:
            config = {
                'dl_dir': dl_dir,
            }

            with prepare_testenv(config=config) as engine:
                self.assertEqual(engine.opts.dl_dir, dl_dir)
Beispiel #8
0
    def test_engine_run_args_images_dir(self):
        with prepare_workdir() as images_dir:
            config = {
                'images_dir': images_dir,
            }

            with prepare_testenv(config=config) as engine:
                self.assertEqual(engine.opts.images_dir, images_dir)
    def test_ff_create(self):
        with prepare_workdir() as work_dir:
            file = os.path.join(work_dir, 'flag-create')
            self.assertTrue(not os.path.exists(file))

            state = process_file_flag(True, file)
            self.assertEqual(state, FileFlag.CONFIGURED)
            self.assertTrue(os.path.exists(file))
    def test_ff_read_existence(self):
        with prepare_workdir() as work_dir:
            file = os.path.join(work_dir, 'flag-exists')
            open(file, 'ab').close()

            state = process_file_flag(None, file)
            self.assertEqual(state, FileFlag.EXISTS)
            self.assertTrue(os.path.exists(file))
Beispiel #11
0
    def test_engine_run_args_mode_localsrcs_overload_package(self):
        with prepare_workdir() as dir_a, prepare_workdir() as dir_b:
            config = {
                'local_sources': [
                    # --local-sources set to a specific path
                    dir_a,
                    # overriding path for the `multiple-b` package
                    'multiple-b@{}'.format(dir_b),
                ],
            }

            with prepare_testenv(config=config, template='multiple') as engine:
                self.assertTrue(isinstance(engine.opts.local_srcs, dict))
                self.assertTrue(GBL_LSRCS in engine.opts.local_srcs)
                self.assertEqual(engine.opts.local_srcs[GBL_LSRCS], dir_a)
                self.assertTrue('multiple-b' in engine.opts.local_srcs)
                self.assertEqual(engine.opts.local_srcs['multiple-b'], dir_b)
    def test_ff_read_not_exists(self):
        with prepare_workdir() as work_dir:
            file = os.path.join(work_dir, 'flag-no-exist')
            self.assertTrue(not os.path.exists(file))

            state = process_file_flag(None, file)
            self.assertEqual(state, FileFlag.NO_EXIST)
            self.assertTrue(not os.path.exists(file))
Beispiel #13
0
    def test_utilio_cat_missing_file(self):
        with redirect_stdout() as stream:
            with prepare_workdir() as test_dir:
                test_file = os.path.join(test_dir, 'missing-file')

                output = cat(test_file)

        self.assertFalse(output)
        self.assertEqual(stream.getvalue(), '')
Beispiel #14
0
    def test_engine_run_environ_cfg_assets_dir(self):
        with prepare_workdir() as assets_dir:
            os.environ['RELENG_ASSETS_DIR'] = assets_dir

            with prepare_testenv() as engine:
                expected_cache_dir = os.path.join(assets_dir, 'cache')
                expected_dl_dir = os.path.join(assets_dir, 'dl')
                self.assertEqual(engine.opts.cache_dir, expected_cache_dir)
                self.assertEqual(engine.opts.dl_dir, expected_dl_dir)
Beispiel #15
0
    def test_utilio_copy_missing(self):
        with prepare_workdir() as work_dir:
            # attempt to copy a missing path
            missing_path = os.path.join(work_dir, 'test-path-missing')
            target = os.path.join(work_dir, 'container')
            result = path_copy(missing_path, target, critical=False)
            self.assertFalse(result)

            # attempt to copy a missing path (critical)
            with self.assertRaises(SystemExit):
                path_copy(missing_path, target)
Beispiel #16
0
    def test_engine_run_args_assets_dir(self):
        with prepare_workdir() as assets_dir:
            config = {
                'assets_dir': assets_dir,
            }

            with prepare_testenv(config=config) as engine:
                expected_cache_dir = os.path.join(assets_dir, 'cache')
                expected_dl_dir = os.path.join(assets_dir, 'dl')
                self.assertEqual(engine.opts.cache_dir, expected_cache_dir)
                self.assertEqual(engine.opts.dl_dir, expected_dl_dir)
Beispiel #17
0
    def test_engine_run_args_mode_localsrcs_per_package(self):
        with prepare_workdir() as dir_a, prepare_workdir() as dir_b:
            config = {
                'local_sources': [
                    # explicit path set for `multiple-a` package
                    'multiple-a@{}'.format(dir_a),
                    # explicit path set for `multiple-b` package
                    'multiple-b@{}'.format(dir_b),
                ],
            }

            with prepare_testenv(config=config, template='multiple') as engine:
                self.assertTrue(isinstance(engine.opts.local_srcs, dict))
                self.assertFalse(GBL_LSRCS in engine.opts.local_srcs)
                self.assertTrue('multiple-a' in engine.opts.local_srcs)
                self.assertEqual(engine.opts.local_srcs['multiple-a'], dir_a)
                self.assertTrue(engine.opts.local_srcs)
                self.assertTrue('multiple-b' in engine.opts.local_srcs)
                self.assertEqual(engine.opts.local_srcs['multiple-b'], dir_b)
                self.assertTrue(engine.opts.local_srcs)
Beispiel #18
0
    def test_utilio_touch(self):
        with prepare_workdir() as work_dir:
            test_file = os.path.join(work_dir, 'test-file')

            created = touch(test_file)
            self.assertTrue(created)

            exists = os.path.isfile(test_file)
            self.assertTrue(exists)

            updated = touch(test_file)
            self.assertTrue(updated)
Beispiel #19
0
    def test_utilio_cat_valid_contents_single(self):
        with redirect_stdout() as stream:
            with prepare_workdir() as test_dir:
                test_file = os.path.join(test_dir, 'test')

                with open(test_file, 'w') as f:
                    f.write('this is a test')

                output = cat(test_file)

        self.assertTrue(output)
        self.assertEqual(stream.getvalue(), 'this is a test')
Beispiel #20
0
    def test_utilio_cat_valid_empty(self):
        with redirect_stdout() as stream:
            with prepare_workdir() as test_dir:
                test_file = os.path.join(test_dir, 'test')

                with open(test_file, 'w'):
                    pass  # empty

                output = cat(test_file)

        self.assertTrue(output)
        self.assertEqual(stream.getvalue(), '')
Beispiel #21
0
    def test_engine_run_args_mode_localsrcs_single_path(self):
        with prepare_workdir() as test_dir:
            config = {
                'local_sources': [
                    # explicit path set
                    test_dir,
                ],
            }

            with prepare_testenv(config=config, template='multiple') as engine:
                self.assertTrue(isinstance(engine.opts.local_srcs, dict))
                self.assertTrue(GBL_LSRCS in engine.opts.local_srcs)
                self.assertEqual(engine.opts.local_srcs[GBL_LSRCS], test_dir)
    def test_ff_forced(self):
        with prepare_workdir() as work_dir:
            file = os.path.join(work_dir, 'flag-forced')
            self.assertTrue(not os.path.exists(file))

            state = process_file_flag(False, file)
            self.assertEqual(state, FileFlag.NO_EXIST)
            self.assertTrue(not os.path.exists(file))

            open(file, 'ab').close()
            self.assertTrue(os.path.exists(file))
            state = process_file_flag(False, file)
            self.assertEqual(state, FileFlag.NO_EXIST)
            self.assertTrue(os.path.exists(file))
Beispiel #23
0
    def test_utilio_copy_self(self):
        src_dir = os.path.join(self.assets_dir, 'copy-check-01')
        src_file = os.path.join(src_dir, 'test-file-a')

        with prepare_workdir() as work_dir:
            dst_file = os.path.join(work_dir, 'test-file')
            shutil.copyfile(src_file, dst_file)

            # attempt to copy a directory to itself
            with self.assertRaises(SystemExit):
                path_copy(work_dir, work_dir)

            # attempt to copy a file to itself
            with self.assertRaises(SystemExit):
                path_copy(dst_file, dst_file)
Beispiel #24
0
    def test_engine_run_args_config_file(self):
        test_filename = 'test-config'

        # test full configuration path
        with prepare_workdir() as misc_dir:
            mock_config = os.path.join(misc_dir, test_filename)

            config = {
                'config': mock_config,
            }

            with prepare_testenv(config=config) as engine:
                self.assertEqual(engine.opts.conf_point, mock_config)

        # test relative to working directory path
        with prepare_workdir() as root_dir:
            config = {
                'config': test_filename,
                'root_dir': root_dir,
            }

            with prepare_testenv(config=config) as engine:
                mock_config = os.path.join(os.getcwd(), test_filename)
                self.assertEqual(engine.opts.conf_point, mock_config)
Beispiel #25
0
    def test_engine_run_args_mode_localsrcs_specific_package(self):
        with prepare_workdir() as test_dir:
            config = {
                'local_sources': [
                    # explicit path set for a single package
                    'multiple-b@{}'.format(test_dir),
                ],
            }

            with prepare_testenv(config=config, template='multiple') as engine:
                self.assertTrue(isinstance(engine.opts.local_srcs, dict))
                self.assertFalse(GBL_LSRCS in engine.opts.local_srcs)
                self.assertTrue('multiple-b' in engine.opts.local_srcs)
                self.assertEqual(engine.opts.local_srcs['multiple-b'],
                                 test_dir)
                self.assertTrue(engine.opts.local_srcs)
Beispiel #26
0
    def test_utilio_runscript(self):
        with prepare_workdir() as work_dir:
            valid_script = os.path.join(work_dir, 'valid')
            with open(valid_script, 'a') as f:
                f.write('test=1\n')

            result = run_script(valid_script, {})
            self.assertEqual(result['test'], 1)

            invalid_script = os.path.join(work_dir, 'invalid')
            with open(invalid_script, 'a') as f:
                f.write('bad-line\n')

            result = run_script(invalid_script, {})
            self.assertIsNone(result)

            with self.assertRaises(NameError):
                run_script(invalid_script, {}, catch=False)
Beispiel #27
0
    def test_utilio_cat_valid_contents_multiple(self):
        with redirect_stdout() as stream:
            with prepare_workdir() as test_dir:
                test_file1 = os.path.join(test_dir, 'test1')
                with open(test_file1, 'w') as f:
                    f.write('1')

                test_file2 = os.path.join(test_dir, 'test2')
                with open(test_file2, 'w') as f:
                    f.write('2')

                test_file3 = os.path.join(test_dir, 'test3')
                with open(test_file3, 'w') as f:
                    f.write('3')

                output = cat(test_file1, test_file2, test_file3)

        self.assertTrue(output)
        self.assertEqual(stream.getvalue(), '123')
Beispiel #28
0
    def test_utilio_copy_symlink_file(self):
        if sys.platform == 'win32':
            raise unittest.SkipTest('symlink test skipped for win32')

        src_dir = os.path.join(self.assets_dir, 'copy-check-01')
        src_file = os.path.join(src_dir, 'test-file-a')

        with prepare_workdir() as work_dir:
            dst_file = os.path.join(work_dir, 'test-file')
            shutil.copyfile(src_file, dst_file)

            lnka_file = os.path.join(work_dir, 'test-file-link-a')
            os.symlink(dst_file, lnka_file)

            lnkb_file = os.path.join(work_dir, 'test-file-link-b')
            path_copy(lnka_file, lnkb_file)

            read_lnk = os.readlink(lnkb_file)
            self.assertEqual(read_lnk, dst_file)
Beispiel #29
0
    def test_utilio_copyinto(self):
        check_dir_01 = os.path.join(self.assets_dir, 'copy-check-01')
        check_dir_02 = os.path.join(self.assets_dir, 'copy-check-02')

        with prepare_workdir() as work_dir:
            # (directories)

            # copy the first batch of assets into the working directory
            single_file = os.path.join(check_dir_01, 'test-file-a')

            result = path_copy_into(single_file, work_dir, critical=False)
            self.assertTrue(result)
            self.assertExists(work_dir, 'test-file-a')

            # copy the first batch of assets into the working directory
            result = path_copy_into(check_dir_01, work_dir, critical=False)
            self.assertTrue(result)
            self.assertExists(work_dir, 'test-file-a')
            self.assertExists(work_dir, 'test-file-b')
            self.assertExists(work_dir, 'test-file-x')
            cc1 = compare_contents(os.path.join(check_dir_01, 'test-file-b'),
                                   os.path.join(work_dir, 'test-file-b'))
            self.assertIsNone(cc1, cc1)

            # override the working directory with the second batch
            result = path_copy_into(check_dir_02, work_dir, critical=False)
            self.assertTrue(result)
            self.assertExists(work_dir, 'test-file-a')
            self.assertExists(work_dir, 'test-file-b')
            self.assertExists(work_dir, 'test-file-c')
            self.assertExists(work_dir, 'test-file-x')
            cc2 = compare_contents(os.path.join(check_dir_02, 'test-file-b'),
                                   os.path.join(work_dir, 'test-file-b'))
            self.assertIsNone(cc2, cc2)

            # attempt to copy to a file
            bad_target = os.path.join(work_dir, 'test-file-a')
            result = path_copy_into(check_dir_01, bad_target, critical=False)
            self.assertFalse(result)

            with self.assertRaises(SystemExit):
                path_copy_into(check_dir_02, bad_target)
Beispiel #30
0
    def test_utilio_copy_symlink_directory(self):
        if platform.system() != 'Linux':
            raise unittest.SkipTest('symlink test skipped for non-Linux')

        src_dir = os.path.join(self.assets_dir, 'copy-check-01')
        src_file = os.path.join(src_dir, 'test-file-a')

        with prepare_workdir() as work_dir:
            subdir = os.path.join(work_dir, 'subdir')
            os.mkdir(subdir)

            dst_file = os.path.join(subdir, 'test-file')
            shutil.copyfile(src_file, dst_file)

            lnka_file = os.path.join(subdir, 'test-file-link-a')
            os.symlink(dst_file, lnka_file)

            subdir2 = os.path.join(work_dir, 'subdir2')
            path_copy(subdir, subdir2)

            lnkb_file = os.path.join(subdir2, 'test-file-link-a')
            read_lnk = os.readlink(lnkb_file)
            self.assertEqual(read_lnk, dst_file)