# Path: scripnix/pybin/backup_file.py
# COMMAND_NAME = "backup-file"
# BACKUP_DATE_FORMAT = "%Y%m%d"
# def assemble_dry_run_message(backups):
# def collect_backups(file_paths):
# def execute_backups(backups):
# def main(file, dry_run):
# 
# Path: tests/command.py
# def common_help_option(command_entry, command_name):
#     """ Test help message for both standard option switches."""
#     def version_option_switch(option_switch):
#         runner = CliRunner()
#         result = runner.invoke(command_entry, [option_switch])
#         assert result.exit_code == 0
#         match = HELP_OPTION_REGEX.match(result.output.replace("\n", ""))
#         assert match.group(1) == command_name
# 
#     version_option_switch("-h")
#     version_option_switch("--help")
# 
# def common_version_option(command_entry, command_name):
#     """ Test version message for both standard option switches."""
#     def version_option_switch(option_switch):
#         runner = CliRunner()
#         result = runner.invoke(command_entry, [option_switch])
#         assert result.exit_code == 0
#         match = VERSION_OPTION_REGEX.match(result.output.replace("\n", ""))
#         assert match.group(1) == command_name
#         assert match.group(2) == __version__
# 
#     version_option_switch("-V")
#     version_option_switch("--version")


import datetime
import os
import re
import time
import pytest
from click import ClickException
from click.testing import CliRunner
from scripnix.pybin.backup_file import assemble_dry_run_message, Backup, collect_backups, COMMAND_NAME, execute_backups, main
from .command import common_help_option, common_version_option
# This file is part of Scripnix. Copyright 2016 Dave Rogers <info@yukondude.com>. Licensed under the GNU General Public License, version 3.
# Refer to the attached LICENSE file or see <http://www.gnu.org/licenses/> for details.


# noinspection PyPackageRequirements




def test_help_option():
    common_help_option(command_entry=main, command_name=COMMAND_NAME)


DRY_RUN_PREFIX = "{} would do the following:".format(COMMAND_NAME)


@pytest.mark.parametrize('backups,expected', [
    ([], DRY_RUN_PREFIX),
    ([Backup('foo', 'foo.1', False)], "\n".join([DRY_RUN_PREFIX, "cp foo foo.1"])),
    ([Backup('bar', 'bar.1', True)], "\n".join([DRY_RUN_PREFIX, "cp bar bar.1", "chmod -x,u-s bar.1"])),
    ([Backup('foo', 'foo.1', False), Backup('bar', 'bar.1', True)],
     "\n".join([DRY_RUN_PREFIX, "cp foo foo.1", "cp bar bar.1", "chmod -x,u-s bar.1"])),
])
def test_assemble_dry_run_message(backups, expected):
    backups_copy = backups
    assert assemble_dry_run_message(backups=backups) == expected
    assert backups_copy == backups


def test_version_option():

# Path: scripnix/pybin/backup_file.py
# COMMAND_NAME = "backup-file"
# BACKUP_DATE_FORMAT = "%Y%m%d"
# def assemble_dry_run_message(backups):
# def collect_backups(file_paths):
# def execute_backups(backups):
# def main(file, dry_run):
# 
# Path: tests/command.py
# def common_help_option(command_entry, command_name):
#     """ Test help message for both standard option switches."""
#     def version_option_switch(option_switch):
#         runner = CliRunner()
#         result = runner.invoke(command_entry, [option_switch])
#         assert result.exit_code == 0
#         match = HELP_OPTION_REGEX.match(result.output.replace("\n", ""))
#         assert match.group(1) == command_name
# 
#     version_option_switch("-h")
#     version_option_switch("--help")
# 
# def common_version_option(command_entry, command_name):
#     """ Test version message for both standard option switches."""
#     def version_option_switch(option_switch):
#         runner = CliRunner()
#         result = runner.invoke(command_entry, [option_switch])
#         assert result.exit_code == 0
#         match = VERSION_OPTION_REGEX.match(result.output.replace("\n", ""))
#         assert match.group(1) == command_name
#         assert match.group(2) == __version__
# 
#     version_option_switch("-V")
#     version_option_switch("--version")


# Path: tests/test_backup_file.py
import datetime
import os
import re
import time
import pytest
from click import ClickException
from click.testing import CliRunner
from scripnix.pybin.backup_file import assemble_dry_run_message, Backup, collect_backups, COMMAND_NAME, execute_backups, main
from .command import common_help_option, common_version_option

# This file is part of Scripnix. Copyright 2016 Dave Rogers <info@yukondude.com>. Licensed under the GNU General Public License, version 3.
# Refer to the attached LICENSE file or see <http://www.gnu.org/licenses/> for details.


# noinspection PyPackageRequirements




def test_help_option():
    common_help_option(command_entry=main, command_name=COMMAND_NAME)


DRY_RUN_PREFIX = "{} would do the following:".format(COMMAND_NAME)


@pytest.mark.parametrize('backups,expected', [
    ([], DRY_RUN_PREFIX),
    ([Backup('foo', 'foo.1', False)], "\n".join([DRY_RUN_PREFIX, "cp foo foo.1"])),
    ([Backup('bar', 'bar.1', True)], "\n".join([DRY_RUN_PREFIX, "cp bar bar.1", "chmod -x,u-s bar.1"])),
    ([Backup('foo', 'foo.1', False), Backup('bar', 'bar.1', True)],
     "\n".join([DRY_RUN_PREFIX, "cp foo foo.1", "cp bar bar.1", "chmod -x,u-s bar.1"])),
])
def test_assemble_dry_run_message(backups, expected):
    backups_copy = backups
    assert assemble_dry_run_message(backups=backups) == expected
    assert backups_copy == backups


def test_version_option():

    common_version_option(command_entry=main, command_name=COMMAND_NAME)