You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tvm.apache.org by GitBox <gi...@apache.org> on 2022/08/01 16:27:36 UTC

[GitHub] [tvm] areusch commented on a diff in pull request #12207: [microTVM] Refactor pytest fixtures

areusch commented on code in PR #12207:
URL: https://github.com/apache/tvm/pull/12207#discussion_r934705440


##########
python/tvm/micro/testing/pytest_plugin.py:
##########
@@ -0,0 +1,111 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+# pylint: disable=invalid-name,redefined-outer-name
+""" microTVM testing fixtures used to deduce testing argument
+    values from testing parameters """
+
+import pathlib
+import os
+import datetime
+import pytest
+
+from tvm.contrib.utils import tempdir
+
+from .utils import get_supported_boards
+
+
+def pytest_addoption(parser):
+    """Adds more pytest arguments"""
+    parser.addoption(
+        "--board",

Review Comment:
   maybe we should namespace this since it could be shown in the test `--help` for pytests outside of microtvm. `--microtvm-board`? same with the ones below.



##########
python/tvm/micro/testing/pytest_plugin.py:
##########
@@ -0,0 +1,111 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+# pylint: disable=invalid-name,redefined-outer-name
+""" microTVM testing fixtures used to deduce testing argument
+    values from testing parameters """
+
+import pathlib
+import os
+import datetime
+import pytest
+
+from tvm.contrib.utils import tempdir
+
+from .utils import get_supported_boards
+
+
+def pytest_addoption(parser):
+    """Adds more pytest arguments"""
+    parser.addoption(
+        "--board",
+        required=True,
+        choices=list(get_supported_boards("zephyr").keys())
+        + list(get_supported_boards("arduino").keys()),
+        help=(
+            "microTVM boards for tests. Board refers to instances"
+            "of microcontrollers/emulators defined in a platform."
+        ),
+    )
+    parser.addoption(
+        "--test-build-only",
+        action="store_true",
+        help="Only run tests that don't require physical hardware.",
+    )
+    parser.addoption(
+        "--tvm-debug",
+        action="store_true",
+        default=False,
+        help=(
+            "If set true, it will keep the project directory for debugging."
+            "Also, it will enable debug level logging in project generation."
+        ),
+    )
+
+
+@pytest.fixture(scope="session")
+def board(request):
+    return request.config.getoption("--board")
+
+
+@pytest.fixture(scope="session")
+def tvm_debug(request):
+    return request.config.getoption("--tvm-debug")
+
+
+def pytest_collection_modifyitems(config, items):
+    if config.getoption("--test-build-only"):
+        skip_hardware_tests = pytest.mark.skip(reason="--test-build-only was passed")
+        for item in items:
+            if "requires_hardware" in item.keywords:
+                item.add_marker(skip_hardware_tests)
+
+
+@pytest.fixture
+def workspace_dir(request, board, tvm_debug):
+    """Creates workspace directory for each test."""
+    parent_dir = pathlib.Path(os.path.dirname(request.module.__file__))
+    board_workspace = (
+        parent_dir / f"workspace_{board}" / datetime.datetime.now().strftime("%Y-%m-%dT%H-%M-%S")

Review Comment:
   could we add these to .gitignore somehow? ideally all the build artifacts would go in `build/` somewhere, but it is a little bit tricky since `cmake` really owns that dir. at least it would be good to guard against checking in this dir to the codebase.



##########
python/tvm/micro/testing/pytest_plugin.py:
##########
@@ -0,0 +1,111 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+# pylint: disable=invalid-name,redefined-outer-name
+""" microTVM testing fixtures used to deduce testing argument
+    values from testing parameters """
+
+import pathlib
+import os
+import datetime
+import pytest
+
+from tvm.contrib.utils import tempdir
+
+from .utils import get_supported_boards
+
+
+def pytest_addoption(parser):
+    """Adds more pytest arguments"""
+    parser.addoption(
+        "--board",
+        required=True,
+        choices=list(get_supported_boards("zephyr").keys())
+        + list(get_supported_boards("arduino").keys()),
+        help=(
+            "microTVM boards for tests. Board refers to instances"
+            "of microcontrollers/emulators defined in a platform."
+        ),
+    )
+    parser.addoption(
+        "--test-build-only",
+        action="store_true",
+        help="Only run tests that don't require physical hardware.",
+    )
+    parser.addoption(

Review Comment:
   we should probably either change this to `--microtvm-debug` or move it upwards. could start with `--microtvm-debug` for now?



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@tvm.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org