def test_custom_regex(): """Test custom word regex""" with TemporaryDirectory() as d: with open(op.join(d, 'bad.txt'), 'w') as f: f.write('abandonned_abondon\n') assert_equal(cs.main(d), 0) assert_equal(cs.main('-r', "[a-z]+", d), 2)
def test_ignore_word_list(tmpdir): """Test ignore word list functionality""" d = str(tmpdir) with open(op.join(d, 'bad.txt'), 'w') as f: f.write('abandonned\nabondon\nabilty\n') assert cs.main(d) == 3 assert cs.main('-Labandonned,someword', '-Labilty', d) == 1
def test_custom_regex(reload_codespell_lib): """Test custom word regex""" with TemporaryDirectory() as d: with open(op.join(d, 'bad.txt'), 'w') as f: f.write('abandonned_abondon\n') assert cs.main(d) == 0 assert cs.main('-r', "[a-z]+", d) == 2
def test_ignore_dictionary(tmpdir): """Test ignore dictionary functionality.""" d = str(tmpdir) with open(op.join(d, 'bad.txt'), 'w') as f: f.write('1 abandonned 1\n2 abandonned 2\nabondon\n') bad_name = f.name assert cs.main(bad_name) == 3 with open(op.join(d, 'ignore.txt'), 'w') as f: f.write('abandonned\n') assert cs.main('-I', f.name, bad_name) == 1
def test_custom_regex(tmpdir, capsys): """Test custom word regex.""" d = str(tmpdir) with open(op.join(d, 'bad.txt'), 'w') as f: f.write('abandonned_abondon\n') assert cs.main(d) == 0 assert cs.main('-r', "[a-z]+", d) == 2 capsys.readouterr() assert cs.main('-r', '[a-z]+', '--write-changes', d) == 1 assert 'ERROR:' in capsys.readouterr()[0]
def test_exclude_file(): """Test exclude file functionality""" with TemporaryDirectory() as d: with open(op.join(d, 'bad.txt'), 'w') as f: f.write('abandonned 1\nabandonned 2\n') with tempfile.NamedTemporaryFile('w') as f: f.write('abandonned 1\n') f.flush() assert_equal(main(d), 2) assert_equal(main('-x', f.name, d), 1)
def test_exclude_file(tmpdir): """Test exclude file functionality.""" d = str(tmpdir) with open(op.join(d, 'bad.txt'), 'wb') as f: f.write('1 abandonned 1\n2 abandonned 2\n'.encode('utf-8')) bad_name = f.name assert cs.main(bad_name) == 2 with open(op.join(d, 'tmp.txt'), 'wb') as f: f.write('1 abandonned 1\n'.encode('utf-8')) assert cs.main(bad_name) == 2 assert cs.main('-x', f.name, bad_name) == 1
def test_exclude_file(): """Test exclude file functionality""" with TemporaryDirectory() as d: with open(op.join(d, 'bad.txt'), 'wb') as f: f.write('abandonned 1\nabandonned 2\n'.encode('utf-8')) assert_equal(cs.main(d), 2) with tempfile.NamedTemporaryFile('w') as f: pass with open(f.name, 'wb') as f: f.write('abandonned 1\n'.encode('utf-8')) assert_equal(cs.main(d), 2) assert_equal(cs.main('-x', f.name, d), 1)
def test_check_filename(tmpdir): """Test filename check.""" d = str(tmpdir) # Empty file with open(op.join(d, 'abandonned.txt'), 'w') as f: f.write('') assert cs.main('-f', d) == 1 # Normal file with contents with open(op.join(d, 'abandonned.txt'), 'w') as f: f.write('.') assert cs.main('-f', d) == 1 # Normal file with binary contents with open(op.join(d, 'abandonned.txt'), 'wb') as f: f.write(b'\x00\x00naiive\x00\x00') assert cs.main('-f', d) == 1
def test_check_filename_irregular_file(tmpdir): """Test irregular file filename check.""" # Irregular file (!isfile()) d = str(tmpdir) os.mkfifo(op.join(d, 'abandonned')) assert cs.main('-f', d) == 1 d = str(tmpdir)
def test_case_handling(tmpdir, capsys): """Test that capitalized entries get detected properly.""" # Some simple Unicode things with open(op.join(str(tmpdir), 'tmp'), 'w') as f: pass # with CaptureStdout() as sio: assert cs.main(f.name) == 0 try: with open(f.name, 'wb') as f: f.write('this has an ACII error'.encode('utf-8')) assert cs.main(f.name) == 1 assert 'ASCII' in capsys.readouterr()[0] assert cs.main('-w', f.name) == 0 assert 'FIXED' in capsys.readouterr()[1] with open(f.name, 'rb') as f: assert f.read().decode('utf-8') == 'this has an ASCII error' finally: os.remove(f.name)
def test_ignore_dictionary(): """Test ignore dictionary functionality""" with TemporaryDirectory() as d: with open(op.join(d, 'bad.txt'), 'w') as f: f.write('abandonned\nabondon\n') with tempfile.NamedTemporaryFile('w') as f: pass with open(f.name, 'w') as f: f.write('abandonned\n') assert_equal(cs.main('-I', f.name, d), 1)
def test_case_handling(reload_codespell_lib): """Test that capitalized entries get detected properly.""" # Some simple Unicode things with tempfile.NamedTemporaryFile('wb') as f: pass # with CaptureStdout() as sio: assert cs.main(f.name) == 0 try: with open(f.name, 'wb') as f: f.write('this has an ACII error'.encode('utf-8')) with CaptureStdout() as sio: assert cs.main(f.name) == 1 assert 'ASCII' in sio[0] with CaptureStdout() as sio: assert cs.main('-w', f.name) == 0 assert 'FIXED' in sio[1] with open(f.name, 'rb') as f: assert f.read().decode('utf-8') == 'this has an ASCII error' finally: os.remove(f.name)
def test_encoding(): """Test encoding handling""" # Some simple Unicode things with tempfile.NamedTemporaryFile('wb') as f: pass # with CaptureStdout() as sio: assert_equal(cs.main(f.name), 0) try: with open(f.name, 'wb') as f: f.write(u'naïve\n'.encode('utf-8')) assert_equal(cs.main(f.name), 0) assert_equal(cs.main('-e', f.name), 0) with open(f.name, 'ab') as f: f.write(u'naieve\n'.encode('utf-8')) assert_equal(cs.main(f.name), 1) # Binary file warning with open(f.name, 'wb') as f: f.write(b'\x00\x00naiive\x00\x00') with CaptureStdout() as sio: assert_equal(cs.main(f.name), 0) assert_true('WARNING: Binary file' in sio[1]) with CaptureStdout() as sio: assert_equal(cs.main('-q', '2', f.name), 0) assert_equal(sio[1], '') finally: os.remove(f.name)
def test_encoding(tmpdir, capsys): """Test encoding handling.""" # Some simple Unicode things with open(op.join(str(tmpdir), 'tmp'), 'w') as f: pass # with CaptureStdout() as sio: assert cs.main(f.name) == 0 try: with open(f.name, 'wb') as f: f.write(u'naïve\n'.encode('utf-8')) assert cs.main(f.name) == 0 assert cs.main('-e', f.name) == 0 with open(f.name, 'ab') as f: f.write(u'naieve\n'.encode('utf-8')) assert cs.main(f.name) == 1 # Binary file warning with open(f.name, 'wb') as f: f.write(b'\x00\x00naiive\x00\x00') capsys.readouterr() assert cs.main(f.name) == 0 assert 'WARNING: Binary file' in capsys.readouterr()[1] assert cs.main('-q', '2', f.name) == 0 assert capsys.readouterr() == ('', '') finally: os.remove(f.name)
def test_ignore(tmpdir): """Test ignoring of files and directories.""" d = str(tmpdir) with open(op.join(d, 'good.txt'), 'w') as f: f.write('this file is okay') assert cs.main(d) == 0 with open(op.join(d, 'bad.txt'), 'w') as f: f.write('abandonned') assert cs.main(d) == 1 assert cs.main('--skip=bad*', d) == 0 assert cs.main('--skip=bad.txt', d) == 0 subdir = op.join(d, 'ignoredir') os.mkdir(subdir) with open(op.join(subdir, 'bad.txt'), 'w') as f: f.write('abandonned') assert cs.main(d) == 2 assert cs.main('--skip=bad*', d) == 0 assert cs.main('--skip=*ignoredir*', d) == 1 assert cs.main('--skip=ignoredir', d) == 1 assert cs.main('--skip=*ignoredir/bad*', d) == 1
def main(self, *args, count=True, std=False, **kwargs): if count: args = ('--count', ) + args code = cs_.main(*args, **kwargs) capsys = inspect.currentframe().f_back.f_locals['capsys'] stdout, stderr = capsys.readouterr() assert code in (EX_OK, EX_USAGE, EX_DATAERR) if code == EX_DATAERR: # have some misspellings code = int(stderr.split('\n')[-2]) elif code == EX_OK and count: code = int(stderr.split('\n')[-2]) assert code == 0 if std: return (code, stdout, stderr) else: return code
def test_ignore(): """Test ignoring of files and directories""" with TemporaryDirectory() as d: with open(op.join(d, 'good.txt'), 'w') as f: f.write('this file is okay') assert_equal(cs.main(d), 0) with open(op.join(d, 'bad.txt'), 'w') as f: f.write('abandonned') assert_equal(cs.main(d), 1) assert_equal(cs.main('--skip=bad*', d), 0) assert_equal(cs.main('--skip=bad.txt', d), 0) subdir = op.join(d, 'ignoredir') os.mkdir(subdir) with open(op.join(subdir, 'bad.txt'), 'w') as f: f.write('abandonned') assert_equal(cs.main(d), 2) assert_equal(cs.main('--skip=bad*', d), 0) assert_equal(cs.main('--skip=*ignoredir*', d), 1) assert_equal(cs.main('--skip=ignoredir', d), 1)
def test_check_hidden(tmpdir): """Test ignoring of hidden files.""" d = str(tmpdir) # hidden file with open(op.join(d, 'test.txt'), 'w') as f: f.write('abandonned\n') assert cs.main(op.join(d, 'test.txt')) == 1 os.rename(op.join(d, 'test.txt'), op.join(d, '.test.txt')) assert cs.main(op.join(d, '.test.txt')) == 0 assert cs.main('--check-hidden', op.join(d, '.test.txt')) == 1 os.rename(op.join(d, '.test.txt'), op.join(d, '.abandonned.txt')) assert cs.main(op.join(d, '.abandonned.txt')) == 0 assert cs.main('--check-hidden', op.join(d, '.abandonned.txt')) == 1 assert cs.main('--check-hidden', '--check-filenames', op.join(d, '.abandonned.txt')) == 2
def test_check_hidden(): """Test ignoring of hidden files""" with TemporaryDirectory() as d: # hidden file with open(op.join(d, 'test.txt'), 'w') as f: f.write('abandonned\n') assert cs.main(op.join(d, 'test.txt')) == 1 os.rename(op.join(d, 'test.txt'), op.join(d, '.test.txt')) assert cs.main(op.join(d, '.test.txt')) == 0 assert cs.main('--check-hidden', op.join(d, '.test.txt')) == 1 os.rename(op.join(d, '.test.txt'), op.join(d, '.abandonned.txt')) assert cs.main(op.join(d, '.abandonned.txt')) == 0 assert cs.main('--check-hidden', op.join(d, '.abandonned.txt')) == 1 assert cs.main('--check-hidden', '--check-filenames', op.join(d, '.abandonned.txt')) == 2
def test_summary(): """Test summary functionality""" with tempfile.NamedTemporaryFile('w') as f: with CaptureStdout() as sio: main(f.name) for ii in range(2): assert_equal(sio[ii], '') # no output with CaptureStdout() as sio: main(f.name, '--summary') assert_equal(sio[1], '') # stderr assert_true('SUMMARY' in sio[0]) assert_equal(len(sio[0].split('\n')), 5) # no output f.write('abandonned\nabandonned') f.flush() with CaptureStdout() as sio: main(f.name, '--summary') assert_equal(sio[1], '') # stderr assert_true('SUMMARY' in sio[0]) assert_equal(len(sio[0].split('\n')), 7) assert_true('abandonned' in sio[0].split()[-2])
def test_encoding(): """Test encoding handling""" # Some simple Unicode things with tempfile.NamedTemporaryFile('wb') as f: # with CaptureStdout() as sio: assert_equal(main(f.name), 0) f.write(u'naïve\n'.encode('utf-8')) f.flush() assert_equal(main(f.name), 0) assert_equal(main('-e', f.name), 0) f.write(u'naieve\n'.encode('utf-8')) f.flush() assert_equal(main(f.name), 1) # Binary file warning with tempfile.NamedTemporaryFile('wb') as f: assert_equal(main(f.name), 0) f.write(b'\x00\x00naiive\x00\x00') f.flush() with CaptureStdout() as sio: assert_equal(main(f.name), 0) assert_true('WARNING: Binary file' in sio[1]) with CaptureStdout() as sio: assert_equal(main('-q', '2', f.name), 0) assert_equal(sio[1], '')
def test_summary(tmpdir, capsys): """Test summary functionality""" with open(op.join(str(tmpdir), 'tmp'), 'w') as f: pass try: cs.main(f.name) assert capsys.readouterr() == ('', ''), 'no output' cs.main(f.name, '--summary') stdout, stderr = capsys.readouterr() assert stderr == '' assert 'SUMMARY' in stdout assert len(stdout.split('\n')) == 5 with open(f.name, 'w') as f: f.write('abandonned\nabandonned') cs.main(f.name, '--summary') stdout, stderr = capsys.readouterr() assert stderr == '' assert 'SUMMARY' in stdout assert len(stdout.split('\n')) == 7 assert 'abandonned' in stdout.split()[-2] finally: os.remove(f.name)
def test_summary(): """Test summary functionality""" with tempfile.NamedTemporaryFile('w') as f: pass try: with CaptureStdout() as sio: cs.main(f.name) for ii in range(2): assert sio[ii] == '', 'no output' with CaptureStdout() as sio: cs.main(f.name, '--summary') assert sio[1] == '', 'stderr' assert 'SUMMARY' in sio[0] assert len(sio[0].split('\n')) == 5, 'no output' with open(f.name, 'w') as f: f.write('abandonned\nabandonned') with CaptureStdout() as sio: cs.main(f.name, '--summary') assert sio[1] == '', 'stderr' assert 'SUMMARY' in sio[0] assert len(sio[0].split('\n')) == 7 assert 'abandonned' in sio[0].split()[-2] finally: os.remove(f.name)
def test_basic(): """Test some basic functionality""" assert_equal(main('_does_not_exist_'), 0) with tempfile.NamedTemporaryFile('w') as f: with CaptureStdout() as sio: assert_equal(main('-D', 'foo', f.name), 1) # missing dictionary assert_true('cannot find dictionary' in sio[1]) assert_equal(main(f.name), 0) # empty file f.write('this is a test file\n') f.flush() assert_equal(main(f.name), 0) # good f.write('abandonned\n') f.flush() assert_equal(main(f.name), 1) # bad f.write('abandonned\n') f.flush() assert_equal(main(f.name), 2) # worse with TemporaryDirectory() as d: with open(op.join(d, 'bad.txt'), 'w') as f: f.write('abandonned\nAbandonned\nABANDONNED\nAbAnDoNnEd') assert_equal(main(d), 4) with CaptureStdout() as sio: assert_equal(main('-w', d), 0) assert_true('FIXED:' in sio[1]) with open(op.join(d, 'bad.txt')) as f: new_content = f.read() assert_equal(main(d), 0) assert_equal(new_content, 'abandoned\nAbandoned\nABANDONED\nabandoned') with open(op.join(d, 'bad.txt'), 'w') as f: f.write('abandonned abandonned\n') assert_equal(main(d), 2) with CaptureStdout() as sio: assert_equal(main('-q', '16', '-w', d), 0) assert_equal(sio[0], '') assert_equal(main(d), 0) # empty directory os.mkdir(op.join(d, 'test')) assert_equal(main(d), 0) # hidden file with open(op.join(d, 'test.txt'), 'w') as f: f.write('abandonned\n') assert_equal(main(op.join(d, 'test.txt')), 1) os.rename(op.join(d, 'test.txt'), op.join(d, '.test.txt')) assert_equal(main(op.join(d, '.test.txt')), 0)
def test_basic(tmpdir, capsys): """Test some basic functionality""" assert cs.main('_does_not_exist_') == 0 with open(op.join(str(tmpdir), 'tmp'), 'w') as f: pass assert cs.main('-D', 'foo', f.name) == 1, 'missing dictionary' try: assert 'cannot find dictionary' in capsys.readouterr()[1] assert cs.main(f.name) == 0, 'empty file' with open(f.name, 'a') as f: f.write('this is a test file\n') assert cs.main(f.name) == 0, 'good' with open(f.name, 'a') as f: f.write('abandonned\n') assert cs.main(f.name) == 1, 'bad' with open(f.name, 'a') as f: f.write('abandonned\n') assert cs.main(f.name) == 2, 'worse' finally: os.remove(f.name) d = str(tmpdir) with open(op.join(d, 'bad.txt'), 'w') as f: f.write('abandonned\nAbandonned\nABANDONNED\nAbAnDoNnEd') assert cs.main(d) == 4 capsys.readouterr() assert cs.main('-w', d) == 0 assert 'FIXED:' in capsys.readouterr()[1] with open(op.join(d, 'bad.txt')) as f: new_content = f.read() assert cs.main(d) == 0 assert new_content == 'abandoned\nAbandoned\nABANDONED\nabandoned' with open(op.join(d, 'bad.txt'), 'w') as f: f.write('abandonned abandonned\n') assert cs.main(d) == 2 capsys.readouterr() assert cs.main('-q', '16', '-w', d) == 0 assert capsys.readouterr() == ('', '') assert cs.main(d) == 0 # empty directory os.mkdir(op.join(d, 'test')) assert cs.main(d) == 0
def test_interactivity(tmpdir, capsys): """Test interaction""" # Windows can't read a currently-opened file, so here we use # NamedTemporaryFile just to get a good name with open(op.join(str(tmpdir), 'tmp'), 'w') as f: pass try: assert cs.main(f.name) == 0, 'empty file' with open(f.name, 'w') as f: f.write('abandonned\n') assert cs.main('-i', '-1', f.name) == 1, 'bad' with FakeStdin('y\n'): assert cs.main('-i', '3', f.name) == 1 with FakeStdin('n\n'): assert cs.main('-w', '-i', '3', f.name) == 0 assert '==>' in capsys.readouterr()[0] with FakeStdin('x\ny\n'): assert cs.main('-w', '-i', '3', f.name) == 0 assert cs.main(f.name) == 0 finally: os.remove(f.name) # New example with open(op.join(str(tmpdir), 'tmp2'), 'w') as f: pass try: with open(f.name, 'w') as f: f.write('abandonned\n') assert cs.main(f.name) == 1 with FakeStdin(' '): # blank input -> Y assert cs.main('-w', '-i', '3', f.name) == 0 assert cs.main(f.name) == 0 finally: os.remove(f.name) # multiple options with open(op.join(str(tmpdir), 'tmp3'), 'w') as f: pass try: with open(f.name, 'w') as f: f.write('ackward\n') assert cs.main(f.name) == 1 with FakeStdin(' \n'): # blank input -> nothing assert cs.main('-w', '-i', '3', f.name) == 0 assert cs.main(f.name) == 1 with FakeStdin('0\n'): # blank input -> nothing assert cs.main('-w', '-i', '3', f.name) == 0 assert cs.main(f.name) == 0 with open(f.name, 'r') as f_read: assert f_read.read() == 'awkward\n' with open(f.name, 'w') as f: f.write('ackward\n') assert cs.main(f.name) == 1 capsys.readouterr() with FakeStdin('x\n1\n'): # blank input -> nothing assert cs.main('-w', '-i', '3', f.name) == 0 assert 'a valid option' in capsys.readouterr()[0] assert cs.main(f.name) == 0 with open(f.name, 'r') as f: assert f.read() == 'backward\n' finally: os.remove(f.name)
def test_context(tmpdir, capsys): """Test context options.""" d = str(tmpdir) with open(op.join(d, 'context.txt'), 'w') as f: f.write('line 1\nline 2\nline 3 abandonned\nline 4\nline 5') # symmetric context, fully within file cs.main('-C', '1', d) lines = capsys.readouterr()[0].split('\n') assert len(lines) == 5 assert lines[0] == ': line 2' assert lines[1] == '> line 3 abandonned' assert lines[2] == ': line 4' # requested context is bigger than the file cs.main('-C', '10', d) lines = capsys.readouterr()[0].split('\n') assert len(lines) == 7 assert lines[0] == ': line 1' assert lines[1] == ': line 2' assert lines[2] == '> line 3 abandonned' assert lines[3] == ': line 4' assert lines[4] == ': line 5' # only before context cs.main('-B', '2', d) lines = capsys.readouterr()[0].split('\n') assert len(lines) == 5 assert lines[0] == ': line 1' assert lines[1] == ': line 2' assert lines[2] == '> line 3 abandonned' # only after context cs.main('-A', '1', d) lines = capsys.readouterr()[0].split('\n') assert len(lines) == 4 assert lines[0] == '> line 3 abandonned' assert lines[1] == ': line 4' # asymmetric context cs.main('-B', '2', '-A', '1', d) lines = capsys.readouterr()[0].split('\n') assert len(lines) == 6 assert lines[0] == ': line 1' assert lines[1] == ': line 2' assert lines[2] == '> line 3 abandonned' assert lines[3] == ': line 4' # both '-C' and '-A' on the command line cs.main('-C', '2', '-A', '1', d) lines = capsys.readouterr()[0].split('\n') assert 'ERROR' in lines[0] # both '-C' and '-B' on the command line cs.main('-C', '2', '-B', '1', d) lines = capsys.readouterr()[0].split('\n') assert 'ERROR' in lines[0]
def test_basic(): """Test some basic functionality""" assert_equal(cs.main('_does_not_exist_'), 0) with tempfile.NamedTemporaryFile('w') as f: pass with CaptureStdout() as sio: assert_equal(cs.main('-D', 'foo', f.name), 1) # missing dictionary try: assert_true('cannot find dictionary' in sio[1]) assert_equal(cs.main(f.name), 0) # empty file with open(f.name, 'a') as f: f.write('this is a test file\n') assert_equal(cs.main(f.name), 0) # good with open(f.name, 'a') as f: f.write('abandonned\n') assert_equal(cs.main(f.name), 1) # bad with open(f.name, 'a') as f: f.write('abandonned\n') assert_equal(cs.main(f.name), 2) # worse finally: os.remove(f.name) with TemporaryDirectory() as d: with open(op.join(d, 'bad.txt'), 'w') as f: f.write('abandonned\nAbandonned\nABANDONNED\nAbAnDoNnEd') assert_equal(cs.main(d), 4) with CaptureStdout() as sio: assert_equal(cs.main('-w', d), 0) assert_true('FIXED:' in sio[1]) with open(op.join(d, 'bad.txt')) as f: new_content = f.read() assert_equal(cs.main(d), 0) assert_equal(new_content, 'abandoned\nAbandoned\nABANDONED\nabandoned') with open(op.join(d, 'bad.txt'), 'w') as f: f.write('abandonned abandonned\n') assert_equal(cs.main(d), 2) with CaptureStdout() as sio: assert_equal(cs.main('-q', '16', '-w', d), 0) assert_equal(sio[0], '') assert_equal(cs.main(d), 0) # empty directory os.mkdir(op.join(d, 'test')) assert_equal(cs.main(d), 0) # hidden file with open(op.join(d, 'test.txt'), 'w') as f: f.write('abandonned\n') assert_equal(cs.main(op.join(d, 'test.txt')), 1) os.rename(op.join(d, 'test.txt'), op.join(d, '.test.txt')) assert_equal(cs.main(op.join(d, '.test.txt')), 0)
def test_check_filename(tmpdir): """Test filename check.""" d = str(tmpdir) with open(op.join(d, 'abandonned.txt'), 'w') as f: f.write('.') assert cs.main('-f', d) == 1
def test_interactivity(): """Test interaction""" with tempfile.NamedTemporaryFile('w') as f: assert_equal(main(f.name), 0) # empty file f.write('abandonned\n') f.flush() assert_equal(main('-i', '-1', f.name), 1) # bad with FakeStdin('y\n'): assert_equal(main('-i', '3', f.name), 1) with CaptureStdout() as sio: with FakeStdin('n\n'): assert_equal(main('-w', '-i', '3', f.name), 0) assert_true('==>' in sio[0]) with CaptureStdout(): with FakeStdin('x\ny\n'): assert_equal(main('-w', '-i', '3', f.name), 0) assert_equal(main(f.name), 0) with tempfile.NamedTemporaryFile('w') as f: f.write('abandonned\n') f.flush() assert_equal(main(f.name), 1) with CaptureStdout(): with FakeStdin(' '): # blank input -> Y assert_equal(main('-w', '-i', '3', f.name), 0) assert_equal(main(f.name), 0) # multiple options with tempfile.NamedTemporaryFile('w') as f: f.write('ackward\n') f.flush() assert_equal(main(f.name), 1) with CaptureStdout(): with FakeStdin(' \n'): # blank input -> nothing assert_equal(main('-w', '-i', '3', f.name), 0) assert_equal(main(f.name), 1) with CaptureStdout(): with FakeStdin('0\n'): # blank input -> nothing assert_equal(main('-w', '-i', '3', f.name), 0) assert_equal(main(f.name), 0) with open(f.name, 'r') as f_read: assert_equal(f_read.read(), 'awkward\n') f.seek(0) f.write('ackward\n') f.flush() assert_equal(main(f.name), 1) with CaptureStdout() as sio: with FakeStdin('x\n1\n'): # blank input -> nothing assert_equal(main('-w', '-i', '3', f.name), 0) assert_true('a valid option' in sio[0]) assert_equal(main(f.name), 0) with open(f.name, 'r') as f: assert_equal(f.read(), 'backward\n')
def test_interactivity(): """Test interaction""" # Windows can't read a currently-opened file, so here we use # NamedTemporaryFile just to get a good name with tempfile.NamedTemporaryFile('w') as f: pass try: assert_equal(cs.main(f.name), 0) # empty file with open(f.name, 'w') as f: f.write('abandonned\n') assert_equal(cs.main('-i', '-1', f.name), 1) # bad with FakeStdin('y\n'): assert_equal(cs.main('-i', '3', f.name), 1) with CaptureStdout() as sio: with FakeStdin('n\n'): assert_equal(cs.main('-w', '-i', '3', f.name), 0) assert_true('==>' in sio[0]) with CaptureStdout(): with FakeStdin('x\ny\n'): assert_equal(cs.main('-w', '-i', '3', f.name), 0) assert_equal(cs.main(f.name), 0) finally: os.remove(f.name) # New example with tempfile.NamedTemporaryFile('w') as f: pass try: with open(f.name, 'w') as f: f.write('abandonned\n') assert_equal(cs.main(f.name), 1) with CaptureStdout(): with FakeStdin(' '): # blank input -> Y assert_equal(cs.main('-w', '-i', '3', f.name), 0) assert_equal(cs.main(f.name), 0) finally: os.remove(f.name) # multiple options with tempfile.NamedTemporaryFile('w') as f: pass try: with open(f.name, 'w') as f: f.write('ackward\n') assert_equal(cs.main(f.name), 1) with CaptureStdout(): with FakeStdin(' \n'): # blank input -> nothing assert_equal(cs.main('-w', '-i', '3', f.name), 0) assert_equal(cs.main(f.name), 1) with CaptureStdout(): with FakeStdin('0\n'): # blank input -> nothing assert_equal(cs.main('-w', '-i', '3', f.name), 0) assert_equal(cs.main(f.name), 0) with open(f.name, 'r') as f_read: assert_equal(f_read.read(), 'awkward\n') with open(f.name, 'w') as f: f.write('ackward\n') assert_equal(cs.main(f.name), 1) with CaptureStdout() as sio: with FakeStdin('x\n1\n'): # blank input -> nothing assert_equal(cs.main('-w', '-i', '3', f.name), 0) assert_true('a valid option' in sio[0]) assert_equal(cs.main(f.name), 0) with open(f.name, 'r') as f: assert_equal(f.read(), 'backward\n') finally: os.remove(f.name)
def test_basic(tmpdir, capsys): """Test some basic functionality""" assert cs.main('_does_not_exist_') == 0 fname = op.join(str(tmpdir), 'tmp') with open(fname, 'w') as f: pass assert cs.main('-D', 'foo', f.name) == 1, 'missing dictionary' assert 'cannot find dictionary' in capsys.readouterr()[1] assert cs.main(fname) == 0, 'empty file' with open(fname, 'a') as f: f.write('this is a test file\n') assert cs.main(fname) == 0, 'good' with open(fname, 'a') as f: f.write('abandonned\n') assert cs.main(fname) == 1, 'bad' with open(fname, 'a') as f: f.write('abandonned\n') assert cs.main(fname) == 2, 'worse' with open(fname, 'a') as f: f.write('tim\ngonna\n') assert cs.main(fname) == 2, 'with a name' assert cs.main('--builtin', 'clear,rare,names,informal', fname) == 4 capsys.readouterr() assert cs.main(fname, '--builtin', 'foo') == 1 # bad type sys.exit(1) stdout = capsys.readouterr()[1] assert 'Unknown builtin dictionary' in stdout d = str(tmpdir) assert cs.main(fname, '-D', op.join(d, 'foo')) == 1 # bad dict stdout = capsys.readouterr()[1] assert 'cannot find dictionary' in stdout os.remove(fname) with open(op.join(d, 'bad.txt'), 'w') as f: f.write('abandonned\nAbandonned\nABANDONNED\nAbAnDoNnEd') assert cs.main(d) == 4 capsys.readouterr() assert cs.main('-w', d) == 0 assert 'FIXED:' in capsys.readouterr()[1] with open(op.join(d, 'bad.txt')) as f: new_content = f.read() assert cs.main(d) == 0 assert new_content == 'abandoned\nAbandoned\nABANDONED\nabandoned' with open(op.join(d, 'bad.txt'), 'w') as f: f.write('abandonned abandonned\n') assert cs.main(d) == 2 capsys.readouterr() assert cs.main('-q', '16', '-w', d) == 0 assert capsys.readouterr() == ('', '') assert cs.main(d) == 0 # empty directory os.mkdir(op.join(d, 'test')) assert cs.main(d) == 0
def test_check_filename(): """Test filename check""" with TemporaryDirectory() as d: with open(op.join(d, 'abandonned.txt'), 'w') as f: f.write('.') assert_equal(cs.main('-f', d), 1)
#!/usr/bin/env python import sys if __name__ == '__main__': import codespell_lib sys.exit(codespell_lib.main(*sys.argv[1:]))