From bcc5d6b985daa0847bb8f9a6af53bd04b65aed09 Mon Sep 17 00:00:00 2001 From: Anton Nekipelov <226657+anton-107@users.noreply.github.com> Date: Thu, 6 Mar 2025 16:28:11 +0100 Subject: [PATCH] Only run "bind schema" acceptance test if test stage has Unity Catalog enabled --- acceptance/acceptance_test.go | 9 +++++++++ .../bundle/deployment/bind/schema/test.toml | 3 ++- acceptance/config_test.go | 19 +++++++++++++++++++ 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/acceptance/acceptance_test.go b/acceptance/acceptance_test.go index afdc42abc..25603ef49 100644 --- a/acceptance/acceptance_test.go +++ b/acceptance/acceptance_test.go @@ -225,6 +225,15 @@ func runTest(t *testing.T, dir, coverDir string, repls testdiff.ReplacementsCont t.Skipf("Disabled via Cloud setting in %s (CLOUD_ENV=%s)", configPath, cloudEnv) } + if config.RequiresStageFeature(UnityCatalogEnabledWorkspace) { + if os.Getenv("TEST_METASTORE_ID") == "" { + t.Skipf("Skipping on non-UC workspaces") + } + if os.Getenv("DATABRICKS_ACCOUNT_ID") != "" { + t.Skipf("Skipping on accounts") + } + } + var tmpDir string var err error if KeepTmp { diff --git a/acceptance/bundle/deployment/bind/schema/test.toml b/acceptance/bundle/deployment/bind/schema/test.toml index c67d1feed..0bfce4b65 100644 --- a/acceptance/bundle/deployment/bind/schema/test.toml +++ b/acceptance/bundle/deployment/bind/schema/test.toml @@ -1,2 +1,3 @@ +Local = false Cloud = true -Local = false \ No newline at end of file +RequiredStageFeatures=["unity-catalog"] diff --git a/acceptance/config_test.go b/acceptance/config_test.go index cc5257c65..b98efaa70 100644 --- a/acceptance/config_test.go +++ b/acceptance/config_test.go @@ -17,6 +17,12 @@ import ( const configFilename = "test.toml" +type StageFeature string + +const ( + UnityCatalogEnabledWorkspace StageFeature = "unity-catalog" +) + type TestConfig struct { // Place to describe what's wrong with this test. Does not affect how the test is run. Badness *string @@ -31,6 +37,10 @@ type TestConfig struct { // If true, run this test when running with cloud env configured Cloud *bool + // Which stage features this test requires. Each string is a feature name that must be present + // in the current stage for the test to run. If absent, no specific features are required. + RequiredStageFeatures []StageFeature + // List of additional replacements to apply on this test. // Old is a regexp, New is a replacement expression. Repls []testdiff.Replacement @@ -59,6 +69,15 @@ type TestConfig struct { CompiledIgnoreObject *ignore.GitIgnore } +func (tc *TestConfig) RequiresStageFeature(feature StageFeature) bool { + for _, f := range tc.RequiredStageFeatures { + if f == feature { + return true + } + } + return false +} + type ServerStub struct { // The HTTP method and path to match. Examples: // 1. /api/2.0/clusters/list (matches all methods)