Skip to content

Commit 6004057

Browse files
polish legacy test
1 parent a7963f4 commit 6004057

12 files changed

+156
-737
lines changed

Diff for: arduino/builder/linker.go

+3-8
Original file line numberDiff line numberDiff line change
@@ -33,15 +33,10 @@ func (b *Builder) Link() error {
3333
return nil
3434
}
3535

36-
// TODO can we remove this multiple assignations?
37-
objectFilesSketch := b.buildArtifacts.sketchObjectFiles
38-
objectFilesLibraries := b.buildArtifacts.librariesObjectFiles
39-
objectFilesCore := b.buildArtifacts.coreObjectsFiles
40-
4136
objectFiles := paths.NewPathList()
42-
objectFiles.AddAll(objectFilesSketch)
43-
objectFiles.AddAll(objectFilesLibraries)
44-
objectFiles.AddAll(objectFilesCore)
37+
objectFiles.AddAll(b.buildArtifacts.sketchObjectFiles)
38+
objectFiles.AddAll(b.buildArtifacts.librariesObjectFiles)
39+
objectFiles.AddAll(b.buildArtifacts.coreObjectsFiles)
4540

4641
coreDotARelPath, err := b.buildPath.RelTo(b.buildArtifacts.coreArchiveFilePath)
4742
if err != nil {

Diff for: arduino/builder/utils/utils_test.go

+133
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,11 @@
1616
package utils
1717

1818
import (
19+
"os"
1920
"testing"
21+
"time"
2022

23+
"github.com/arduino/go-paths-helper"
2124
"github.com/stretchr/testify/require"
2225
)
2326

@@ -39,3 +42,133 @@ func TestPrintableCommand(t *testing.T) {
3942
result := printableCommand(parts)
4043
require.Equal(t, correct, result)
4144
}
45+
46+
func tempFile(t *testing.T, prefix string) *paths.Path {
47+
file, err := os.CreateTemp("", prefix)
48+
file.Close()
49+
require.NoError(t, err)
50+
return paths.New(file.Name())
51+
}
52+
53+
func TestObjFileIsUpToDateObjMissing(t *testing.T) {
54+
sourceFile := tempFile(t, "source")
55+
defer sourceFile.RemoveAll()
56+
57+
upToDate, err := ObjFileIsUpToDate(sourceFile, nil, nil)
58+
require.NoError(t, err)
59+
require.False(t, upToDate)
60+
}
61+
62+
func TestObjFileIsUpToDateDepMissing(t *testing.T) {
63+
sourceFile := tempFile(t, "source")
64+
defer sourceFile.RemoveAll()
65+
66+
objFile := tempFile(t, "obj")
67+
defer objFile.RemoveAll()
68+
69+
upToDate, err := ObjFileIsUpToDate(sourceFile, objFile, nil)
70+
require.NoError(t, err)
71+
require.False(t, upToDate)
72+
}
73+
74+
func TestObjFileIsUpToDateObjOlder(t *testing.T) {
75+
objFile := tempFile(t, "obj")
76+
defer objFile.RemoveAll()
77+
depFile := tempFile(t, "dep")
78+
defer depFile.RemoveAll()
79+
80+
time.Sleep(time.Second)
81+
82+
sourceFile := tempFile(t, "source")
83+
defer sourceFile.RemoveAll()
84+
85+
upToDate, err := ObjFileIsUpToDate(sourceFile, objFile, depFile)
86+
require.NoError(t, err)
87+
require.False(t, upToDate)
88+
}
89+
90+
func TestObjFileIsUpToDateObjNewer(t *testing.T) {
91+
sourceFile := tempFile(t, "source")
92+
defer sourceFile.RemoveAll()
93+
94+
time.Sleep(time.Second)
95+
96+
objFile := tempFile(t, "obj")
97+
defer objFile.RemoveAll()
98+
depFile := tempFile(t, "dep")
99+
defer depFile.RemoveAll()
100+
101+
upToDate, err := ObjFileIsUpToDate(sourceFile, objFile, depFile)
102+
require.NoError(t, err)
103+
require.True(t, upToDate)
104+
}
105+
106+
func TestObjFileIsUpToDateDepIsNewer(t *testing.T) {
107+
sourceFile := tempFile(t, "source")
108+
defer sourceFile.RemoveAll()
109+
110+
time.Sleep(time.Second)
111+
112+
objFile := tempFile(t, "obj")
113+
defer objFile.RemoveAll()
114+
depFile := tempFile(t, "dep")
115+
defer depFile.RemoveAll()
116+
117+
time.Sleep(time.Second)
118+
119+
headerFile := tempFile(t, "header")
120+
defer headerFile.RemoveAll()
121+
122+
data := objFile.String() + ": \\\n\t" + sourceFile.String() + " \\\n\t" + headerFile.String()
123+
depFile.WriteFile([]byte(data))
124+
125+
upToDate, err := ObjFileIsUpToDate(sourceFile, objFile, depFile)
126+
require.NoError(t, err)
127+
require.False(t, upToDate)
128+
}
129+
130+
func TestObjFileIsUpToDateDepIsOlder(t *testing.T) {
131+
sourceFile := tempFile(t, "source")
132+
defer sourceFile.RemoveAll()
133+
134+
headerFile := tempFile(t, "header")
135+
defer headerFile.RemoveAll()
136+
137+
time.Sleep(time.Second)
138+
139+
objFile := tempFile(t, "obj")
140+
defer objFile.RemoveAll()
141+
depFile := tempFile(t, "dep")
142+
defer depFile.RemoveAll()
143+
144+
res := objFile.String() + ": \\\n\t" + sourceFile.String() + " \\\n\t" + headerFile.String()
145+
depFile.WriteFile([]byte(res))
146+
147+
upToDate, err := ObjFileIsUpToDate(sourceFile, objFile, depFile)
148+
require.NoError(t, err)
149+
require.True(t, upToDate)
150+
}
151+
152+
func TestObjFileIsUpToDateDepIsWrong(t *testing.T) {
153+
sourceFile := tempFile(t, "source")
154+
defer sourceFile.RemoveAll()
155+
156+
time.Sleep(time.Second)
157+
158+
objFile := tempFile(t, "obj")
159+
defer objFile.RemoveAll()
160+
depFile := tempFile(t, "dep")
161+
defer depFile.RemoveAll()
162+
163+
time.Sleep(time.Second)
164+
165+
headerFile := tempFile(t, "header")
166+
defer headerFile.RemoveAll()
167+
168+
res := sourceFile.String() + ": \\\n\t" + sourceFile.String() + " \\\n\t" + headerFile.String()
169+
depFile.WriteFile([]byte(res))
170+
171+
upToDate, err := ObjFileIsUpToDate(sourceFile, objFile, depFile)
172+
require.NoError(t, err)
173+
require.False(t, upToDate)
174+
}

Diff for: internal/integrationtest/compile_4/compile_test.go

+2
Original file line numberDiff line numberDiff line change
@@ -387,13 +387,15 @@ func testBuilderBridgeExample(t *testing.T, env *integrationtest.Environment, cl
387387

388388
// Simulate a library use in libraries build path
389389
require.NoError(t, buildPath.Join("libraries", "SPI").MkdirAll())
390+
require.NoError(t, buildPath.Join("libraries", "dummy_file").WriteFile([]byte{}))
390391

391392
// Build again...
392393
_, err = tryBuild(t, env, cli, "arduino:avr:leonardo", &buildOptions{NoClean: true})
393394
require.NoError(t, err)
394395

395396
require.False(t, buildPath.Join("libraries", "SPI").Exist())
396397
require.True(t, buildPath.Join("libraries", "Bridge").Exist())
398+
require.True(t, buildPath.Join("libraries", "dummy_file").Exist())
397399
})
398400

