@@ -747,3 +747,43 @@ func TestStore_EncryptOutputs(t *testing.T) {
747
747
require .NoError (t , err , "ReadOutput failed" )
748
748
assert .Equal (t , string (port .Value ), string (gotPort .Value ), "output doesn't match the original output" )
749
749
}
750
+
751
+ func TestStore_GetLastOutputs_OutputDefinitionRemoved (t * testing.T ) {
752
+ cp , _ := generateClaimData (t )
753
+
754
+ foo , err := cp .ReadInstallation ("foo" )
755
+ require .NoError (t , err , "ReadInstallation failed" )
756
+
757
+ // Remove output1 from the bundle definition
758
+ installClaim := foo .Claims [0 ]
759
+ b := bundle.Bundle {
760
+ Definitions : map [string ]* definition.Schema {
761
+ "output2" : {
762
+ Type : "string" ,
763
+ },
764
+ },
765
+ Outputs : map [string ]bundle.Output {
766
+ "output2" : {
767
+ Definition : "output2" ,
768
+ ApplyTo : []string {"upgrade" },
769
+ },
770
+ },
771
+ }
772
+ upgradeClaim , err := installClaim .NewClaim (ActionUpgrade , b , nil )
773
+ require .NoError (t , err , "NewClaim failed" )
774
+ err = cp .SaveClaim (upgradeClaim )
775
+ require .NoError (t , err , "SaveClaim failed" )
776
+ upgradeResult , err := upgradeClaim .NewResult (StatusRunning )
777
+ require .NoError (t , err , "NewResult failed" )
778
+ err = cp .SaveResult (upgradeResult )
779
+ require .NoError (t , err , "SaveResult failed" )
780
+ upgradeOutput := NewOutput (upgradeClaim , upgradeResult , "output2" , []byte ("upgrade output" ))
781
+ err = cp .SaveOutput (upgradeOutput )
782
+ require .NoError (t , err , "SaveOutput failed" )
783
+
784
+ // Read the outputs from the installation
785
+ outputs , err := cp .ReadLastOutputs ("foo" )
786
+ require .NoError (t , err , "ReadLastOutputs failed" )
787
+
788
+ assert .Equal (t , outputs .Len (), 2 )
789
+ }
0 commit comments