@ -12,26 +12,39 @@ func TestResourceInstanceObject_encode(t *testing.T) {
value := cty . ObjectVal ( map [ string ] cty . Value {
"foo" : cty . True ,
} )
deps := [ ] addrs . ConfigResource {
// The in-memory order of resource dependencies is random, since they're an
// unordered set.
depsOne := [ ] addrs . ConfigResource {
addrs . RootModule . Resource ( addrs . ManagedResourceMode , "test" , "honk" ) ,
addrs . RootModule . Child ( "child" ) . Resource ( addrs . ManagedResourceMode , "test" , "flub" ) ,
addrs . RootModule . Resource ( addrs . ManagedResourceMode , "test" , "boop" ) ,
}
wantDeps := [ ] addrs . ConfigResource {
depsTwo := [ ] addrs . ConfigResource {
addrs . RootModule . Child ( "child" ) . Resource ( addrs . ManagedResourceMode , "test" , "flub" ) ,
addrs . RootModule . Resource ( addrs . ManagedResourceMode , "test" , "boop" ) ,
addrs . RootModule . Resource ( addrs . ManagedResourceMode , "test" , "honk" ) ,
}
rio := & ResourceInstanceObject {
rio One := & ResourceInstanceObject {
Value : value ,
Status : ObjectPlanned ,
Dependencies : deps ,
Dependencies : deps One ,
}
rios , err := rio . Encode ( value . Type ( ) , 0 )
rioTwo := & ResourceInstanceObject {
Value : value ,
Status : ObjectPlanned ,
Dependencies : depsTwo ,
}
riosOne , err := rioOne . Encode ( value . Type ( ) , 0 )
if err != nil {
t . Fatalf ( "unexpected error: %s" , err )
}
riosTwo , err := rioTwo . Encode ( value . Type ( ) , 0 )
if err != nil {
t . Fatalf ( "unexpected error: %s" , err )
}
if diff := cmp . Diff ( wantDeps , rios . Dependencies ) ; diff != "" {
t . Errorf ( "wrong result for deps\n%s" , diff )
// However, identical sets of dependencies should always be written to state
// in an identical order, so we don't do meaningless state updates on refresh.
if diff := cmp . Diff ( riosOne . Dependencies , riosTwo . Dependencies ) ; diff != "" {
t . Errorf ( "identical dependencies got encoded in different orders:\n%s" , diff )
}
}