summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJürg Billeter <j@bitron.ch>2017-11-08 17:24:41 +0100
committerJürg Billeter <j@bitron.ch>2018-02-08 14:04:04 +0100
commitb74919501fa65feb4494a44fddc7180a92ad2991 (patch)
tree54b93278922e3ee74f758e109b9d5cb469de9274
parent00c6e649f455dcad9e19071ead31b9e0960fb078 (diff)
downloadbuildstream-b74919501fa65feb4494a44fddc7180a92ad2991.tar.gz
Pass Project instance to Loader
Project access will be required for junctions.
-rw-r--r--buildstream/_loader.py10
-rw-r--r--buildstream/_pipeline.py3
-rw-r--r--tests/loader/__init__.py9
-rw-r--r--tests/loader/basics.py14
-rw-r--r--tests/loader/basics/onefile/project.conf2
-rw-r--r--tests/loader/dependencies.py22
-rw-r--r--tests/loader/dependencies/project.conf2
7 files changed, 33 insertions, 29 deletions
diff --git a/buildstream/_loader.py b/buildstream/_loader.py
index a8ab4019f..95ee525dd 100644
--- a/buildstream/_loader.py
+++ b/buildstream/_loader.py
@@ -178,7 +178,9 @@ def extract_depends_from_node(data):
#
class Loader():
- def __init__(self, basedir, filenames, options):
+ def __init__(self, project, filenames):
+
+ basedir = project.element_path
# Ensure we have an absolute path for the base directory
#
@@ -194,9 +196,9 @@ class Loader():
"path to the base project directory: {}"
.format(filename, basedir))
- self.options = options # Project options (OptionPool)
- self.basedir = basedir # Base project directory
- self.targets = filenames # Target bst elements
+ self.options = project._options # Project options (OptionPool)
+ self.basedir = basedir # Base project directory
+ self.targets = filenames # Target bst elements
self.meta_elements = {} # Dict of resolved meta elements by name
self.elements = {} # Dict of elements
diff --git a/buildstream/_pipeline.py b/buildstream/_pipeline.py
index b588717e3..87f634cd6 100644
--- a/buildstream/_pipeline.py
+++ b/buildstream/_pipeline.py
@@ -121,8 +121,7 @@ class Pipeline():
self.platform = Platform.get_platform()
self.artifacts = self.platform.artifactcache
- loader = Loader(self.project.element_path, targets + except_,
- self.project._options)
+ loader = Loader(self.project, targets + except_)
with self.timed_activity("Loading pipeline", silent_nested=True):
meta_elements = loader.load(rewritable, None)
diff --git a/tests/loader/__init__.py b/tests/loader/__init__.py
index 3cd5c3ec9..c7058e729 100644
--- a/tests/loader/__init__.py
+++ b/tests/loader/__init__.py
@@ -1,4 +1,5 @@
-from buildstream._options import OptionPool
+from buildstream._context import Context
+from buildstream._project import Project
#
@@ -6,7 +7,5 @@ from buildstream._options import OptionPool
# be removed in favor of testing the functionality via
# the CLI like in the frontend tests anyway.
#
-def make_options(basedir):
- options = OptionPool(basedir)
- options.resolve()
- return options
+def make_project(basedir):
+ return Project(basedir, Context())
diff --git a/tests/loader/basics.py b/tests/loader/basics.py
index db92efb36..f9ae689ef 100644
--- a/tests/loader/basics.py
+++ b/tests/loader/basics.py
@@ -4,7 +4,7 @@ import pytest
from buildstream._exceptions import LoadError, LoadErrorReason
from buildstream._loader import Loader
from buildstream._metaelement import MetaElement
-from . import make_options
+from . import make_project
DATA_DIR = os.path.join(
os.path.dirname(os.path.realpath(__file__)),
@@ -19,7 +19,7 @@ DATA_DIR = os.path.join(
def test_one_file(datafiles):
basedir = os.path.join(datafiles.dirname, datafiles.basename)
- loader = Loader(basedir, ['elements/onefile.bst'], make_options(basedir))
+ loader = Loader(make_project(basedir), ['elements/onefile.bst'])
element = loader.load()[0]
@@ -31,7 +31,7 @@ def test_one_file(datafiles):
def test_missing_file(datafiles):
basedir = os.path.join(datafiles.dirname, datafiles.basename)
- loader = Loader(basedir, ['elements/missing.bst'], make_options(basedir))
+ loader = Loader(make_project(basedir), ['elements/missing.bst'])
with pytest.raises(LoadError) as exc:
element = loader.load()[0]
@@ -43,7 +43,7 @@ def test_missing_file(datafiles):
def test_invalid_reference(datafiles):
basedir = os.path.join(datafiles.dirname, datafiles.basename)
- loader = Loader(basedir, ['elements/badreference.bst'], make_options(basedir))
+ loader = Loader(make_project(basedir), ['elements/badreference.bst'])
with pytest.raises(LoadError) as exc:
element = loader.load()[0]
@@ -55,7 +55,7 @@ def test_invalid_reference(datafiles):
def test_invalid_yaml(datafiles):
basedir = os.path.join(datafiles.dirname, datafiles.basename)
- loader = Loader(basedir, ['elements/badfile.bst'], make_options(basedir))
+ loader = Loader(make_project(basedir), ['elements/badfile.bst'])
with pytest.raises(LoadError) as exc:
element = loader.load()[0]
@@ -70,7 +70,7 @@ def test_fail_fullpath_target(datafiles):
fullpath = os.path.join(basedir, 'elements', 'onefile.bst')
with pytest.raises(LoadError) as exc:
- loader = Loader(basedir, [fullpath], make_options(basedir))
+ loader = Loader(make_project(basedir), [fullpath])
assert (exc.value.reason == LoadErrorReason.INVALID_DATA)
@@ -79,7 +79,7 @@ def test_fail_fullpath_target(datafiles):
def test_invalid_key(datafiles):
basedir = os.path.join(datafiles.dirname, datafiles.basename)
- loader = Loader(basedir, ['elements/invalidkey.bst'], make_options(basedir))
+ loader = Loader(make_project(basedir), ['elements/invalidkey.bst'])
with pytest.raises(LoadError) as exc:
element = loader.load()[0]
diff --git a/tests/loader/basics/onefile/project.conf b/tests/loader/basics/onefile/project.conf
new file mode 100644
index 000000000..afa0f5475
--- /dev/null
+++ b/tests/loader/basics/onefile/project.conf
@@ -0,0 +1,2 @@
+# Basic project
+name: foo
diff --git a/tests/loader/dependencies.py b/tests/loader/dependencies.py
index bd588867b..19bab3fd5 100644
--- a/tests/loader/dependencies.py
+++ b/tests/loader/dependencies.py
@@ -4,7 +4,7 @@ import pytest
from buildstream._exceptions import LoadError, LoadErrorReason
from buildstream._loader import Loader
from buildstream._metaelement import MetaElement
-from . import make_options
+from . import make_project
DATA_DIR = os.path.join(
os.path.dirname(os.path.realpath(__file__)),
@@ -19,7 +19,7 @@ DATA_DIR = os.path.join(
def test_two_files(datafiles):
basedir = os.path.join(datafiles.dirname, datafiles.basename)
- loader = Loader(basedir, ['elements/target.bst'], make_options(basedir))
+ loader = Loader(make_project(basedir), ['elements/target.bst'])
element = loader.load()[0]
assert(isinstance(element, MetaElement))
@@ -35,7 +35,7 @@ def test_two_files(datafiles):
def test_shared_dependency(datafiles):
basedir = os.path.join(datafiles.dirname, datafiles.basename)
- loader = Loader(basedir, ['elements/shareddeptarget.bst'], make_options(basedir))
+ loader = Loader(make_project(basedir), ['elements/shareddeptarget.bst'])
element = loader.load()[0]
# Toplevel is 'pony' with 2 dependencies
@@ -78,7 +78,7 @@ def test_shared_dependency(datafiles):
def test_dependency_dict(datafiles):
basedir = os.path.join(datafiles.dirname, datafiles.basename)
- loader = Loader(basedir, ['elements/target-depdict.bst'], make_options(basedir))
+ loader = Loader(make_project(basedir), ['elements/target-depdict.bst'])
element = loader.load()[0]
assert(isinstance(element, MetaElement))
@@ -93,7 +93,7 @@ def test_dependency_dict(datafiles):
@pytest.mark.datafiles(DATA_DIR)
def test_invalid_dependency_declaration(datafiles):
basedir = os.path.join(datafiles.dirname, datafiles.basename)
- loader = Loader(basedir, ['elements/invaliddep.bst'], make_options(basedir))
+ loader = Loader(make_project(basedir), ['elements/invaliddep.bst'])
with pytest.raises(LoadError) as exc:
element = loader.load()[0]
@@ -104,7 +104,7 @@ def test_invalid_dependency_declaration(datafiles):
@pytest.mark.datafiles(DATA_DIR)
def test_circular_dependency(datafiles):
basedir = os.path.join(datafiles.dirname, datafiles.basename)
- loader = Loader(basedir, ['elements/circulartarget.bst'], make_options(basedir))
+ loader = Loader(make_project(basedir), ['elements/circulartarget.bst'])
with pytest.raises(LoadError) as exc:
element = loader.load()[0]
@@ -115,7 +115,7 @@ def test_circular_dependency(datafiles):
@pytest.mark.datafiles(DATA_DIR)
def test_invalid_dependency_type(datafiles):
basedir = os.path.join(datafiles.dirname, datafiles.basename)
- loader = Loader(basedir, ['elements/invaliddeptype.bst'], make_options(basedir))
+ loader = Loader(make_project(basedir), ['elements/invaliddeptype.bst'])
with pytest.raises(LoadError) as exc:
element = loader.load()[0]
@@ -126,7 +126,7 @@ def test_invalid_dependency_type(datafiles):
@pytest.mark.datafiles(DATA_DIR)
def test_build_dependency(datafiles):
basedir = os.path.join(datafiles.dirname, datafiles.basename)
- loader = Loader(basedir, ['elements/builddep.bst'], make_options(basedir))
+ loader = Loader(make_project(basedir), ['elements/builddep.bst'])
element = loader.load()[0]
assert(isinstance(element, MetaElement))
@@ -142,7 +142,7 @@ def test_build_dependency(datafiles):
@pytest.mark.datafiles(DATA_DIR)
def test_runtime_dependency(datafiles):
basedir = os.path.join(datafiles.dirname, datafiles.basename)
- loader = Loader(basedir, ['elements/runtimedep.bst'], make_options(basedir))
+ loader = Loader(make_project(basedir), ['elements/runtimedep.bst'])
element = loader.load()[0]
assert(isinstance(element, MetaElement))
@@ -158,7 +158,7 @@ def test_runtime_dependency(datafiles):
@pytest.mark.datafiles(DATA_DIR)
def test_build_runtime_dependency(datafiles):
basedir = os.path.join(datafiles.dirname, datafiles.basename)
- loader = Loader(basedir, ['elements/target.bst'], make_options(basedir))
+ loader = Loader(make_project(basedir), ['elements/target.bst'])
element = loader.load()[0]
assert(isinstance(element, MetaElement))
@@ -175,7 +175,7 @@ def test_build_runtime_dependency(datafiles):
@pytest.mark.datafiles(DATA_DIR)
def test_all_dependency(datafiles):
basedir = os.path.join(datafiles.dirname, datafiles.basename)
- loader = Loader(basedir, ['elements/alldep.bst'], make_options(basedir))
+ loader = Loader(make_project(basedir), ['elements/alldep.bst'])
element = loader.load()[0]
assert(isinstance(element, MetaElement))
diff --git a/tests/loader/dependencies/project.conf b/tests/loader/dependencies/project.conf
new file mode 100644
index 000000000..afa0f5475
--- /dev/null
+++ b/tests/loader/dependencies/project.conf
@@ -0,0 +1,2 @@
+# Basic project
+name: foo