Valentin David pushed to branch valentindavid/integration-tests-aarch64 at BuildStream / buildstream
Commits:
- 
ae5ccd76
by Phillip Smyth at 2018-11-12T14:57:51Z
- 
56a54161
by Phillip Smyth at 2018-11-12T14:57:51Z
- 
e55a9703
by Jürg Billeter at 2018-11-12T15:44:45Z
- 
c87d6e45
by Valentin David at 2018-11-14T11:43:33Z
- 
16b01489
by Valentin David at 2018-11-14T11:43:33Z
- 
85046b29
by Valentin David at 2018-11-14T11:43:33Z
- 
dd5a073b
by Valentin David at 2018-11-14T11:43:33Z
15 changed files:
- .gitlab-ci.yml
- buildstream/_project.py
- tests/cachekey/cachekey.py
- tests/examples/autotools.py
- tests/examples/developing.py
- tests/examples/flatpak-autotools.py
- tests/examples/integration-commands.py
- tests/examples/junctions.py
- tests/examples/running-commands.py
- tests/format/list-directive-type-error/project.conf
- + tests/frontend/invalid_element_path/project.conf
- tests/frontend/show.py
- tests/integration/project/elements/base/base-alpine.bst
- tests/integration/project/project.conf
- tests/testutils/site.py
Changes:
| ... | ... | @@ -86,25 +86,31 @@ source_dist: | 
| 86 | 86 |      - coverage-linux/
 | 
| 87 | 87 |  | 
| 88 | 88 |  tests-debian-9:
 | 
| 89 | -  image: buildstream/testsuite-debian:9-master-119-552f5fc6
 | |
| 89 | +  image: buildstream/testsuite-debian:9-master-123-7ce6581b
 | |
| 90 | 90 |    <<: *linux-tests
 | 
| 91 | 91 |  | 
| 92 | 92 |  tests-fedora-27:
 | 
| 93 | -  image: buildstream/testsuite-fedora:27-master-119-552f5fc6
 | |
| 93 | +  image: buildstream/testsuite-fedora:27-master-123-7ce6581b
 | |
| 94 | 94 |    <<: *linux-tests
 | 
| 95 | 95 |  | 
| 96 | 96 |  tests-fedora-28:
 | 
| 97 | -  image: buildstream/testsuite-fedora:28-master-119-552f5fc6
 | |
| 97 | +  image: buildstream/testsuite-fedora:28-master-123-7ce6581b
 | |
| 98 | 98 |    <<: *linux-tests
 | 
| 99 | 99 |  | 
| 100 | 100 |  tests-ubuntu-18.04:
 | 
| 101 | -  image: buildstream/testsuite-ubuntu:18.04-master-119-552f5fc6
 | |
| 101 | +  image: buildstream/testsuite-ubuntu:18.04-master-123-7ce6581b
 | |
| 102 | +  <<: *linux-tests
 | |
| 103 | + | |
| 104 | +tests-fedora-28-aarch64:
 | |
| 105 | +  image: buildstream/testsuite-fedora:aarch64-28-master-123-7ce6581b
 | |
| 106 | +  tags:
 | |
| 107 | +    - aarch64
 | |
| 102 | 108 |    <<: *linux-tests
 | 
| 103 | 109 |  | 
| 104 | 110 |  tests-unix:
 | 
| 105 | 111 |    # Use fedora here, to a) run a test on fedora and b) ensure that we
 | 
| 106 | 112 |    # can get rid of ostree - this is not possible with debian-8
 | 
| 107 | -  image: buildstream/testsuite-fedora:27-master-119-552f5fc6
 | |
| 113 | +  image: buildstream/testsuite-fedora:27-master-123-7ce6581b
 | |
| 108 | 114 |    stage: test
 | 
| 109 | 115 |    variables:
 | 
| 110 | 116 |      BST_FORCE_BACKEND: "unix"
 | 
| ... | ... | @@ -219,6 +219,19 @@ class Project(): | 
| 219 | 219 |  | 
| 220 | 220 |          return self._cache_key
 | 
| 221 | 221 |  | 
| 222 | +    def _validate_node(self, node):
 | |
