|
3 | 3 | import subprocess
|
4 | 4 | from subprocess import call
|
5 | 5 | import sys
|
| 6 | +import tempfile |
6 | 7 | import time
|
7 | 8 |
|
8 | 9 | import pytest
|
9 | 10 |
|
10 | 11 | from covimerage import DEFAULT_COVERAGE_DATA_FILE, cli, get_version
|
11 |
| -from covimerage._compat import StringIO |
12 | 12 |
|
13 | 13 |
|
14 | 14 | def test_dunder_main_run(capfd):
|
@@ -209,6 +209,29 @@ def test_cli_run_can_skip_writing_data(with_append, runner, tmpdir):
|
209 | 209 | assert not tmpdir.join(DEFAULT_COVERAGE_DATA_FILE).exists()
|
210 | 210 |
|
211 | 211 |
|
| 212 | +def test_cli_write_coverage_with_append(runner, tmpdir, covdata_header): |
| 213 | + profiled_file = 'tests/test_plugin/conditional_function.vim' |
| 214 | + profiled_file_content = open(profiled_file, 'r').read() |
| 215 | + with tmpdir.as_cwd() as old_dir: |
| 216 | + profile_file = str(old_dir.join( |
| 217 | + 'tests/fixtures/conditional_function.profile')) |
| 218 | + tmpdir.join(profiled_file).write(profiled_file_content, ensure=True) |
| 219 | + args = ['--append', profile_file] |
| 220 | + result = runner.invoke(cli.write_coverage, args) |
| 221 | + |
| 222 | + assert result.output.splitlines() == [ |
| 223 | + 'Writing coverage file .coverage_covimerage.', |
| 224 | + ] |
| 225 | + assert tmpdir.join(DEFAULT_COVERAGE_DATA_FILE).exists() |
| 226 | + |
| 227 | + data = open('.coverage_covimerage').read() |
| 228 | + assert data.startswith(covdata_header) |
| 229 | + |
| 230 | + # Not changed if appending the same. |
| 231 | + result = runner.invoke(cli.write_coverage, args) |
| 232 | + assert len(open('.coverage_covimerage').read()) == len(data) |
| 233 | + |
| 234 | + |
212 | 235 | def test_cli_run_report_fd(capfd, tmpdir, devnull):
|
213 | 236 | profile_fname = 'tests/fixtures/conditional_function.profile'
|
214 | 237 | with open(profile_fname, 'r') as f:
|
@@ -328,35 +351,33 @@ def test_cli_writecoverage_without_data(runner):
|
328 | 351 | def test_cli_writecoverage_datafile(runner):
|
329 | 352 | from covimerage.coveragepy import CoverageWrapper
|
330 | 353 |
|
331 |
| - f = StringIO() |
332 |
| - result = runner.invoke(cli.main, ['write_coverage', '--data-file', f, |
| 354 | + fname = tempfile.mktemp() |
| 355 | + result = runner.invoke(cli.main, ['write_coverage', '--data-file', fname, |
333 | 356 | 'tests/fixtures/conditional_function.profile'])
|
334 | 357 | assert result.output == '\n'.join([
|
335 |
| - 'Writing coverage file %s.' % f, |
| 358 | + 'Writing coverage file %s.' % fname, |
336 | 359 | ''])
|
337 | 360 | assert result.exit_code == 0
|
338 | 361 |
|
339 |
| - f.seek(0) |
340 |
| - cov = CoverageWrapper(data_file=f) |
| 362 | + cov = CoverageWrapper(data_file=fname) |
341 | 363 | assert cov.lines == {
|
342 | 364 | os.path.abspath('tests/test_plugin/conditional_function.vim'): [
|
343 | 365 | 3, 8, 9, 11, 13, 14, 15, 17, 23]}
|
344 | 366 |
|
345 | 367 |
|
346 |
| -def test_cli_writecoverage_source(runner): |
| 368 | +def test_cli_writecoverage_source(runner, devnull): |
347 | 369 | from covimerage.coveragepy import CoverageWrapper
|
348 | 370 |
|
349 |
| - f = StringIO() |
| 371 | + fname = tempfile.mktemp() |
350 | 372 | result = runner.invoke(cli.main, [
|
351 |
| - 'write_coverage', '--data-file', f, '--source', '.', |
| 373 | + 'write_coverage', '--data-file', fname, '--source', '.', |
352 | 374 | 'tests/fixtures/conditional_function.profile'])
|
353 | 375 | assert result.output == '\n'.join([
|
354 |
| - 'Writing coverage file %s.' % f, |
| 376 | + 'Writing coverage file %s.' % fname, |
355 | 377 | ''])
|
356 | 378 | assert result.exit_code == 0
|
357 | 379 |
|
358 |
| - f.seek(0) |
359 |
| - cov = CoverageWrapper(data_file=f) |
| 380 | + cov = CoverageWrapper(data_file=fname) |
360 | 381 | assert cov.lines[
|
361 | 382 | os.path.abspath('tests/test_plugin/conditional_function.vim')] == [
|
362 | 383 | 3, 8, 9, 11, 13, 14, 15, 17, 23]
|
|
0 commit comments