@@ -807,6 +807,102 @@ func TestLegacyPackageConversionToPluggableDiscovery(t *testing.T) {
807
807
}
808
808
}
809
809
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
+
810
906
func TestRunPostInstall (t * testing.T ) {
811
907
pmb := NewBuilder (nil , nil , nil , nil , "test" )
812
908
pm := pmb .Build ()
0 commit comments