Explorar el Código

Start working on integrated test suite, refactor

tags/v0.5.1
Ben Kurtovic hace 6 años
padre
commit
fea24e0a74
Se han modificado 12 ficheros con 107 adiciones y 30 borrados
  1. +5
    -3
      .gitignore
  2. +3
    -1
      CHANGELOG
  3. +23
    -0
      Pipfile
  4. +1
    -1
      README.md
  5. +1
    -1
      gitup/__main__.py
  6. +22
    -18
      gitup/cli.py
  7. +2
    -2
      gitup/config.py
  8. +1
    -1
      gitup/migrate.py
  9. +10
    -0
      gitup/test/__init__.py
  10. +14
    -0
      gitup/test/test_bookmarks.py
  11. +24
    -0
      gitup/test/test_cli.py
  12. +1
    -3
      setup.py

+ 5
- 3
.gitignore Ver fichero

@@ -2,6 +2,8 @@
*.egg
*.egg-info
.DS_Store
__pycache__
build
dist
Pipfile.lock
__pycache__/
.pytest_cache/
build/
dist/

+ 3
- 1
CHANGELOG Ver fichero

@@ -1,6 +1,8 @@
v0.6 (unreleased):

- ...
- Add an integrated pytest testing suite, runnable with `--selftest`.
- Refactor internals, remove deprecated options, and drop support for
end-of-life Python versions.

v0.5 (released August 28, 2018):



+ 23
- 0
Pipfile Ver fichero

