diff options
author | Jürg Billeter <j@bitron.ch> | 2017-11-08 17:24:41 +0100 |
---|---|---|
committer | Jürg Billeter <j@bitron.ch> | 2018-02-08 14:04:04 +0100 |
commit | b74919501fa65feb4494a44fddc7180a92ad2991 (patch) | |
tree | 54b93278922e3ee74f758e109b9d5cb469de9274 | |
parent | 00c6e649f455dcad9e19071ead31b9e0960fb078 (diff) | |
download | buildstream-b74919501fa65feb4494a44fddc7180a92ad2991.tar.gz |
Pass Project instance to Loader
Project access will be required for junctions.
-rw-r--r-- | buildstream/_loader.py | 10 | ||||
-rw-r--r-- | buildstream/_pipeline.py | 3 | ||||
-rw-r--r-- | tests/loader/__init__.py | 9 | ||||
-rw-r--r-- | tests/loader/basics.py | 14 | ||||
-rw-r--r-- | tests/loader/basics/onefile/project.conf | 2 | ||||
-rw-r--r-- | tests/loader/dependencies.py | 22 | ||||
-rw-r--r-- | tests/loader/dependencies/project.conf | 2 |
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 |