From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B22D3C433F5 for ; Thu, 23 Sep 2021 10:59:38 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 3FCC261107 for ; Thu, 23 Sep 2021 10:59:38 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 3FCC261107 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=nongnu.org Received: from localhost ([::1]:43772 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mTMS1-0000ol-A7 for qemu-devel@archiver.kernel.org; Thu, 23 Sep 2021 06:59:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:35210) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mTMPx-00063v-81 for qemu-devel@nongnu.org; Thu, 23 Sep 2021 06:57:30 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:48814) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mTMPv-0002Ho-3H for qemu-devel@nongnu.org; Thu, 23 Sep 2021 06:57:29 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1632394646; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=p7kWxEG3HntAECVgt4whAZ60S9Hr42s8N3YLCyRQutc=; b=gB9gVtWr8e1ENdGEi6mYjwMwCL4SscPcOwSA0ioMRGbZacVvU0RwcFtd81UV9gomGuhN+f J9wrZvHCCFaNJ2CaaRvzgDCG/oq/QmU6FiUfsxygsVXFcLRUudMECa0ueqBVUTX+xAkq3U WhD9P16/5qFzF0lz5wkdqZIpQkddUpw= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-353-_m29v4ZtN9WtrOh_LyA-sA-1; Thu, 23 Sep 2021 06:57:23 -0400 X-MC-Unique: _m29v4ZtN9WtrOh_LyA-sA-1 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 070FF9F92A; Thu, 23 Sep 2021 10:57:22 +0000 (UTC) Received: from redhat.com (unknown [10.39.194.235]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 52A625F707; Thu, 23 Sep 2021 10:57:18 +0000 (UTC) Date: Thu, 23 Sep 2021 12:57:16 +0200 From: Kevin Wolf To: John Snow Subject: Re: [PATCH 2/6] iotests: add warning for rogue 'qemu' packages Message-ID: References: <20210923001625.3996451-1-jsnow@redhat.com> <20210923001625.3996451-3-jsnow@redhat.com> MIME-Version: 1.0 In-Reply-To: <20210923001625.3996451-3-jsnow@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=kwolf@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Received-SPF: pass client-ip=216.205.24.124; envelope-from=kwolf@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -42 X-Spam_score: -4.3 X-Spam_bar: ---- X-Spam_report: (-4.3 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.473, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Hanna Reitz , Vladimir Sementsov-Ogievskiy , qemu-devel@nongnu.org, qemu-block@nongnu.org Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Am 23.09.2021 um 02:16 hat John Snow geschrieben: > Add a warning for when 'iotests' runs against a qemu namespace that > isn't the one in the source tree. This might occur if you have > (accidentally) installed the Python namespace package to your local > packages. > > (I'm not going to say that this is because I bit myself with this, > but. You can fill in the blanks.) > > Signed-off-by: John Snow > --- > tests/qemu-iotests/testenv.py | 21 ++++++++++++++++++++- > 1 file changed, 20 insertions(+), 1 deletion(-) > > diff --git a/tests/qemu-iotests/testenv.py b/tests/qemu-iotests/testenv.py > index 88104dace90..8a43b193af5 100644 > --- a/tests/qemu-iotests/testenv.py > +++ b/tests/qemu-iotests/testenv.py > @@ -16,6 +16,8 @@ > # along with this program. If not, see . > # > > +import importlib.util > +import logging > import os > import sys > import tempfile > @@ -25,7 +27,7 @@ > import random > import subprocess > import glob > -from typing import List, Dict, Any, Optional, ContextManager > +from typing import List, Dict, Any, Optional, ContextManager, cast > > DEF_GDB_OPTIONS = 'localhost:12345' > > @@ -112,6 +114,22 @@ def init_directories(self) -> None: > # Path where qemu goodies live in this source tree. > qemu_srctree_path = Path(__file__, '../../../python').resolve() > > + # warn if we happen to be able to find 'qemu' packages from an > + # unexpected location (i.e. the package is already installed in > + # the user's environment) > + qemu_spec = importlib.util.find_spec('qemu.qmp') > + if qemu_spec: > + spec_path = Path(cast(str, qemu_spec.origin)) You're casting Optional[str] to str here. The source type is not obvious from the local code, so unless you spend some time actively figuring it out, this could be casting anything to str. But even knowing this, just casting Optional away looks fishy anyway. Looking up the ModuleSpec docs, it seems okay to assume that it's never None in our case, but wouldn't it be much cleaner to just 'assert qemu_spec.origin' first and then use it without the cast? > + try: > + _ = spec_path.relative_to(qemu_srctree_path) > + except ValueError: > + self._logger.warning( > + "WARNING: 'qemu' package will be imported from outside " > + "the source tree!") > + self._logger.warning( > + "Importing from: '%s'", > + spec_path.parents[1]) > + > self.pythonpath = os.getenv('PYTHONPATH') > self.pythonpath = os.pathsep.join(filter(None, ( > self.source_iotests, > @@ -231,6 +249,7 @@ def __init__(self, imgfmt: str, imgproto: str, aiomode: str, > > self.build_root = os.path.join(self.build_iotests, '..', '..') > > + self._logger = logging.getLogger('qemu.iotests') > self.init_directories() > self.init_binaries() Looks good otherwise. Kevin