# # Metrix++, Copyright 2009-2013, Metrix++ Project # Link: http://metrixplusplus.sourceforge.net # # This file is a part of Metrix++ Tool. # # Metrix++ is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, version 3 of the License. # # Metrix++ is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Metrix++. If not, see . # import unittest import os import tests.common class Test(tests.common.TestCase): def setUp(self): tests.common.TestCase.setUp(self) self.METRIXPLUSPLUS_PATH = None if 'METRIXPLUSPLUS_PATH' in os.environ.keys(): self.METRIXPLUSPLUS_PATH = os.environ['METRIXPLUSPLUS_PATH'] def tearDown(self): if self.METRIXPLUSPLUS_PATH != None: os.environ['METRIXPLUSPLUS_PATH'] = self.METRIXPLUSPLUS_PATH else: del os.environ['METRIXPLUSPLUS_PATH'] tests.common.TestCase.tearDown(self) def test_metric_plugin_api(self): # # WARNING: # files generated by this test are used by project documents page # so, if the test is changed, html docs should be updated accordingly # for step in range(9): opts = ['--log-level=INFO'] if step > 1: opts.append('--myext.magic.numbers') if step > 7: opts.append('--myext.magic.numbers.simplier') os.environ['METRIXPLUSPLUS_PATH'] = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'test_api_tutorial', 'ext', 'step' + str(step)) runner = tests.common.ToolRunner('collect', opts, prefix='step' + str(step), check_stderr=[(0, -1)]) self.assertExec(runner.run()) if step < 4: continue runner = tests.common.ToolRunner('view', ['--log-level=INFO'], prefix='step' + str(step), check_stderr=[(0, -1)]) self.assertExec(runner.run()) def test_runable_plugin_api(self): # # WARNING: # files generated by this test are used by project documents page # so, if the test is changed, html docs should be updated accordingly # runner = tests.common.ToolRunner('collect', ['--std.code.lines.total', '--log-level=INFO'], check_stderr=[(0, -1)], save_prev=True) self.assertExec(runner.run()) runner = tests.common.ToolRunner('collect', ['--std.code.lines.total', '--log-level=INFO'], check_stderr=[(0, -1)], prefix='second', cwd="sources_changed", use_prev=True) self.assertExec(runner.run()) for step in range(3): step = step + 1 os.environ['METRIXPLUSPLUS_PATH'] = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'test_api_tutorial', 'ext', 'compare_step' + str(step)) runner = tests.common.ToolRunner('compare', ['--log-level=INFO'], prefix='step' + str(step), check_stderr=[(0, -1)], use_prev=True) self.assertExec(runner.run()) if __name__ == '__main__': unittest.main()