[0] | 1 | import os
|
---|
[26] | 2 | import pytest
|
---|
[0] | 3 |
|
---|
[26] | 4 | from pyenvjasmine.runner import Runner, get_environment
|
---|
[0] | 5 |
|
---|
| 6 |
|
---|
[36] | 7 | class TestsRunnerRhino(object):
|
---|
| 8 |
|
---|
| 9 | """
|
---|
| 10 | Run the full tests using the old rhino+jasmine1 env
|
---|
| 11 | """
|
---|
[0] | 12 |
|
---|
| 13 | def test_runner_defaults(self):
|
---|
| 14 | """
|
---|
| 15 | Test the runner, using default values (which wil run the demo specs)
|
---|
| 16 | """
|
---|
[36] | 17 | jstests = Runner(testing_enviroment='rhino')
|
---|
[26] | 18 | success, stdout = jstests.run()
|
---|
| 19 | assert success
|
---|
[30] | 20 | assert 'Failed: 0' in stdout
|
---|
| 21 | assert 'Passed: 5' in stdout
|
---|
[0] | 22 |
|
---|
| 23 | def test_runner_params(self):
|
---|
| 24 | """
|
---|
| 25 | Test the runner, giving it some parameters
|
---|
| 26 | """
|
---|
| 27 | here = os.path.dirname(__file__)
|
---|
| 28 | sample = os.path.join(here, 'sample')
|
---|
| 29 | conf_file = os.path.join(sample, 'configfile.js')
|
---|
| 30 | envjasmine_dir = os.path.join(os.path.dirname(here), 'envjasmine')
|
---|
[24] | 31 | jstests = Runner(
|
---|
[36] | 32 | testing_enviroment='rhino',
|
---|
[0] | 33 | rootdir=envjasmine_dir,
|
---|
| 34 | testdir=sample,
|
---|
| 35 | configfile=conf_file,
|
---|
| 36 | )
|
---|
[26] | 37 | success, stdout = jstests.run(spec='tests/specs/test_demo.spec.js')
|
---|
| 38 | lines = stdout.splitlines()
|
---|
[30] | 39 | assert lines[0].endswith('specs/test_demo.spec.js')
|
---|
| 40 | assert lines[1].startswith('[ Envjs/1.6 (Rhino;')
|
---|
| 41 | assert 'Passed: 4' in lines
|
---|
| 42 | assert 'Failed: 0' in lines
|
---|
| 43 | assert 'Total : 4' in lines
|
---|
[0] | 44 |
|
---|
| 45 | def test_write_browser_htmlfile_markup_is_correct(self):
|
---|
| 46 | """
|
---|
| 47 | Test the created markup
|
---|
| 48 | """
|
---|
| 49 | here = os.path.dirname(__file__)
|
---|
| 50 | sample = os.path.join(here, 'sample')
|
---|
| 51 | browser_conf_file = os.path.join(sample, 'browser.configfile.js')
|
---|
| 52 | envjasmine_dir = os.path.join(os.path.dirname(here), 'envjasmine')
|
---|
[24] | 53 | jstests = Runner(
|
---|
[36] | 54 | testing_enviroment='rhino',
|
---|
[0] | 55 | rootdir=envjasmine_dir,
|
---|
| 56 | testdir=sample,
|
---|
| 57 | browser_configfile=browser_conf_file
|
---|
| 58 | )
|
---|
| 59 | expected = jstests.create_testRunnerHtml()
|
---|
[31] | 60 | success, stdout = jstests.run(spec='tests/specs/test_demo.spec.js')
|
---|
| 61 | assert not success
|
---|
| 62 | assert 'Failed: 2' in stdout
|
---|
[0] | 63 | with open("browser.runner.html",'r') as file:
|
---|
| 64 | actual = file.read()
|
---|
[26] | 65 | assert expected == actual
|
---|
[10] | 66 |
|
---|
[0] | 67 | def test_runner_with_browser_configfile(self):
|
---|
| 68 | """
|
---|
| 69 | Test the runner, giving it some parameters incl the browser config file
|
---|
| 70 | """
|
---|
| 71 | here = os.path.dirname(__file__)
|
---|
| 72 | sample = os.path.join(here, 'sample')
|
---|
| 73 | browser_conf_file = os.path.join(sample, 'browser.configfile.js')
|
---|
| 74 | envjasmine_dir = os.path.join(os.path.dirname(here), 'envjasmine')
|
---|
[24] | 75 | jstests = Runner(
|
---|
[36] | 76 | testing_enviroment='rhino',
|
---|
[0] | 77 | rootdir=envjasmine_dir,
|
---|
| 78 | testdir=sample,
|
---|
| 79 | browser_configfile=browser_conf_file
|
---|
| 80 | )
|
---|
[26] | 81 | success, stdout = jstests.run(spec='tests/specs/test_demo.spec.js')
|
---|
| 82 | assert not success
|
---|
[31] | 83 | assert 'Failed: 2' in stdout
|
---|
[0] | 84 |
|
---|
| 85 | def test_get_environment(self):
|
---|
| 86 | """
|
---|
| 87 | Testing the OS specific code
|
---|
| 88 | Could not figure out how to do this using mock,
|
---|
| 89 | so monkey patching the old way.
|
---|
| 90 | """
|
---|
| 91 | old_os_name = os.name
|
---|
| 92 | try:
|
---|
| 93 | os.name = 'nt'
|
---|
| 94 | res = get_environment()
|
---|
[26] | 95 | assert res == '--environment=WIN'
|
---|
[0] | 96 | os.name = 'posix'
|
---|
| 97 | res = get_environment()
|
---|
[26] | 98 | assert res == '--environment=UNIX'
|
---|
[0] | 99 | finally:
|
---|
| 100 | os.name = old_os_name
|
---|
[33] | 101 |
|
---|
| 102 | def test_did_test_pass(self):
|
---|
| 103 | # there is some coverage done with the previous tests,
|
---|
| 104 | # but we want to test also the case when a test failed
|
---|
| 105 | # and it does not appear in the "Failed:" report
|
---|
[36] | 106 | jstests = Runner(testing_enviroment='rhino')
|
---|
[33] | 107 | success = jstests.did_test_pass('')
|
---|
| 108 | assert not success
|
---|
| 109 | success = jstests.did_test_pass('some random data '*50)
|
---|
| 110 | assert not success
|
---|
| 111 | success = jstests.did_test_pass('some data FAILED some more data')
|
---|
| 112 | assert not success
|
---|
| 113 | success = jstests.did_test_pass('some data FAILEDsome more data')
|
---|
| 114 | assert not success
|
---|
| 115 | success = jstests.did_test_pass('Failed: 0')
|
---|
| 116 | assert success
|
---|
| 117 | success = jstests.did_test_pass('Failed: 0 FAILED')
|
---|
| 118 | assert not success
|
---|
| 119 | success = jstests.did_test_pass('FAILEDFailed: 0')
|
---|
| 120 | assert not success
|
---|
| 121 | success = jstests.did_test_pass('Failed: 0FAILED')
|
---|
| 122 | assert not success
|
---|
| 123 | success = jstests.did_test_pass('Failed: 1')
|
---|
| 124 | assert not success
|
---|
| 125 | success = jstests.did_test_pass('Failed: -11')
|
---|
| 126 | assert not success
|
---|
| 127 | success = jstests.did_test_pass('Failed: something-not-a-number')
|
---|
| 128 | assert not success
|
---|
[36] | 129 |
|
---|
| 130 | class TestsRunnerPhantomjs(object):
|
---|
| 131 |
|
---|
| 132 | """
|
---|
| 133 | Run the full tests using the phantom+jasmine3 env
|
---|
| 134 | """
|
---|
| 135 |
|
---|
| 136 | def test_write_browser_htmlfile_markup_is_correct(self):
|
---|
| 137 | """
|
---|
| 138 | Test the created markup
|
---|
| 139 | The config file doesn't contain the mock files so jasmine tests
|
---|
| 140 | are expected to fail
|
---|
| 141 | """
|
---|
| 142 | here = os.path.dirname(__file__)
|
---|
| 143 | sample = os.path.join(here, 'sample')
|
---|
| 144 | browser_conf_file = os.path.join(sample, 'browser.configfile_no_mocks.js')
|
---|
| 145 | envjasmine_dir = os.path.join(os.path.dirname(here), 'envjasmine')
|
---|
| 146 | jstests = Runner(
|
---|
| 147 | testing_enviroment='phantomjs',
|
---|
| 148 | rootdir=envjasmine_dir,
|
---|
| 149 | testdir=sample,
|
---|
| 150 | browser_configfile=browser_conf_file
|
---|
| 151 | )
|
---|
| 152 | expected = jstests.create_testRunnerHtml()
|
---|
| 153 | jstests.write_browser_htmlfile()
|
---|
| 154 | success, stdout = jstests.run()
|
---|
| 155 | assert not success
|
---|
| 156 | assert '2 test(s) FAILED:' in stdout
|
---|
| 157 | with open("browser.runner.html",'r') as file:
|
---|
| 158 | actual = file.read()
|
---|
| 159 | assert expected == actual
|
---|
| 160 |
|
---|
| 161 | def test_runner_with_browser_configfile(self):
|
---|
| 162 | """
|
---|
| 163 | Test the runner, giving it some parameters incl the browser config file
|
---|
| 164 | The config file contains the mock files so jasmine tests are expected
|
---|
| 165 | to pass
|
---|
| 166 | """
|
---|
| 167 | here = os.path.dirname(__file__)
|
---|
| 168 | sample = os.path.join(here, 'sample')
|
---|
| 169 | browser_conf_file = os.path.join(sample, 'browser.configfile.js')
|
---|
| 170 | envjasmine_dir = os.path.join(os.path.dirname(here), 'envjasmine')
|
---|
| 171 | jstests = Runner(
|
---|
| 172 | testing_enviroment='phantomjs',
|
---|
| 173 | rootdir=envjasmine_dir,
|
---|
| 174 | testdir=sample,
|
---|
| 175 | browser_configfile=browser_conf_file
|
---|
| 176 | )
|
---|
| 177 | success, stdout = jstests.run()
|
---|
| 178 | assert success
|
---|
| 179 | assert '0 failures' in stdout
|
---|
| 180 |
|
---|
| 181 | def test_did_test_pass(self):
|
---|
| 182 | # there is some coverage done with the previous tests,
|
---|
| 183 | # but we want to test also the case when a test failed
|
---|
| 184 | # and it does not appear in the "Failed:" report
|
---|
| 185 | here = os.path.dirname(__file__)
|
---|
| 186 | sample = os.path.join(here, 'sample')
|
---|
| 187 | browser_conf_file = os.path.join(sample, 'browser.configfile.js')
|
---|
| 188 |
|
---|
| 189 | jstests = Runner(
|
---|
| 190 | testing_enviroment='phantomjs',
|
---|
| 191 | browser_configfile=browser_conf_file
|
---|
| 192 | )
|
---|
| 193 | success = jstests.did_test_pass('')
|
---|
| 194 | assert not success
|
---|
| 195 | success = jstests.did_test_pass('some random data '*50)
|
---|
| 196 | assert not success
|
---|
| 197 | success = jstests.did_test_pass('some data FAILED some more data')
|
---|
| 198 | assert not success
|
---|
| 199 | success = jstests.did_test_pass('some data FAILEDsome more data')
|
---|
| 200 | assert not success
|
---|
| 201 | success = jstests.did_test_pass('0 failures')
|
---|
| 202 | assert success
|
---|
| 203 | success = jstests.did_test_pass('0 failures FAILED')
|
---|
| 204 | assert not success
|
---|
| 205 | success = jstests.did_test_pass('0Failed: failures')
|
---|
| 206 | assert not success
|
---|
| 207 | success = jstests.did_test_pass('1 test(s) FAILED:')
|
---|
| 208 | assert not success
|
---|
| 209 | success = jstests.did_test_pass('-11 test(s) FAILED:')
|
---|
| 210 | assert not success
|
---|
| 211 | success = jstests.did_test_pass('something-not-a-number test(s) FAILED:')
|
---|
| 212 | assert not success
|
---|