Commit 10a3d6c8 authored by Tiago Gomes's avatar Tiago Gomes
Browse files

tests: add additional tests to local plugin

parent ba147596
Loading
Loading
Loading
Loading
+47 −2
Original line number Diff line number Diff line
@@ -2,7 +2,7 @@ import os
import pytest

from buildstream._exceptions import ErrorDomain, LoadErrorReason
from tests.testutils import cli
from tests.testutils import cli, filetypegenerator

DATA_DIR = os.path.join(
    os.path.dirname(os.path.realpath(__file__)),
@@ -11,7 +11,7 @@ DATA_DIR = os.path.join(


@pytest.mark.datafiles(os.path.join(DATA_DIR, 'basic'))
def test_missing_file(cli, tmpdir, datafiles):
def test_missing_path(cli, tmpdir, datafiles):
    project = os.path.join(datafiles.dirname, datafiles.basename)

    # Removing the local file causes preflight to fail
@@ -24,6 +24,51 @@ def test_missing_file(cli, tmpdir, datafiles):
    result.assert_main_error(ErrorDomain.LOAD, LoadErrorReason.MISSING_FILE)


@pytest.mark.datafiles(os.path.join(DATA_DIR, 'basic'))
def test_non_regular_file_or_directory(cli, tmpdir, datafiles):
    project = os.path.join(datafiles.dirname, datafiles.basename)
    localfile = os.path.join(project, 'file.txt')

    for file_type in filetypegenerator.generate_file_types(localfile):
        result = cli.run(project=project, args=[
            'show', 'target.bst'
        ])
        if os.path.isdir(localfile) and not os.path.islink(localfile):
            result.assert_success()
        elif os.path.isfile(localfile) and not os.path.islink(localfile):
            result.assert_success()
        else:
            result.assert_main_error(ErrorDomain.LOAD,
                                     LoadErrorReason.PROJ_PATH_INVALID_KIND)


@pytest.mark.datafiles(os.path.join(DATA_DIR, 'basic'))
def test_invalid_absolute_path(cli, tmpdir, datafiles):
    project = os.path.join(datafiles.dirname, datafiles.basename)

    with open(os.path.join(project, "target.bst"), 'r') as f:
        old_yaml = f.read()

    new_yaml = old_yaml.replace("file.txt", os.path.join(project, "file.txt"))
    assert old_yaml != new_yaml

    with open(os.path.join(project, "target.bst"), 'w') as f:
        f.write(new_yaml)

    result = cli.run(project=project, args=['show', 'target.bst'])
    result.assert_main_error(ErrorDomain.LOAD,
                             LoadErrorReason.PROJ_PATH_INVALID)


@pytest.mark.datafiles(os.path.join(DATA_DIR, 'invalid-relative-path'))
def test_invalid_relative_path(cli, tmpdir, datafiles):
    project = os.path.join(datafiles.dirname, datafiles.basename)

    result = cli.run(project=project, args=['show', 'target.bst'])
    result.assert_main_error(ErrorDomain.LOAD,
                             LoadErrorReason.PROJ_PATH_INVALID)


@pytest.mark.datafiles(os.path.join(DATA_DIR, 'basic'))
def test_stage_file(cli, tmpdir, datafiles):
    project = os.path.join(datafiles.dirname, datafiles.basename)
+1 −0
Original line number Diff line number Diff line
This is a text file
+2 −0
Original line number Diff line number Diff line
# Basic project
name: foo
+5 −0
Original line number Diff line number Diff line
kind: import
description: This is the pony
sources:
- kind: local
  path: ../invalid-relative-path/file.txt