diff --git a/terraform/graph_builder_plan_test.go b/terraform/graph_builder_plan_test.go new file mode 100644 index 000000000..235fea745 --- /dev/null +++ b/terraform/graph_builder_plan_test.go @@ -0,0 +1,52 @@ +package terraform + +import ( + "reflect" + "strings" + "testing" +) + +func TestPlanGraphBuilder_impl(t *testing.T) { + var _ GraphBuilder = new(PlanGraphBuilder) +} + +func TestPlanGraphBuilder(t *testing.T) { + b := &PlanGraphBuilder{ + Module: testModule(t, "graph-builder-plan-basic"), + Providers: []string{"aws", "openstack"}, + DisableReduce: true, + } + + g, err := b.Build(RootModulePath) + if err != nil { + t.Fatalf("err: %s", err) + } + + if !reflect.DeepEqual(g.Path, RootModulePath) { + t.Fatalf("bad: %#v", g.Path) + } + + actual := strings.TrimSpace(g.String()) + expected := strings.TrimSpace(testPlanGraphBuilderStr) + if actual != expected { + t.Fatalf("bad: %s", actual) + } +} + +const testPlanGraphBuilderStr = ` +aws_instance.web + aws_security_group.firewall + provider.aws + var.foo +aws_load_balancer.weblb + aws_instance.web + provider.aws +aws_security_group.firewall + provider.aws +openstack_floating_ip.random + provider.openstack +provider.aws + openstack_floating_ip.random +provider.openstack +var.foo +` diff --git a/terraform/test-fixtures/graph-builder-plan-basic/main.tf b/terraform/test-fixtures/graph-builder-plan-basic/main.tf new file mode 100644 index 000000000..a40802cc9 --- /dev/null +++ b/terraform/test-fixtures/graph-builder-plan-basic/main.tf @@ -0,0 +1,24 @@ +variable "foo" { + default = "bar" + description = "bar" +} + +provider "aws" { + foo = "${openstack_floating_ip.random.value}" +} + +resource "openstack_floating_ip" "random" {} + +resource "aws_security_group" "firewall" {} + +resource "aws_instance" "web" { + ami = "${var.foo}" + security_groups = [ + "foo", + "${aws_security_group.firewall.foo}" + ] +} + +resource "aws_load_balancer" "weblb" { + members = "${aws_instance.web.id_list}" +}