diff -r 000000000000 -r 2e8eeb919028 configurationengine/source/scripts/tests/unittest_report.py --- /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()