configurationengine/source/scripts/tests/unittest_report.py
changeset 0 2e8eeb919028
child 3 e7e0ae78773e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/configurationengine/source/scripts/tests/unittest_report.py	Thu Mar 11 17:04:37 2010 +0200
@@ -0,0 +1,107 @@
+#
+# 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 sys, os, shutil, unittest
+import __init__
+from testautomation.base_testcase import BaseTestCase
+from testautomation import zip_dir
+from scripttest_common import get_cmd
+
+ROOT_PATH = os.path.dirname(os.path.abspath(__file__))
+TEMP_DIR     = os.path.normpath(os.path.join(ROOT_PATH, 'temp/report'))
+TESTDATA_DIR = os.path.normpath(os.path.join(ROOT_PATH, 'testdata/report'))
+TEST_PROJECT = os.path.normpath(os.path.join(TESTDATA_DIR, 'project'))
+
+
+class TestReport(BaseTestCase):
+
+    def _test_get_help(self):
+        cmd = '%s -h' % get_cmd('report')
+        out = self.run_command(cmd)
+        lines = out.split('\r\n')
+        self.assertTrue('Options:' in lines)
+        self.assertTrue('  Report options:' in lines)
+    
+    def test_generate_data_files_and_create_reports(self):
+        TEST_DIR = 'test1/'
+        
+        _, datafile_rofs3 = self.generate(TEST_DIR + 'out-rofs3',   TEST_DIR + 'repdata/rofs3.dat', 'rofs3')
+        _, datafile_uda   = self.generate(TEST_DIR + 'out-uda',     TEST_DIR + 'repdata/uda.dat',   'uda')
+        
+        REPORTS_DIR = os.path.join(TEMP_DIR, TEST_DIR + 'reports')
+        self.create_report([datafile_rofs3],                os.path.join(REPORTS_DIR, 'rofs3.txt'))
+        self.create_report([datafile_uda],                  os.path.join(REPORTS_DIR, 'uda.txt'))
+        self.create_report([datafile_rofs3, datafile_uda],  os.path.join(REPORTS_DIR, 'both.txt'))
+
+        EXPECTED_DIR = os.path.join(TESTDATA_DIR, 'expected')
+        self.assert_dir_contents_equal(EXPECTED_DIR, REPORTS_DIR, ['.svn'])
+        
+        # Create by giving the directory as input and check
+        REPORT_FILE = os.path.join(TEMP_DIR, TEST_DIR, 'both_from_dir.txt')
+        EXPECTED_FILE = os.path.join(EXPECTED_DIR, 'both.txt')
+        self.create_report_from_dir(os.path.join(TEMP_DIR, TEST_DIR, 'repdata'), REPORT_FILE)
+        self.assert_file_contents_equal(EXPECTED_FILE, REPORT_FILE)
+    
+    def generate(self, output_dir, report_data_file, target_tag):
+        """
+        Generate output into the given output directory and report data file.
+        @return: Tuple containing the absolute paths to the output directory
+            and report data file.
+        """
+        OUTPUT_DIR = os.path.join(TEMP_DIR, output_dir)
+        REPORT_DATA_FILE = os.path.join(TEMP_DIR, report_data_file)
+        self.remove_if_exists(OUTPUT_DIR)
+        
+        cmd = '%s -p "%s" -o "%s" --report-data-output "%s" --impl-tag target:%s' \
+            % (get_cmd('generate'), TEST_PROJECT, OUTPUT_DIR, REPORT_DATA_FILE, target_tag)
+        self.run_command(cmd)
+        self.assert_exists_and_contains_something(OUTPUT_DIR)
+        self.assert_exists_and_contains_something(REPORT_DATA_FILE)
+        
+        return OUTPUT_DIR, REPORT_DATA_FILE
+    
+    def create_report(self, report_data_files, report_file):
+        """
+        Create a report based on a number of input data files.
+        @return: Absolute path to the created report.
+        """
+        TEMPLATE_FILE = os.path.join(TESTDATA_DIR, 'template.txt')
+        REPORT_FILE = os.path.join(TEMP_DIR, report_file)
+        self.remove_if_exists(REPORT_FILE)
+        
+        cmd = '%s --report "%s" --template "%s" ' % (get_cmd('report'), REPORT_FILE, TEMPLATE_FILE)
+        cmd += ' '.join(['--input-data "%s"' % f for f in report_data_files])
+        self.run_command(cmd)
+        self.assert_exists_and_contains_something(REPORT_FILE)
+        return REPORT_FILE
+    
+    def create_report_from_dir(self, report_data_dir, report_file):
+        """
+        Create a report based on an input data directory.
+        @return: Absolute path to the created report.
+        """
+        TEMPLATE_FILE = os.path.join(TESTDATA_DIR, 'template.txt')
+        REPORT_FILE = os.path.join(TEMP_DIR, report_file)
+        self.remove_if_exists(REPORT_FILE)
+        
+        cmd = '%s --report "%s" --template "%s" --input-data-dir "%s"' \
+            % (get_cmd('report'), REPORT_FILE, TEMPLATE_FILE, report_data_dir)
+        self.run_command(cmd)
+        self.assert_exists_and_contains_something(REPORT_FILE)
+        return REPORT_FILE
+
+if __name__ == '__main__':
+      unittest.main()