Exemple #1
0
def test_project_command__parsed_to_command():
    conf = Config()
    conf.loads("""
project:
  commands:
    command:
      path: /path/1/cmd/1
      source:
      - /path/1/cmd/1/src/1
      - /path/1/cmd/1/src/2
      run:
      - /path/1/cmd/1/run/1
      - /path/1/cmd/1/run/2
""")

    assert list(conf.projects.keys()) == ["project"]

    project = conf.projects["project"]
    assert isinstance(project, Project)
    assert list(project.commands.keys()) == ["command"]

    project_command = project.commands["command"]
    assert isinstance(project_command, Command)
    assert project_command.path == Path("/path/1/cmd/1")
    assert project_command.source == [
        "/path/1/cmd/1/src/1", "/path/1/cmd/1/src/2"
    ]
    assert project_command.run == [
        "/path/1/cmd/1/run/1", "/path/1/cmd/1/run/2"
    ]
Exemple #2
0
def test_command_without_path__inherits_path_from_project():
    conf = Config()
    conf.loads("""
project:
  path: /path/1
  commands:
    command:
        """)

    assert conf.projects["project"].commands["command"].path == Path("/path/1")
Exemple #3
0
def test_common_run__project_includes_common_run():
    conf = Config()
    conf.loads("""
_common:
  run: /path/1/run/1
project:
  run: /path/2/run/1
        """)

    assert conf.projects["project"].run == ["/path/1/run/1", "/path/2/run/1"]
Exemple #4
0
def test_command_without_env__inherits_env_from_project():
    conf = Config()
    conf.loads("""
project:
  env:
    key: value
  commands:
    command:
        """)

    assert conf.projects["project"].commands["command"].env == {"key": "value"}
Exemple #5
0
def test_command_without_path_and_source__inherits_source_from_project():
    conf = Config()
    conf.loads("""
project:
  source: /path/1/src/1
  commands:
    command:
        """)

    assert conf.projects["project"].commands["command"].source == [
        "/path/1/src/1"
    ]
Exemple #6
0
def test_common_source__project_includes_common_source():
    conf = Config()
    conf.loads("""
_common:
  source: /path/1/src/1
project:
  source: /path/2/src/1
        """)

    assert conf.projects["project"].source == [
        "/path/1/src/1", "/path/2/src/1"
    ]
Exemple #7
0
def test_common_command__project_includes_common_command():
    conf = Config()
    conf.loads("""
_common:
  commands:
    open:
      run: xdg-open .
project:
  path: /path/1
        """)

    assert "open" in conf.projects["project"].commands
    assert conf.projects["project"].commands["open"].run == ["xdg-open ."]
Exemple #8
0
def test_command_without_path__inherits_from_project():
    conf = Config()
    conf.loads("""
project:
  path: /path/1
  commands:
    command:
        """)

    assert list(conf.projects.keys()) == ["project"]

    project = conf.projects["project"]
    assert isinstance(project, Project)
    assert project.path == Path("/path/1")
    assert project.commands["command"].path == Path("/path/1")
Exemple #9
0
def test_common_env__project_includes_common_env():
    conf = Config()
    conf.loads("""
_common:
  env:
    key1: value1
project:
  env:
    key2: value2
        """)

    assert conf.projects["project"].env == {
        "key1": "value1",
        "key2": "value2",
    }
Exemple #10
0
def test_variables_in_project__variables_replaced():
    conf = Config()
    conf.loads("""
_common:
  env:
    key1: value1_{{project.name}}
project:
  env:
    key2: value2_{{project.name}}
        """)

    assert conf.projects["project"].env == {
        "key1": "value1_{{project.name}}",
        "key2": "value2_{{project.name}}",
    }

    assert list(conf.projects["project"]()) == [
        "export key1=value1_project",
        "export key2=value2_project",
    ]
Exemple #11
0
def test_common_command_env__clone_to_project__env_substitution_correct():
    conf = Config()
    conf.loads("""
_common:
  commands:
    open:
      run: xdg-open .
      env:
        PROJECT: "{{project.name}}"
project:
  path: /path/1
        """)

    project = conf.projects["project"]
    command = project.commands["open"]
    clone = command.clone_to(project)
    assert "PROJECT" in clone.env
    assert clone.env["PROJECT"] == "{{project.name}}"
    assert list(
        clone()) == ["cd /path/1", "export PROJECT=project", "xdg-open ."]
Exemple #12
0
def test_common_command__clone_to_project__path_correct():
    conf = Config()
    conf.loads("""
_common:
  commands:
    open:
      run: xdg-open .
project:
  path: /path/1
        """)

    project = conf.projects["project"]
    command = project.commands["open"]
    assert command.parent is not None
    assert command.parent != project

    clone = command.clone_to(project)
    assert clone.parent == project

    assert clone.path == Path("/path/1")
Exemple #13
0
def test_project_attributes__parsed_to_project():
    conf = Config()
    conf.loads("""
project:
  path: /path/1
  source:
  - /path/1/src/1
  - /path/1/src/2
  env:
    key: value
  run:
  - /path/1/run/1
  - /path/1/run/2
        """)

    assert list(conf.projects.keys()) == ["project"]

    project = conf.projects["project"]
    assert isinstance(project, Project)
    assert project.path == Path("/path/1")
    assert project.source == ["/path/1/src/1", "/path/1/src/2"]
    assert project.env == {"key": "value"}
    assert project.run == ["/path/1/run/1", "/path/1/run/2"]