@@ -299,6 +299,35 @@ func Test_WorkspaceTagDefaultsFromFile(t *testing.T) {
299
299
// TODO: this error isn't great, but it has the desired effect.
300
300
expectError :`There is no variable named "foo_bar"` ,
301
301
},
302
+ {
303
+ name :"main.tf with functions in workspace tags" ,
304
+ files :map [string ]string {
305
+ "main.tf" :`
306
+ provider "foo" {}
307
+ resource "foo_bar" "baz" {
308
+ name = "foobar"
309
+ }
310
+ variable "region" {
311
+ type = string
312
+ default = "region.us"
313
+ }
314
+ data "coder_parameter" "az" {
315
+ name = "az"
316
+ type = "string"
317
+ default = "az.a"
318
+ }
319
+ data "coder_workspace_tags" "tags" {
320
+ tags = {
321
+ "platform" = "kubernetes",
322
+ "cluster" = "${"devel"}${"opers"}"
323
+ "region" = try(split(".", var.region)[1], "placeholder")
324
+ "az" = try(split(".", data.coder_parameter.az.value)[1], "placeholder")
325
+ }
326
+ }` ,
327
+ },
328
+ expectTags :map [string ]string {"platform" :"kubernetes" ,"cluster" :"developers" ,"region" :"us" ,"az" :"a" },
329
+ expectError :`` ,
330
+ },
302
331
} {
303
332
tc := tc
304
333
t .Run (tc .name + "/tar" ,func (t * testing.T ) {