@@ -63,3 +63,40 @@ func TestClient_Diff(t *testing.T) {
6363 g .Expect (err ).To (HaveOccurred ())
6464 g .Expect (err ).To (MatchError ("the remote artifact contents differs from the local one" ))
6565}
66+
67+ func TestClient_PushPullDiff_RoundTrip (t * testing.T ) {
68+ g := NewWithT (t )
69+ ctx := context .Background ()
70+ c := NewClient (DefaultOptions ())
71+ tag := "v0.0.1"
72+ repo := "test-push" + randStringRunes (5 )
73+
74+ url := fmt .Sprintf ("%s/%s:%s" , dockerReg , repo , tag )
75+ metadata := Metadata {
76+ Source : "github.com/fluxcd/flux2" ,
77+ Revision : "rev" ,
78+ }
79+
80+ testDir := "testdata/artifact"
81+ _ , err := c .Push (ctx , url , testDir , WithPushMetadata (metadata ))
82+ g .Expect (err ).ToNot (HaveOccurred ())
83+
84+ err = c .Diff (ctx , url , testDir , nil )
85+ g .Expect (err ).ToNot (HaveOccurred ())
86+
87+ testDirStat , err := os .Stat (testDir )
88+ g .Expect (err ).ToNot (HaveOccurred ())
89+
90+ tmpPullDir , err := os .MkdirTemp ("" , "oci" )
91+ g .Expect (err ).ToNot (HaveOccurred ())
92+ defer os .RemoveAll (tmpPullDir )
93+
94+ err = os .Chmod (tmpPullDir , testDirStat .Mode ())
95+ g .Expect (err ).ToNot (HaveOccurred ())
96+
97+ _ , err = c .Pull (ctx , url , tmpPullDir )
98+ g .Expect (err ).ToNot (HaveOccurred ())
99+
100+ err = c .Diff (ctx , url , tmpPullDir , nil )
101+ g .Expect (err ).ToNot (HaveOccurred ())
102+ }
0 commit comments