def test_generates_and_saves_random_value(self): val1 = run_tiltfile_func("tilt_env/Tiltfile", "tilt_env_get_or_random", key="test1") assert val1 is not None val2 = run_tiltfile_func("tilt_env/Tiltfile", "tilt_env_get_or_random", key="test1") assert val1 == val2 val3 = run_tiltfile_func("tilt_env/Tiltfile", "tilt_env_get_or_random", key="test2") assert val1 != val3
def test_doesnt_assign_post_install_deps_when_no_dependencies(): k8s_resource = Mock() run_tiltfile_func("helm_hooks/Tiltfile", "helm_install_handle_hooks", mocks={'k8s_resource': k8s_resource}, yaml=""" apiVersion: apps/v1 kind: Deployment metadata: name: dave namespace: test annotations: helm.sh/hook: post-install """) assert k8s_resource.call_count == 0
def test_errors_on_delete_hooks(): fail = Mock() run_tiltfile_func("helm_hooks/Tiltfile", "helm_install_handle_hooks", mocks={'fail': fail}, yaml=""" apiVersion: apps/v1 kind: Deployment metadata: name: dave3 namespace: test annotations: helm.sh/hook: pre-delete """) assert fail.called
def test_delegates_to_local_resource_when_not_tilt_down(): local_resource = Mock() on_destroy = Mock() run_tiltfile_func("local_resource_ext/Tiltfile", "local_resource_ext", mocks={'local_resource': local_resource}, name="my_resource", cmd="something", on_destroy=on_destroy, random="kwarg") assert local_resource.call_count == 1 local_resource.assert_called_with("my_resource", "something", random="kwarg") assert on_destroy.call_count == 0
def test_noop_on_second_run(self): bucket_name = run_tiltfile_func( "local_resource_ext/Tiltfile", "s3_bucket", mocks={'local_resource': local_resource_integration}, resource_name="my_bucket", ) bucket_name2 = run_tiltfile_func( "local_resource_ext/Tiltfile", "s3_bucket", mocks={'local_resource': local_resource_integration}, resource_name="my_bucket", ) assert bucket_name == bucket_name2 s3.meta.client.head_bucket(Bucket=bucket_name)
def test_executes_on_destroy_when_tilt_down(): local_resource = Mock() on_destroy = Mock() run_tiltfile_func("local_resource_ext/Tiltfile", "local_resource_ext", mocks={ 'local_resource': local_resource, 'config': TiltConfig('down') }, name="my_resource", cmd="something", on_destroy=on_destroy, random="kwarg") assert local_resource.call_count == 0 assert on_destroy.call_count == 1
def test_it_finds_single_service_and_port(self): url = run_tiltfile_func("helpers/Tiltfile", "get_service_url", yaml=f""" {gen_service("dave")} """ ) assert url == "dave.test:1234"
def test_makes_post_install_or_upgrade_hook_workloads_dependent_on_other_workloads( ): k8s_resource = Mock() run_tiltfile_func("helm_hooks/Tiltfile", "helm_install_handle_hooks", mocks={'k8s_resource': k8s_resource}, yaml=""" apiVersion: apps/v1 kind: Deployment metadata: name: dave namespace: test --- apiVersion: apps/v1 kind: Deployment metadata: name: dave3 namespace: test annotations: helm.sh/hook: pre-install --- apiVersion: apps/v1 kind: Deployment metadata: name: dave4 namespace: test annotations: helm.sh/hook: post-install --- apiVersion: apps/v1 kind: Deployment metadata: name: dave5 namespace: test annotations: helm.sh/hook: post-upgrade """) assert k8s_resource.call_count == 3 k8s_resource.assert_any_call( workload="dave4:deployment:test", resource_deps=["dave:deployment:test", "dave3:deployment:test"]) k8s_resource.assert_any_call( workload="dave5:deployment:test", resource_deps=["dave:deployment:test", "dave3:deployment:test"])
def test_it_can_match_port_on_number(self): url = run_tiltfile_func("helpers/Tiltfile", "get_service_url", port=1234, yaml=f""" {gen_service("dave", [("port1", 1234), ("port2", 5678)])} """ ) assert url == "dave.test:1234"
def test_it_uses_s3_bucket_name_if_present(self): local_resource = Mock() run_tiltfile_func("tilt_env/Tiltfile", "tilt_env_set", key="my_bucket", val="bucket_id") run_tiltfile_func( "local_resource_ext/Tiltfile", "s3_bucket", mocks={'local_resource': local_resource}, resource_name="my_bucket", ) assert local_resource.call_count == 1 assert local_resource.call_args[0][0] == "my_bucket" assert "bucket_id" in local_resource.call_args[0][1]
def test_creates_bucket_on_first_run(self): bucket_name = run_tiltfile_func( "local_resource_ext/Tiltfile", "s3_bucket", mocks={'local_resource': local_resource_integration}, resource_name="my_bucket", ) s3.meta.client.head_bucket(Bucket=bucket_name)
def test_doesnt_assign_deps_for_excluded_resources(): k8s_resource = Mock() run_tiltfile_func("helm_hooks/Tiltfile", "helm_install_handle_hooks", mocks={'k8s_resource': k8s_resource}, yaml=""" apiVersion: apps/v1 kind: Deployment metadata: name: dave namespace: test annotations: helm.sh/hook: test-failure --- apiVersion: apps/v1 kind: Deployment metadata: name: dave3 namespace: test annotations: helm.sh/hook: pre-install --- apiVersion: apps/v1 kind: Deployment metadata: name: dave4 namespace: test annotations: helm.sh/hook: post-install --- apiVersion: apps/v1 kind: Deployment metadata: name: dave5 namespace: test annotations: helm.sh/hook: post-upgrade """) assert k8s_resource.call_count == 2 k8s_resource.assert_any_call(workload="dave4:deployment:test", resource_deps=["dave3:deployment:test"]) k8s_resource.assert_any_call(workload="dave5:deployment:test", resource_deps=["dave3:deployment:test"])
def test_creates_key_on_first_run(self): key_name = run_tiltfile_func( "local_resource_ext/Tiltfile", "credstash_key", mocks={'local_resource': local_resource_integration}, resource_name="my_key", val="my_secret", ) assert credstash.getSecret(key_name) == 'my_secret'
def test_upserts_on_second_run(self): key_name = run_tiltfile_func( "local_resource_ext/Tiltfile", "credstash_key", mocks={'local_resource': local_resource_integration}, resource_name="my_key", val="my_secret", ) key_name2 = run_tiltfile_func( "local_resource_ext/Tiltfile", "credstash_key", mocks={'local_resource': local_resource_integration}, resource_name="my_key", val="my_new_secret", ) assert key_name == key_name2 assert credstash.getSecret(key_name) == 'my_new_secret'
def test_it_can_match_service_on_name(self): url = run_tiltfile_func("helpers/Tiltfile", "get_service_url", service_name="dave", yaml=f""" {gen_service("dave")} --- {gen_service("dave2")} """ ) assert url == "dave.test:1234"
def test_it_uses_credstash_key_name_if_present(self): local_resource = Mock() run_tiltfile_func("tilt_env/Tiltfile", "tilt_env_set", key="my_key", val="key_name") run_tiltfile_func( "local_resource_ext/Tiltfile", "credstash_key", mocks={'local_resource': local_resource}, resource_name="my_key", val="my_secret", ) assert local_resource.call_count == 1 assert local_resource.call_args[0][0] == "my_key" assert "key_name" in local_resource.call_args[0][1] assert "my_secret" in local_resource.call_args[0][1]
def test_it_creates_s3_bucket_name_if_not_present(self): local_resource = Mock() bucket_name = run_tiltfile_func( "local_resource_ext/Tiltfile", "s3_bucket", mocks={'local_resource': local_resource}, resource_name="my_bucket", ) assert local_resource.call_count == 1 assert local_resource.call_args[0][0] == "my_bucket" assert bucket_name in local_resource.call_args[0][1]
def test_excludes_test_and_rollback_hook_workloads(): k8s_yaml = Mock() run_tiltfile_func("helm_hooks/Tiltfile", "helm_install_handle_hooks", mocks={'k8s_yaml': k8s_yaml}, yaml=""" apiVersion: apps/v1 kind: Deployment metadata: name: dave namespace: test --- apiVersion: apps/v1 kind: Deployment metadata: name: dave2 namespace: test --- apiVersion: apps/v1 kind: Deployment metadata: name: dave3 namespace: test annotations: helm.sh/hook: test-success --- apiVersion: apps/v1 kind: Deployment metadata: name: dave4 namespace: test annotations: helm.sh/hook: test-failure """) saved_objs = yaml.safe_load_all(k8s_yaml.call_args.args[0]) assert [obj["metadata"]["name"] for obj in saved_objs] == ["dave", "dave2"]
def test_deletes_on_teardown(self): bucket_name = run_tiltfile_func( "local_resource_ext/Tiltfile", "s3_bucket", mocks={'local_resource': local_resource_integration}, resource_name="my_bucket", ) run_tiltfile_func( "local_resource_ext/Tiltfile", "s3_bucket", mocks={ 'local_resource': local_resource_integration, 'config': TiltConfig('down') }, resource_name="my_bucket", ) with pytest.raises(ClientError): s3.meta.client.head_bucket(Bucket=bucket_name) assert run_tiltfile_func("tilt_env/Tiltfile", "tilt_env_get", key="my_bucket") == None
def test_it_creates_credstash_key_name_if_not_present(self): local_resource = Mock() key_name = run_tiltfile_func( "local_resource_ext/Tiltfile", "credstash_key", mocks={'local_resource': local_resource}, resource_name="my_key", val="my_secret", ) assert local_resource.call_count == 1 assert local_resource.call_args[0][0] == "my_key" assert key_name in local_resource.call_args[0][1] assert "my_secret" in local_resource.call_args[0][1]
def test_imports_should_not_pollute_global_scope(): run_tiltfile_func("test/load/multi_import/Tiltfile", "test_func", arg=15) with pytest.raises(NameError): run_tiltfile_func("test/load/failure/Tiltfile", "test_func", arg=15)
def test_handles_local_file_imports(): result = run_tiltfile_func("test/load/Tiltfile", "test_func", arg=15) assert result == 16
def test_handles_ext_package_imports(): result = run_tiltfile_func("test/load/ext/Tiltfile", "test_func", str="hi") assert result == "hi"
def test_adds_prefix_to_random_value(self): val1 = run_tiltfile_func("tilt_env/Tiltfile", "tilt_env_get_or_random", key="test1", val_prefix="dave") assert val1.startswith("dave") == True
def test_doesnt_pollute_scope_with_non_imported_functions(): with pytest.raises(NameError): run_tiltfile_func("test/load/failure/Tiltfile", "test_func", arg=15)
def test_handles_multiple_function_imports(): result = run_tiltfile_func("test/load/multi_import/Tiltfile", "test_func", arg=15) assert result == 15
def test_runs_basic_tiltfile(): result = run_tiltfile_func("test/basic/Tiltfile", "simple", arg=10) assert result == 11