From patchwork Mon Oct 30 19:50:30 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alassane Yattara X-Patchwork-Id: 33126 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id EC368C00142 for ; Mon, 30 Oct 2023 19:51:14 +0000 (UTC) Received: from mail.savoirfairelinux.com (mail.savoirfairelinux.com [208.88.110.44]) by mx.groups.io with SMTP id smtpd.web11.159370.1698695471945533476 for ; Mon, 30 Oct 2023 12:51:12 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@savoirfairelinux.com header.s=DFC430D2-D198-11EC-948E-34200CB392D2 header.b=Kb0JeADI; spf=pass (domain: savoirfairelinux.com, ip: 208.88.110.44, mailfrom: alassane.yattara@savoirfairelinux.com) Received: from localhost (localhost [127.0.0.1]) by mail.savoirfairelinux.com (Postfix) with ESMTP id 32B5C9C332F for ; Mon, 30 Oct 2023 15:51:10 -0400 (EDT) Received: from mail.savoirfairelinux.com ([127.0.0.1]) by localhost (mail.savoirfairelinux.com [127.0.0.1]) (amavis, port 10032) with ESMTP id zdkBYB74FJsa; Mon, 30 Oct 2023 15:51:07 -0400 (EDT) Received: from localhost (localhost [127.0.0.1]) by mail.savoirfairelinux.com (Postfix) with ESMTP id A95E59C284C; Mon, 30 Oct 2023 15:51:07 -0400 (EDT) DKIM-Filter: OpenDKIM Filter v2.10.3 mail.savoirfairelinux.com A95E59C284C DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=savoirfairelinux.com; s=DFC430D2-D198-11EC-948E-34200CB392D2; t=1698695467; bh=cubH3MRaAVO5vupGVR+sNvHO6ZC5u9ghm5HvtaTi7+I=; h=From:To:Date:Message-Id:MIME-Version; b=Kb0JeADIstpbxO7vMUJyX0zXW25BzGQ3Yy5MhKJsdM1bJdqMbeP/mbEoyJ7srZNr+ uC5yC/BWOrHg35MRxkIo7WnGjiFEytbrCzNy/iwTXL/feTQNseC56aMevGl3LEgshZ crTbe6Klhxy9D0Zs4iW3IdbAiZV4uBXpMlmUIOpUQ07Tl+WGDl1EFvZxcenioABCQK CA9n7svBHlpmfnwN8urtp+fFOlxzzGyDUl/DPwsX2F0nRjP+dctIluWJ2iC1q4r4EI iXYrYZwayiop5xCrXd/vvtWmTOpTBTgqjpnTh8dasA9Pl0Tcue6zuV1aOiWlaUJQ8Z ukfnNtNejNmIQ== X-Virus-Scanned: amavis at mail.savoirfairelinux.com Received: from mail.savoirfairelinux.com ([127.0.0.1]) by localhost (mail.savoirfairelinux.com [127.0.0.1]) (amavis, port 10026) with ESMTP id yRownN7y7D3J; Mon, 30 Oct 2023 15:51:07 -0400 (EDT) Received: from localhost.localdomain (unknown [192.168.51.254]) by mail.savoirfairelinux.com (Postfix) with ESMTPSA id 048B29C2848; Mon, 30 Oct 2023 15:51:06 -0400 (EDT) From: Alassane Yattara To: bitbake-devel@lists.openembedded.org Cc: Alassane Yattara Subject: [PATCH 1/8] Toaster: Update toaster-requirements.txt to add pytest and some plugin's Date: Mon, 30 Oct 2023 20:50:30 +0100 Message-Id: <20231030195037.232912-1-alassane.yattara@savoirfairelinux.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Mon, 30 Oct 2023 19:51:14 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/bitbake-devel/message/15326 The pytest framework makes it easy to write small, readable tests, and can scale to support complex functional testing for applications and libraries. - Pytest-html is a plugin for pytest that generates a HTML report for test results. - Pytest-django allows us to test Django project/applications with the pytest testing tool. - Pytest-env is a pytest plugin that enables us to set environment variables in a pytest.ini or pyproject.toml file Signed-off-by: Alassane Yattara Signed-off-by: Alassane Yattara Reviewed-by: Tim Orling --- toaster-requirements.txt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/toaster-requirements.txt b/toaster-requirements.txt index d8e48b7f..19bf6fd2 100644 --- a/toaster-requirements.txt +++ b/toaster-requirements.txt @@ -2,3 +2,8 @@ Django>4.2,<4.3 beautifulsoup4>=4.4.0 pytz django-log-viewer==1.1.7 +pytest==7.4.2 +pytest-django==4.5.2 +pytest-env==1.1.0 +pytest-html==4.0.2 +pytest-metadata==3.0.0 From patchwork Mon Oct 30 19:50:31 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alassane Yattara X-Patchwork-Id: 33122 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id C59D0C4332F for ; Mon, 30 Oct 2023 19:51:14 +0000 (UTC) Received: from mail.savoirfairelinux.com (mail.savoirfairelinux.com [208.88.110.44]) by mx.groups.io with SMTP id smtpd.web10.159174.1698695471682002168 for ; Mon, 30 Oct 2023 12:51:12 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@savoirfairelinux.com header.s=DFC430D2-D198-11EC-948E-34200CB392D2 header.b=cW0thYrV; spf=pass (domain: savoirfairelinux.com, ip: 208.88.110.44, mailfrom: alassane.yattara@savoirfairelinux.com) Received: from localhost (localhost [127.0.0.1]) by mail.savoirfairelinux.com (Postfix) with ESMTP id 45AD59C284C for ; Mon, 30 Oct 2023 15:51:10 -0400 (EDT) Received: from mail.savoirfairelinux.com ([127.0.0.1]) by localhost (mail.savoirfairelinux.com [127.0.0.1]) (amavis, port 10032) with ESMTP id VldZ5c-60Hab; Mon, 30 Oct 2023 15:51:09 -0400 (EDT) Received: from localhost (localhost [127.0.0.1]) by mail.savoirfairelinux.com (Postfix) with ESMTP id E18F49C2A91; Mon, 30 Oct 2023 15:51:08 -0400 (EDT) DKIM-Filter: OpenDKIM Filter v2.10.3 mail.savoirfairelinux.com E18F49C2A91 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=savoirfairelinux.com; s=DFC430D2-D198-11EC-948E-34200CB392D2; t=1698695468; bh=BJJCHJagV8wWB7OftgGDU0y8IUJUDqTzkxwOyUfE7YE=; h=From:To:Date:Message-Id:MIME-Version; b=cW0thYrVXlOVnVHX1Ang4mqoR84EuI19ECHU7Q3OZBtzm6yPeGSn8+atJ+csghAKT SZqNY1dS6Hk4W+rqX2VRnLoqF97yLxam/eUvrevWnVQ7USa8Bz9kii0oVB2WfFiS44 dPIoDifZUOQ05uv6zq2JRjs2xkQ4n7CwV/Bi8o5u6KpnIp+yyqERccp6QNCthiHE1E 9RCuUMfUazvgPxLPL5Dta1wyIOQ3hXb7IjjMnlydqJK2drLvvkFgpg/TkbuF6KEdmf ltLR/c7sxZwQCdvMqVbM2DjC6YESeZ2PKR8QhY7fcgdj2JEeP4AkzenJ82HBny4Tg8 aqvEIRukP1WBQ== X-Virus-Scanned: amavis at mail.savoirfairelinux.com Received: from mail.savoirfairelinux.com ([127.0.0.1]) by localhost (mail.savoirfairelinux.com [127.0.0.1]) (amavis, port 10026) with ESMTP id brulBryg4fWi; Mon, 30 Oct 2023 15:51:08 -0400 (EDT) Received: from localhost.localdomain (unknown [192.168.51.254]) by mail.savoirfairelinux.com (Postfix) with ESMTPSA id 089C69C2848; Mon, 30 Oct 2023 15:51:07 -0400 (EDT) From: Alassane Yattara To: bitbake-devel@lists.openembedded.org Cc: Alassane Yattara Subject: [PATCH 2/8] Toaster: Update orm.models to catch error ProcessLookupError Date: Mon, 30 Oct 2023 20:50:31 +0100 Message-Id: <20231030195037.232912-2-alassane.yattara@savoirfairelinux.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231030195037.232912-1-alassane.yattara@savoirfairelinux.com> References: <20231030195037.232912-1-alassane.yattara@savoirfairelinux.com> MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Mon, 30 Oct 2023 19:51:14 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/bitbake-devel/message/15325 Signed-off-by: Alassane Yattara --- lib/toaster/orm/models.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/toaster/orm/models.py b/lib/toaster/orm/models.py index 0d503a51..4f6d2147 100644 --- a/lib/toaster/orm/models.py +++ b/lib/toaster/orm/models.py @@ -1389,9 +1389,6 @@ class Machine(models.Model): return "Machine " + self.name + "(" + self.description + ")" - - - class BitbakeVersion(models.Model): name = models.CharField(max_length=32, unique = True) @@ -1838,6 +1835,7 @@ class LogMessage(models.Model): def __str__(self): return force_bytes('%s %s %s' % (self.get_level_display(), self.message, self.build)) + def invalidate_cache(**kwargs): from django.core.cache import cache try: @@ -1845,6 +1843,7 @@ def invalidate_cache(**kwargs): except Exception as e: logger.warning("Problem with cache backend: Failed to clear cache: %s" % e) + def signal_runbuilds(): """Send SIGUSR1 to runbuilds process""" try: @@ -1853,6 +1852,9 @@ def signal_runbuilds(): os.kill(int(pidf.read()), SIGUSR1) except FileNotFoundError: logger.info("Stopping existing runbuilds: no current process found") + except ProcessLookupError: + pass + class Distro(models.Model): search_allowed_fields = ["name", "description", "layer_version__layer__name"] From patchwork Mon Oct 30 19:50:32 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alassane Yattara X-Patchwork-Id: 33124 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id DD610C4167B for ; Mon, 30 Oct 2023 19:51:14 +0000 (UTC) Received: from mail.savoirfairelinux.com (mail.savoirfairelinux.com [208.88.110.44]) by mx.groups.io with SMTP id smtpd.web11.159369.1698695471897144561 for ; Mon, 30 Oct 2023 12:51:12 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@savoirfairelinux.com header.s=DFC430D2-D198-11EC-948E-34200CB392D2 header.b=WE2OMUnI; spf=pass (domain: savoirfairelinux.com, ip: 208.88.110.44, mailfrom: alassane.yattara@savoirfairelinux.com) Received: from localhost (localhost [127.0.0.1]) by mail.savoirfairelinux.com (Postfix) with ESMTP id C7C499C2A91 for ; Mon, 30 Oct 2023 15:51:10 -0400 (EDT) Received: from mail.savoirfairelinux.com ([127.0.0.1]) by localhost (mail.savoirfairelinux.com [127.0.0.1]) (amavis, port 10032) with ESMTP id weXqdv0XqFJJ; Mon, 30 Oct 2023 15:51:10 -0400 (EDT) Received: from localhost (localhost [127.0.0.1]) by mail.savoirfairelinux.com (Postfix) with ESMTP id 23C2D9C3231; Mon, 30 Oct 2023 15:51:10 -0400 (EDT) DKIM-Filter: OpenDKIM Filter v2.10.3 mail.savoirfairelinux.com 23C2D9C3231 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=savoirfairelinux.com; s=DFC430D2-D198-11EC-948E-34200CB392D2; t=1698695470; bh=SN/3n4SflF+dxPR7+x95Wn5UYFxlw/gh2fXVVpRUu14=; h=From:To:Date:Message-Id:MIME-Version; b=WE2OMUnIfiM183bFYCdnxhWC0LhdjqX4DtqIYEgMfyIQzd3DzAjF11iMccUKQg/FW f8VyjgxjwBRx7Zj2hmYYgxU61o28Z7JC/gQUG7nV4kGG0t9Kw+lzG/CPVHexq7Pp6w S1pnIBdb/VmisjvI5Pek1Enix2Tq+o8baNg8tbvoPnGZ7hmBSkOjTxXm5PTWLEOmJY L5fWop/Dk5hqj6Yx8W9Xp0K4zKxnYrqvYSWO2cD95CbtRPzPQRLkFmFuyiEyOz36T8 eFIz2rpTDQwDGJ8K6k4JccXr/H4w74W1CZ53GxOHSlqIxWbXp6pblqMK0lpHBncxgL iE8ZHWdmiXdyQ== X-Virus-Scanned: amavis at mail.savoirfairelinux.com Received: from mail.savoirfairelinux.com ([127.0.0.1]) by localhost (mail.savoirfairelinux.com [127.0.0.1]) (amavis, port 10026) with ESMTP id GXKGAUgZsxQ8; Mon, 30 Oct 2023 15:51:10 -0400 (EDT) Received: from localhost.localdomain (unknown [192.168.51.254]) by mail.savoirfairelinux.com (Postfix) with ESMTPSA id 405929C2848; Mon, 30 Oct 2023 15:51:09 -0400 (EDT) From: Alassane Yattara To: bitbake-devel@lists.openembedded.org Cc: Alassane Yattara Subject: [PATCH 3/8] Toaster: Bug-fix pytest and Failed: Database access not allowed Date: Mon, 30 Oct 2023 20:50:32 +0100 Message-Id: <20231030195037.232912-3-alassane.yattara@savoirfairelinux.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231030195037.232912-1-alassane.yattara@savoirfairelinux.com> References: <20231030195037.232912-1-alassane.yattara@savoirfairelinux.com> MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Mon, 30 Oct 2023 19:51:14 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/bitbake-devel/message/15327 Remove load and create build environment from tests/functional/functional_helpers Signed-off-by: Alassane Yattara --- lib/toaster/tests/functional/functional_helpers.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/lib/toaster/tests/functional/functional_helpers.py b/lib/toaster/tests/functional/functional_helpers.py index c3191f66..b80d403b 100644 --- a/lib/toaster/tests/functional/functional_helpers.py +++ b/lib/toaster/tests/functional/functional_helpers.py @@ -15,8 +15,6 @@ import time import re from tests.browser.selenium_helpers_base import SeleniumTestCaseBase -from tests.builds.buildtest import load_build_environment -from bldcontrol.models import BuildEnvironment from selenium.webdriver.common.by import By from selenium.common.exceptions import NoSuchElementException @@ -33,10 +31,6 @@ class SeleniumFunctionalTestCase(SeleniumTestCaseBase): raise RuntimeError("Please initialise django with the tests settings: " \ "DJANGO_SETTINGS_MODULE='toastermain.settings_test'") - if BuildEnvironment.objects.count() == 0: - BuildEnvironment.objects.create(betype=BuildEnvironment.TYPE_LOCAL) - load_build_environment() - # start toaster cmd = "bash -c 'source toaster start'" p = subprocess.Popen( From patchwork Mon Oct 30 19:50:33 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alassane Yattara X-Patchwork-Id: 33125 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id DD7E6C41535 for ; Mon, 30 Oct 2023 19:51:14 +0000 (UTC) Received: from mail.savoirfairelinux.com (mail.savoirfairelinux.com [208.88.110.44]) by mx.groups.io with SMTP id smtpd.web10.159176.1698695472665929342 for ; Mon, 30 Oct 2023 12:51:12 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@savoirfairelinux.com header.s=DFC430D2-D198-11EC-948E-34200CB392D2 header.b=GA9vUfWW; spf=pass (domain: savoirfairelinux.com, ip: 208.88.110.44, mailfrom: alassane.yattara@savoirfairelinux.com) Received: from localhost (localhost [127.0.0.1]) by mail.savoirfairelinux.com (Postfix) with ESMTP id E72089C334C for ; Mon, 30 Oct 2023 15:51:11 -0400 (EDT) Received: from mail.savoirfairelinux.com ([127.0.0.1]) by localhost (mail.savoirfairelinux.com [127.0.0.1]) (amavis, port 10032) with ESMTP id 8JT4GPrCUOPf; Mon, 30 Oct 2023 15:51:11 -0400 (EDT) Received: from localhost (localhost [127.0.0.1]) by mail.savoirfairelinux.com (Postfix) with ESMTP id 7D05A9C332D; Mon, 30 Oct 2023 15:51:11 -0400 (EDT) DKIM-Filter: OpenDKIM Filter v2.10.3 mail.savoirfairelinux.com 7D05A9C332D DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=savoirfairelinux.com; s=DFC430D2-D198-11EC-948E-34200CB392D2; t=1698695471; bh=DRXCA7E2TGMUv0v25Wxw/oByR5RBeNsF5Xe+aiJyKEI=; h=From:To:Date:Message-Id:MIME-Version; b=GA9vUfWWz2tTyHVHL5HO1v8BJuiLYvNy+u2gYSBLjMm1yWSsv2HwJIKY+aC28U/q2 pQGPYug7IF8GQjok5mqBdwj+Pau8rFFrldfAWzhSSFS9DA+k2uzYLYOYcVYmZL7eBO RyMrLhqkyMbGLDPjIFPZFo9LOSfytx+8RXwvEoNazEvSRT5UJ+KWwPUbZq/2jbXbab jsGC9ozE0Lliuy+vTHQvQhMr097OLx7LNlYJrJFBY1ysUOF5pNunwwKdE2xKm54+Zr tJby3DARUf9lt6vOhhgGJUbZJcu0ZjXudZ/Gqtn2ez3Sen1tOCRdhAWdpdR5MX9Sbn adS8jDlIkLWFQ== X-Virus-Scanned: amavis at mail.savoirfairelinux.com Received: from mail.savoirfairelinux.com ([127.0.0.1]) by localhost (mail.savoirfairelinux.com [127.0.0.1]) (amavis, port 10026) with ESMTP id hx2XC9jjUKx8; Mon, 30 Oct 2023 15:51:11 -0400 (EDT) Received: from localhost.localdomain (unknown [192.168.51.254]) by mail.savoirfairelinux.com (Postfix) with ESMTPSA id 787729C2848; Mon, 30 Oct 2023 15:51:10 -0400 (EDT) From: Alassane Yattara To: bitbake-devel@lists.openembedded.org Cc: Alassane Yattara Subject: [PATCH 4/8] Toaster: fixed pytest error: Database access not allowed, use the "django_db" Date: Mon, 30 Oct 2023 20:50:33 +0100 Message-Id: <20231030195037.232912-4-alassane.yattara@savoirfairelinux.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231030195037.232912-1-alassane.yattara@savoirfairelinux.com> References: <20231030195037.232912-1-alassane.yattara@savoirfairelinux.com> MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Mon, 30 Oct 2023 19:51:14 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/bitbake-devel/message/15328 Pytest failed on functional/test_functional_basic because database access not allowed - we should use "django_db" fixture to allowed db access Note: Pytest-django takes a conservative approach to enabling database access. By default your tests will fail if they try to access the database. Only if you explicitly request database access will this be allowed. Signed-off-by: Alassane Yattara Signed-off-by: Alassane Yattara --- lib/toaster/tests/functional/test_functional_basic.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/toaster/tests/functional/test_functional_basic.py b/lib/toaster/tests/functional/test_functional_basic.py index b0def544..7e9be91c 100644 --- a/lib/toaster/tests/functional/test_functional_basic.py +++ b/lib/toaster/tests/functional/test_functional_basic.py @@ -8,6 +8,7 @@ # import re, time +import pytest from django.urls import reverse from tests.functional.functional_helpers import SeleniumFunctionalTestCase from orm.models import Project @@ -16,6 +17,7 @@ from selenium.webdriver.common.by import By class FuntionalTestBasic(SeleniumFunctionalTestCase): # testcase (1514) + @pytest.mark.django_db def test_create_slenium_project(self): project_name = 'selenium-project' self.get(reverse('newproject')) From patchwork Mon Oct 30 19:50:34 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alassane Yattara X-Patchwork-Id: 33123 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id C6F05C4167D for ; Mon, 30 Oct 2023 19:51:14 +0000 (UTC) Received: from mail.savoirfairelinux.com (mail.savoirfairelinux.com [208.88.110.44]) by mx.groups.io with SMTP id smtpd.web11.159372.1698695473575983290 for ; Mon, 30 Oct 2023 12:51:13 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@savoirfairelinux.com header.s=DFC430D2-D198-11EC-948E-34200CB392D2 header.b=vF2sXKOg; spf=pass (domain: savoirfairelinux.com, ip: 208.88.110.44, mailfrom: alassane.yattara@savoirfairelinux.com) Received: from localhost (localhost [127.0.0.1]) by mail.savoirfairelinux.com (Postfix) with ESMTP id EE8C09C2A91 for ; Mon, 30 Oct 2023 15:51:12 -0400 (EDT) Received: from mail.savoirfairelinux.com ([127.0.0.1]) by localhost (mail.savoirfairelinux.com [127.0.0.1]) (amavis, port 10032) with ESMTP id jEfsg3zxn6kS; Mon, 30 Oct 2023 15:51:12 -0400 (EDT) Received: from localhost (localhost [127.0.0.1]) by mail.savoirfairelinux.com (Postfix) with ESMTP id 90D7E9C332D; Mon, 30 Oct 2023 15:51:12 -0400 (EDT) DKIM-Filter: OpenDKIM Filter v2.10.3 mail.savoirfairelinux.com 90D7E9C332D DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=savoirfairelinux.com; s=DFC430D2-D198-11EC-948E-34200CB392D2; t=1698695472; bh=p2J+od2B1eMImjzJ6UqaVnL/r0kbwNU9wZ1YSW48g4U=; h=From:To:Date:Message-Id:MIME-Version; b=vF2sXKOgKDgD+ADs+HTnDQ01QFwg6ZtvyrxbNFJWT1WxH7mux6Y+VG0LJZIAdYFJh 24IoRBA4N0Ba1b8AgTINLIxL2IWftQ9zYMmO5Cjrj/O+5U4+oGkPmtBWPZGH2y2W7c pSioAP/OBgnFUeGpEA83+rqt/5yU/zFtWq7MW8AwMKpHpvtMmp3Xbp61KIUuOZIiE9 AjQz5Y4v/MKPTS65O5fsJkCFVbIwsbpNgvoG5A4QlhVONnYwmwhykyb9JH2Pa+OxND o9/glPoarksfWWXe+aU9tvtgB+I23DK/LkAqe93Zo+ZDnzcZoDPg5EDlhjVGX4VyXx z51XU1F3KS8/A== X-Virus-Scanned: amavis at mail.savoirfairelinux.com Received: from mail.savoirfairelinux.com ([127.0.0.1]) by localhost (mail.savoirfairelinux.com [127.0.0.1]) (amavis, port 10026) with ESMTP id L3SSH1OXrv2z; Mon, 30 Oct 2023 15:51:12 -0400 (EDT) Received: from localhost.localdomain (unknown [192.168.51.254]) by mail.savoirfairelinux.com (Postfix) with ESMTPSA id B00FE9C2848; Mon, 30 Oct 2023 15:51:11 -0400 (EDT) From: Alassane Yattara To: bitbake-devel@lists.openembedded.org Cc: Alassane Yattara Subject: [PATCH 5/8] Toaster: Bug-fix django.db.utils.IntegrityError: Problem installing fixture Date: Mon, 30 Oct 2023 20:50:34 +0100 Message-Id: <20231030195037.232912-5-alassane.yattara@savoirfairelinux.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231030195037.232912-1-alassane.yattara@savoirfairelinux.com> References: <20231030195037.232912-1-alassane.yattara@savoirfairelinux.com> MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Mon, 30 Oct 2023 19:51:14 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/bitbake-devel/message/15329 toastergui-unittest-data.xml fixture contains a release objects with name="master" or an release with same name seem existing - Change release name and fix bitbakeversion instead of bitbake_version Signed-off-by: Alassane Yattara Reviewed-by: Tim Orling --- lib/toaster/toastergui/fixtures/toastergui-unittest-data.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/toaster/toastergui/fixtures/toastergui-unittest-data.xml b/lib/toaster/toastergui/fixtures/toastergui-unittest-data.xml index 1d522f88..df106934 100644 --- a/lib/toaster/toastergui/fixtures/toastergui-unittest-data.xml +++ b/lib/toaster/toastergui/fixtures/toastergui-unittest-data.xml @@ -19,9 +19,9 @@ poky_distro2 description - master + foo_master master project - 1 + 1 a test project From patchwork Mon Oct 30 19:50:35 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alassane Yattara X-Patchwork-Id: 33128 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id E081EC4332F for ; Mon, 30 Oct 2023 19:51:24 +0000 (UTC) Received: from mail.savoirfairelinux.com (mail.savoirfairelinux.com [208.88.110.44]) by mx.groups.io with SMTP id smtpd.web10.159177.1698695474814613375 for ; Mon, 30 Oct 2023 12:51:14 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@savoirfairelinux.com header.s=DFC430D2-D198-11EC-948E-34200CB392D2 header.b=Jng1am1t; spf=pass (domain: savoirfairelinux.com, ip: 208.88.110.44, mailfrom: alassane.yattara@savoirfairelinux.com) Received: from localhost (localhost [127.0.0.1]) by mail.savoirfairelinux.com (Postfix) with ESMTP id 32EE49C2848 for ; Mon, 30 Oct 2023 15:51:14 -0400 (EDT) Received: from mail.savoirfairelinux.com ([127.0.0.1]) by localhost (mail.savoirfairelinux.com [127.0.0.1]) (amavis, port 10032) with ESMTP id Wyec9vzEUNGZ; Mon, 30 Oct 2023 15:51:13 -0400 (EDT) Received: from localhost (localhost [127.0.0.1]) by mail.savoirfairelinux.com (Postfix) with ESMTP id C986C9C284C; Mon, 30 Oct 2023 15:51:13 -0400 (EDT) DKIM-Filter: OpenDKIM Filter v2.10.3 mail.savoirfairelinux.com C986C9C284C DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=savoirfairelinux.com; s=DFC430D2-D198-11EC-948E-34200CB392D2; t=1698695473; bh=9ZmjA4jVXRKl7D0tU2mh3T4CRmbXyy0ig+56aOGFxaw=; h=From:To:Date:Message-Id:MIME-Version; b=Jng1am1tz6gbrnSz7xuK6SvoLy+bMSep/IkshULBW6GmAfO5wn6xa2v5Uh0iAmZQo fneUVtrfOmVKhPvnITvXrFfxqJvY7hpTY9l1DXxUB+crn2PyBupJF7u/8JvHWs72f8 zoUbHLM7ttl4vp5LsScgeyihyqAztRLfLleZilCj9Fv0v6nKVpkJvbOGywn+90jrW6 8GVLUYD8WBd49UT1VYBMECVwfv/enAhaSMmGNZuMADxG6dEIZnGKxQD4ppneghK6fI lBOQXi9BlUqZhuGWlmj7VR1Ll+t0ZHJ8v0eTRNk0Eje7L922bOAcCBghOJYaspDALM 1McfENdUOwWJQ== X-Virus-Scanned: amavis at mail.savoirfairelinux.com Received: from mail.savoirfairelinux.com ([127.0.0.1]) by localhost (mail.savoirfairelinux.com [127.0.0.1]) (amavis, port 10026) with ESMTP id SwWzVNup08Fc; Mon, 30 Oct 2023 15:51:13 -0400 (EDT) Received: from localhost.localdomain (unknown [192.168.51.254]) by mail.savoirfairelinux.com (Postfix) with ESMTPSA id E7EDA9C2848; Mon, 30 Oct 2023 15:51:12 -0400 (EDT) From: Alassane Yattara To: bitbake-devel@lists.openembedded.org Cc: Alassane Yattara Subject: [PATCH 6/8] Toaster: Move toaster tests requirements in bitbake/lib/toaster/toaster-tests-requirements Date: Mon, 30 Oct 2023 20:50:35 +0100 Message-Id: <20231030195037.232912-6-alassane.yattara@savoirfairelinux.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231030195037.232912-1-alassane.yattara@savoirfairelinux.com> References: <20231030195037.232912-1-alassane.yattara@savoirfairelinux.com> MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Mon, 30 Oct 2023 19:51:24 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/bitbake-devel/message/15330 To make difference between bitbake and toaster python requirements, a dedicated requirements file is created for toaster in root of toaster dir. Signed-off-by: Alassane Yattara --- lib/toaster/tests/toaster-tests-requirements.txt | 5 +++++ toaster-requirements.txt | 5 ----- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/toaster/tests/toaster-tests-requirements.txt b/lib/toaster/tests/toaster-tests-requirements.txt index f30ac070..7109c625 100644 --- a/lib/toaster/tests/toaster-tests-requirements.txt +++ b/lib/toaster/tests/toaster-tests-requirements.txt @@ -1 +1,6 @@ selenium>=4.13.0 +pytest==7.4.2 +pytest-django==4.5.2 +pytest-env==1.1.0 +pytest-html==4.0.2 +pytest-metadata==3.0.0 diff --git a/toaster-requirements.txt b/toaster-requirements.txt index 19bf6fd2..d8e48b7f 100644 --- a/toaster-requirements.txt +++ b/toaster-requirements.txt @@ -2,8 +2,3 @@ Django>4.2,<4.3 beautifulsoup4>=4.4.0 pytz django-log-viewer==1.1.7 -pytest==7.4.2 -pytest-django==4.5.2 -pytest-env==1.1.0 -pytest-html==4.0.2 -pytest-metadata==3.0.0 From patchwork Mon Oct 30 19:50:36 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alassane Yattara X-Patchwork-Id: 33129 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id ED173C00142 for ; Mon, 30 Oct 2023 19:51:24 +0000 (UTC) Received: from mail.savoirfairelinux.com (mail.savoirfairelinux.com [208.88.110.44]) by mx.groups.io with SMTP id smtpd.web10.159178.1698695476169487000 for ; Mon, 30 Oct 2023 12:51:16 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@savoirfairelinux.com header.s=DFC430D2-D198-11EC-948E-34200CB392D2 header.b=DFyOg25j; spf=pass (domain: savoirfairelinux.com, ip: 208.88.110.44, mailfrom: alassane.yattara@savoirfairelinux.com) Received: from localhost (localhost [127.0.0.1]) by mail.savoirfairelinux.com (Postfix) with ESMTP id 8C5A29C2848 for ; Mon, 30 Oct 2023 15:51:15 -0400 (EDT) Received: from mail.savoirfairelinux.com ([127.0.0.1]) by localhost (mail.savoirfairelinux.com [127.0.0.1]) (amavis, port 10032) with ESMTP id uzGb42f-6hNv; Mon, 30 Oct 2023 15:51:15 -0400 (EDT) Received: from localhost (localhost [127.0.0.1]) by mail.savoirfairelinux.com (Postfix) with ESMTP id EBF0E9C332F; Mon, 30 Oct 2023 15:51:14 -0400 (EDT) DKIM-Filter: OpenDKIM Filter v2.10.3 mail.savoirfairelinux.com EBF0E9C332F DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=savoirfairelinux.com; s=DFC430D2-D198-11EC-948E-34200CB392D2; t=1698695474; bh=+5uZZBBn17ErJhYtUSTuu9jVZ2vwwTzGT4O4Jw8pWWc=; h=From:To:Date:Message-Id:MIME-Version; b=DFyOg25jv7b4gnRiRIYrpc0mRZL3bok7xXe+1t31MPxWnoM66J6+YcWy0nyJ+AD5Y 5dX+FlQuW3Xl9SKj7rqch4uoPS1uvxsQ0jU6vBn+xigRrIns9gCPufmiyy7E1J2HT2 jXVuv2qcPiv07ORlpoDHi/tf45KFd2WPORf7ECykWuw0ITfVEPDjnBQUE/uKwD7SAP BmARt7gq/+W/S0wXLNQiHI+iGP1RhdySY+G8vmXRE4po8nHqw/6iU4jH/mVqI6aeDB MCRKwEWTNt54CqdqZGt9m9kQNvS2PUG1Vp0MLMSR7QuAODZfPuqF1gU7RIU/+qGgsr 1th/juskZbkZw== X-Virus-Scanned: amavis at mail.savoirfairelinux.com Received: from mail.savoirfairelinux.com ([127.0.0.1]) by localhost (mail.savoirfairelinux.com [127.0.0.1]) (amavis, port 10026) with ESMTP id BDTsOepzIn-N; Mon, 30 Oct 2023 15:51:14 -0400 (EDT) Received: from localhost.localdomain (unknown [192.168.51.254]) by mail.savoirfairelinux.com (Postfix) with ESMTPSA id 44A719C284C; Mon, 30 Oct 2023 15:51:13 -0400 (EDT) From: Alassane Yattara To: bitbake-devel@lists.openembedded.org Cc: Alassane Yattara Subject: [PATCH 7/8] Toaster: fixed: Tests fail when executed one after the other out of sequence Date: Mon, 30 Oct 2023 20:50:36 +0100 Message-Id: <20231030195037.232912-7-alassane.yattara@savoirfairelinux.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231030195037.232912-1-alassane.yattara@savoirfairelinux.com> References: <20231030195037.232912-1-alassane.yattara@savoirfairelinux.com> MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Mon, 30 Oct 2023 19:51:24 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/bitbake-devel/message/15331 As mentionned in earlier commit, pytest-django takes a conservative approach to enabling database access. By default our tests will fail if they try to access the database, Only if we explicitly request database access will this be allowed, using pytest marks to tell pytest-django our test needs database access. A side effect of pytest mark, is test_case method marked is execute out of scope of its module class, which create an inconsistance sequence and make fails followings tests. The scope of the ordering is global per default, e.g. tests with lower ordinal numbers are always executed before tests with higher numbers in the same test session, regardless of the module and class they reside in. This can be changed by using the --order-scope option from module pytest-order. To fix that i added execution order to tests suite using pytest-order. Signed-off-by: Alassane Yattara Reviewed-by: Tim Orling --- lib/toaster/tests/functional/test_functional_basic.py | 4 +++- lib/toaster/tests/toaster-tests-requirements.txt | 1 + lib/toaster/tests/views/test_views.py | 2 ++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/toaster/tests/functional/test_functional_basic.py b/lib/toaster/tests/functional/test_functional_basic.py index 7e9be91c..f558cce8 100644 --- a/lib/toaster/tests/functional/test_functional_basic.py +++ b/lib/toaster/tests/functional/test_functional_basic.py @@ -8,12 +8,14 @@ # import re, time -import pytest from django.urls import reverse +import pytest from tests.functional.functional_helpers import SeleniumFunctionalTestCase from orm.models import Project from selenium.webdriver.common.by import By + +@pytest.mark.order("last") class FuntionalTestBasic(SeleniumFunctionalTestCase): # testcase (1514) diff --git a/lib/toaster/tests/toaster-tests-requirements.txt b/lib/toaster/tests/toaster-tests-requirements.txt index 7109c625..71cc0834 100644 --- a/lib/toaster/tests/toaster-tests-requirements.txt +++ b/lib/toaster/tests/toaster-tests-requirements.txt @@ -4,3 +4,4 @@ pytest-django==4.5.2 pytest-env==1.1.0 pytest-html==4.0.2 pytest-metadata==3.0.0 +pytest-order==1.1.0 diff --git a/lib/toaster/tests/views/test_views.py b/lib/toaster/tests/views/test_views.py index 06bf6c20..349881eb 100644 --- a/lib/toaster/tests/views/test_views.py +++ b/lib/toaster/tests/views/test_views.py @@ -9,6 +9,7 @@ """Test cases for Toaster GUI and ReST.""" +import pytest from django.test import TestCase from django.test.client import RequestFactory from django.urls import reverse @@ -33,6 +34,7 @@ PROJECT_NAME2 = "test project 2" CLI_BUILDS_PROJECT_NAME = 'Command line builds' +@pytest.mark.order(1) class ViewTests(TestCase): """Tests to verify view APIs.""" From patchwork Mon Oct 30 19:50:37 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alassane Yattara X-Patchwork-Id: 33127 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id E4030C4167B for ; Mon, 30 Oct 2023 19:51:24 +0000 (UTC) Received: from mail.savoirfairelinux.com (mail.savoirfairelinux.com [208.88.110.44]) by mx.groups.io with SMTP id smtpd.web10.159179.1698695477313085994 for ; Mon, 30 Oct 2023 12:51:17 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@savoirfairelinux.com header.s=DFC430D2-D198-11EC-948E-34200CB392D2 header.b=s6W4a4Ry; spf=pass (domain: savoirfairelinux.com, ip: 208.88.110.44, mailfrom: alassane.yattara@savoirfairelinux.com) Received: from localhost (localhost [127.0.0.1]) by mail.savoirfairelinux.com (Postfix) with ESMTP id A2BA99C284C for ; Mon, 30 Oct 2023 15:51:16 -0400 (EDT) Received: from mail.savoirfairelinux.com ([127.0.0.1]) by localhost (mail.savoirfairelinux.com [127.0.0.1]) (amavis, port 10032) with ESMTP id k4kk50wXsqKJ; Mon, 30 Oct 2023 15:51:16 -0400 (EDT) Received: from localhost (localhost [127.0.0.1]) by mail.savoirfairelinux.com (Postfix) with ESMTP id EF85E9C332F; Mon, 30 Oct 2023 15:51:15 -0400 (EDT) DKIM-Filter: OpenDKIM Filter v2.10.3 mail.savoirfairelinux.com EF85E9C332F DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=savoirfairelinux.com; s=DFC430D2-D198-11EC-948E-34200CB392D2; t=1698695476; bh=rBWAoJ0FniWSG44KVipEyg2HlVrTAi29swGjkkmqBuQ=; h=From:To:Date:Message-Id:MIME-Version; b=s6W4a4Ryoad2qBbK7lEvbp4yOfr5tzA1BwUdNNmh2djBDRnZmnMPm//rIaWmMFX5S JqffDxaQWdE6on3S3DTwPPFQ7BC9ZWxtyWGzcETWRo16ExWuaoFexu7SOl98s/vYQu oBu8rr/I0nrR9cx7mGkcDhgrgVrLnOR7A8mo3u3Ae/9Kz9RLEOzSEOGiOV9zl118qH 8uuGEr/tkiTsovalzGXSKRT6yIQ1Pqxb4op0xIyc9eEmCXH6zGMwkBKAp53QuSPLm7 tW9r/DxGlDyOHcfwFOJNw43Q6XgsdBPDWYoYCNIH0+V+s6ZM1nDBiRitwU7GsZrluW aPIIx9vh9hlng== X-Virus-Scanned: amavis at mail.savoirfairelinux.com Received: from mail.savoirfairelinux.com ([127.0.0.1]) by localhost (mail.savoirfairelinux.com [127.0.0.1]) (amavis, port 10026) with ESMTP id Mu9Mojzj7b2Z; Mon, 30 Oct 2023 15:51:15 -0400 (EDT) Received: from localhost.localdomain (unknown [192.168.51.254]) by mail.savoirfairelinux.com (Postfix) with ESMTPSA id 4A7C59C2A91; Mon, 30 Oct 2023 15:51:15 -0400 (EDT) From: Alassane Yattara To: bitbake-devel@lists.openembedded.org Cc: Alassane Yattara Subject: [PATCH 8/8] Toaster: Added pytest.init file Date: Mon, 30 Oct 2023 20:50:37 +0100 Message-Id: <20231030195037.232912-8-alassane.yattara@savoirfairelinux.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231030195037.232912-1-alassane.yattara@savoirfairelinux.com> References: <20231030195037.232912-1-alassane.yattara@savoirfairelinux.com> MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Mon, 30 Oct 2023 19:51:24 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/bitbake-devel/message/15332 Added pytest init file to configure pytest and generate test reports. Objective - We propose to integrate the plugin Pytest to generate test reports for Toaster application. - To keep configurations to a minimal, we propose to integrate Pytest with Tox(tox.ini). - Tox will automate the execution of the Pytest test cases. Pros - Generate test reports - Create a historical record of test results over time - Track Toasters stability and quality - Documentation and Transparency - Debugging, troubleshooting : identify regressions (input, output,) Cons - Limited predefined report options. Although Pytest provides different report formats, its default reports are rather straightforward, We might have to put extra effort into crafting them ourselves. Signed-off-by: Alassane Yattara --- lib/toaster/pytest.ini | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 lib/toaster/pytest.ini diff --git a/lib/toaster/pytest.ini b/lib/toaster/pytest.ini new file mode 100644 index 00000000..f07076b7 --- /dev/null +++ b/lib/toaster/pytest.ini @@ -0,0 +1,19 @@ +# -- FILE: pytest.ini (or tox.ini) +[pytest] +DJANGO_SETTINGS_MODULE = toastermain.settings_test + +python_files = db/test_*.py commands/test_*.py views/test_*.py browser/test_*.py functional/test_*.py + +# --create-db - force re creation of the test database +# https://pytest-django.readthedocs.io/en/latest/database.html#create-db-force-re-creation-of-the-test-database + +# --html=report.html --self-contained-html +# https://docs.pytest.org/en/latest/usage.html#creating-html-reports +# https://pytest-html.readthedocs.io/en/latest/user_guide.html#creating-a-self-contained-report +addopts = --create-db --html="Toaster Tests Report.html" --self-contained-html + +# Define environment variables using pytest-env +# A pytest plugin that enables you to set environment variables in the pytest.ini file. +# https://pypi.org/project/pytest-env/ +env = + TOASTER_BUILDSERVER=1