399401
t.Run("Preprocess", func(t *testing.T) {

Diff for: legacy/builder/test/builder_test.go

+13-25
Original file line numberDiff line numberDiff line change
@@ -38,18 +38,9 @@ func cleanUpBuilderTestContext(t *testing.T, ctx *types.Context) {
3838
}
3939
}
4040

41-
type skipContextPreparationStepName string
42-
43-
const skipLibraries = skipContextPreparationStepName("libraries")
44-
45-
func prepareBuilderTestContext(t *testing.T, ctx *types.Context, sketchPath *paths.Path, fqbnString string, skips ...skipContextPreparationStepName) *types.Context {
41+
func prepareBuilderTestContext(t *testing.T, ctx *types.Context, sketchPath *paths.Path, fqbnString string) *types.Context {
4642
DownloadCoresAndToolsAndLibraries(t)
4743

48-
stepToSkip := map[skipContextPreparationStepName]bool{}
49-
for _, skip := range skips {
50-
stepToSkip[skip] = true
51-
}
52-
5344
if ctx == nil {
5445
ctx = &types.Context{}
5546
}
@@ -123,7 +114,6 @@ func prepareBuilderTestContext(t *testing.T, ctx *types.Context, sketchPath *pat
123114
_, err = pme.FindToolsRequiredForBuild(targetPlatform, buildPlatform)
124115
require.NoError(t, err)
125116

126-
127117
ctx.Builder, err = bldr.NewBuilder(
128118
sk, boardBuildProperties, buildPath, false, nil, 0, nil,
129119
ctx.HardwareDirs, ctx.BuiltInToolsDirs, ctx.OtherLibrariesDirs,
@@ -133,21 +123,19 @@ func prepareBuilderTestContext(t *testing.T, ctx *types.Context, sketchPath *pat
133123
ctx.PackageManager = pme
134124
}
135125

136-
if !stepToSkip[skipLibraries] {
137-
lm, libsResolver, _, err := detector.LibrariesLoader(
138-
false, nil,
139-
ctx.BuiltInLibrariesDirs, nil, ctx.OtherLibrariesDirs,
140-
actualPlatform, targetPlatform,
141-
)
142-
require.NoError(t, err)
126+
lm, libsResolver, _, err := detector.LibrariesLoader(
127+
false, nil,
128+
ctx.BuiltInLibrariesDirs, nil, ctx.OtherLibrariesDirs,
129+
actualPlatform, targetPlatform,
130+
)
131+
require.NoError(t, err)
143132

144-
ctx.SketchLibrariesDetector = detector.NewSketchLibrariesDetector(
145-
lm, libsResolver,
146-
false,
147-
false,
148-
builderLogger,
149-
)
150-
}
133+
ctx.SketchLibrariesDetector = detector.NewSketchLibrariesDetector(
134+
lm, libsResolver,
135+
false,
136+
false,
137+
builderLogger,
138+
)
151139

152140
return ctx
153141
}

Diff for: legacy/builder/test/builder_utils_test.go

-156
This file was deleted.

0 commit comments

Comments
 (0)