diff --git a/dbt-snowflake/pyproject.toml b/dbt-snowflake/pyproject.toml index d2fcbf580f..6ab0a09388 100644 --- a/dbt-snowflake/pyproject.toml +++ b/dbt-snowflake/pyproject.toml @@ -43,7 +43,7 @@ Changelog = "https://github.com/dbt-labs/dbt-adapters/blob/main/dbt-snowflake/CH [tool.pytest.ini_options] testpaths = ["tests/unit", "tests/functional"] -addopts = "-v --color=yes -n auto" +addopts = "-v --color=yes" env_files = ["test.env"] filterwarnings = [ "ignore:datetime.datetime.utcnow:DeprecationWarning", diff --git a/dbt-snowflake/requirements.txt b/dbt-snowflake/requirements.txt new file mode 100644 index 0000000000..d632189b6b --- /dev/null +++ b/dbt-snowflake/requirements.txt @@ -0,0 +1,238 @@ +# +# This file is autogenerated by pip-compile with Python 3.11 +# by the following command: +# +# pip-compile --output-file=requirements.txt pyproject.toml +# +agate==1.9.1 + # via + # dbt-adapters + # dbt-common + # dbt-core + # dbt-snowflake (pyproject.toml) +annotated-types==0.7.0 + # via pydantic +asn1crypto==1.5.1 + # via snowflake-connector-python +attrs==25.3.0 + # via + # jsonschema + # referencing +babel==2.17.0 + # via agate +backports-tarfile==1.2.0 + # via jaraco-context +boto3==1.40.32 + # via snowflake-connector-python +botocore==1.40.32 + # via + # boto3 + # s3transfer + # snowflake-connector-python +certifi==2025.1.31 + # via + # dbt-snowflake (pyproject.toml) + # requests + # snowflake-connector-python +cffi==1.17.1 + # via + # cryptography + # snowflake-connector-python +charset-normalizer==3.4.3 + # via + # requests + # snowflake-connector-python +click==8.2.1 + # via + # dbt-core + # dbt-semantic-interfaces +colorama==0.4.6 + # via dbt-common +cryptography==46.0.0 + # via + # pyopenssl + # snowflake-connector-python +daff==1.4.2 + # via dbt-core +dbt-adapters==1.16.7 + # via + # dbt-core + # dbt-snowflake (pyproject.toml) +dbt-common==1.30.0 + # via + # dbt-adapters + # dbt-core + # dbt-snowflake (pyproject.toml) +dbt-core==1.10.11 + # via dbt-snowflake (pyproject.toml) +dbt-extractor==0.6.0 + # via dbt-core +dbt-protos==1.0.375 + # via + # dbt-adapters + # dbt-common + # dbt-core +dbt-semantic-interfaces==0.9.0 + # via dbt-core +deepdiff==8.6.1 + # via dbt-common +filelock==3.19.1 + # via snowflake-connector-python +idna==3.10 + # via + # requests + # snowflake-connector-python +importlib-metadata==8.7.0 + # via + # dbt-semantic-interfaces + # keyring +isodate==0.6.1 + # via + # agate + # dbt-common +jaraco-classes==3.4.0 + # via keyring +jaraco-context==6.0.1 + # via keyring +jaraco-functools==4.3.0 + # via keyring +jinja2==3.1.6 + # via + # dbt-common + # dbt-core + # dbt-semantic-interfaces +jmespath==1.0.1 + # via + # boto3 + # botocore +jsonschema==4.25.1 + # via + # dbt-common + # dbt-core + # dbt-semantic-interfaces +jsonschema-specifications==2025.9.1 + # via jsonschema +keyring==25.6.0 + # via snowflake-connector-python +leather==0.4.0 + # via agate +markupsafe==3.0.2 + # via jinja2 +mashumaro[msgpack]==3.14 + # via + # dbt-adapters + # dbt-common + # dbt-core +more-itertools==10.8.0 + # via + # dbt-semantic-interfaces + # jaraco-classes + # jaraco-functools +msgpack==1.1.1 + # via mashumaro +networkx==3.5 + # via dbt-core +orderly-set==5.5.0 + # via deepdiff +packaging==25.0 + # via + # dbt-core + # snowflake-connector-python +parsedatetime==2.6 + # via agate +pathspec==0.12.1 + # via + # dbt-common + # dbt-core +platformdirs==4.4.0 + # via snowflake-connector-python +protobuf==6.32.1 + # via + # dbt-adapters + # dbt-common + # dbt-core + # dbt-protos +pycparser==2.23 + # via cffi +pydantic==2.11.9 + # via + # dbt-core + # dbt-semantic-interfaces +pydantic-core==2.33.2 + # via pydantic +pyjwt==2.10.1 + # via snowflake-connector-python +pyopenssl==25.3.0 + # via snowflake-connector-python +python-dateutil==2.9.0.post0 + # via + # botocore + # dbt-common + # dbt-semantic-interfaces +python-slugify==8.0.4 + # via agate +pytimeparse==1.1.8 + # via agate +pytz==2025.2 + # via + # dbt-adapters + # dbt-core + # snowflake-connector-python +pyyaml==6.0.2 + # via + # dbt-core + # dbt-semantic-interfaces +referencing==0.36.2 + # via + # jsonschema + # jsonschema-specifications +requests==2.32.5 + # via + # dbt-common + # dbt-core + # snowflake-connector-python + # snowplow-tracker +rpds-py==0.27.1 + # via + # jsonschema + # referencing +s3transfer==0.14.0 + # via boto3 +six==1.17.0 + # via + # isodate + # python-dateutil +snowflake-connector-python[secure-local-storage]==3.17.3 + # via dbt-snowflake (pyproject.toml) +snowplow-tracker==1.1.0 + # via dbt-core +sortedcontainers==2.4.0 + # via snowflake-connector-python +sqlparse==0.5.3 + # via dbt-core +text-unidecode==1.3 + # via python-slugify +tomlkit==0.13.3 + # via snowflake-connector-python +typing-extensions==4.15.0 + # via + # dbt-adapters + # dbt-common + # dbt-core + # dbt-semantic-interfaces + # mashumaro + # pydantic + # pydantic-core + # pyopenssl + # referencing + # snowflake-connector-python + # snowplow-tracker + # typing-inspection +typing-inspection==0.4.1 + # via pydantic +urllib3==2.5.0 + # via + # botocore + # requests +zipp==3.23.0 + # via importlib-metadata diff --git a/dbt-snowflake/tests/conftest.py b/dbt-snowflake/tests/conftest.py index 2fbdbd5c29..bec4117d11 100644 --- a/dbt-snowflake/tests/conftest.py +++ b/dbt-snowflake/tests/conftest.py @@ -13,11 +13,13 @@ def dbt_profile_target(): profile = { "type": "snowflake", "threads": 4, - "account": os.getenv("SNOWFLAKE_TEST_ACCOUNT"), - "user": os.getenv("SNOWFLAKE_TEST_USER"), - "password": os.getenv("SNOWFLAKE_TEST_PASSWORD"), - "database": os.getenv("SNOWFLAKE_TEST_DATABASE"), - "warehouse": os.getenv("SNOWFLAKE_TEST_WAREHOUSE"), + "account": "localstack", + "host": "snowflake.localhost.localstack.cloud", + "port": 4566, + "user": "test", + "password": "test", + "database": "TEST", + "warehouse": "LOCAL", } # Optional parameters allow testing against local DEV Snowflake instances. diff --git a/dbt-snowflake/tests/functional/adapter/simple_seed/test_simple_seed.py b/dbt-snowflake/tests/functional/adapter/simple_seed/test_simple_seed.py index af28b394db..ec6cf66ed2 100644 --- a/dbt-snowflake/tests/functional/adapter/simple_seed/test_simple_seed.py +++ b/dbt-snowflake/tests/functional/adapter/simple_seed/test_simple_seed.py @@ -4,6 +4,7 @@ from dbt.tests.util import run_dbt +@pytest.mark.skip(reason="Timeout in the CI") class TestSimpleBigSeedBatched(SeedConfigBase): @pytest.fixture(scope="class") def seeds(self): diff --git a/dbt-snowflake/tests/functional/auth_tests/test_jwt.py b/dbt-snowflake/tests/functional/auth_tests/test_jwt.py index fbe8e20e6f..d843923f28 100644 --- a/dbt-snowflake/tests/functional/auth_tests/test_jwt.py +++ b/dbt-snowflake/tests/functional/auth_tests/test_jwt.py @@ -33,6 +33,7 @@ """ +@pytest.mark.skip(reason="Skipped for LocalStack testing") class TestSnowflakeJWT: """Tests that setting authenticator: jwt allows setting token to a plain JWT that will be passed into the Snowflake connection without modification.""" diff --git a/dbt-snowflake/tests/functional/auth_tests/test_key_pair.py b/dbt-snowflake/tests/functional/auth_tests/test_key_pair.py index 6d3254f336..24f461c8f8 100644 --- a/dbt-snowflake/tests/functional/auth_tests/test_key_pair.py +++ b/dbt-snowflake/tests/functional/auth_tests/test_key_pair.py @@ -10,10 +10,10 @@ def dbt_profile_target(self): return { "type": "snowflake", "threads": 4, - "account": os.getenv("SNOWFLAKE_TEST_ACCOUNT"), + "account": "localstack", + "host": "snowflake.localhost.localstack.cloud", "user": os.getenv("SNOWFLAKE_TEST_USER"), "private_key": os.getenv("SNOWFLAKE_TEST_PRIVATE_KEY"), - "private_key_passphrase": os.getenv("SNOWFLAKE_TEST_PRIVATE_KEY_PASSPHRASE"), "database": os.getenv("SNOWFLAKE_TEST_DATABASE"), "warehouse": os.getenv("SNOWFLAKE_TEST_WAREHOUSE"), } diff --git a/dbt-snowflake/tests/functional/auth_tests/test_oauth.py b/dbt-snowflake/tests/functional/auth_tests/test_oauth.py index c8986763e2..a5b23b84b0 100644 --- a/dbt-snowflake/tests/functional/auth_tests/test_oauth.py +++ b/dbt-snowflake/tests/functional/auth_tests/test_oauth.py @@ -60,6 +60,7 @@ """ +@pytest.mark.skip(reason="Skipped for LocalStack testing") class TestSnowflakeOauth: @pytest.fixture(scope="class", autouse=True) def dbt_profile_target(self):