[PATCH 2/4] policycoreutils/sandbox: improve compatibility with Python 3

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



- gettext.install() only takes optional "unicode" keyword argument in
  Python 2, and its default value is "False". This keyword argument
  doesn't exist in Python 3
- __builtin__ module has been renamed to "builtins" in Python 3
- raw_input() has been renamed to input() in Python 3
- specify octal literals in form compatible with both Python 2 and 3
- migrate from commands to subprocess
- replace print statement with print function
- use reserved word `as` in try-except
- replace deprecated assert_() method with assertTrue() in unit tests

Signed-off-by: Michal Srb <msrb@xxxxxxxxxx>
---
 policycoreutils/sandbox/sandbox         | 38 +++++++++++++++++++--------------
 policycoreutils/sandbox/start           |  6 +++---
 policycoreutils/sandbox/test_sandbox.py | 12 +++++------
 3 files changed, 31 insertions(+), 25 deletions(-)

diff --git a/policycoreutils/sandbox/sandbox b/policycoreutils/sandbox/sandbox
index 3678c5d..fb64464 100644
--- a/policycoreutils/sandbox/sandbox
+++ b/policycoreutils/sandbox/sandbox
@@ -25,7 +25,6 @@ import selinux
 import signal
 from tempfile import mkdtemp
 import pwd
-import commands
 import sepolicy
 
 PROGNAME = "policycoreutils"
@@ -36,13 +35,16 @@ gettext.bindtextdomain(PROGNAME, "/usr/share/locale")
 gettext.textdomain(PROGNAME)
 
 try:
-       gettext.install(PROGNAME,
-                       localedir = "/usr/share/locale",
-                       unicode=False,
-                       codeset = 'utf-8')
+   gettext.install(PROGNAME,
+                   localedir = "/usr/share/locale",
+                   codeset = 'utf-8')
 except IOError:
-       import __builtin__
-       __builtin__.__dict__['_'] = unicode
+    try:
+        import builtins
+        builtins.__dict__['_'] = str
+    except ImportError:
+        import __builtin__
+        __builtin__.__dict__['_'] = unicode
 
 DEFAULT_WINDOWSIZE = "1000x700"
 DEFAULT_TYPE = "sandbox_t"
@@ -86,7 +88,7 @@ def copyfile(file, srcdir, dest):
                      else:
                             shutil.copy2(file, dest)
 
-              except shutil.Error, elist:
+              except shutil.Error as elist:
                      for e in elist.message:
                             sys.stderr.write(e[2])
                      
@@ -107,7 +109,11 @@ def savefile(new, orig, X_ind):
               if rc == gtk.RESPONSE_YES:
                      copy = True
        else:
-              ans = raw_input(_("Do you want to save changes to '%s' (y/N): ") % orig)
+              try:
+                  input = raw_input
+              except NameError:
+                  pass
+              ans = input(_("Do you want to save changes to '%s' (y/N): ") % orig)
               if(re.match(_("[yY]"),ans)):
                      copy = True
        if(copy):
@@ -228,9 +234,9 @@ class Sandbox:
            for i in fd.readlines():
                   try:
                          self.__include(option, opt, i[:-1], parser)
-                  except IOError, e:
+                  except IOError as e:
                          sys.stderr.write(str(e))
-                  except TypeError, e:
+                  except TypeError as e:
                          sys.stderr.write(str(e))
            fd.close()
 
@@ -263,7 +269,7 @@ dbus-launch --exit-with-session %s
 kill -TERM $WM_PID  2> /dev/null
 """ % (command, wm, command))
            fd.close()
-           os.chmod(execfile, 0700)
+           os.chmod(execfile, 0o700)
 
     def usage(self, message = ""):
            error_exit("%s\n%s" % (self.__parser.usage, message))
@@ -492,13 +498,13 @@ if __name__ == '__main__':
     try:
            sandbox = Sandbox()
            rc = sandbox.main()
-    except OSError, error:
+    except OSError as error:
            error_exit(error)
-    except ValueError, error:
+    except ValueError as error:
            error_exit(error.args[0])
-    except KeyError, error:
+    except KeyError as error:
            error_exit(_("Invalid value %s") % error.args[0])
-    except IOError, error:
+    except IOError as error:
            error_exit(error)
     except KeyboardInterrupt:
            rc = 0
diff --git a/policycoreutils/sandbox/start b/policycoreutils/sandbox/start
index 52950d7..d895ba2 100644
--- a/policycoreutils/sandbox/start
+++ b/policycoreutils/sandbox/start
@@ -1,9 +1,9 @@
 #! /usr/bin/python -Es
-import gtk, commands, sys
+import gtk, subprocess, sys
 rc = [-1,'']
 try:
-    rc=commands.getstatusoutput(sys.argv[1])
+    rc=subprocess.getstatusoutput(sys.argv[1])
 except:
     pass
 if rc[0] == 0:
-    print rc[1]
+    print(rc[1])
diff --git a/policycoreutils/sandbox/test_sandbox.py b/policycoreutils/sandbox/test_sandbox.py
index b3b7f64..d765cb4 100644
--- a/policycoreutils/sandbox/test_sandbox.py
+++ b/policycoreutils/sandbox/test_sandbox.py
@@ -4,18 +4,18 @@ from subprocess import Popen, PIPE
 
 class SandboxTests(unittest.TestCase):
     def assertDenied(self, err):
-        self.assert_('Permission denied' in err,
+        self.assertTrue(b'Permission denied' in err,
                      '"Permission denied" not found in %r' % err)
     def assertNotFound(self, err):
-        self.assert_('not found' in err,
+        self.assertTrue(b'not found' in err,
                      '"not found" not found in %r' % err)
 
     def assertFailure(self, status):
-        self.assert_(status != 0,
+        self.assertTrue(status != 0,
                      '"Succeeded when it should have failed')
 
     def assertSuccess(self, status, err):
-        self.assert_(status == 0,
+        self.assertTrue(status == 0,
                      '"Sandbox should have succeeded for this test %r' %  err)
 
     def test_simple_success(self):
@@ -23,7 +23,7 @@ class SandboxTests(unittest.TestCase):
         p1 = Popen(['cat', '/etc/passwd'], stdout = PIPE)
         p2 = Popen(['sandbox', 'grep', 'root'], stdin = p1.stdout, stdout=PIPE)
         out, err = p2.communicate()
-        self.assert_('root' in out)
+        self.assertTrue(b'root' in out)
 
     def test_cant_kill(self):
         "Verify that we cannot send kill signal in the sandbox"
@@ -95,4 +95,4 @@ if __name__ == "__main__":
     if selinux.security_getenforce() == 1:
         unittest.main()
     else:
-        print "SELinux must be in enforcing mode for this test"
+        print("SELinux must be in enforcing mode for this test")
-- 
2.4.3

_______________________________________________
Selinux mailing list
Selinux@xxxxxxxxxxxxx
To unsubscribe, send email to Selinux-leave@xxxxxxxxxxxxx.
To get help, send an email containing "help" to Selinux-request@xxxxxxxxxxxxx.



[Index of Archives]     [Selinux Refpolicy]     [Linux SGX]     [Fedora Users]     [Fedora Desktop]     [Yosemite Photos]     [Yosemite Camping]     [Yosemite Campsites]     [KDE Users]     [Gnome Users]

  Powered by Linux