Skip to content

Commit

Permalink
Added intial testing
Browse files Browse the repository at this point in the history
  • Loading branch information
scopatz committed May 29, 2017
1 parent 42a4e6b commit fa8a51d
Show file tree
Hide file tree
Showing 5 changed files with 65 additions and 5 deletions.
2 changes: 2 additions & 0 deletions pytest.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[pytest]
addopts = -p no:warnings
9 changes: 6 additions & 3 deletions rever/environ.xsh
Original file line number Diff line number Diff line change
Expand Up @@ -31,16 +31,19 @@ def detype_logger(x):
ENVVARS = {
'REVER_VCS': ('git', is_string, str, ensure_string, "Name of version control "
"system to use, such as 'git' or 'hg'"),
'LOGGER': (Logger('/tmp/rever.log'), always_false, to_logger, detype_logger,
'REVER_DIR': ('rever', is_string, str, ensure_string, 'Path to directory '
'used for storing rever temporary files.'),
'LOGGER': (Logger('rever.log'), always_false, to_logger, detype_logger,
"Rever logger object. Setting this variable to a string will "
"change the filename of the logger.")
"change the filename of the logger."),
}


def setup():
for key, (default, validate, convert, detype, docstr) in ENVVARS.items():
${...}._defaults[key] = default
${...}._ensurers[key] = Ensurer(validate=validate, convert, detype)
${...}._ensurers[key] = Ensurer(validate=validate, convert=convert,
detype=detype)
${...}._docs[key] = VarDocs(docstr=docstr)


Expand Down
20 changes: 18 additions & 2 deletions rever/logger.xsh
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
"""Logging tools for rever"""
import os
import json
import time
import argparse
Expand All @@ -16,10 +17,11 @@ class Logger:
Parameters
----------
filename : str
Path to logfile.
Path to logfile, if a realtive pathname is given it is relative to $REVER_DIR.
"""
self.filename = filename
self._filename = None
self._argparser = None
self.filename = filename

def log(self, message, activity=None, category='misc'):
"""Logs a message, teh associated activity (optional), the timestamp, and the
Expand All @@ -38,6 +40,20 @@ class Logger:
entries = [json.loads(line) for line in f]
return entries

@property
def filename(self):
value = self._filename
if not os.path.isabs(value):
value = os.path.join($REVER_DIR, value)
dname = os.path.dirname(value)
if not os.path.isdir(dname):
mkdir -p @(dname)
return value

@filename.setter
def filename(self, value):
self._filename = value

@property
def argparser(self):
"""Returns an argument parser for the logger"""
Expand Down
28 changes: 28 additions & 0 deletions tests/conftest.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import os
import shutil
import tempfile
import subprocess

import pytest

from rever import environ


@pytest.fixture
def gitrepo(request):
"""A test fixutre that creates and destroys a git repo in a temporary directory"""
cwd = os.getcwd()
name = request.node.name
repo = os.path.join(tempfile.gettempdir(), name)
if os.path.exists(repo):
shutil.rmtree(repo)
subprocess.run(['git', 'init', repo])
os.chdir(repo)
with open('README', 'w') as f:
f.write('testing ' + name)
subprocess.run(['git', 'add', '.'])
subprocess.run(['git', 'commit', '-am', 'Initial readme'])
with environ.context():
yield repo
os.chdir(cwd)
shutil.rmtree(repo)
11 changes: 11 additions & 0 deletions tests/test_logger.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
"""Tests logger"""
import os

from rever.logger import Logger


def test_logger(gitrepo):
logger = Logger(os.path.join(gitrepo, 'mylog.json'))
logger.log('sample message', activity="kenny", category="loggin'")
entries = logger.load()
assert len(entries) == 1

0 comments on commit fa8a51d

Please sign in to comment.