@@ -0,0 +1,23 @@
[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"

[dev-packages]
pylint = "*"
pytest = "*"
twine = "*"

[packages]
"e1839a8" = {path = ".", editable = true}
GitPython = ">= 2.1.8"
colorama = ">= 0.3.9"

[requires]
python_version = "3.7"

[scripts]
test = "pytest gitup -v -rxw"
lint = "pylint --disable=missing-docstring --output-format=colorized gitup"
cloc = "cloc --vcs=git"
build = "python setup.py sdist bdist_wheel --universal"

+ 1
- 1
README.md Ver fichero

@@ -5,7 +5,7 @@ enough to handle several remotes, dirty working directories, diverged local
branches, detached HEADs, and more. It was originally created to manage a large
collection of projects and deal with sporadic internet access.

gitup should work on OS X, Linux, and Windows. You should have the latest
gitup should work on macOS, Linux, and Windows. You should have the latest
version of git and either Python 2.7 or Python 3 installed.

# Installation


+ 1
- 1
gitup/__main__.py Ver fichero

@@ -3,7 +3,7 @@
# Copyright (C) 2011-2018 Ben Kurtovic <ben.kurtovic@gmail.com>
# Released under the terms of the MIT License. See LICENSE for details.

from .script import run
from gitup.cli import run

if __name__ == "__main__":
run()

gitup/script.py → gitup/cli.py Ver fichero

@@ -10,12 +10,12 @@ import os
import platform
import sys

from colorama import init as color_init, Fore, Style
from colorama import init as color_init, Style

from . import __version__
from .config import (get_default_config_path, get_bookmarks, add_bookmarks,
delete_bookmarks, list_bookmarks, clean_bookmarks)
from .update import update_bookmarks, update_directories, run_command
from gitup import __version__
from gitup.config import (get_default_config_path, get_bookmarks, add_bookmarks,
delete_bookmarks, list_bookmarks, clean_bookmarks)
from gitup.update import update_bookmarks, update_directories, run_command

def _decode(path):
"""Decode the given string using the system's filesystem encoding."""
@@ -23,8 +23,8 @@ def _decode(path):
return path
return path.decode(sys.getfilesystemencoding())

def main():
"""Parse arguments and then call the appropriate function(s)."""
def _build_parser():
"""Build and return the argument parser."""
parser = argparse.ArgumentParser(
description="Easily update multiple git repositories at once.",
epilog="""
@@ -87,25 +87,29 @@ def main():
'-v', '--version', action="version",
version="gitup {0} (Python {1})".format(
__version__, platform.python_version()))
group_m.add_argument(
'--selftest', action="store_true",
help="run integrated test suite and exit (pytest must be available)")

# TODO: deprecated arguments, for removal in v1.0:
parser.add_argument(
'-m', '--merge', action="store_true", help=argparse.SUPPRESS)
parser.add_argument(
'-r', '--rebase', action="store_true", help=argparse.SUPPRESS)
return parser

def _selftest():
"""Run the integrated test suite with pytest."""
from .test import run_tests
run_tests()

def main():
"""Parse arguments and then call the appropriate function(s)."""
parser = _build_parser()
color_init(autoreset=True)
args = parser.parse_args()

print(Style.BRIGHT + "gitup" + Style.RESET_ALL + ": the git-repo-updater")
print()

# TODO: remove in v1.0
if args.merge or args.rebase:
print(Style.BRIGHT + Fore.YELLOW + "Warning:", "--merge and --rebase "
"are deprecated. Branches are only updated if they\ntrack an "
"upstream branch and can be safely fast-forwarded. Use "
"--fetch-only to\navoid updating any branches.\n")
if args.selftest:
_selftest()
return

if args.bookmark_file:
args.bookmark_file = os.path.expanduser(args.bookmark_file)

+ 2
- 2
gitup/config.py Ver fichero

@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
#
# Copyright (C) 2011-2016 Ben Kurtovic <ben.kurtovic@gmail.com>
# Copyright (C) 2011-2018 Ben Kurtovic <ben.kurtovic@gmail.com>
# Released under the terms of the MIT License. See LICENSE for details.

from __future__ import print_function
@@ -10,7 +10,7 @@ import os

from colorama import Fore, Style

from .migrate import run_migrations
from gitup.migrate import run_migrations

__all__ = ["get_default_config_path", "get_bookmarks", "add_bookmarks",
"delete_bookmarks", "list_bookmarks", "clean_bookmarks"]


+ 1
- 1
gitup/migrate.py Ver fichero

@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
#
# Copyright (C) 2011-2016 Ben Kurtovic <ben.kurtovic@gmail.com>
# Copyright (C) 2011-2018 Ben Kurtovic <ben.kurtovic@gmail.com>
# Released under the terms of the MIT License. See LICENSE for details.

import os


+ 10
- 0
gitup/test/__init__.py Ver fichero

@@ -0,0 +1,10 @@
# -*- coding: utf-8 -*-
#
# Copyright (C) 2011-2018 Ben Kurtovic <ben.kurtovic@gmail.com>
# Released under the terms of the MIT License. See LICENSE for details.

def run_tests(args=None):
import pytest
if args is None:
args = ["-v", "-rxw"]
return pytest.main(args)

+ 14
- 0
gitup/test/test_bookmarks.py Ver fichero

@@ -0,0 +1,14 @@
# -*- coding: utf-8 -*-
#
# Copyright (C) 2011-2018 Ben Kurtovic <ben.kurtovic@gmail.com>
# Released under the terms of the MIT License. See LICENSE for details.

from __future__ import print_function, unicode_literals

from gitup import config

def test_empty_list(tmpdir, capsys):
config_path = tmpdir / "config"
config.list_bookmarks(config_path)
captured = capsys.readouterr()
assert captured.out == "You have no bookmarks to display.\n"

+ 24
- 0
gitup/test/test_cli.py Ver fichero

@@ -0,0 +1,24 @@
# -*- coding: utf-8 -*-
#
# Copyright (C) 2011-2018 Ben Kurtovic <ben.kurtovic@gmail.com>
# Released under the terms of the MIT License. See LICENSE for details.

from __future__ import print_function, unicode_literals

import platform
import subprocess
import sys

from gitup import __version__

def run_cli(*args):
cmd = [sys.executable, "-m", "gitup"] + list(args)
output = subprocess.check_output(cmd)
return output.strip().decode("utf8")

def test_cli_version():
"""make sure we're using the right version of gitup"""
output = run_cli("-v")
expected = "gitup {} (Python {})".format(
__version__, platform.python_version())
assert output == expected

+ 1
- 3
setup.py Ver fichero

@@ -18,7 +18,7 @@ with open('README.md') as fp:
setup(
name = "gitup",
packages = find_packages(),
entry_points = {"console_scripts": ["gitup = gitup.script:run"]},
entry_points = {"console_scripts": ["gitup = gitup.cli:run"]},
install_requires = ["GitPython >= 2.1.8", "colorama >= 0.3.9"],
version = __version__,
author = "Ben Kurtovic",
@@ -41,8 +41,6 @@ setup(
"Programming Language :: Python",
"Programming Language :: Python :: 2.7",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.2",
"Programming Language :: Python :: 3.3",
"Programming Language :: Python :: 3.4",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",


Cargando…
Cancelar
Guardar