@@ -39,6 +39,7 @@ import (
39
39
"path/filepath"
40
40
"sort"
41
41
"testing"
42
+ "time"
42
43
)
43
44
44
45
type ByFileInfoName []os.FileInfo
@@ -90,3 +91,43 @@ func TestCopyOtherFiles(t *testing.T) {
90
91
require .Equal (t , 1 , len (files ))
91
92
require .Equal (t , "helper.h" , files [0 ].Name ())
92
93
}
94
+
95
+ func TestCopyOtherFilesOnlyIfChanged (t * testing.T ) {
96
+ context := make (map [string ]interface {})
97
+
98
+ buildPath := SetupBuildPath (t , context )
99
+ defer os .RemoveAll (buildPath )
100
+
101
+ context [constants .CTX_SKETCH_LOCATION ] = filepath .Join ("sketch1" , "sketch.ino" )
102
+
103
+ commands := []types.Command {
104
+ & builder.SetupHumanLoggerIfMissing {},
105
+ & builder.AddAdditionalEntriesToContext {},
106
+ & builder.SketchLoader {},
107
+ & builder.AdditionalSketchFilesCopier {},
108
+ }
109
+
110
+ for _ , command := range commands {
111
+ err := command .Run (context )
112
+ NoError (t , err )
113
+ }
114
+
115
+ headerStatBefore , err := os .Stat (filepath .Join (buildPath , constants .FOLDER_SKETCH , "header.h" ))
116
+ NoError (t , err )
117
+
118
+ time .Sleep (2 * time .Second )
119
+
120
+ context = make (map [string ]interface {})
121
+ context [constants .CTX_BUILD_PATH ] = buildPath
122
+ context [constants .CTX_SKETCH_LOCATION ] = filepath .Join ("sketch1" , "sketch.ino" )
123
+
124
+ for _ , command := range commands {
125
+ err := command .Run (context )
126
+ NoError (t , err )
127
+ }
128
+
129
+ headerStatAfter , err := os .Stat (filepath .Join (buildPath , constants .FOLDER_SKETCH , "header.h" ))
130
+ NoError (t , err )
131
+
132
+ require .Equal (t , headerStatBefore .ModTime ().Unix (), headerStatAfter .ModTime ().Unix ())
133
+ }
0 commit comments