Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit d316186

Browse files
committed
Allow selection of build.core and build.variant with variables substitution
1 parent c3edbd3 commit d316186

File tree

2 files changed

+98
-2
lines changed

2 files changed

+98
-2
lines changed

‎arduino/cores/packagemanager/package_manager.go‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -380,13 +380,13 @@ func (pme *Explorer) ResolveFQBN(fqbn *cores.FQBN) (
380380
}
381381

382382
func (pme *Explorer) determineReferencedPlatformRelease(boardBuildProperties *properties.Map, boardPlatformRelease *cores.PlatformRelease, fqbn *cores.FQBN) (string, *cores.PlatformRelease, string, *cores.PlatformRelease, error) {
383-
core := boardBuildProperties.Get("build.core")
383+
core := boardBuildProperties.ExpandPropsInString(boardBuildProperties.Get("build.core"))
384384
referredCore := ""
385385
if split := strings.Split(core, ":"); len(split) > 1 {
386386
referredCore, core = split[0], split[1]
387387
}
388388

389-
variant := boardBuildProperties.Get("build.variant")
389+
variant := boardBuildProperties.ExpandPropsInString(boardBuildProperties.Get("build.variant"))
390390
referredVariant := ""
391391
if split := strings.Split(variant, ":"); len(split) > 1 {
392392
referredVariant, variant = split[0], split[1]

‎arduino/cores/packagemanager/package_manager_test.go‎

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -807,6 +807,102 @@ func TestLegacyPackageConversionToPluggableDiscovery(t *testing.T) {
807807
}
808808
}
809809

810+
func TestVariantAndCoreSelection(t *testing.T) {
811+
// Pass nil, since these paths are only used for installing
812+
pmb := NewBuilder(nil, nil, nil, nil, "test")
813+
// Hardware from main packages directory
814+
pmb.LoadHardwareFromDirectory(dataDir1.Join("packages"))
815+
pm := pmb.Build()
816+
pme, release := pm.NewExplorer()
817+
defer release()
818+
819+
requireSameFile := func(f1, f2 *paths.Path) {
820+
require.True(t, f1.EquivalentTo(f2), "%s must be equivalent to %s", f1, f2)
821+
}
822+
823+
// build.core test suite
824+
t.Run("CoreWithoutSubstitutions", func(t *testing.T) {
825+
fqbn, err := cores.ParseFQBN("test2:avr:test")
826+
require.NoError(t, err)
827+
require.NotNil(t, fqbn)
828+
_, _, _, buildProps, _, err := pme.ResolveFQBN(fqbn)
829+
require.NoError(t, err)
830+
require.Equal(t, "arduino", buildProps.Get("build.core"))
831+
requireSameFile(buildProps.GetPath("build.core.path"), dataDir1.Join("packages", "test2", "hardware", "avr", "1.0.0", "cores", "arduino"))
832+
})
833+
t.Run("CoreWithSubstitutions", func(t *testing.T) {
834+
fqbn, err := cores.ParseFQBN("test2:avr:test2")
835+
require.NoError(t, err)
836+
require.NotNil(t, fqbn)
837+
_, _, _, buildProps, _, err := pme.ResolveFQBN(fqbn)
838+
require.NoError(t, err)
839+
require.Equal(t, "{my_core}", buildProps.Get("build.core"))
840+
require.Equal(t, "arduino", buildProps.Get("my_core"))
841+
requireSameFile(buildProps.GetPath("build.core.path"), dataDir1.Join("packages", "test2", "hardware", "avr", "1.0.0", "cores", "arduino"))
842+
})
843+
t.Run("CoreWithSubstitutionsAndDefaultOption", func(t *testing.T) {
844+
fqbn, err := cores.ParseFQBN("test2:avr:test3")
845+
require.NoError(t, err)
846+
require.NotNil(t, fqbn)
847+
_, _, _, buildProps, _, err := pme.ResolveFQBN(fqbn)
848+
require.NoError(t, err)
849+
require.Equal(t, "{my_core}", buildProps.Get("build.core"))
850+
require.Equal(t, "arduino", buildProps.Get("my_core"))
851+
requireSameFile(buildProps.GetPath("build.core.path"), dataDir1.Join("packages", "test2", "hardware", "avr", "1.0.0", "cores", "arduino"))
852+
})
853+
t.Run("CoreWithSubstitutionsAndNonDefaultOption", func(t *testing.T) {
854+
fqbn, err := cores.ParseFQBN("test2:avr:test3:core=referenced")
855+
require.NoError(t, err)
856+
require.NotNil(t, fqbn)
857+
_, _, _, buildProps, _, err := pme.ResolveFQBN(fqbn)
858+
require.NoError(t, err)
859+
require.Equal(t, "{my_core}", buildProps.Get("build.core"))
860+
require.Equal(t, "arduino:arduino", buildProps.Get("my_core"))
861+
requireSameFile(buildProps.GetPath("build.core.path"), dataDir1.Join("packages", "arduino", "hardware", "avr", "1.8.3", "cores", "arduino"))
862+
})
863+
864+
// build.variant test suite
865+
t.Run("VariantWithoutSubstitutions", func(t *testing.T) {
866+
fqbn, err := cores.ParseFQBN("test2:avr:test4")
867+
require.NoError(t, err)
868+
require.NotNil(t, fqbn)
869+
_, _, _, buildProps, _, err := pme.ResolveFQBN(fqbn)
870+
require.NoError(t, err)
871+
require.Equal(t, "standard", buildProps.Get("build.variant"))
872+
requireSameFile(buildProps.GetPath("build.variant.path"), dataDir1.Join("packages", "test2", "hardware", "avr", "1.0.0", "variants", "standard"))
873+
})
874+
t.Run("VariantWithSubstitutions", func(t *testing.T) {
875+
fqbn, err := cores.ParseFQBN("test2:avr:test5")
876+
require.NoError(t, err)
877+
require.NotNil(t, fqbn)
878+
_, _, _, buildProps, _, err := pme.ResolveFQBN(fqbn)
879+
require.NoError(t, err)
880+
require.Equal(t, "{my_variant}", buildProps.Get("build.variant"))
881+
require.Equal(t, "standard", buildProps.Get("my_variant"))
882+
requireSameFile(buildProps.GetPath("build.variant.path"), dataDir1.Join("packages", "test2", "hardware", "avr", "1.0.0", "variants", "standard"))
883+
})
884+
t.Run("VariantWithSubstitutionsAndDefaultOption", func(t *testing.T) {
885+
fqbn, err := cores.ParseFQBN("test2:avr:test6")
886+
require.NoError(t, err)
887+
require.NotNil(t, fqbn)
888+
_, _, _, buildProps, _, err := pme.ResolveFQBN(fqbn)
889+
require.NoError(t, err)
890+
require.Equal(t, "{my_variant}", buildProps.Get("build.variant"))
891+
require.Equal(t, "standard", buildProps.Get("my_variant"))
892+
requireSameFile(buildProps.GetPath("build.variant.path"), dataDir1.Join("packages", "test2", "hardware", "avr", "1.0.0", "variants", "standard"))
893+
})
894+
t.Run("VariantWithSubstitutionsAndNonDefaultOption", func(t *testing.T) {
895+
fqbn, err := cores.ParseFQBN("test2:avr:test6:variant=referenced")
896+
require.NoError(t, err)
897+
require.NotNil(t, fqbn)
898+
_, _, _, buildProps, _, err := pme.ResolveFQBN(fqbn)
899+
require.NoError(t, err)
900+
require.Equal(t, "{my_variant}", buildProps.Get("build.variant"))
901+
require.Equal(t, "arduino:standard", buildProps.Get("my_variant"))
902+
requireSameFile(buildProps.GetPath("build.variant.path"), dataDir1.Join("packages", "arduino", "hardware", "avr", "1.8.3", "variants", "standard"))
903+
})
904+
}
905+
810906
func TestRunPostInstall(t *testing.T) {
811907
pmb := NewBuilder(nil, nil, nil, nil, "test")
812908
pm := pmb.Build()

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /