diff --git a/tests/integration/Cake.Core/Scripting/AddinDirective.cake b/tests/integration/Cake.Core/Scripting/AddinDirective.cake new file mode 100644 index 0000000000..eb7c509d90 --- /dev/null +++ b/tests/integration/Cake.Core/Scripting/AddinDirective.cake @@ -0,0 +1,20 @@ +Task("Cake.Core.Scripting.AddinDirective.LoadNetStandardAddin") + .Does(() => +{ + DotNetCorePack($"{Paths.Resources}/Cake.Core/Scripting/netstandard2.addin/netstandard2.addin.csproj", + new DotNetCorePackSettings { + Configuration = "Release" + }); + + var script = $@"#addin nuget:{Paths.Resources}/Cake.Core/Scripting/netstandard2.addin/bin/Release?package=netstandard2.addin&version=1.0.0 + Information(""Magic number: {0}"", GetMagicNumber(false)); + Information(""The answer to life: {0}"", TheAnswerToLife); + "; + + CakeExecuteExpression(script); +}); + +////////////////////////////////////////////////////////////////////////////// + +Task("Cake.Core.Scripting.AddinDirective") + .IsDependentOn("Cake.Core.Scripting.AddinDirective.LoadNetStandardAddin"); \ No newline at end of file diff --git a/tests/integration/build.cake b/tests/integration/build.cake index cfe67910a1..4e7e2f2b06 100644 --- a/tests/integration/build.cake +++ b/tests/integration/build.cake @@ -20,6 +20,7 @@ #load "./Cake.Common/Tools/Cake/CakeAliases.cake" #load "./Cake.Common/Tools/DotNetCore/DotNetCoreAliases.cake" #load "./Cake.Common/Tools/NuGet/NuGetAliases.cake" +#load "./Cake.Core/Scripting/AddinDirective.cake" #load "./Cake.Core/Scripting/DefineDirective.cake" #load "./Cake.Core/Scripting/LoadDirective.cake" #load "./Cake.Core/Scripting/SystemCollections.cake" @@ -47,6 +48,7 @@ Setup(ctx => ////////////////////////////////////////////////// Task("Cake.Core") + .IsDependentOn("Cake.Core.Scripting.AddinDirective") .IsDependentOn("Cake.Core.Scripting.DefineDirective") .IsDependentOn("Cake.Core.Scripting.LoadDirective") .IsDependentOn("Cake.Core.Scripting.SystemCollections") diff --git a/tests/integration/resources/Cake.Core/Scripting/netstandard2.addin/MyCakeExtension.cs b/tests/integration/resources/Cake.Core/Scripting/netstandard2.addin/MyCakeExtension.cs new file mode 100644 index 0000000000..dd7edb1470 --- /dev/null +++ b/tests/integration/resources/Cake.Core/Scripting/netstandard2.addin/MyCakeExtension.cs @@ -0,0 +1,29 @@ +using System; +using Cake.Core; +using Cake.Core.Annotations; + +public static class MyCakeExtension +{ + [CakeMethodAlias] + public static int GetMagicNumber(this ICakeContext context, bool value) + { + return value ? int.MinValue : int.MaxValue; + } + + [CakeMethodAlias] + public static int GetMagicNumberOrDefault(this ICakeContext context, bool value, Func defaultValueProvider = null) + { + if (value) + { + return int.MinValue; + } + + return defaultValueProvider == null ? int.MaxValue : defaultValueProvider(); + } + + [CakePropertyAlias] + public static int TheAnswerToLife(this ICakeContext context) + { + return 42; + } +} \ No newline at end of file diff --git a/tests/integration/resources/Cake.Core/Scripting/netstandard2.addin/netstandard2.addin.csproj b/tests/integration/resources/Cake.Core/Scripting/netstandard2.addin/netstandard2.addin.csproj new file mode 100644 index 0000000000..cd5b08a63d --- /dev/null +++ b/tests/integration/resources/Cake.Core/Scripting/netstandard2.addin/netstandard2.addin.csproj @@ -0,0 +1,11 @@ + + + + netstandard2.0 + + + + + + +