示例#1
0
    def test_run_external_clean_env(self):
        """Unit test for clean_env parameter to run_external()"""

        def run(args, clean_env):
            (rc, stdout, stderr) = run_external(args, clean_env=clean_env)
            self.assertEqual(rc, 0)
            return stdout.rstrip('\n')

        # clean_env should set language to C
        run(['sh', '-c', '[ "x$LANG" = "xC" ]'], clean_env=True)
        run(['sh', '-c', '[ "x$LC_ALL" = "xC" ]'], clean_env=True)

        # clean_env parameter should not alter the PATH, and the PATH
        # should not be empty
        path_clean = run(['bash', '-c', 'echo $PATH'], clean_env=True)
        self.assertEqual(common.get_env('PATH'), path_clean)
        self.assertGreater(len(path_clean), 10)

        path_unclean = run(['bash', '-c', 'echo $PATH'], clean_env=False)
        self.assertEqual(path_clean, path_unclean)

        # With parent environment set to English and parameter clean_env=False,
        # expect English
        import copy
        old_environ = copy.deepcopy(os.environ)

        lc_all_old = common.get_env('LC_ALL')
        lang_old = common.get_env('LANG')
        common.put_env('LC_ALL', 'C')
        (rc, stdout, stderr) = run_external(
            ['ls', '/doesnotexist'], clean_env=False)
        self.assertEqual(rc, 2)
        self.assertIn('No such file', stderr)

        # Set parent environment to Spanish.
        common.put_env('LC_ALL', 'es_MX.UTF-8')
        (rc, stdout, stderr) = run_external(
            ['ls', '/doesnotexist'], clean_env=False)
        self.assertEqual(rc, 2)
        if os.path.exists('/usr/share/locale-langpack/es/LC_MESSAGES/coreutils.mo'):
            # Spanish language pack is installed.
            self.assertIn('No existe el archivo', stderr)

        # Here the parent environment has Spanish, but the child process
        # should use English.
        (rc, stdout, stderr) = run_external(
            ['ls', '/doesnotexist'], clean_env=True)
        self.assertEqual(rc, 2)
        self.assertIn('No such file', stderr)

        # Reset environment
        self.assertNotEqual(old_environ, copy.deepcopy(os.environ))
        common.put_env('LC_ALL', lc_all_old)
        common.put_env('LANG', lang_old)
        self.assertEqual(old_environ, copy.deepcopy(os.environ))
示例#2
0
 def setUpClass(cls):
     bleachbit.online_update_notification_enabled = False
     cls.old_language = common.get_env('LANGUAGE')
     common.put_env('LANGUAGE', 'en')
     super(ExternalCommandTestCase, ExternalCommandTestCase).setUpClass()
     options.set('first_start', False)
     options.set('check_online_updates', False)  # avoid pop-up window
示例#3
0
 def test_invalid_locale(self):
     """Unit test for invalid locales"""
     old_lang = common.get_env('LANG')
     common.put_env('LANG', 'blahfoo')
     # tests are run from the parent directory
     args = [sys.executable, '-m', 'bleachbit.CLI', '--version']
     output = run_external(args)
     self.assertNotEqual(output[1].find('Copyright'), -1, str(output))
     common.put_env('LANG', old_lang)
示例#4
0
 def setUpClass(cls):
     cls.old_language = common.get_env('LANGUAGE')
     common.put_env('LANGUAGE', 'en')
     super(GUITestCase, GUITestCase).setUpClass()
     options.set('first_start', False)
     options.set('check_online_updates', False)  # avoid pop-up window
     options.get_tree = types.MethodType(lambda self, parent, child: False,
                                         options)
     cls.app.register()
     cls.app.activate()
     cls.refresh_gui()