--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/configurationengine/source/testautomation/testautomation/unzip_file.py Thu Mar 11 17:04:37 2010 +0200
@@ -0,0 +1,53 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+import os, zipfile, shutil
+
+def unzip_file(file, dir, delete_if_exists=False):
+ if os.path.exists(dir):
+ if delete_if_exists == True:
+ shutil.rmtree(dir)
+ else:
+ raise RuntimeError("Directory '%s' already exists" % dir)
+ if not os.path.exists(file):
+ raise RuntimeError("File '%s' does not exist" % file)
+
+ os.makedirs(dir)
+ zf = zipfile.ZipFile(file)
+
+ try:
+ for name in zf.namelist():
+ if name.endswith('/'):
+ path = os.path.join(dir, name)
+ if not os.path.exists(path):
+ os.makedirs(path)
+ else:
+ path = os.path.join(dir, name)
+ dirname = os.path.dirname(path)
+ if dirname != '' and not os.path.exists(dirname):
+ os.makedirs(dirname)
+ f = open(path, 'wb')
+ try: f.write(zf.read(name))
+ finally: f.close()
+ finally:
+ zf.close()
+
+def unzip_file_if_newer(file, dir):
+ if not os.path.exists(file):
+ raise RuntimeError("File '%s' does not exist" % file)
+
+ if not os.path.exists(dir) or os.stat(file)[8] > os.stat(dir)[8]:
+ unzip_file(file, dir, True)