mirror of
https://github.com/cheat/cheat.git
synced 2024-11-24 06:51:36 +01:00
Implement unittest
This commit is contained in:
parent
403d715127
commit
636e9f5f39
@ -55,8 +55,8 @@ def paths():
|
|||||||
]
|
]
|
||||||
|
|
||||||
# merge the CHEATPATH paths into the sheet_paths
|
# merge the CHEATPATH paths into the sheet_paths
|
||||||
if 'CHEATPATH' in os.environ and os.environ['CHEATPATH']:
|
if os.environ.get('CHEATPATH'):
|
||||||
for path in os.environ['CHEATPATH'].split(os.pathsep):
|
for path in os.environ.get('CHEATPATH').split(os.pathsep):
|
||||||
if os.path.isdir(path):
|
if os.path.isdir(path):
|
||||||
sheet_paths.append(path)
|
sheet_paths.append(path)
|
||||||
|
|
||||||
|
189
cheat/test/test_sheets.py
Normal file
189
cheat/test/test_sheets.py
Normal file
@ -0,0 +1,189 @@
|
|||||||
|
from mock import patch
|
||||||
|
import os
|
||||||
|
from tempfile import mkdtemp
|
||||||
|
from unittest import TestCase
|
||||||
|
|
||||||
|
from cheat import cheatsheets
|
||||||
|
from cheat.sheets import (
|
||||||
|
default_path, paths, get,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class TestSheets(TestCase):
|
||||||
|
def setUp(self):
|
||||||
|
self.tmp_dir = mkdtemp()
|
||||||
|
|
||||||
|
def _make_sheets(self, sheets):
|
||||||
|
for sheet in sheets:
|
||||||
|
dir_, file_ = os.path.split(sheet)
|
||||||
|
if not os.path.exists(dir_):
|
||||||
|
os.mkdir(dir_)
|
||||||
|
open(sheet, 'w').close()
|
||||||
|
|
||||||
|
@patch('cheat.sheets.os.environ.get')
|
||||||
|
def test_default_path_via_env(self, mock_environ_get):
|
||||||
|
mock_environ_get.return_value = self.tmp_dir
|
||||||
|
|
||||||
|
path = default_path()
|
||||||
|
|
||||||
|
self.assertEqual(path, self.tmp_dir)
|
||||||
|
|
||||||
|
@patch('cheat.sheets.os.environ.get')
|
||||||
|
def test_default_path_via_env_unexists(self, mock_environ_get):
|
||||||
|
os.rmdir(self.tmp_dir)
|
||||||
|
mock_environ_get.return_value = self.tmp_dir
|
||||||
|
|
||||||
|
path = default_path()
|
||||||
|
|
||||||
|
self.assertEqual(path, self.tmp_dir)
|
||||||
|
os.path.isdir(self.tmp_dir)
|
||||||
|
|
||||||
|
@patch('cheat.sheets.os.path.expanduser')
|
||||||
|
@patch('cheat.sheets.os.environ.get')
|
||||||
|
def test_default_path_from_home(self, mock_environ_get, mock_expanduser):
|
||||||
|
mock_environ_get.return_value = None
|
||||||
|
mock_expanduser.return_value = self.tmp_dir
|
||||||
|
os.mkdir(os.path.join(self.tmp_dir, '.cheat'))
|
||||||
|
|
||||||
|
path = default_path()
|
||||||
|
|
||||||
|
self.assertEqual(path, os.path.join(self.tmp_dir, '.cheat'))
|
||||||
|
|
||||||
|
@patch('cheat.sheets.os.path.expanduser')
|
||||||
|
@patch('cheat.sheets.os.environ.get')
|
||||||
|
def test_default_path_from_home_not_exists(
|
||||||
|
self, mock_environ_get, mock_expanduser):
|
||||||
|
mock_environ_get.return_value = None
|
||||||
|
mock_expanduser.return_value = self.tmp_dir
|
||||||
|
|
||||||
|
path = default_path()
|
||||||
|
|
||||||
|
self.assertEqual(path, os.path.join(self.tmp_dir, '.cheat'))
|
||||||
|
os.path.isdir(os.path.join(self.tmp_dir, '.cheat'))
|
||||||
|
|
||||||
|
@patch('cheat.sheets.die')
|
||||||
|
@patch('cheat.sheets.os.environ.get')
|
||||||
|
def test_default_path_unreadable(self, mock_environ_get, mock_die):
|
||||||
|
mock_environ_get.return_value = self.tmp_dir
|
||||||
|
os.chmod(self.tmp_dir, int('333', 8))
|
||||||
|
|
||||||
|
default_path()
|
||||||
|
|
||||||
|
mock_die.assert_called_with(
|
||||||
|
'The DEFAULT_CHEAT_DIR (%s) is not readable.' % self.tmp_dir)
|
||||||
|
|
||||||
|
@patch('cheat.sheets.die')
|
||||||
|
@patch('cheat.sheets.os.environ.get')
|
||||||
|
def test_default_path_untouchable(self, mock_environ_get, mock_die):
|
||||||
|
mock_environ_get.return_value = self.tmp_dir
|
||||||
|
os.chmod(self.tmp_dir, int('555', 8))
|
||||||
|
|
||||||
|
default_path()
|
||||||
|
|
||||||
|
mock_die.assert_called_with(
|
||||||
|
'The DEFAULT_CHEAT_DIR (%s) is not writable.' % self.tmp_dir)
|
||||||
|
|
||||||
|
@patch('cheat.sheets.default_path')
|
||||||
|
@patch('cheat.sheets.os.environ.get')
|
||||||
|
def test_paths_only_default(self, mock_environ_get, mock_default_path):
|
||||||
|
mock_environ_get.return_value = None
|
||||||
|
mock_default_path.return_value = self.tmp_dir
|
||||||
|
|
||||||
|
result = paths()
|
||||||
|
|
||||||
|
self.assertEqual(result, [self.tmp_dir, cheatsheets.sheets_dir()[0]])
|
||||||
|
|
||||||
|
@patch('cheat.sheets.default_path')
|
||||||
|
@patch('cheat.sheets.os.environ.get')
|
||||||
|
def test_paths_with_additonal_definition(
|
||||||
|
self, mock_environ_get, mock_default_path):
|
||||||
|
additonal_paths = [
|
||||||
|
os.path.join(self.tmp_dir, 'path1'),
|
||||||
|
os.path.join(self.tmp_dir, 'path2'),
|
||||||
|
]
|
||||||
|
for path in additonal_paths:
|
||||||
|
os.mkdir(path)
|
||||||
|
mock_environ_get.return_value = os.pathsep.join(additonal_paths)
|
||||||
|
mock_default_path.return_value = self.tmp_dir
|
||||||
|
|
||||||
|
result = paths()
|
||||||
|
|
||||||
|
self.assertEqual(
|
||||||
|
result,
|
||||||
|
[self.tmp_dir, cheatsheets.sheets_dir()[0]] +
|
||||||
|
additonal_paths)
|
||||||
|
|
||||||
|
@patch('cheat.sheets.paths')
|
||||||
|
def test_get(self, mock_paths):
|
||||||
|
self._make_sheets([
|
||||||
|
os.path.join(self.tmp_dir, 'cheatdir1', 'curl'),
|
||||||
|
os.path.join(self.tmp_dir, 'cheatdir1', 'http'),
|
||||||
|
os.path.join(self.tmp_dir, 'cheatdir2', 'tar'),
|
||||||
|
os.path.join(self.tmp_dir, 'cheatdir2', 'zip'),
|
||||||
|
])
|
||||||
|
mock_paths.return_value = [
|
||||||
|
os.path.join(self.tmp_dir, 'cheatdir1'),
|
||||||
|
os.path.join(self.tmp_dir, 'cheatdir2'),
|
||||||
|
]
|
||||||
|
|
||||||
|
cheats = get()
|
||||||
|
self.assertEqual(
|
||||||
|
cheats,
|
||||||
|
{
|
||||||
|
'curl': os.path.join(self.tmp_dir, 'cheatdir1', 'curl'),
|
||||||
|
'http': os.path.join(self.tmp_dir, 'cheatdir1', 'http'),
|
||||||
|
'tar': os.path.join(self.tmp_dir, 'cheatdir2', 'tar'),
|
||||||
|
'zip': os.path.join(self.tmp_dir, 'cheatdir2', 'zip'),
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
@patch('cheat.sheets.paths')
|
||||||
|
def test_get_with_duplicate_cheat(self, mock_paths):
|
||||||
|
self._make_sheets([
|
||||||
|
os.path.join(self.tmp_dir, 'cheatdir1', 'curl'),
|
||||||
|
os.path.join(self.tmp_dir, 'cheatdir1', 'http'),
|
||||||
|
os.path.join(self.tmp_dir, 'cheatdir2', 'tar'),
|
||||||
|
os.path.join(self.tmp_dir, 'cheatdir2', 'zip'),
|
||||||
|
os.path.join(self.tmp_dir, 'cheatdir2', 'http'),
|
||||||
|
])
|
||||||
|
mock_paths.return_value = [
|
||||||
|
os.path.join(self.tmp_dir, 'cheatdir1'),
|
||||||
|
os.path.join(self.tmp_dir, 'cheatdir2'),
|
||||||
|
]
|
||||||
|
|
||||||
|
cheats = get()
|
||||||
|
self.assertEqual(
|
||||||
|
cheats,
|
||||||
|
{
|
||||||
|
'curl': os.path.join(self.tmp_dir, 'cheatdir1', 'curl'),
|
||||||
|
'http': os.path.join(self.tmp_dir, 'cheatdir1', 'http'),
|
||||||
|
'tar': os.path.join(self.tmp_dir, 'cheatdir2', 'tar'),
|
||||||
|
'zip': os.path.join(self.tmp_dir, 'cheatdir2', 'zip'),
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
@patch('cheat.sheets.paths')
|
||||||
|
def test_get_with_exclude_pattern(self, mock_paths):
|
||||||
|
self._make_sheets([
|
||||||
|
os.path.join(self.tmp_dir, 'cheatdir1', 'curl'),
|
||||||
|
os.path.join(self.tmp_dir, 'cheatdir1', 'http'),
|
||||||
|
os.path.join(self.tmp_dir, 'cheatdir1', '__init__.py'),
|
||||||
|
os.path.join(self.tmp_dir, 'cheatdir2', 'tar'),
|
||||||
|
os.path.join(self.tmp_dir, 'cheatdir2', 'zip'),
|
||||||
|
os.path.join(self.tmp_dir, 'cheatdir2', '.git'),
|
||||||
|
])
|
||||||
|
mock_paths.return_value = [
|
||||||
|
os.path.join(self.tmp_dir, 'cheatdir1'),
|
||||||
|
os.path.join(self.tmp_dir, 'cheatdir2'),
|
||||||
|
]
|
||||||
|
|
||||||
|
cheats = get()
|
||||||
|
self.assertEqual(
|
||||||
|
cheats,
|
||||||
|
{
|
||||||
|
'curl': os.path.join(self.tmp_dir, 'cheatdir1', 'curl'),
|
||||||
|
'http': os.path.join(self.tmp_dir, 'cheatdir1', 'http'),
|
||||||
|
'tar': os.path.join(self.tmp_dir, 'cheatdir2', 'tar'),
|
||||||
|
'zip': os.path.join(self.tmp_dir, 'cheatdir2', 'zip'),
|
||||||
|
}
|
||||||
|
)
|
Loading…
Reference in New Issue
Block a user