| 223 | +        _yaml.node_validate(node, [
 | |
| 224 | +            'format-version',
 | |
| 225 | +            'element-path', 'variables',
 | |
| 226 | +            'environment', 'environment-nocache',
 | |
| 227 | +            'split-rules', 'elements', 'plugins',
 | |
| 228 | +            'aliases', 'name',
 | |
| 229 | +            'artifacts', 'options',
 | |
| 230 | +            'fail-on-overlap', 'shell', 'fatal-warnings',
 | |
| 231 | +            'ref-storage', 'sandbox', 'mirrors', 'remote-execution',
 | |
| 232 | +            'sources', '(@)'
 | |
| 233 | +        ])
 | |
| 234 | + | |
| 222 | 235 |      # create_element()
 | 
| 223 | 236 |      #
 | 
| 224 | 237 |      # Instantiate and return an element
 | 
| ... | ... | @@ -402,6 +415,8 @@ class Project(): | 
| 402 | 415 |                  "Project requested format version {}, but BuildStream {}.{} only supports up until format version {}"
 | 
| 403 | 416 |                  .format(format_version, major, minor, BST_FORMAT_VERSION))
 | 
| 404 | 417 |  | 
| 418 | +        self._validate_node(pre_config_node)
 | |
| 419 | + | |
| 405 | 420 |          # FIXME:
 | 
| 406 | 421 |          #
 | 
| 407 | 422 |          #   Performing this check manually in the absense
 | 
| ... | ... | @@ -467,16 +482,7 @@ class Project(): | 
| 467 | 482 |  | 
| 468 | 483 |          self._load_pass(config, self.config)
 | 
| 469 | 484 |  | 
| 470 | -        _yaml.node_validate(config, [
 | |
| 471 | -            'format-version',
 | |
| 472 | -            'element-path', 'variables',
 | |
| 473 | -            'environment', 'environment-nocache',
 | |
| 474 | -            'split-rules', 'elements', 'plugins',
 | |
| 475 | -            'aliases', 'name',
 | |
| 476 | -            'artifacts', 'options',
 | |
| 477 | -            'fail-on-overlap', 'shell', 'fatal-warnings',
 | |
| 478 | -            'ref-storage', 'sandbox', 'mirrors', 'remote-execution'
 | |
| 479 | -        ])
 | |
| 485 | +        self._validate_node(config)
 | |
| 480 | 486 |  | 
| 481 | 487 |          #
 | 
| 482 | 488 |          # Now all YAML composition is done, from here on we just load
 | 
| ... | ... | @@ -36,7 +36,7 @@ | 
| 36 | 36 |  # the result.
 | 
| 37 | 37 |  #
 | 
| 38 | 38 |  from tests.testutils.runcli import cli
 | 
| 39 | -from tests.testutils.site import HAVE_BZR, HAVE_GIT, HAVE_OSTREE, IS_LINUX
 | |
| 39 | +from tests.testutils.site import HAVE_BZR, HAVE_GIT, HAVE_OSTREE, IS_LINUX, MACHINE_ARCH
 | |
| 40 | 40 |  from buildstream.plugin import CoreWarnings
 | 
| 41 | 41 |  from buildstream import _yaml
 | 
| 42 | 42 |  import os
 | 
| ... | ... | @@ -144,6 +144,8 @@ DATA_DIR = os.path.join( | 
| 144 | 144 |  # The cache key test uses a project which exercises all plugins,
 | 
| 145 | 145 |  # so we cant run it at all if we dont have them installed.
 | 
| 146 | 146 |  #
 | 
| 147 | +@pytest.mark.skipif(MACHINE_ARCH != 'x86_64',
 | |
| 148 | +                    reason='Cache keys depend on architecture')
 | |
| 147 | 149 |  @pytest.mark.skipif(not IS_LINUX, reason='Only available on linux')
 | 
| 148 | 150 |  @pytest.mark.skipif(HAVE_BZR is False, reason="bzr is not available")
 | 
| 149 | 151 |  @pytest.mark.skipif(HAVE_GIT is False, reason="git is not available")
 | 
| ... | ... | @@ -3,7 +3,7 @@ import pytest | 
| 3 | 3 |  | 
| 4 | 4 |  from tests.testutils import cli_integration as cli
 | 
| 5 | 5 |  from tests.testutils.integration import assert_contains
 | 
| 6 | -from tests.testutils.site import IS_LINUX
 | |
| 6 | +from tests.testutils.site import IS_LINUX, MACHINE_ARCH
 | |
| 7 | 7 |  | 
| 8 | 8 |  pytestmark = pytest.mark.integration
 | 
| 9 | 9 |  | 
| ... | ... | @@ -13,6 +13,8 @@ DATA_DIR = os.path.join( | 
| 13 | 13 |  | 
| 14 | 14 |  | 
| 15 | 15 |  # Tests a build of the autotools amhello project on a alpine-linux base runtime
 | 
| 16 | +@pytest.mark.skipif(MACHINE_ARCH != 'x86_64',
 | |
| 17 | +                    reason='Examples are writtent for x86_64')
 | |
| 16 | 18 |  @pytest.mark.skipif(not IS_LINUX, reason='Only available on linux')
 | 
| 17 | 19 |  @pytest.mark.datafiles(DATA_DIR)
 | 
| 18 | 20 |  def test_autotools_build(cli, tmpdir, datafiles):
 | 
| ... | ... | @@ -36,6 +38,8 @@ def test_autotools_build(cli, tmpdir, datafiles): | 
| 36 | 38 |  | 
| 37 | 39 |  | 
| 38 | 40 |  # Test running an executable built with autotools.
 | 
| 41 | +@pytest.mark.skipif(MACHINE_ARCH != 'x86_64',
 | |
| 42 | +                    reason='Examples are writtent for x86_64')
 | |
| 39 | 43 |  @pytest.mark.skipif(not IS_LINUX, reason='Only available on linux')
 | 
| 40 | 44 |  @pytest.mark.datafiles(DATA_DIR)
 | 
| 41 | 45 |  def test_autotools_run(cli, tmpdir, datafiles):
 | 
| ... | ... | @@ -4,7 +4,7 @@ import pytest | 
| 4 | 4 |  import tests.testutils.patch as patch
 | 
| 5 | 5 |  from tests.testutils import cli_integration as cli
 | 
| 6 | 6 |  from tests.testutils.integration import assert_contains
 | 
| 7 | -from tests.testutils.site import IS_LINUX
 | |
| 7 | +from tests.testutils.site import IS_LINUX, MACHINE_ARCH
 | |
| 8 | 8 |  | 
| 9 | 9 |  pytestmark = pytest.mark.integration
 | 
| 10 | 10 |  | 
| ... | ... | @@ -14,6 +14,8 @@ DATA_DIR = os.path.join( | 
| 14 | 14 |  | 
| 15 | 15 |  | 
| 16 | 16 |  # Test that the project builds successfully
 | 
| 17 | +@pytest.mark.skipif(MACHINE_ARCH != 'x86_64',
 | |
| 18 | +                    reason='Examples are writtent for x86_64')
 | |
| 17 | 19 |  @pytest.mark.skipif(not IS_LINUX, reason='Only available on linux')
 | 
| 18 | 20 |  @pytest.mark.datafiles(DATA_DIR)
 | 
| 19 | 21 |  def test_autotools_build(cli, tmpdir, datafiles):
 | 
| ... | ... | @@ -35,6 +37,8 @@ def test_autotools_build(cli, tmpdir, datafiles): | 
| 35 | 37 |  | 
| 36 | 38 |  | 
| 37 | 39 |  # Test the unmodified hello command works as expected.
 | 
| 40 | +@pytest.mark.skipif(MACHINE_ARCH != 'x86_64',
 | |
| 41 | +                    reason='Examples are writtent for x86_64')
 | |
| 38 | 42 |  @pytest.mark.skipif(not IS_LINUX, reason='Only available on linux')
 | 
| 39 | 43 |  @pytest.mark.datafiles(DATA_DIR)
 | 
| 40 | 44 |  def test_run_unmodified_hello(cli, tmpdir, datafiles):
 | 
| ... | ... | @@ -66,6 +70,8 @@ def test_open_workspace(cli, tmpdir, datafiles): | 
| 66 | 70 |  | 
| 67 | 71 |  | 
| 68 | 72 |  # Test making a change using the workspace
 | 
| 73 | +@pytest.mark.skipif(MACHINE_ARCH != 'x86_64',
 | |
| 74 | +                    reason='Examples are writtent for x86_64')
 | |
| 69 | 75 |  @pytest.mark.skipif(not IS_LINUX, reason='Only available on linux')
 | 
| 70 | 76 |  @pytest.mark.datafiles(DATA_DIR)
 | 
| 71 | 77 |  def test_make_change_in_workspace(cli, tmpdir, datafiles):
 | 
| ... | ... | @@ -3,7 +3,7 @@ import pytest | 
| 3 | 3 |  | 
| 4 | 4 |  from tests.testutils import cli_integration as cli
 | 
| 5 | 5 |  from tests.testutils.integration import assert_contains
 | 
| 6 | -from tests.testutils.site import IS_LINUX
 | |
| 6 | +from tests.testutils.site import IS_LINUX, MACHINE_ARCH
 | |
| 7 | 7 |  | 
| 8 | 8 |  | 
| 9 | 9 |  pytestmark = pytest.mark.integration
 | 
| ... | ... | @@ -32,6 +32,8 @@ def workaround_setuptools_bug(project): | 
| 32 | 32 |  | 
| 33 | 33 |  # Test that a build upon flatpak runtime 'works' - we use the autotools sample
 | 
| 34 | 34 |  # amhello project for this.
 | 
| 35 | +@pytest.mark.skipif(MACHINE_ARCH != 'x86_64',
 | |
| 36 | +                    reason='Examples are writtent for x86_64')
 | |
| 35 | 37 |  @pytest.mark.skipif(not IS_LINUX, reason='Only available on linux')
 | 
| 36 | 38 |  @pytest.mark.datafiles(DATA_DIR)
 | 
| 37 | 39 |  def test_autotools_build(cli, tmpdir, datafiles):
 | 
| ... | ... | @@ -55,6 +57,8 @@ def test_autotools_build(cli, tmpdir, datafiles): | 
| 55 | 57 |  | 
| 56 | 58 |  | 
| 57 | 59 |  # Test running an executable built with autotools
 | 
| 60 | +@pytest.mark.skipif(MACHINE_ARCH != 'x86_64',
 | |
| 61 | +                    reason='Examples are writtent for x86_64')
 | |
| 58 | 62 |  @pytest.mark.skipif(not IS_LINUX, reason='Only available on linux')
 | 
| 59 | 63 |  @pytest.mark.datafiles(DATA_DIR)
 | 
| 60 | 64 |  def test_autotools_run(cli, tmpdir, datafiles):
 | 
| ... | ... | @@ -3,7 +3,7 @@ import pytest | 
| 3 | 3 |  | 
| 4 | 4 |  from tests.testutils import cli_integration as cli
 | 
| 5 | 5 |  from tests.testutils.integration import assert_contains
 | 
| 6 | -from tests.testutils.site import IS_LINUX
 | |
| 6 | +from tests.testutils.site import IS_LINUX, MACHINE_ARCH
 | |
| 7 | 7 |  | 
| 8 | 8 |  | 
| 9 | 9 |  pytestmark = pytest.mark.integration
 | 
| ... | ... | @@ -12,6 +12,8 @@ DATA_DIR = os.path.join( | 
| 12 | 12 |  )
 | 
| 13 | 13 |  | 
| 14 | 14 |  | 
| 15 | +@pytest.mark.skipif(MACHINE_ARCH != 'x86_64',
 | |
| 16 | +                    reason='Examples are writtent for x86_64')
 | |
| 15 | 17 |  @pytest.mark.skipif(not IS_LINUX, reason='Only available on linux')
 | 
| 16 | 18 |  @pytest.mark.datafiles(DATA_DIR)
 | 
| 17 | 19 |  def test_integration_commands_build(cli, tmpdir, datafiles):
 | 
| ... | ... | @@ -23,6 +25,8 @@ def test_integration_commands_build(cli, tmpdir, datafiles): | 
| 23 | 25 |  | 
| 24 | 26 |  | 
| 25 | 27 |  # Test running the executable
 | 
| 28 | +@pytest.mark.skipif(MACHINE_ARCH != 'x86_64',
 | |
| 29 | +                    reason='Examples are writtent for x86_64')
 | |
| 26 | 30 |  @pytest.mark.skipif(not IS_LINUX, reason='Only available on linux')
 | 
| 27 | 31 |  @pytest.mark.datafiles(DATA_DIR)
 | 
| 28 | 32 |  def test_integration_commands_run(cli, tmpdir, datafiles):
 | 
| ... | ... | @@ -3,7 +3,7 @@ import pytest | 
| 3 | 3 |  | 
| 4 | 4 |  from tests.testutils import cli_integration as cli
 | 
| 5 | 5 |  from tests.testutils.integration import assert_contains
 | 
| 6 | -from tests.testutils.site import IS_LINUX
 | |
| 6 | +from tests.testutils.site import IS_LINUX, MACHINE_ARCH
 | |
| 7 | 7 |  | 
| 8 | 8 |  pytestmark = pytest.mark.integration
 | 
| 9 | 9 |  | 
| ... | ... | @@ -13,6 +13,8 @@ DATA_DIR = os.path.join( | 
| 13 | 13 |  | 
| 14 | 14 |  | 
| 15 | 15 |  # Test that the project builds successfully
 | 
| 16 | +@pytest.mark.skipif(MACHINE_ARCH != 'x86_64',
 | |
| 17 | +                    reason='Examples are writtent for x86_64')
 | |
| 16 | 18 |  @pytest.mark.skipif(not IS_LINUX, reason='Only available on linux')
 | 
| 17 | 19 |  @pytest.mark.datafiles(DATA_DIR)
 | 
| 18 | 20 |  def test_build(cli, tmpdir, datafiles):
 | 
| ... | ... | @@ -23,6 +25,8 @@ def test_build(cli, tmpdir, datafiles): | 
| 23 | 25 |  | 
| 24 | 26 |  | 
| 25 | 27 |  # Test the callHello script works as expected.
 | 
| 28 | +@pytest.mark.skipif(MACHINE_ARCH != 'x86_64',
 | |
| 29 | +                    reason='Examples are writtent for x86_64')
 | |
| 26 | 30 |  @pytest.mark.skipif(not IS_LINUX, reason='Only available on linux')
 | 
| 27 | 31 |  @pytest.mark.datafiles(DATA_DIR)
 | 
| 28 | 32 |  def test_shell_call_hello(cli, tmpdir, datafiles):
 | 
| ... | ... | @@ -3,7 +3,7 @@ import pytest | 
| 3 | 3 |  | 
| 4 | 4 |  from tests.testutils import cli_integration as cli
 | 
| 5 | 5 |  from tests.testutils.integration import assert_contains
 | 
| 6 | -from tests.testutils.site import IS_LINUX
 | |
| 6 | +from tests.testutils.site import IS_LINUX, MACHINE_ARCH
 | |
| 7 | 7 |  | 
| 8 | 8 |  | 
| 9 | 9 |  pytestmark = pytest.mark.integration
 | 
| ... | ... | @@ -12,6 +12,8 @@ DATA_DIR = os.path.join( | 
| 12 | 12 |  )
 | 
| 13 | 13 |  | 
| 14 | 14 |  | 
| 15 | +@pytest.mark.skipif(MACHINE_ARCH != 'x86_64',
 | |
| 16 | +                    reason='Examples are writtent for x86_64')
 | |
| 15 | 17 |  @pytest.mark.skipif(not IS_LINUX, reason='Only available on linux')
 | 
| 16 | 18 |  @pytest.mark.datafiles(DATA_DIR)
 | 
| 17 | 19 |  def test_running_commands_build(cli, tmpdir, datafiles):
 | 
| ... | ... | @@ -23,6 +25,8 @@ def test_running_commands_build(cli, tmpdir, datafiles): | 
| 23 | 25 |  | 
| 24 | 26 |  | 
| 25 | 27 |  # Test running the executable
 | 
| 28 | +@pytest.mark.skipif(MACHINE_ARCH != 'x86_64',
 | |
| 29 | +                    reason='Examples are writtent for x86_64')
 | |
| 26 | 30 |  @pytest.mark.skipif(not IS_LINUX, reason='Only available on linux')
 | 
| 27 | 31 |  @pytest.mark.datafiles(DATA_DIR)
 | 
| 28 | 32 |  def test_running_commands_run(cli, tmpdir, datafiles):
 | 
| ... | ... | @@ -4,4 +4,4 @@ options: | 
| 4 | 4 |    arch:
 | 
| 5 | 5 |      type: arch
 | 
| 6 | 6 |      description: Example architecture option
 | 
| 7 | -    values: [ x86_32, x86_64 ] | |
| 7 | +    values: [ x86_32, x86_64, aarch64 ] | 
| 1 | +# Project config for frontend build test
 | |
| 2 | +name: test
 | |
| 3 | + | |
| 4 | +elephant-path: elements | 
| ... | ... | @@ -36,6 +36,19 @@ def test_show(cli, datafiles, target, format, expected): | 
| 36 | 36 |                               .format(expected, result.output))
 | 
| 37 | 37 |  | 
| 38 | 38 |  | 
| 39 | +@pytest.mark.datafiles(os.path.join(
 | |
| 40 | +    os.path.dirname(os.path.realpath(__file__)),
 | |
| 41 | +    "invalid_element_path",
 | |
| 42 | +))
 | |
| 43 | +def test_show_invalid_element_path(cli, datafiles):
 | |
| 44 | +    project = os.path.join(datafiles.dirname, datafiles.basename)
 | |
| 45 | +    result = cli.run(project=project, silent=True, args=[
 | |
| 46 | +        'show',
 | |
| 47 | +        "foo.bst"])
 | |
| 48 | + | |
| 49 | +    result.assert_main_error(ErrorDomain.LOAD, LoadErrorReason.INVALID_DATA)
 | |
| 50 | + | |
| 51 | + | |
| 39 | 52 |  @pytest.mark.datafiles(DATA_DIR)
 | 
| 40 | 53 |  @pytest.mark.parametrize("target,except_,expected", [
 | 
| 41 | 54 |      ('target.bst', 'import-bin.bst', ['import-dev.bst', 'compose-all.bst', 'target.bst']),
 | 
| ... | ... | @@ -7,6 +7,11 @@ description: | | 
| 7 | 7 |  | 
| 8 | 8 |  sources:
 | 
| 9 | 9 |    - kind: tar
 | 
| 10 | -    url: alpine:integration-tests-base.v1.x86_64.tar.xz
 | |
| 11 | 10 |      base-dir: ''
 | 
| 12 | -    ref: 3eb559250ba82b64a68d86d0636a6b127aa5f6d25d3601a79f79214dc9703639 | |
| 11 | +    (?):
 | |
| 12 | +    - arch == "x86_64":
 | |
| 13 | +        ref: 3eb559250ba82b64a68d86d0636a6b127aa5f6d25d3601a79f79214dc9703639
 | |
| 14 | +        url: "alpine:integration-tests-base.v1.x86_64.tar.xz"
 | |
| 15 | +    - arch == "aarch64":
 | |
| 16 | +        ref: 431fb5362032ede6f172e70a3258354a8fd71fcbdeb1edebc0e20968c792329a
 | |
| 17 | +        url: "alpine:integration-tests-base.v1.aarch64.tar.xz" | 
| ... | ... | @@ -9,6 +9,12 @@ options: | 
| 9 | 9 |      type: bool
 | 
| 10 | 10 |      description: Whether to expect a linux platform
 | 
| 11 | 11 |      default: True
 | 
| 12 | +  arch:
 | |
| 13 | +    type: arch
 | |
| 14 | +    description: Current architecture
 | |
| 15 | +    values:
 | |
| 16 | +      - x86_64
 | |
| 17 | +      - aarch64
 | |
| 12 | 18 |  split-rules:
 | 
| 13 | 19 |    test:
 | 
| 14 | 20 |      - |
 | 
| ... | ... | @@ -49,3 +49,5 @@ except ImportError: | 
| 49 | 49 |      HAVE_ARPY = False
 | 
| 50 | 50 |  | 
| 51 | 51 |  IS_LINUX = os.getenv('BST_FORCE_BACKEND', sys.platform).startswith('linux')
 | 
| 52 | + | |
| 53 | +_, _, _, _, MACHINE_ARCH = os.uname() | 
