from __future__ import absolute_import

import jsonschema
import pytest
import time
from plumbum import local

import pre_commit.constants as C
from pre_commit import git
from pre_commit.clientlib.validate_config import CONFIG_JSON_SCHEMA


@pytest.yield_fixture
def empty_git_dir(tmpdir):
    with local.cwd(tmpdir.strpath):
        local['git']['init']()
        yield tmpdir.strpath


def add_and_commit():
    local['git']['add', '.']()
    local['git']['commit', '-m', 'random commit {0}'.format(time.time())]()


@pytest.yield_fixture
def dummy_git_repo(empty_git_dir):
    local['touch']['dummy']()
    add_and_commit()

    yield empty_git_dir


@pytest.yield_fixture
def python_pre_commit_git_repo(dummy_git_repo):
    local.path(C.MANIFEST_FILE).write("""
-
    id: foo
    name: Foo
    entry: foo
    language: python
    """)

    add_and_commit()

    local.path('setup.py').write("""
from setuptools import find_packages
from setuptools import setup

setup(
    name='Foo',
    version='0.0.0',
    packages=find_packages('.'),
    entry_points={
        'console_scripts': [
            'foo = foo.main:func'
        ],
    }
)
    """)

    foo_module = local.path('foo')

    foo_module.mkdir()

    with local.cwd(foo_module):
        local.path('__init__.py').write('')
        local.path('main.py').write("""
def func():
    print 'Hello World'
    return 0
    """)

    add_and_commit()

    yield dummy_git_repo


@pytest.fixture
def config_for_python_pre_commit_git_repo(python_pre_commit_git_repo):
    config = {
        'repo': python_pre_commit_git_repo,
        'sha': git.get_head_sha(python_pre_commit_git_repo),
        'hooks': [{
            'id': 'foo',
            'files': '*.py',
        }],
    }

    jsonschema.validate([config], CONFIG_JSON_SCHEMA)

    return config
from __future__ import absolute_import

import jsonschema
import pytest
import time
from plumbum import local

import pre_commit.constants as C
from pre_commit import git
from pre_commit.clientlib.validate_config import CONFIG_JSON_SCHEMA


@pytest.yield_fixture
def empty_git_dir(tmpdir):
    with local.cwd(tmpdir.strpath):
        local['git']['init']()
        yield tmpdir.strpath


def add_and_commit():
    local['git']['add', '.']()
    local['git']['commit', '-m', 'random commit {0}'.format(time.time())]()


@pytest.yield_fixture
def dummy_git_repo(empty_git_dir):
    local['touch']['dummy']()
    add_and_commit()

    yield empty_git_dir


@pytest.yield_fixture
def python_pre_commit_git_repo(dummy_git_repo):
    local.path(C.MANIFEST_FILE).write("""
-
    id: foo
    name: Foo
    entry: foo
    language: python
    """)

    add_and_commit()

    local.path('setup.py').write("""
from setuptools import find_packages
from setuptools import setup

setup(
    name='Foo',
    version='0.0.0',
    packages=find_packages('.'),
    entry_points={
        'console_scripts': [
            'foo = foo.main:func'
        ],
    }
)
""")

    foo_module = local.path('foo')

    foo_module.mkdir()

    with local.cwd(foo_module):
        local.path('__init__.py').write('')
        local.path('main.py').write("""
def func():
    print 'Hello World'
    return 0
""")

    add_and_commit()

    yield dummy_git_repo


@pytest.fixture
def config_for_python_pre_commit_git_repo(python_pre_commit_git_repo):
    config = {
        'repo': python_pre_commit_git_repo,
        'sha': git.get_head_sha(python_pre_commit_git_repo),
        'hooks': [{
            'id': 'foo',
            'files': '*.py',
        }],
    }

    jsonschema.validate([config], CONFIG_JSON_SCHEMA)

    return config
Fix python 2.6