You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@buildstream.apache.org by tv...@apache.org on 2022/04/05 10:04:40 UTC

[buildstream-plugins] 25/49: tests/sources/pip.py: Adding pip source test

This is an automated email from the ASF dual-hosted git repository.

tvb pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/buildstream-plugins.git

commit ad335d2d5394d2fed34fc4ed3a0e9b8468928e89
Author: Tristan van Berkom <tr...@codethink.co.uk>
AuthorDate: Sun Mar 20 17:41:45 2022 +0900

    tests/sources/pip.py: Adding pip source test
---
 tests/sources/__init__.py                     |  0
 tests/sources/pip.py                          | 71 +++++++++++++++++++++++++++
 tests/sources/pip/first-source-pip/target.bst |  6 +++
 tests/sources/pip/no-packages/file            |  1 +
 tests/sources/pip/no-packages/target.bst      |  6 +++
 tests/sources/pip/no-ref/file                 |  1 +
 tests/sources/pip/no-ref/target.bst           |  8 +++
 7 files changed, 93 insertions(+)

diff --git a/tests/sources/__init__.py b/tests/sources/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/tests/sources/pip.py b/tests/sources/pip.py
new file mode 100644
index 0000000..bf30b20
--- /dev/null
+++ b/tests/sources/pip.py
@@ -0,0 +1,71 @@
+# Pylint doesn't play well with fixtures and dependency injection from pytest
+# pylint: disable=redefined-outer-name
+
+import os
+import pytest
+
+from buildstream import _yaml
+from buildstream.exceptions import ErrorDomain
+from buildstream._testing import cli  # pylint: disable=unused-import
+from buildstream_plugins.sources.pip import _match_package_name
+
+DATA_DIR = os.path.join(os.path.dirname(os.path.realpath(__file__)), "pip",)
+
+
+def generate_project(project_dir):
+    project_file = os.path.join(project_dir, "project.conf")
+    _yaml.roundtrip_dump(
+        {
+            "name": "foo",
+            "min-version": "2.0",
+            "plugins": [{"origin": "pip", "package-name": "buildstream-plugins", "sources": ["pip"],}],
+        },
+        project_file,
+    )
+
+
+# Test that without ref, consistency is set appropriately.
+@pytest.mark.datafiles(os.path.join(DATA_DIR, "no-ref"))
+def test_no_ref(cli, datafiles):
+    project = str(datafiles)
+    generate_project(project)
+    assert cli.get_element_state(project, "target.bst") == "no reference"
+
+
+# Test that pip is not allowed to be the first source
+@pytest.mark.datafiles(os.path.join(DATA_DIR, "first-source-pip"))
+def test_first_source(cli, datafiles):
+    project = str(datafiles)
+    generate_project(project)
+    result = cli.run(project=project, args=["show", "target.bst"])
+    result.assert_main_error(ErrorDomain.ELEMENT, None)
+
+
+# Test that error is raised when neither packges nor requirements files
+# have been specified
+@pytest.mark.datafiles(os.path.join(DATA_DIR, "no-packages"))
+def test_no_packages(cli, datafiles):
+    project = str(datafiles)
+    generate_project(project)
+    result = cli.run(project=project, args=["show", "target.bst"])
+    result.assert_main_error(ErrorDomain.SOURCE, None)
+
+
+# Test that pip source parses tar ball names correctly for the ref
+@pytest.mark.parametrize(
+    "tarball, expected_name, expected_version",
+    [
+        ("dotted.package-0.9.8.tar.gz", "dotted.package", "0.9.8"),
+        ("hyphenated-package-2.6.0.tar.gz", "hyphenated-package", "2.6.0"),
+        ("underscore_pkg-3.1.0.tar.gz", "underscore_pkg", "3.1.0"),
+        ("numbers2and5-1.0.1.tar.gz", "numbers2and5", "1.0.1"),
+        ("multiple.dots.package-5.6.7.tar.gz", "multiple.dots.package", "5.6.7",),
+        ("multiple-hyphens-package-1.2.3.tar.gz", "multiple-hyphens-package", "1.2.3",),
+        ("multiple_underscore_pkg-3.4.5.tar.gz", "multiple_underscore_pkg", "3.4.5",),
+        ("shortversion-1.0.tar.gz", "shortversion", "1.0"),
+        ("longversion-1.2.3.4.tar.gz", "longversion", "1.2.3.4"),
+    ],
+)
+def test_match_package_name(tarball, expected_name, expected_version):
+    name, version = _match_package_name(tarball)
+    assert (expected_name, expected_version) == (name, version)
diff --git a/tests/sources/pip/first-source-pip/target.bst b/tests/sources/pip/first-source-pip/target.bst
new file mode 100644
index 0000000..e5f20ab
--- /dev/null
+++ b/tests/sources/pip/first-source-pip/target.bst
@@ -0,0 +1,6 @@
+kind: import
+description: pip should not be allowed to be the first source
+sources:
+- kind: pip
+  packages:
+  - flake8
diff --git a/tests/sources/pip/no-packages/file b/tests/sources/pip/no-packages/file
new file mode 100644
index 0000000..980a0d5
--- /dev/null
+++ b/tests/sources/pip/no-packages/file
@@ -0,0 +1 @@
+Hello World!
diff --git a/tests/sources/pip/no-packages/target.bst b/tests/sources/pip/no-packages/target.bst
new file mode 100644
index 0000000..0d8b948
--- /dev/null
+++ b/tests/sources/pip/no-packages/target.bst
@@ -0,0 +1,6 @@
+kind: import
+description: The kind of this element is irrelevant.
+sources:
+- kind: local
+  path: file
+- kind: pip
diff --git a/tests/sources/pip/no-ref/file b/tests/sources/pip/no-ref/file
new file mode 100644
index 0000000..980a0d5
--- /dev/null
+++ b/tests/sources/pip/no-ref/file
@@ -0,0 +1 @@
+Hello World!
diff --git a/tests/sources/pip/no-ref/target.bst b/tests/sources/pip/no-ref/target.bst
new file mode 100644
index 0000000..ec450b7
--- /dev/null
+++ b/tests/sources/pip/no-ref/target.bst
@@ -0,0 +1,8 @@
+kind: import
+description: The kind of this element is irrelevant.
+sources:
+- kind: local
+  path: file
+- kind: pip
+  packages:
+  - flake8