Commit 021e6211 by Jesse Zoldak

Add ability to specify starting dir for bok-choy tests

parent f5d08b2e
...@@ -26,6 +26,7 @@ __test__ = False # do not collect ...@@ -26,6 +26,7 @@ __test__ = False # do not collect
('testsonly', 'o', 'Assume servers are running and execute tests only'), ('testsonly', 'o', 'Assume servers are running and execute tests only'),
('extra_args=', 'e', 'adds as extra args to the test command'), ('extra_args=', 'e', 'adds as extra args to the test command'),
('default_store=', 's', 'Default modulestore'), ('default_store=', 's', 'Default modulestore'),
('test_dir=', 'd', 'Directory for finding tests (relative to common/test/acceptance)'),
make_option("--verbose", action="store_const", const=2, dest="verbosity"), make_option("--verbose", action="store_const", const=2, dest="verbosity"),
make_option("-q", "--quiet", action="store_const", const=0, dest="verbosity"), make_option("-q", "--quiet", action="store_const", const=0, dest="verbosity"),
make_option("-v", "--verbosity", action="count", dest="verbosity"), make_option("-v", "--verbosity", action="count", dest="verbosity"),
...@@ -64,7 +65,7 @@ def test_bokchoy(options): ...@@ -64,7 +65,7 @@ def test_bokchoy(options):
'verbosity': getattr(options, 'verbosity', 2), 'verbosity': getattr(options, 'verbosity', 2),
'extra_args': getattr(options, 'extra_args', ''), 'extra_args': getattr(options, 'extra_args', ''),
'pdb': getattr(options, 'pdb', False), 'pdb': getattr(options, 'pdb', False),
'test_dir': 'tests', 'test_dir': getattr(options, 'test_dir', 'tests'),
} }
run_bokchoy(**opts) run_bokchoy(**opts)
......
"""
Tests for the bok-choy paver commands themselves.
Run just this test with: paver test_lib -t pavelib/paver_tests/test_paver_bok_choy_cmds.py
"""
import os import os
import unittest import unittest
from pavelib.utils.test.suites import BokChoyTestSuite from pavelib.utils.test.suites import BokChoyTestSuite
...@@ -8,57 +11,78 @@ REPO_DIR = os.getcwd() ...@@ -8,57 +11,78 @@ REPO_DIR = os.getcwd()
class TestPaverBokChoyCmd(unittest.TestCase): class TestPaverBokChoyCmd(unittest.TestCase):
def setUp(self): def _expected_command(self, name, store=None):
super(TestPaverBokChoyCmd, self).setUp() """
self.request = BokChoyTestSuite('') Returns the command that is expected to be run for the given test spec
and store.
def _expected_command(self, expected_text_append, expected_default_store=None): """
if expected_text_append:
expected_text_append = "/" + expected_text_append
shard = os.environ.get('SHARD') shard = os.environ.get('SHARD')
expected_statement = ( expected_statement = (
"DEFAULT_STORE={default_store} " "DEFAULT_STORE={default_store} "
"SCREENSHOT_DIR='{repo_dir}/test_root/log{shard_str}' " "SCREENSHOT_DIR='{repo_dir}/test_root/log{shard_str}' "
"BOK_CHOY_HAR_DIR='{repo_dir}/test_root/log{shard_str}/hars' " "BOK_CHOY_HAR_DIR='{repo_dir}/test_root/log{shard_str}/hars' "
"SELENIUM_DRIVER_LOG_DIR='{repo_dir}/test_root/log{shard_str}' " "SELENIUM_DRIVER_LOG_DIR='{repo_dir}/test_root/log{shard_str}' "
"nosetests {repo_dir}/common/test/acceptance/tests{exp_text} " "nosetests {repo_dir}/common/test/acceptance/{exp_text} "
"--with-xunit " "--with-xunit "
"--xunit-file={repo_dir}/reports/bok_choy{shard_str}/xunit.xml " "--xunit-file={repo_dir}/reports/bok_choy{shard_str}/xunit.xml "
"--verbosity=2 " "--verbosity=2 "
).format( ).format(
default_store=expected_default_store, default_store=store,
repo_dir=REPO_DIR, repo_dir=REPO_DIR,
exp_text=expected_text_append,
shard_str='/shard_' + shard if shard else '', shard_str='/shard_' + shard if shard else '',
exp_text=name,
) )
return expected_statement.strip() return expected_statement
def test_default_bokchoy(self): def test_default(self):
self.assertEqual(self.request.cmd.strip(), self._expected_command('')) suite = BokChoyTestSuite('')
name = 'tests'
self.assertEqual(suite.cmd, self._expected_command(name=name))
def test_suite_request_bokchoy(self): def test_suite_spec(self):
self.request.test_spec = "test_foo.py" spec = 'test_foo.py'
self.assertEqual(self.request.cmd.strip(), self._expected_command(self.request.test_spec)) suite = BokChoyTestSuite('', test_spec=spec)
name = 'tests/{}'.format(spec)
self.assertEqual(suite.cmd, self._expected_command(name=name))
def test_class_request_bokchoy(self): def test_class_spec(self):
self.request.test_spec = "test_foo.py:FooTest" spec = 'test_foo.py:FooTest'
self.assertEqual(self.request.cmd.strip(), self._expected_command(self.request.test_spec)) suite = BokChoyTestSuite('', test_spec=spec)
name = 'tests/{}'.format(spec)
self.assertEqual(suite.cmd, self._expected_command(name=name))
def test_case_request_bokchoy(self): def test_testcase_spec(self):
self.request.test_spec = "test_foo.py:FooTest.test_bar" spec = 'test_foo.py:FooTest.test_bar'
self.assertEqual(self.request.cmd.strip(), self._expected_command(self.request.test_spec)) suite = BokChoyTestSuite('', test_spec=spec)
name = 'tests/{}'.format(spec)
self.assertEqual(suite.cmd, self._expected_command(name=name))
def test_default_bokchoy_with_draft_default_store(self): def test_spec_with_draft_default_store(self):
self.request.test_spec = "test_foo.py" spec = 'test_foo.py'
self.request.default_store = "draft" suite = BokChoyTestSuite('', test_spec=spec, default_store='draft')
self.assertEqual(self.request.cmd.strip(), self._expected_command(self.request.test_spec, "draft")) name = 'tests/{}'.format(spec)
self.assertEqual(
suite.cmd,
self._expected_command(name=name, store='draft')
)
def test_default_bokchoy_with_invalid_default_store(self): def test_invalid_default_store(self):
# the cmd will dumbly compose whatever we pass in for the default_store # the cmd will dumbly compose whatever we pass in for the default_store
self.request.test_spec = "test_foo.py" suite = BokChoyTestSuite('', default_store='invalid')
self.request.default_store = "invalid" name = 'tests'
self.assertEqual(self.request.cmd.strip(), self._expected_command(self.request.test_spec, "invalid")) self.assertEqual(
suite.cmd,
self._expected_command(name=name, store='invalid')
)
def test_serversonly(self): def test_serversonly(self):
self.request.serversonly = True suite = BokChoyTestSuite('', serversonly=True)
self.assertEqual(self.request.cmd.strip(), "") self.assertEqual(suite.cmd, "")
def test_test_dir(self):
test_dir = 'foo'
suite = BokChoyTestSuite('', test_dir=test_dir)
self.assertEqual(
suite.cmd,
self._expected_command(name=test_dir)
)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment