From d83e0044c0e8085627ba9deffa73c6e61a13cb48 Mon Sep 17 00:00:00 2001 From: Alexey Lustin Date: Wed, 28 Dec 2016 22:44:50 +0300 Subject: [PATCH 001/168] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20=D1=82=D0=B5=D1=81=D1=82=20=D0=BE=D0=B1=D0=B5?= =?UTF-8?q?=D1=80=D1=82=D0=BA=D0=B0=20=D0=B8=20=D0=BF=D1=80=D0=BE=D0=B5?= =?UTF-8?q?=D0=BA=D1=82=20NUnit?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 3 + src/1Script.sln | 40 +++++++++++ src/NUnitTests/NUnitTests.csproj | 83 +++++++++++++++++++++++ src/NUnitTests/Properties/AssemblyInfo.cs | 36 ++++++++++ src/NUnitTests/TestRunnerTest.cs | 16 +++++ 5 files changed, 178 insertions(+) create mode 100644 src/NUnitTests/NUnitTests.csproj create mode 100644 src/NUnitTests/Properties/AssemblyInfo.cs create mode 100644 src/NUnitTests/TestRunnerTest.cs diff --git a/.gitignore b/.gitignore index 1df48b45b..4d8294c4a 100644 --- a/.gitignore +++ b/.gitignore @@ -55,3 +55,6 @@ src/ScriptEngine.Snegopat/Snegopat_h.h # Песональный вспомагательный скрипт build.user.bat src/packages/ + +# Visual Studio OpenCover +src/OpenCover \ No newline at end of file diff --git a/src/1Script.sln b/src/1Script.sln index 38a9dbac9..27434a03a 100644 --- a/src/1Script.sln +++ b/src/1Script.sln @@ -26,34 +26,74 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution EndProject Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "Installer", "Installer\Installer.wixproj", "{BBE794A6-B159-422F-B655-B7F03F25F223}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NUnitTests", "NUnitTests\NUnitTests.csproj", "{93ACC849-E7E1-4695-B59D-54B3737E48A6}" + ProjectSection(ProjectDependencies) = postProject + {2590E2BB-CC1F-4775-80ED-451F45C9A4F1} = {2590E2BB-CC1F-4775-80ED-451F45C9A4F1} + {F09A46BD-5737-45E7-BA60-A47C9F7821A9} = {F09A46BD-5737-45E7-BA60-A47C9F7821A9} + {F062D1D9-D307-492A-A56B-FF3C55F8F6C0} = {F062D1D9-D307-492A-A56B-FF3C55F8F6C0} + {795AA2F5-3074-4BC5-A30F-1B6354044D9B} = {795AA2F5-3074-4BC5-A30F-1B6354044D9B} + EndProjectSection +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution + {4585BA5D-9EC4-4C89-8250-2033D2AC2999}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4585BA5D-9EC4-4C89-8250-2033D2AC2999}.Debug|Any CPU.Build.0 = Debug|Any CPU {4585BA5D-9EC4-4C89-8250-2033D2AC2999}.Debug|x86.ActiveCfg = Debug|x86 {4585BA5D-9EC4-4C89-8250-2033D2AC2999}.Debug|x86.Build.0 = Debug|x86 + {4585BA5D-9EC4-4C89-8250-2033D2AC2999}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4585BA5D-9EC4-4C89-8250-2033D2AC2999}.Release|Any CPU.Build.0 = Release|Any CPU {4585BA5D-9EC4-4C89-8250-2033D2AC2999}.Release|x86.ActiveCfg = Release|x86 {4585BA5D-9EC4-4C89-8250-2033D2AC2999}.Release|x86.Build.0 = Release|x86 + {F062D1D9-D307-492A-A56B-FF3C55F8F6C0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F062D1D9-D307-492A-A56B-FF3C55F8F6C0}.Debug|Any CPU.Build.0 = Debug|Any CPU {F062D1D9-D307-492A-A56B-FF3C55F8F6C0}.Debug|x86.ActiveCfg = Debug|Any CPU {F062D1D9-D307-492A-A56B-FF3C55F8F6C0}.Debug|x86.Build.0 = Debug|Any CPU + {F062D1D9-D307-492A-A56B-FF3C55F8F6C0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F062D1D9-D307-492A-A56B-FF3C55F8F6C0}.Release|Any CPU.Build.0 = Release|Any CPU {F062D1D9-D307-492A-A56B-FF3C55F8F6C0}.Release|x86.ActiveCfg = Release|Any CPU {F062D1D9-D307-492A-A56B-FF3C55F8F6C0}.Release|x86.Build.0 = Release|Any CPU + {F09A46BD-5737-45E7-BA60-A47C9F7821A9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F09A46BD-5737-45E7-BA60-A47C9F7821A9}.Debug|Any CPU.Build.0 = Debug|Any CPU {F09A46BD-5737-45E7-BA60-A47C9F7821A9}.Debug|x86.ActiveCfg = Debug|Any CPU {F09A46BD-5737-45E7-BA60-A47C9F7821A9}.Debug|x86.Build.0 = Debug|Any CPU + {F09A46BD-5737-45E7-BA60-A47C9F7821A9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F09A46BD-5737-45E7-BA60-A47C9F7821A9}.Release|Any CPU.Build.0 = Release|Any CPU {F09A46BD-5737-45E7-BA60-A47C9F7821A9}.Release|x86.ActiveCfg = Release|Any CPU {F09A46BD-5737-45E7-BA60-A47C9F7821A9}.Release|x86.Build.0 = Release|Any CPU + {2590E2BB-CC1F-4775-80ED-451F45C9A4F1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2590E2BB-CC1F-4775-80ED-451F45C9A4F1}.Debug|Any CPU.Build.0 = Debug|Any CPU {2590E2BB-CC1F-4775-80ED-451F45C9A4F1}.Debug|x86.ActiveCfg = Debug|x86 {2590E2BB-CC1F-4775-80ED-451F45C9A4F1}.Debug|x86.Build.0 = Debug|x86 + {2590E2BB-CC1F-4775-80ED-451F45C9A4F1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2590E2BB-CC1F-4775-80ED-451F45C9A4F1}.Release|Any CPU.Build.0 = Release|Any CPU {2590E2BB-CC1F-4775-80ED-451F45C9A4F1}.Release|x86.ActiveCfg = Release|x86 {2590E2BB-CC1F-4775-80ED-451F45C9A4F1}.Release|x86.Build.0 = Release|x86 + {795AA2F5-3074-4BC5-A30F-1B6354044D9B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {795AA2F5-3074-4BC5-A30F-1B6354044D9B}.Debug|Any CPU.Build.0 = Debug|Any CPU {795AA2F5-3074-4BC5-A30F-1B6354044D9B}.Debug|x86.ActiveCfg = Debug|x86 {795AA2F5-3074-4BC5-A30F-1B6354044D9B}.Debug|x86.Build.0 = Debug|x86 + {795AA2F5-3074-4BC5-A30F-1B6354044D9B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {795AA2F5-3074-4BC5-A30F-1B6354044D9B}.Release|Any CPU.Build.0 = Release|Any CPU {795AA2F5-3074-4BC5-A30F-1B6354044D9B}.Release|x86.ActiveCfg = Release|x86 {795AA2F5-3074-4BC5-A30F-1B6354044D9B}.Release|x86.Build.0 = Release|x86 + {BBE794A6-B159-422F-B655-B7F03F25F223}.Debug|Any CPU.ActiveCfg = Debug|x86 {BBE794A6-B159-422F-B655-B7F03F25F223}.Debug|x86.ActiveCfg = Debug|x86 + {BBE794A6-B159-422F-B655-B7F03F25F223}.Release|Any CPU.ActiveCfg = Release|x86 {BBE794A6-B159-422F-B655-B7F03F25F223}.Release|x86.ActiveCfg = Release|x86 + {93ACC849-E7E1-4695-B59D-54B3737E48A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {93ACC849-E7E1-4695-B59D-54B3737E48A6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {93ACC849-E7E1-4695-B59D-54B3737E48A6}.Debug|x86.ActiveCfg = Debug|Any CPU + {93ACC849-E7E1-4695-B59D-54B3737E48A6}.Debug|x86.Build.0 = Debug|Any CPU + {93ACC849-E7E1-4695-B59D-54B3737E48A6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {93ACC849-E7E1-4695-B59D-54B3737E48A6}.Release|Any CPU.Build.0 = Release|Any CPU + {93ACC849-E7E1-4695-B59D-54B3737E48A6}.Release|x86.ActiveCfg = Release|Any CPU + {93ACC849-E7E1-4695-B59D-54B3737E48A6}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/src/NUnitTests/NUnitTests.csproj b/src/NUnitTests/NUnitTests.csproj new file mode 100644 index 000000000..c7fbd4605 --- /dev/null +++ b/src/NUnitTests/NUnitTests.csproj @@ -0,0 +1,83 @@ + + + + Debug + AnyCPU + {93ACC849-E7E1-4695-B59D-54B3737E48A6} + Library + Properties + NUnitTests + NUnitTests + v4.5.2 + 512 + {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + 10.0 + $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) + $(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages + False + UnitTest + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + + + + + + False + + + False + + + False + + + False + + + + + + + + \ No newline at end of file diff --git a/src/NUnitTests/Properties/AssemblyInfo.cs b/src/NUnitTests/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..74251e1d4 --- /dev/null +++ b/src/NUnitTests/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Управление общими сведениями о сборке осуществляется посредством следующего +// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, +// связанные со сборкой. +[assembly: AssemblyTitle("NUnitTests")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("NUnitTests")] +[assembly: AssemblyCopyright("Copyright © 2016")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Задание значения false для атрибута ComVisible приведет к тому, что типы из этой сборки станут невидимыми +// для COM-компонентов. Если к одному из типов этой сборки необходимо обращаться из +// модели COM, задайте для атрибута ComVisible этого типа значение true. +[assembly: ComVisible(false)] + +// Если данный проект доступен для модели COM, следующий GUID используется в качестве идентификатора библиотеки типов +[assembly: Guid("93acc849-e7e1-4695-b59d-54b3737e48a6")] + +// Сведения о версии сборки состоят из следующих четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номера сборки и редакции по умолчанию +// используя "*", как показано ниже: +// [сборка: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/src/NUnitTests/TestRunnerTest.cs b/src/NUnitTests/TestRunnerTest.cs new file mode 100644 index 000000000..6badd5cee --- /dev/null +++ b/src/NUnitTests/TestRunnerTest.cs @@ -0,0 +1,16 @@ +using System; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace NUnitTests +{ + [TestClass] + public class UnitTestWrapper + { + [TestMethod] + public void RunEngineTests() + { + Equals("", ""); + + } + } +} From 61839321d8ff7acfa67caf49ae7b051e065f9f5f Mon Sep 17 00:00:00 2001 From: Alexey Lustin Date: Thu, 29 Dec 2016 01:04:31 +0300 Subject: [PATCH 002/168] =?UTF-8?q?=D0=97=D0=B5=D0=BB=D0=B5=D0=BD=D0=B0?= =?UTF-8?q?=D1=8F=20=D0=BF=D0=BE=D0=BB=D0=BE=D1=81=D0=B0=20=D0=B8=20=D0=B3?= =?UTF-8?q?=D0=BE=D1=82=D0=BE=D0=B2=D1=8B=D0=B9=20=D0=BE=D1=82=D1=87=D0=B5?= =?UTF-8?q?=D1=82=20=D0=BF=D0=BE=20=D0=BF=D0=BE=D0=BA=D1=80=D1=8B=D1=82?= =?UTF-8?q?=D0=B8=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 5 +- cover.bat | 5 ++ src/NUnitTests/EngineWrapperNUnit.cs | 103 +++++++++++++++++++++++++++ src/NUnitTests/NUnitTests.csproj | 18 +++++ src/NUnitTests/TestRunnerTest.cs | 31 ++++++-- src/NUnitTests/packages.config | 14 ++++ 6 files changed, 170 insertions(+), 6 deletions(-) create mode 100644 cover.bat create mode 100644 src/NUnitTests/EngineWrapperNUnit.cs create mode 100644 src/NUnitTests/packages.config diff --git a/.gitignore b/.gitignore index 4d8294c4a..56a09741e 100644 --- a/.gitignore +++ b/.gitignore @@ -56,5 +56,6 @@ src/ScriptEngine.Snegopat/Snegopat_h.h build.user.bat src/packages/ -# Visual Studio OpenCover -src/OpenCover \ No newline at end of file +# Visual Studio OpenCover and Test result +src/OpenCover +TestResult.xml \ No newline at end of file diff --git a/cover.bat b/cover.bat new file mode 100644 index 000000000..220353fd9 --- /dev/null +++ b/cover.bat @@ -0,0 +1,5 @@ +echo "Run testrunner.os behind NUnit with OpenCover" +echo "generate OpneCover.xml to external services like Coverals.io" +echo "Create local report for contributor ;-)" + +"%CD%\src\packages\OpenCover.4.6.519\tools\OpenCover.Console.exe" -output:"%CD%\src\OpenCover\opencover.xml" -target:./src/packages/NUnit.ConsoleRunner.3.5.0/tools/nunit3-console.exe -targetargs:"./src/NUnitTests/bin/Release/NUnitTests.dll" -register:user diff --git a/src/NUnitTests/EngineWrapperNUnit.cs b/src/NUnitTests/EngineWrapperNUnit.cs new file mode 100644 index 000000000..b289eca1c --- /dev/null +++ b/src/NUnitTests/EngineWrapperNUnit.cs @@ -0,0 +1,103 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +using ScriptEngine.Machine.Contexts; +using ScriptEngine.HostedScript.Library; +using ScriptEngine.Machine; +using ScriptEngine.Environment; +using ScriptEngine.HostedScript; +using System.IO; + +namespace NUnitTests +{ + class EngineWrapperNUnit : IHostApplication + { + + private HostedScriptEngine engine; + private string[] commandLineArgs; + + public HostedScriptEngine StartEngine() + { + engine = new HostedScriptEngine(); + engine.Initialize(); + + commandLineArgs = new string[] { }; + + return engine; + } + + private void RunTestScript(ICodeSource source, string resourceName) + { + var module = engine.GetCompilerService().CreateModule(source); + + engine.LoadUserScript(new ScriptEngine.UserAddedScript() + { + Type = ScriptEngine.UserAddedScriptType.Class, + Module = module, + Symbol = resourceName + }); + + var process = engine.CreateProcess(this, source); + process.Start(); + + } + + internal void RunTestScriptFromPath(string scriptFilePath, String argsScript = "") + { + string codeSource; + + using (Stream s = File.OpenRead(scriptFilePath)) + { + using (StreamReader r = new StreamReader(s)) + { + codeSource = r.ReadToEnd(); + } + } + + if (argsScript != "") + { + commandLineArgs = argsScript.Split(' '); + } + + ICodeSource sourceToCompile = engine.Loader.FromString(codeSource); + + RunTestScript(sourceToCompile, scriptFilePath); + } + + public EngineWrapperNUnit() + { + } + public string[] GetCommandLineArguments() + { + return this.commandLineArgs; + } + + public bool InputString(out string result, int maxLen) + { + result = ""; + return false; + } + + public void ShowExceptionInfo(Exception exc) + { + throw exc; + } + + public void Echo(string str, MessageStatusEnum status = MessageStatusEnum.Ordinary) + { + Console.WriteLine(str); + } + + public HostedScriptEngine Engine + { + get + { + return engine; + } + } + + } +} diff --git a/src/NUnitTests/NUnitTests.csproj b/src/NUnitTests/NUnitTests.csproj index c7fbd4605..91af56e71 100644 --- a/src/NUnitTests/NUnitTests.csproj +++ b/src/NUnitTests/NUnitTests.csproj @@ -35,6 +35,10 @@ 4 + + ..\packages\NUnit.3.5.0\lib\net45\nunit.framework.dll + True + @@ -50,9 +54,23 @@ + + + + {f09a46bd-5737-45e7-ba60-a47c9f7821a9} + ScriptEngine.HostedScript + + + {f062d1d9-d307-492a-a56b-ff3c55f8f6c0} + ScriptEngine + + + + + diff --git a/src/NUnitTests/TestRunnerTest.cs b/src/NUnitTests/TestRunnerTest.cs index 6badd5cee..486acea94 100644 --- a/src/NUnitTests/TestRunnerTest.cs +++ b/src/NUnitTests/TestRunnerTest.cs @@ -1,15 +1,38 @@ using System; -using Microsoft.VisualStudio.TestTools.UnitTesting; + +using NUnit.Framework; namespace NUnitTests { - [TestClass] + [TestFixture] public class UnitTestWrapper { - [TestMethod] + private EngineWrapperNUnit host; + + [OneTimeSetUp] + public void Initialize() + { + host = new EngineWrapperNUnit(); + host.StartEngine(); + } + + [Test] public void RunEngineTests() { - Equals("", ""); + host = new EngineWrapperNUnit(); + host.StartEngine(); + + String testRunnerPath = System.IO.Path.Combine( + NUnit.Framework.TestContext.CurrentContext.TestDirectory, "..","..","..","..", + "tests", "testrunner.os" + ); + + NUnit.Framework.Assert.IsTrue(System.IO.File.Exists(testRunnerPath), + "Запускатель тестов отсутствует по пути " + testRunnerPath); + + + + host.RunTestScriptFromPath(testRunnerPath, "-runall ."); } } diff --git a/src/NUnitTests/packages.config b/src/NUnitTests/packages.config new file mode 100644 index 000000000..309342441 --- /dev/null +++ b/src/NUnitTests/packages.config @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file From 83d2200fa43d176fe336c76ad287b61fb25355af Mon Sep 17 00:00:00 2001 From: Alexey Lustin Date: Thu, 29 Dec 2016 01:54:47 +0300 Subject: [PATCH 003/168] =?UTF-8?q?2=20=D0=B2=D0=BD=D0=B5=D1=88=D0=BD?= =?UTF-8?q?=D0=B8=D1=85=20=D1=81=D0=B5=D1=80=D0=B2=D0=B8=D1=81=D0=B0=20?= =?UTF-8?q?=D1=80=D0=B0=D1=81=D1=87=D0=B5=D1=82=D0=B0=20=D0=B8=20=D0=BB?= =?UTF-8?q?=D0=BE=D0=BA=D0=B0=D0=BB=D1=8C=D0=BD=D1=8B=D0=B9=20=D0=BE=D1=82?= =?UTF-8?q?=D1=87=D0=B5=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- codecov.io.sh | 4 ++++ cover.bat | 2 ++ coverals.io.bat | 4 ++++ 3 files changed, 10 insertions(+) create mode 100644 codecov.io.sh create mode 100644 coverals.io.bat diff --git a/codecov.io.sh b/codecov.io.sh new file mode 100644 index 000000000..bd8dd3075 --- /dev/null +++ b/codecov.io.sh @@ -0,0 +1,4 @@ +echo "dont forget pip install codecov" +echo "and dont forget set CODECOV_TOKEN" + +codecov -f $(pwd)/src/OpenCover/opencover.xml diff --git a/cover.bat b/cover.bat index 220353fd9..3bc6b927b 100644 --- a/cover.bat +++ b/cover.bat @@ -3,3 +3,5 @@ echo "generate OpneCover.xml to external services like Coverals.io" echo "Create local report for contributor ;-)" "%CD%\src\packages\OpenCover.4.6.519\tools\OpenCover.Console.exe" -output:"%CD%\src\OpenCover\opencover.xml" -target:./src/packages/NUnit.ConsoleRunner.3.5.0/tools/nunit3-console.exe -targetargs:"./src/NUnitTests/bin/Release/NUnitTests.dll" -register:user + +"%CD%\src\packages\ReportGenerator.2.5.1\tools\ReportGenerator.exe" -reports:"%CD%\src\OpenCover\opencover.xml" -targetdir:"%CD%\src\OpenCover\CodeCovLocal" diff --git a/coverals.io.bat b/coverals.io.bat new file mode 100644 index 000000000..15e1f5a0d --- /dev/null +++ b/coverals.io.bat @@ -0,0 +1,4 @@ +echo "Publish coverals io info" +echo "dont forget set secure repo token ;-) COVERALLS_REPO_TOKEN" + +"%CD%\src\packages\coveralls.net.0.7.0\tools\csmacnz.Coveralls.exe" --useRelativePaths --commitBranch %BRANCH% --opencover -i %CD%\src\OpenCover\opencover.xml From 540efef5c1a68225ab905dfe1b4f66bf87a6210d Mon Sep 17 00:00:00 2001 From: Alexey Lustin Date: Thu, 29 Dec 2016 01:58:12 +0300 Subject: [PATCH 004/168] =?UTF-8?q?=D0=BD=D0=B5=D0=B1=D0=BE=D0=BB=D1=8C?= =?UTF-8?q?=D1=88=D0=BE=D0=B9=20=D1=84=D0=B8=D0=BA=D1=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- coverals.io.bat | 1 + 1 file changed, 1 insertion(+) diff --git a/coverals.io.bat b/coverals.io.bat index 15e1f5a0d..78b7a2f0b 100644 --- a/coverals.io.bat +++ b/coverals.io.bat @@ -1,4 +1,5 @@ echo "Publish coverals io info" echo "dont forget set secure repo token ;-) COVERALLS_REPO_TOKEN" +echo "dont forget use branch and pull request params" "%CD%\src\packages\coveralls.net.0.7.0\tools\csmacnz.Coveralls.exe" --useRelativePaths --commitBranch %BRANCH% --opencover -i %CD%\src\OpenCover\opencover.xml From 24320cd154c6de357768cd33805205b0ce30cfed Mon Sep 17 00:00:00 2001 From: Alexey Lustin Date: Thu, 29 Dec 2016 02:22:36 +0300 Subject: [PATCH 005/168] =?UTF-8?q?=D0=BF=D1=80=D0=B8=D0=B2=D0=B5=D0=B4?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B2=20=D0=BF=D0=BE=D1=80=D1=8F?= =?UTF-8?q?=D0=B4=D0=BE=D0=BA=20=D1=81=D0=BA=D1=80=D0=B8=D0=BF=D1=82=D0=B0?= =?UTF-8?q?=20=D0=B8=20=D0=B8=D0=B3=D0=BD=D0=BE=D1=80=20=D1=84=D0=B0=D0=B9?= =?UTF-8?q?=D0=BB=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 +- coverals.io.bat | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 56a09741e..644076999 100644 --- a/.gitignore +++ b/.gitignore @@ -58,4 +58,4 @@ src/packages/ # Visual Studio OpenCover and Test result src/OpenCover -TestResult.xml \ No newline at end of file +TestResult.xml diff --git a/coverals.io.bat b/coverals.io.bat index 78b7a2f0b..1bac2029a 100644 --- a/coverals.io.bat +++ b/coverals.io.bat @@ -2,4 +2,4 @@ echo "Publish coverals io info" echo "dont forget set secure repo token ;-) COVERALLS_REPO_TOKEN" echo "dont forget use branch and pull request params" -"%CD%\src\packages\coveralls.net.0.7.0\tools\csmacnz.Coveralls.exe" --useRelativePaths --commitBranch %BRANCH% --opencover -i %CD%\src\OpenCover\opencover.xml +"%CD%\src\packages\coveralls.net.0.7.0\tools\csmacnz.Coveralls.exe" --useRelativePaths --opencover -i %CD%\src\OpenCover\opencover.xml From 387328b931c173f36cc1ab2ff8590b9ce2ec3895 Mon Sep 17 00:00:00 2001 From: Alexey Lustin Date: Thu, 29 Dec 2016 02:43:07 +0300 Subject: [PATCH 006/168] =?UTF-8?q?=D0=97=D0=B0=D0=B4=D0=B0=D1=8E=20=D1=80?= =?UTF-8?q?=D0=B0=D0=B1=D0=BE=D1=87=D0=B8=D0=B9=20=D0=BA=D0=B0=D1=82=D0=B0?= =?UTF-8?q?=D0=BB=D0=BE=D0=B3=20=D0=B4=D0=BB=D1=8F=20=D1=82=D0=B5=D1=81?= =?UTF-8?q?=D1=82=D0=BE=D0=B2=20-=20=D1=82=D0=B5=D0=BF=D0=B5=D1=80=D1=8C?= =?UTF-8?q?=2064%?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/NUnitTests/TestRunnerTest.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/NUnitTests/TestRunnerTest.cs b/src/NUnitTests/TestRunnerTest.cs index 486acea94..ea922664a 100644 --- a/src/NUnitTests/TestRunnerTest.cs +++ b/src/NUnitTests/TestRunnerTest.cs @@ -32,7 +32,7 @@ public void RunEngineTests() - host.RunTestScriptFromPath(testRunnerPath, "-runall ."); + host.RunTestScriptFromPath(testRunnerPath, "-runall " + new System.IO.FileInfo(testRunnerPath).Directory.FullName); } } From 0f2b0623ffefd1bdbf50991164eeca668990467d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=B5=D1=80=D0=B3=D1=A3=D0=B9=20=D0=91=D0=B0=D1=82?= =?UTF-8?q?=D0=B0=D0=BD=D0=BE=D0=B2?= Date: Thu, 5 Jan 2017 13:52:16 +0300 Subject: [PATCH 007/168] =?UTF-8?q?=D0=9F=D1=80=D0=BE=D0=B5=D0=BA=D1=82=20?= =?UTF-8?q?NUnitTests=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=20=D0=B2=20Mono.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/1Script_Mono.sln | 20 +++++++++++++++++++- src/NUnitTests/NUnitTests.csproj | 4 ++-- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/src/1Script_Mono.sln b/src/1Script_Mono.sln index 6d0913aea..3e5d710ed 100644 --- a/src/1Script_Mono.sln +++ b/src/1Script_Mono.sln @@ -12,6 +12,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "oscript", "oscript\oscript. EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StandaloneRunner", "StandaloneRunner\StandaloneRunner.csproj", "{795AA2F5-3074-4BC5-A30F-1B6354044D9B}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NUnitTests", "NUnitTests\NUnitTests.csproj", "{93ACC849-E7E1-4695-B59D-54B3737E48A6}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -103,6 +105,22 @@ Global {618F7216-6576-410D-818C-C79BB6BEEA0C}.Release|Win32.Build.0 = Release|Win32 {618F7216-6576-410D-818C-C79BB6BEEA0C}.Release|x86.ActiveCfg = Release|Win32 {618F7216-6576-410D-818C-C79BB6BEEA0C}.Release|x86.Build.0 = Release|Win32 + {93ACC849-E7E1-4695-B59D-54B3737E48A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {93ACC849-E7E1-4695-B59D-54B3737E48A6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {93ACC849-E7E1-4695-B59D-54B3737E48A6}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {93ACC849-E7E1-4695-B59D-54B3737E48A6}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {93ACC849-E7E1-4695-B59D-54B3737E48A6}.Debug|Win32.ActiveCfg = Debug|Any CPU + {93ACC849-E7E1-4695-B59D-54B3737E48A6}.Debug|Win32.Build.0 = Debug|Any CPU + {93ACC849-E7E1-4695-B59D-54B3737E48A6}.Debug|x86.ActiveCfg = Debug|Any CPU + {93ACC849-E7E1-4695-B59D-54B3737E48A6}.Debug|x86.Build.0 = Debug|Any CPU + {93ACC849-E7E1-4695-B59D-54B3737E48A6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {93ACC849-E7E1-4695-B59D-54B3737E48A6}.Release|Any CPU.Build.0 = Release|Any CPU + {93ACC849-E7E1-4695-B59D-54B3737E48A6}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {93ACC849-E7E1-4695-B59D-54B3737E48A6}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {93ACC849-E7E1-4695-B59D-54B3737E48A6}.Release|Win32.ActiveCfg = Release|Any CPU + {93ACC849-E7E1-4695-B59D-54B3737E48A6}.Release|Win32.Build.0 = Release|Any CPU + {93ACC849-E7E1-4695-B59D-54B3737E48A6}.Release|x86.ActiveCfg = Release|Any CPU + {93ACC849-E7E1-4695-B59D-54B3737E48A6}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(MonoDevelopProperties) = preSolution Policies = $0 @@ -111,7 +129,7 @@ Global $1.ResourceNamePolicy = FileFormatDefault $0.TextStylePolicy = $2 $2.inheritsSet = null - $2.scope = application/xml + $2.scope = application/config+xml $2.FileWidth = 120 $2.inheritsScope = text/plain $0.CSharpFormattingPolicy = $3 diff --git a/src/NUnitTests/NUnitTests.csproj b/src/NUnitTests/NUnitTests.csproj index 91af56e71..99ee79183 100644 --- a/src/NUnitTests/NUnitTests.csproj +++ b/src/NUnitTests/NUnitTests.csproj @@ -10,7 +10,7 @@ NUnitTests v4.5.2 512 - {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 10.0 $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) $(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages @@ -98,4 +98,4 @@ --> - \ No newline at end of file + From 7eea9bb5d64b9472d5a2e43d6c315c380c3777b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=B5=D1=80=D0=B3=D1=A3=D0=B9=20=D0=91=D0=B0=D1=82?= =?UTF-8?q?=D0=B0=D0=BD=D0=BE=D0=B2?= Date: Thu, 5 Jan 2017 13:53:30 +0300 Subject: [PATCH 008/168] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B0=D0=BB=20=D1=82?= =?UTF-8?q?=D0=B5=D1=81=D1=82=D0=BE=D0=B2.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit NUnit валится при соответствующем коде возврата testrunner. --- src/NUnitTests/EngineWrapperNUnit.cs | 21 +++++---------------- src/NUnitTests/TestRunnerTest.cs | 8 +++++++- 2 files changed, 12 insertions(+), 17 deletions(-) diff --git a/src/NUnitTests/EngineWrapperNUnit.cs b/src/NUnitTests/EngineWrapperNUnit.cs index b289eca1c..013cb1ab8 100644 --- a/src/NUnitTests/EngineWrapperNUnit.cs +++ b/src/NUnitTests/EngineWrapperNUnit.cs @@ -29,7 +29,7 @@ public HostedScriptEngine StartEngine() return engine; } - private void RunTestScript(ICodeSource source, string resourceName) + private int RunTestScript(ICodeSource source, string resourceName) { var module = engine.GetCompilerService().CreateModule(source); @@ -41,30 +41,19 @@ private void RunTestScript(ICodeSource source, string resourceName) }); var process = engine.CreateProcess(this, source); - process.Start(); - + return process.Start(); } - internal void RunTestScriptFromPath(string scriptFilePath, String argsScript = "") + internal int RunTestScriptFromPath(string scriptFilePath, String argsScript = "") { - string codeSource; - - using (Stream s = File.OpenRead(scriptFilePath)) - { - using (StreamReader r = new StreamReader(s)) - { - codeSource = r.ReadToEnd(); - } - } - if (argsScript != "") { commandLineArgs = argsScript.Split(' '); } - ICodeSource sourceToCompile = engine.Loader.FromString(codeSource); + ICodeSource sourceToCompile = engine.Loader.FromFile(scriptFilePath); - RunTestScript(sourceToCompile, scriptFilePath); + return RunTestScript(sourceToCompile, scriptFilePath); } public EngineWrapperNUnit() diff --git a/src/NUnitTests/TestRunnerTest.cs b/src/NUnitTests/TestRunnerTest.cs index ea922664a..5e8830c13 100644 --- a/src/NUnitTests/TestRunnerTest.cs +++ b/src/NUnitTests/TestRunnerTest.cs @@ -7,6 +7,8 @@ namespace NUnitTests [TestFixture] public class UnitTestWrapper { + const int TEST_STATE_FAILED = 3; + private EngineWrapperNUnit host; [OneTimeSetUp] @@ -32,8 +34,12 @@ public void RunEngineTests() - host.RunTestScriptFromPath(testRunnerPath, "-runall " + new System.IO.FileInfo(testRunnerPath).Directory.FullName); + var result = host.RunTestScriptFromPath(testRunnerPath, "-runall " + new System.IO.FileInfo(testRunnerPath).Directory.FullName); + if (result == TEST_STATE_FAILED) + { + NUnit.Framework.Assert.Fail("Есть непройденные тесты!"); + } } } } From c014b9477d7ac4af7e2eab0c7e7aea9c0556402a Mon Sep 17 00:00:00 2001 From: Sergey Batanov Date: Thu, 19 Jan 2017 16:40:54 +0300 Subject: [PATCH 009/168] =?UTF-8?q?Fix=20#357:=20=D0=94=D0=BE=D0=B1=D0=B0?= =?UTF-8?q?=D0=B2=D0=BB=D0=B5=D0=BD=D0=B0=20=D0=B2=D0=BD=D0=B5=D1=88=D0=BD?= =?UTF-8?q?=D1=8F=D1=8F=20=D0=BA=D0=BE=D0=BC=D0=BF=D0=BE=D0=BD=D0=B5=D0=BD?= =?UTF-8?q?=D1=82=D0=B0.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Добавлен проект внешней компоненты для прогона тестов на поломку совместимости API. --- src/1Script_Mono.sln | 20 +++++++- src/Component/Component.csproj | 64 ++++++++++++++++++++++++ src/Component/ISimple.cs | 13 +++++ src/Component/Properties/AssemblyInfo.cs | 26 ++++++++++ src/Component/SimpleClass.cs | 44 ++++++++++++++++ src/Component/SimpleCollection.cs | 58 +++++++++++++++++++++ src/Component/SimpleEnum.cs | 21 ++++++++ tests/addin.os | 52 +++++++++++++++++++ tests/component/package-loader.os | 7 +++ 9 files changed, 304 insertions(+), 1 deletion(-) create mode 100644 src/Component/Component.csproj create mode 100644 src/Component/ISimple.cs create mode 100644 src/Component/Properties/AssemblyInfo.cs create mode 100644 src/Component/SimpleClass.cs create mode 100644 src/Component/SimpleCollection.cs create mode 100644 src/Component/SimpleEnum.cs create mode 100644 tests/addin.os create mode 100644 tests/component/package-loader.os diff --git a/src/1Script_Mono.sln b/src/1Script_Mono.sln index 9295a3ae9..3c2d334ca 100644 --- a/src/1Script_Mono.sln +++ b/src/1Script_Mono.sln @@ -12,6 +12,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "oscript", "oscript\oscript. EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StandaloneRunner", "StandaloneRunner\StandaloneRunner.csproj", "{795AA2F5-3074-4BC5-A30F-1B6354044D9B}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Component", "Component\Component.csproj", "{B6C3C000-699B-4A2F-92D1-EEAEA9CFE2AB}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -103,6 +105,22 @@ Global {618F7216-6576-410D-818C-C79BB6BEEA0C}.Release|Win32.Build.0 = Release|Win32 {618F7216-6576-410D-818C-C79BB6BEEA0C}.Release|x86.ActiveCfg = Release|Win32 {618F7216-6576-410D-818C-C79BB6BEEA0C}.Release|x86.Build.0 = Release|Win32 + {B6C3C000-699B-4A2F-92D1-EEAEA9CFE2AB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B6C3C000-699B-4A2F-92D1-EEAEA9CFE2AB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B6C3C000-699B-4A2F-92D1-EEAEA9CFE2AB}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {B6C3C000-699B-4A2F-92D1-EEAEA9CFE2AB}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {B6C3C000-699B-4A2F-92D1-EEAEA9CFE2AB}.Debug|Win32.ActiveCfg = Debug|Any CPU + {B6C3C000-699B-4A2F-92D1-EEAEA9CFE2AB}.Debug|Win32.Build.0 = Debug|Any CPU + {B6C3C000-699B-4A2F-92D1-EEAEA9CFE2AB}.Debug|x86.ActiveCfg = Debug|Any CPU + {B6C3C000-699B-4A2F-92D1-EEAEA9CFE2AB}.Debug|x86.Build.0 = Debug|Any CPU + {B6C3C000-699B-4A2F-92D1-EEAEA9CFE2AB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B6C3C000-699B-4A2F-92D1-EEAEA9CFE2AB}.Release|Any CPU.Build.0 = Release|Any CPU + {B6C3C000-699B-4A2F-92D1-EEAEA9CFE2AB}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {B6C3C000-699B-4A2F-92D1-EEAEA9CFE2AB}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {B6C3C000-699B-4A2F-92D1-EEAEA9CFE2AB}.Release|Win32.ActiveCfg = Release|Any CPU + {B6C3C000-699B-4A2F-92D1-EEAEA9CFE2AB}.Release|Win32.Build.0 = Release|Any CPU + {B6C3C000-699B-4A2F-92D1-EEAEA9CFE2AB}.Release|x86.ActiveCfg = Release|Any CPU + {B6C3C000-699B-4A2F-92D1-EEAEA9CFE2AB}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(MonoDevelopProperties) = preSolution Policies = $0 @@ -111,7 +129,7 @@ Global $1.ResourceNamePolicy = FileFormatDefault $0.TextStylePolicy = $2 $2.inheritsSet = null - $2.scope = application/xml + $2.scope = text/x-csharp $2.FileWidth = 120 $2.inheritsScope = text/plain $2.TabsToSpaces = False diff --git a/src/Component/Component.csproj b/src/Component/Component.csproj new file mode 100644 index 000000000..683bb403c --- /dev/null +++ b/src/Component/Component.csproj @@ -0,0 +1,64 @@ + + + + Debug + AnyCPU + {B6C3C000-699B-4A2F-92D1-EEAEA9CFE2AB} + Library + Component + Component + v4.5 + + + true + full + false + bin\Debug + DEBUG; + prompt + 4 + false + + + + AfterBuild + xcopy "${TargetDir}\Component.dll" "${SolutionDir}\oscript\bin\${ProjectConfig}\" /Y /E /D + + + + + + + true + bin\Release + prompt + 4 + false + + + + + + + + + + + + + + {F062D1D9-D307-492A-A56B-FF3C55F8F6C0} + ScriptEngine + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/Component/ISimple.cs b/src/Component/ISimple.cs new file mode 100644 index 000000000..6ca603e06 --- /dev/null +++ b/src/Component/ISimple.cs @@ -0,0 +1,13 @@ +/*---------------------------------------------------------- +This Source Code Form is subject to the terms of the +Mozilla Public License, v.2.0. If a copy of the MPL +was not distributed with this file, You can obtain one +at http://mozilla.org/MPL/2.0/. +----------------------------------------------------------*/ +using System; +namespace Component +{ + public interface ISimple + { + } +} diff --git a/src/Component/Properties/AssemblyInfo.cs b/src/Component/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..93ae369e7 --- /dev/null +++ b/src/Component/Properties/AssemblyInfo.cs @@ -0,0 +1,26 @@ +using System.Reflection; +using System.Runtime.CompilerServices; + +// Information about this assembly is defined by the following attributes. +// Change them to the values specific to your project. + +[assembly: AssemblyTitle("Component")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("")] +[assembly: AssemblyCopyright("${AuthorCopyright}")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". +// The form "{Major}.{Minor}.*" will automatically update the build and revision, +// and "{Major}.{Minor}.{Build}.*" will update just the revision. + +[assembly: AssemblyVersion("1.0.*")] + +// The following attributes are used to specify the signing key for the assembly, +// if desired. See the Mono documentation for more information about signing. + +//[assembly: AssemblyDelaySign(false)] +//[assembly: AssemblyKeyFile("")] diff --git a/src/Component/SimpleClass.cs b/src/Component/SimpleClass.cs new file mode 100644 index 000000000..b9d3cedb0 --- /dev/null +++ b/src/Component/SimpleClass.cs @@ -0,0 +1,44 @@ +/*---------------------------------------------------------- +This Source Code Form is subject to the terms of the +Mozilla Public License, v.2.0. If a copy of the MPL +was not distributed with this file, You can obtain one +at http://mozilla.org/MPL/2.0/. +----------------------------------------------------------*/ +using System; +using ScriptEngine.Machine.Contexts; +using ScriptEngine.Machine; + +namespace Component +{ + [ContextClass("ПростоКласс")] + public sealed class SimpleClass : AutoContext, ISimple + { + public SimpleClass() + { + } + + [ContextProperty("СвойствоПеречисление")] + public SimpleEnum EnumProperty { get; set; } + + [ContextProperty("ЦелочисленноеСвойство")] + public int IntProperty { get; set; } + + [ContextProperty("СвойствоСПроизвольнымЗначением")] + public IValue AnyValueProperty { get; set; } + + + [ScriptConstructor] + public static IRuntimeContextInstance Constructor() + { + return new SimpleClass(); + } + + [ScriptConstructor] + public static IRuntimeContextInstance Constructor(IValue initialProperty) + { + var result = new SimpleClass(); + result.IntProperty = ContextValuesMarshaller.ConvertParam(initialProperty); + return result; + } + } +} diff --git a/src/Component/SimpleCollection.cs b/src/Component/SimpleCollection.cs new file mode 100644 index 000000000..a922bb624 --- /dev/null +++ b/src/Component/SimpleCollection.cs @@ -0,0 +1,58 @@ +/*---------------------------------------------------------- +This Source Code Form is subject to the terms of the +Mozilla Public License, v.2.0. If a copy of the MPL +was not distributed with this file, You can obtain one +at http://mozilla.org/MPL/2.0/. +----------------------------------------------------------*/ +using System; +using ScriptEngine.Machine.Contexts; +using System.Collections.Generic; +using ScriptEngine.Machine; +using System.Collections; + +namespace Component +{ + [ContextClass("ПростоКоллекция")] + public sealed class SimpleCollection : AutoContext, ICollectionContext, IEnumerable + { + + readonly List _data = new List(); + + public SimpleCollection() + { + } + + [ContextMethod("Добавить")] + public void Add(SimpleClass item) + { + _data.Add(item); + } + + [ContextMethod("Количество")] + public int Count() + { + return _data.Count; + } + + public IEnumerator GetEnumerator() + { + return ((IEnumerable)_data).GetEnumerator(); + } + + public CollectionEnumerator GetManagedIterator() + { + return new CollectionEnumerator(GetEnumerator()); + } + + IEnumerator IEnumerable.GetEnumerator() + { + return ((IEnumerable)_data).GetEnumerator(); + } + + [ScriptConstructor] + public static IRuntimeContextInstance Constructor() + { + return new SimpleCollection(); + } + } +} diff --git a/src/Component/SimpleEnum.cs b/src/Component/SimpleEnum.cs new file mode 100644 index 000000000..75be5036f --- /dev/null +++ b/src/Component/SimpleEnum.cs @@ -0,0 +1,21 @@ +/*---------------------------------------------------------- +This Source Code Form is subject to the terms of the +Mozilla Public License, v.2.0. If a copy of the MPL +was not distributed with this file, You can obtain one +at http://mozilla.org/MPL/2.0/. +----------------------------------------------------------*/ +using System; +using ScriptEngine; + +namespace Component +{ + [EnumerationType("ПростоПеречисление")] + public enum SimpleEnum + { + [EnumItem("Элемент1")] + Item1, + + [EnumItem("Элемент2")] + Item2 + } +} diff --git a/tests/addin.os b/tests/addin.os new file mode 100644 index 000000000..b42dea676 --- /dev/null +++ b/tests/addin.os @@ -0,0 +1,52 @@ +#Использовать "component" + +Перем юТест; + +Функция ПолучитьСписокТестов(Знач Тесты) Экспорт + + юТест = Тесты; + + Список = Новый Массив; + Список.Добавить("ТестДолжен_ПроверитьПодключениеГлобальногоКонтекста"); + + Возврат Список; + +КонецФункции + +Функция ВернутьПеречисление(Значение) + + Возврат Значение; + +КонецФункции + +Процедура ТестДолжен_ПроверитьПодключениеГлобальногоКонтекста() Экспорт + + Коллекция1 = Новый ПростоКоллекция; // Объект создаётся + + Объект1 = Новый ПростоКласс; + Объект2 = Новый ПростоКласс(4); // Разные конструкторы + + юТест.ПроверитьНеРавенство(Объект1.ЦелочисленноеСвойство, Объект2.ЦелочисленноеСвойство); + юТест.ПроверитьРавенство(Объект2.ЦелочисленноеСвойство, 4); + + Коллекция1.Добавить(Объект1); + + юТест.ПроверитьРавенство(Коллекция1.Количество(), 1); + + // Обход по коллекции + Для Каждого мОбъект Из Коллекция1 Цикл + + юТест.ПроверитьРавенство(мОбъект, Объект1); + + КонецЦикла; + + // Перечисление в глобальном контексте + Объект1.СвойствоПеречисление = ПростоПеречисление.Элемент1; + + юТест.ПроверитьРавенство(Объект1.СвойствоПеречисление, ПростоПеречисление.Элемент1); + юТест.ПроверитьНеРавенство(Объект1.СвойствоПеречисление, ПростоПеречисление.Элемент2); + + // Работа маршаллера + юТест.ПроверитьРавенство(ВернутьПеречисление(Объект1.СвойствоПеречисление), ПростоПеречисление.Элемент1); + +КонецПроцедуры diff --git a/tests/component/package-loader.os b/tests/component/package-loader.os new file mode 100644 index 000000000..c3cc16d87 --- /dev/null +++ b/tests/component/package-loader.os @@ -0,0 +1,7 @@ + +Процедура ПриЗагрузкеБиблиотеки(Знач Путь, СтандартнаяОбработка, Отказ) + + СтандартнаяОбработка = Ложь; + ПодключитьВнешнююКомпоненту(ОбъединитьПути(КаталогПрограммы(), "Component.dll")); + +КонецПроцедуры From bb848dff54a00d567e016e555088ed97b92b9648 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=B5=D1=80=D0=B3=D1=A3=D0=B9=20=D0=91=D0=B0=D1=82?= =?UTF-8?q?=D0=B0=D0=BD=D0=BE=D0=B2?= Date: Tue, 24 Jan 2017 02:07:33 +0300 Subject: [PATCH 010/168] =?UTF-8?q?=D0=9F=D1=80=D0=BE=D0=B2=D0=B5=D1=80?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=B8=D1=81=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F=20=D0=BF=D1=83=D0=B1=D0=BB=D0=B8?= =?UTF-8?q?=D1=87=D0=BD=D1=8B=D1=85=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81=D0=BE?= =?UTF-8?q?=D0=B2.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Component/Component.csproj | 5 ++ src/Component/UseLibrary.cs | 90 ++++++++++++++++++++++++++++++++++ 2 files changed, 95 insertions(+) create mode 100644 src/Component/UseLibrary.cs diff --git a/src/Component/Component.csproj b/src/Component/Component.csproj index 683bb403c..195fbe0a6 100644 --- a/src/Component/Component.csproj +++ b/src/Component/Component.csproj @@ -44,12 +44,17 @@ + {F062D1D9-D307-492A-A56B-FF3C55F8F6C0} ScriptEngine + + {F09A46BD-5737-45E7-BA60-A47C9F7821A9} + ScriptEngine.HostedScript + diff --git a/src/Component/UseLibrary.cs b/src/Component/UseLibrary.cs new file mode 100644 index 000000000..705881be4 --- /dev/null +++ b/src/Component/UseLibrary.cs @@ -0,0 +1,90 @@ +/*---------------------------------------------------------- +This Source Code Form is subject to the terms of the +Mozilla Public License, v.2.0. If a copy of the MPL +was not distributed with this file, You can obtain one +at http://mozilla.org/MPL/2.0/. +----------------------------------------------------------*/ +using ScriptEngine.Machine; + + +namespace Component +{ + public static class UseLibrary + { + + public static void Use() where T : IValue + { + + } + + public static void Use() + { + /* Суть следующих выражений в том, что они перестанут компилироваться, + если какой-либо из классов поменяет область видимости + или переедет в иное пространство имён + (https://github.com/EvilBeaver/OneScript/commit/20e48fa7692b5430b819eb4b6982be1b591e536f)*/ + + Use(); + Use(); + Use(); + Use(); + Use(); + Use(); + Use(); + + Use(); + Use(); + Use(); + Use(); + + Use(); + Use(); + Use(); + Use(); + Use(); + Use(); + Use(); + Use(); + Use(); + Use(); + Use(); + Use(); + Use(); + + Use(); + Use(); + Use(); + Use(); + + Use(); + Use(); + + Use(); + Use(); + Use(); + Use(); + + Use(); + Use(); + + Use(); + Use(); + Use(); + Use(); + Use(); + + Use(); + Use(); + Use(); + Use(); + + Use(); + Use(); + Use(); + + Use(); + Use(); + + } + } +} From 884957b08fa0dafdf5221d7a592bde5c2836cd7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=B5=D1=80=D0=B3=D1=A3=D0=B9=20=D0=91=D0=B0=D1=82?= =?UTF-8?q?=D0=B0=D0=BD=D0=BE=D0=B2?= Date: Tue, 24 Jan 2017 02:15:46 +0300 Subject: [PATCH 011/168] =?UTF-8?q?=D0=A2=D0=B5=D1=81=D1=82=D0=BE=D0=B2?= =?UTF-8?q?=D0=B0=D1=8F=20=D0=BA=D0=BE=D0=BC=D0=BF=D0=BE=D0=BD=D0=B5=D0=BD?= =?UTF-8?q?=D1=82=D0=B0=20=D0=BA=D0=BE=D0=BF=D0=B8=D1=80=D1=83=D0=B5=D1=82?= =?UTF-8?q?=D1=81=D1=8F=20=D0=BA=20=D1=82=D0=B5=D1=81=D1=82=D0=B0=D0=BC.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Во избежание сложной логики копирования DLL в зависимости от платформы, конфигурации, ОС и прочих особенностей окружения компонента копируется в каталог с тестами. --- src/Component/Component.csproj | 15 +++++---------- tests/component/package-loader.os | 2 +- 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/src/Component/Component.csproj b/src/Component/Component.csproj index 195fbe0a6..0ee74813d 100644 --- a/src/Component/Component.csproj +++ b/src/Component/Component.csproj @@ -18,15 +18,6 @@ prompt 4 false - - - - AfterBuild - xcopy "${TargetDir}\Component.dll" "${SolutionDir}\oscript\bin\${ProjectConfig}\" /Y /E /D - - - - true @@ -66,4 +57,8 @@ - \ No newline at end of file + + xcopy "$(TargetDir)Component.dll" "$(SolutionDir)..\tests\component" /Y /E /D + cp -f "$(TargetDir)Component.dll" "$(SolutionDir)../tests/component" + + diff --git a/tests/component/package-loader.os b/tests/component/package-loader.os index c3cc16d87..7f79f0d1f 100644 --- a/tests/component/package-loader.os +++ b/tests/component/package-loader.os @@ -2,6 +2,6 @@ Процедура ПриЗагрузкеБиблиотеки(Знач Путь, СтандартнаяОбработка, Отказ) СтандартнаяОбработка = Ложь; - ПодключитьВнешнююКомпоненту(ОбъединитьПути(КаталогПрограммы(), "Component.dll")); + ПодключитьВнешнююКомпоненту(ОбъединитьПути(Путь, "Component.dll")); КонецПроцедуры From ad87afe6cb4d6cd8a8096bad70e355cf3523efb2 Mon Sep 17 00:00:00 2001 From: Andrey Shevtsov Date: Mon, 20 Feb 2017 13:09:39 +0200 Subject: [PATCH 012/168] =?UTF-8?q?=D0=BE=D0=B1=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=BA=D0=B0=20=D1=82=D0=B8=D0=BF=D0=B0=20decimal?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ScriptEngine/Machine/Contexts/COMWrapperContext.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/ScriptEngine/Machine/Contexts/COMWrapperContext.cs b/src/ScriptEngine/Machine/Contexts/COMWrapperContext.cs index 1b2fb3810..79d0840e0 100644 --- a/src/ScriptEngine/Machine/Contexts/COMWrapperContext.cs +++ b/src/ScriptEngine/Machine/Contexts/COMWrapperContext.cs @@ -159,6 +159,10 @@ public static IValue CreateIValue(object objParam) { return ValueFactory.Create((decimal)(double)objParam); } + else if (type == typeof(decimal)) + { + return ValueFactory.Create((decimal)objParam); + } else if (type == typeof(DateTime)) { var unboxed = (DateTime)objParam; From b98556dc404087b9cd92abecc4766f5b69ca1edc Mon Sep 17 00:00:00 2001 From: Sergey Batanov Date: Thu, 30 Mar 2017 09:47:20 +0300 Subject: [PATCH 013/168] =?UTF-8?q?=D0=97=D0=B0=D0=BF=D1=83=D1=81=D0=BA=20?= =?UTF-8?q?=D1=82=D0=B5=D1=81=D1=82=D0=BE=D0=B2=20=D0=B8=D0=B7=20=D1=82?= =?UTF-8?q?=D0=B5=D0=BA=D1=83=D1=89=D0=B5=D0=B3=D0=BE=20=D0=BA=D0=B0=D1=82?= =?UTF-8?q?=D0=B0=D0=BB=D0=BE=D0=B3=D0=B0.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Если каталог не указан, тесты запускаются из текущего каталога. 99,999% случаев запуск происходит командой `start-all.cmd . `. --- tests/start-all.cmd | 2 +- tests/testrunner.os | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/tests/start-all.cmd b/tests/start-all.cmd index c2f28fada..e65d33344 100644 --- a/tests/start-all.cmd +++ b/tests/start-all.cmd @@ -9,7 +9,7 @@ rem echo ᠬ rem echo �ਯ�� ���஢���� %pathdir% @echo on -"%ProgramFiles(x86)%\OneScript\oscript.exe" "%pathdir%\testrunner.os" -runall %1 %2 %3 %4 %5 +"%ProgramFiles(x86)%\OneScript\bin\oscript.exe" "%pathdir%\testrunner.os" -runall %1 %2 %3 %4 %5 @echo off rem echo ��� ������ %ERRORLEVEL% diff --git a/tests/testrunner.os b/tests/testrunner.os index e4a1777f1..9bc663f40 100644 --- a/tests/testrunner.os +++ b/tests/testrunner.os @@ -239,8 +239,14 @@ КонецЕсли; КонецЕсли; ИначеЕсли КомандаЗапуска = СтруктураПараметровЗапуска.ЗапуститьКаталог Тогда - путьКТестам = МассивПараметров[НомерПараметраПутьКТестам]; - НомерОчередногоПараметра = НомерОчередногоПараметра + 1; + + Если МассивПараметров.Количество() > НомерПараметраПутьКТестам Тогда + путьКТестам = МассивПараметров[НомерПараметраПутьКТестам]; + НомерОчередногоПараметра = НомерОчередногоПараметра + 1; + Иначе + путьКТестам = ТекущийКаталог(); + КонецЕсли; + КонецЕсли; Если МассивПараметров.Количество() > НомерОчередногоПараметра и (КомандаЗапуска = СтруктураПараметровЗапуска.Запустить или КомандаЗапуска = СтруктураПараметровЗапуска.ЗапуститьКаталог ) Тогда From 8a84bd80f0ccb87f35cb7a961d115c9d674dd459 Mon Sep 17 00:00:00 2001 From: ret-Phoenix Date: Sun, 23 Apr 2017 23:14:22 +0300 Subject: [PATCH 014/168] =?UTF-8?q?#1=20(=D0=94=D0=B5=D1=80=D0=B5=D0=B2?= =?UTF-8?q?=D0=BE=D0=97=D0=BD=D0=B0=D1=87=D0=B5=D0=BD=D0=B8=D0=B9=20-=20?= =?UTF-8?q?=D0=A3=D1=81=D1=82=D0=B0=D0=BD=D0=BE=D0=B2=D0=BA=D0=B0/=D0=A7?= =?UTF-8?q?=D1=82=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=A8=D0=B8=D1=80=D0=B8=D0=BD?= =?UTF-8?q?=D1=8B)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Library/ValueTree/ValueTreeColumn.cs | 2 +- tests/valuetree.os | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/ScriptEngine.HostedScript/Library/ValueTree/ValueTreeColumn.cs b/src/ScriptEngine.HostedScript/Library/ValueTree/ValueTreeColumn.cs index 00484aca4..b2d32b132 100644 --- a/src/ScriptEngine.HostedScript/Library/ValueTree/ValueTreeColumn.cs +++ b/src/ScriptEngine.HostedScript/Library/ValueTree/ValueTreeColumn.cs @@ -90,7 +90,7 @@ public IValue ValueType [ContextProperty("Ширина", "Width")] public int Width { - get { return Width; } + get { return _width; } set { _width = value; } // TOOD: Проверить неотрицательность значения } diff --git a/tests/valuetree.os b/tests/valuetree.os index c716465f9..50931763c 100644 --- a/tests/valuetree.os +++ b/tests/valuetree.os @@ -34,6 +34,8 @@ ВсеТесты.Добавить("ТестДолжен_ПроверитьВстроенныеСвойства"); ВсеТесты.Добавить("ТестДолжен_ПроверитьСортировкуСтрок"); + + ВсеТесты.Добавить("ТестДолжен_УстановитьШирину"); Возврат ВсеТесты; @@ -597,3 +599,15 @@ ПроверитьСортировку(Д, Истина, Истина); КонецПроцедуры + + +Процедура ТестДолжен_УстановитьШирину() Экспорт + + Д = Новый ДеревоЗначений; + Колонка = Д.Колонки.Добавить("Ключ"); + + Колонка.Ширина = 5; + + юТест.ПроверитьРавенство(Колонка.Ширина, 5, "Установка/чтение ширины колонки"); + +КонецПроцедуры From 5a95dbe9c0c7a4c6621f552b199747e163edfeb3 Mon Sep 17 00:00:00 2001 From: ret-Phoenix Date: Sun, 23 Apr 2017 23:16:00 +0300 Subject: [PATCH 015/168] =?UTF-8?q?#2=20(=D0=9E=D0=BF=D1=82=D0=B8=D0=BC?= =?UTF-8?q?=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D1=8F=20=D0=A1=D1=82=D1=80=D0=A0?= =?UTF-8?q?=D0=B0=D0=B7=D0=B4=D0=B5=D0=BB=D0=B8=D1=82=D1=8C)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ScriptEngine.HostedScript/Library/StringOperations.cs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/ScriptEngine.HostedScript/Library/StringOperations.cs b/src/ScriptEngine.HostedScript/Library/StringOperations.cs index 7f43c1368..ca2f18d10 100644 --- a/src/ScriptEngine.HostedScript/Library/StringOperations.cs +++ b/src/ScriptEngine.HostedScript/Library/StringOperations.cs @@ -97,7 +97,6 @@ public bool StrEndsWith(string inputString, string searchString) [ContextMethod("СтрРазделить", "StrSplit")] public ArrayImpl StrSplit(string inputString, string stringDelimiter, bool includeEmpty = true) { - ArrayImpl arrResult = new ArrayImpl(); string[] arrParsed; if(!string.IsNullOrEmpty(inputString)) { @@ -113,8 +112,7 @@ public ArrayImpl StrSplit(string inputString, string stringDelimiter, bool inclu { arrParsed = new string[] { string.Empty }; } - arrResult = new ArrayImpl(arrParsed.Select(x => ValueFactory.Create(x))); - return arrResult; + return new ArrayImpl(arrParsed.Select(x => ValueFactory.Create(x))); } /// From fa01f1619fa104e2a82776fe0347efac1f33a5ea Mon Sep 17 00:00:00 2001 From: ret-Phoenix Date: Sun, 23 Apr 2017 23:16:47 +0300 Subject: [PATCH 016/168] =?UTF-8?q?#3=20(=D0=97=D0=B0=D0=B3=D1=80=D1=83?= =?UTF-8?q?=D0=B7=D0=B8=D1=82=D1=8C=D0=A1=D1=86=D0=B5=D0=BD=D0=B0=D1=80?= =?UTF-8?q?=D0=B8=D0=B9=20-=20=D0=BB=D0=B8=D1=88=D0=BD=D0=B5=D0=B5=20?= =?UTF-8?q?=D0=BF=D1=80=D0=B8=D0=B2=D0=B5=D0=B4=D0=B5=D0=BD=D0=B8=D0=B5=20?= =?UTF-8?q?=D1=82=D0=B8=D0=BF=D0=B0)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ScriptEngine.HostedScript/Library/SystemGlobalContext.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/ScriptEngine.HostedScript/Library/SystemGlobalContext.cs b/src/ScriptEngine.HostedScript/Library/SystemGlobalContext.cs index 226b1431f..5671e7d12 100644 --- a/src/ScriptEngine.HostedScript/Library/SystemGlobalContext.cs +++ b/src/ScriptEngine.HostedScript/Library/SystemGlobalContext.cs @@ -117,8 +117,7 @@ public IRuntimeContextInstance LoadScript(string path, StructureImpl externalCon foreach (var item in externalContext) { - var kv = item as KeyAndValueImpl; - extData.Add(kv.Key.AsString(), kv.Value); + extData.Add(item.Key.AsString(), item.Value); } return EngineInstance.AttachedScriptsFactory.LoadFromPath(compiler, path, extData); From 7492c23d659ca43990a24dde90fc2280ed816e03 Mon Sep 17 00:00:00 2001 From: Serg Ushakov Date: Wed, 26 Apr 2017 17:58:58 +0300 Subject: [PATCH 017/168] =?UTF-8?q?=D0=A2=D0=B0=D0=B1=D0=BB=D0=B8=D1=86?= =?UTF-8?q?=D0=B0=D0=97=D0=BD=D0=B0=D1=87=D0=B5=D0=BD=D0=B8=D0=B9:=20?= =?UTF-8?q?=D0=A7=D0=B0=D1=81=D1=82=D0=B8=D1=87=D0=BD=D0=BE=20=D0=B4=D0=BE?= =?UTF-8?q?=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=D0=BB=20=D0=B4=D0=BE=D0=BA?= =?UTF-8?q?=D1=83=D0=BC=D0=B5=D0=BD=D1=82=D0=B0=D1=86=D0=B8=D1=8E=20=D0=B8?= =?UTF-8?q?=20=D1=82=D0=B5=D1=81=D1=82=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Library/ValueTable/ValueTable.cs | 85 ++++++++++++++++++- tests/valuetable.os | 50 ++++++++++- 2 files changed, 132 insertions(+), 3 deletions(-) diff --git a/src/ScriptEngine.HostedScript/Library/ValueTable/ValueTable.cs b/src/ScriptEngine.HostedScript/Library/ValueTable/ValueTable.cs index 1af69a63d..3a43da054 100644 --- a/src/ScriptEngine.HostedScript/Library/ValueTable/ValueTable.cs +++ b/src/ScriptEngine.HostedScript/Library/ValueTable/ValueTable.cs @@ -13,6 +13,10 @@ This Source Code Form is subject to the terms of the namespace ScriptEngine.HostedScript.Library.ValueTable { + /// + /// Объект для работы с данными в табличном виде. + /// Представляет из себя коллекцию строк с заранее заданной структурой. + /// [ContextClass("ТаблицаЗначений", "ValueTable")] public class ValueTable : AutoContext, ICollectionContext, IEnumerable { @@ -24,24 +28,40 @@ public ValueTable() { } + /// + /// Коллекция колонок + /// + /// КоллекцияКолонокТаблицыЗначений [ContextProperty("Колонки", "Columns")] public ValueTableColumnCollection Columns { get { return _columns; } } + /// + /// Коллекция индексов + /// + /// ИндексыКоллекции [ContextProperty("Индексы", "Indexes")] public CollectionIndexes Indexes { get { return _indexes; } } + /// + /// Количество строк в Таблице значений + /// + /// Число [ContextMethod("Количество", "Count")] public int Count() { return _rows.Count(); } + /// + /// Добавляет строку в конец Таблицы значений + /// + /// СтрокаТаблицыЗначений [ContextMethod("Добавить", "Add")] public ValueTableRow Add() { @@ -50,7 +70,12 @@ public ValueTableRow Add() return row; } - [ContextMethod("ВставитЬ", "Insert")] + /// + /// Вставляет строку в указанную позицию + /// + /// Число - Индекс позиции куда будет произведена вставка + /// СтрокаТаблицыЗначений + [ContextMethod("Вставить", "Insert")] public ValueTableRow Insert(int index) { ValueTableRow row = new ValueTableRow(this); @@ -58,6 +83,13 @@ public ValueTableRow Insert(int index) return row; } + /// + /// Удаляет строку + /// + /// + /// СтрокаТаблицыЗначений - Удаляемая строка + /// Число - Индекс удаляемой строки + /// [ContextMethod("Удалить", "Delete")] public void Delete(IValue Row) { @@ -76,10 +108,19 @@ public void Delete(IValue Row) _rows.RemoveAt(index); } + /// + /// Загружает значения в колонку + /// + /// Массив - Значения для загрузки в колонку + /// + /// Строка - Имя колонки для загрузки + /// Число - Индекс колонки для загрузки + /// КолонкаТаблицыЗначений - Колонка для загрузки + /// [ContextMethod("ЗагрузитьКолонку", "LoadColumn")] public void LoadColumn(IValue Values, IValue ColumnIndex) { - ValueTableColumn Column = Columns.GetColumnByIIndex(ColumnIndex); + // ValueTableColumn Column = Columns.GetColumnByIIndex(ColumnIndex); var row_iterator = _rows.GetEnumerator(); var array_iterator = (Values as ArrayImpl).GetEnumerator(); @@ -89,6 +130,15 @@ public void LoadColumn(IValue Values, IValue ColumnIndex) } } + /// + /// Выгружает значения колонки в новый массив + /// + /// + /// Строка - Имя колонки для выгрузки + /// Число - Индекс колонки для выгрузки + /// КолонкаТаблицыЗначений - Колонка для выгрузки + /// + /// Массив [ContextMethod("ВыгрузитьКолонку", "UnloadColumn")] public ArrayImpl UnloadColumn(IValue Column) { @@ -133,6 +183,11 @@ private List GetProcessingColumnList(string ColumnNames, bool return processing_list; } + /// + /// Заполнить колонку/колонки указанным значением + /// + /// Произвольный - Устанавливаемое значение + /// Строка - Список имен колонок для установки значения (разделены запятыми) [ContextMethod("ЗаполнитьЗначения", "FillValues")] public void FillValues(IValue Value, string ColumnNames = null) { @@ -146,6 +201,11 @@ public void FillValues(IValue Value, string ColumnNames = null) } } + /// + /// Получить индекс указанной строки + /// + /// СтрокаТаблицыЗначений - Строка таблицы значений, для которой необходимо определить индекс + /// Число - Индекс в коллекции, если не найдено возвращает -1 [ContextMethod("Индекс", "IndexOf")] public int IndexOf(IValue Row) { @@ -157,6 +217,15 @@ public int IndexOf(IValue Row) return -1; } + /// + /// Сумма значений всех строк указанной колонки + /// + /// + /// Строка - Имя колонки для суммирования + /// Число - Индекс колонки для суммирования + /// КолонкаТаблицыЗначений - Колонка для суммирования + /// + /// Число [ContextMethod("Итог", "Total")] public IValue Total(IValue ColumnIndex) { @@ -180,6 +249,13 @@ public IValue Total(IValue ColumnIndex) return ValueFactory.Create(); } + /// + /// Осуществляет поиск значения в указанных колонках + /// + /// Произвольный - Искомое значение + /// Строка - Список имен колонок для поиска значения (разделены запятыми). + /// Если параметр не указан - ищет по всем колонкам. По умолчанию: пустая строка + /// СтрокаТаблицыЗначений - если строка найдена, иначе Неопределено [ContextMethod("Найти", "Find")] public IValue Find(IValue Value, string ColumnNames = null) { @@ -211,6 +287,11 @@ private bool CheckFilterCriteria(ValueTableRow Row, StructureImpl Filter) return true; } + /// + /// Поиск строк по условию + /// + /// Структура - Условия поиска. Ключ - имя колонки, значение - искомое значение + /// Массив - Массив ссылок на строки, удовлетворяющих условию поиска [ContextMethod("НайтиСтроки", "FindRows")] public ArrayImpl FindRows(IValue Filter) { diff --git a/tests/valuetable.os b/tests/valuetable.os index 2b1037dab..2d9605adc 100644 --- a/tests/valuetable.os +++ b/tests/valuetable.os @@ -33,6 +33,8 @@ ВсеТесты.Добавить("ТестДолжен_СкопироватьТаблицуНесколькоКолонок"); ВсеТесты.Добавить("ТестДолжен_ПроверитьСверткуБезУказанияКолонок"); + ВсеТесты.Добавить("ТестДолжен_ЗагрузитьКолонку"); + Возврат ВсеТесты; КонецФункции @@ -137,10 +139,12 @@ С1 = Т.Добавить(); С2 = Т.Добавить(); С2_5 = Т.Добавить(); + С2_6 = Т.Добавить(); С3 = Т.Добавить(); С4 = Т.Добавить(); Т.Удалить(С2_5); + Т.Удалить(2); юТест.ПроверитьРавенство(Т.Количество(), 4); @@ -281,7 +285,11 @@ КонецЦикла; + КолонкаСумма = Т.Колонки.Сумма; + юТест.ПроверитьРавенство(Т.Итог("Сумма"), мСумма); + юТест.ПроверитьРавенство(Т.Итог(2), мСумма); + юТест.ПроверитьРавенство(Т.Итог(КолонкаСумма), мСумма); Т.Свернуть("", "Сумма"); @@ -309,9 +317,18 @@ КонецЦикла; + // Передаем имя колонки юТест.ПроверитьИстину(МассивыИдентичны(Т.ВыгрузитьКолонку("Ключ"), ЭталонКлючей), "Массивы ключей должны совпадать"); юТест.ПроверитьИстину(МассивыИдентичны(Т.ВыгрузитьКолонку("Значение"), ЭталонЗначений), "Массивы значений должны совпадать"); - + + // Передаем индекс колонки + юТест.ПроверитьИстину(МассивыИдентичны(Т.ВыгрузитьКолонку(0), ЭталонКлючей), "Массивы ключей должны совпадать"); + юТест.ПроверитьИстину(МассивыИдентичны(Т.ВыгрузитьКолонку(1), ЭталонЗначений), "Массивы значений должны совпадать"); + + // Передаем колонку + юТест.ПроверитьИстину(МассивыИдентичны(Т.ВыгрузитьКолонку(Т.Колонки.Ключ), ЭталонКлючей), "Массивы ключей должны совпадать"); + юТест.ПроверитьИстину(МассивыИдентичны(Т.ВыгрузитьКолонку(Т.Колонки.Значение), ЭталонЗначений), "Массивы значений должны совпадать"); + КонецПроцедуры Функция МассивыИдентичны(Знач Проверяемый, Знач Эталон) @@ -479,3 +496,34 @@ юТест.ПроверитьРавенство(Т.Получить(1).Колонка1, "Значение2", "Свёртка по значениям"); КонецПроцедуры + +Процедура ТестДолжен_ЗагрузитьКолонку() Экспорт + + Т = Новый ТаблицаЗначений; + + Т.Колонки.Добавить("Количество1"); + Т.Колонки.Добавить("Количество2"); + Т.Колонки.Добавить("Количество3"); + + Для Инд = 1 По 5 Цикл + + НоваяСтрока = Т.Добавить(); + + КонецЦикла; + + Количество = Новый Массив; + Количество.Добавить(1); + Количество.Добавить(2); + Количество.Добавить(3); + Количество.Добавить(4); + Количество.Добавить(5); + + Т.ЗагрузитьКолонку(Количество, "Количество1"); + Т.ЗагрузитьКолонку(Количество, 1); + Т.ЗагрузитьКолонку(Количество, Т.Колонки.Количество3); + + юТест.ПроверитьРавенство(Т.Итог("Количество1"), 15); + юТест.ПроверитьРавенство(Т.Итог("Количество2"), 15); + юТест.ПроверитьРавенство(Т.Итог("Количество3"), 15); + +КонецПроцедуры \ No newline at end of file From c104a00e61b61b55e3470bd6b89ab2b2b9b7c782 Mon Sep 17 00:00:00 2001 From: ret-Phoenix Date: Wed, 26 Apr 2017 23:54:22 +0300 Subject: [PATCH 018/168] =?UTF-8?q?=D0=A2=D0=B0=D0=B1=D0=BB=D0=B8=D1=86?= =?UTF-8?q?=D0=B0=D0=97=D0=BD=D0=B0=D1=87=D0=B5=D0=BD=D0=B8=D0=B9=20-=20?= =?UTF-8?q?=D0=B4=D0=BE=D0=BA=D1=83=D0=BC=D0=B5=D0=BD=D1=82=D0=B0=D1=86?= =?UTF-8?q?=D0=B8=D1=8F=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D0=B0=20=D0=9C=D0=B5=D0=BB=D0=BA=D0=B0=D1=8F=20=D0=BE=D0=BF?= =?UTF-8?q?=D1=82=D0=B8=D0=BC=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D1=8F=20=D0=BA?= =?UTF-8?q?=D0=BE=D0=B4=D0=B0.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Library/ValueTable/ValueTable.cs | 53 ++++++++++++++++++- .../Library/ValueTable/ValueTableColumn.cs | 20 +++++++ .../ValueTable/ValueTableColumnCollection.cs | 39 ++++++++++++++ .../Library/ValueTable/ValueTableRow.cs | 14 +++++ 4 files changed, 125 insertions(+), 1 deletion(-) diff --git a/src/ScriptEngine.HostedScript/Library/ValueTable/ValueTable.cs b/src/ScriptEngine.HostedScript/Library/ValueTable/ValueTable.cs index 3a43da054..fe9e50453 100644 --- a/src/ScriptEngine.HostedScript/Library/ValueTable/ValueTable.cs +++ b/src/ScriptEngine.HostedScript/Library/ValueTable/ValueTable.cs @@ -311,12 +311,20 @@ public ArrayImpl FindRows(IValue Filter) return Result; } + /// + /// Удаляет все строки. Структура колонок не меняется. + /// [ContextMethod("Очистить", "Clear")] public void Clear() { _rows.Clear(); } + /// + /// Получить строку по индексу + /// + /// Число - Индекс строки + /// СтрокаТаблицыЗначений [ContextMethod("Получить", "Get")] public ValueTableRow Get(int index) { @@ -325,6 +333,12 @@ public ValueTableRow Get(int index) return _rows[index]; } + /// + /// Сворачиваются (группируются) строки по указанным колонкам измерениям, суммируются колонки ресурсов. + /// Колонки не указанные ни в измерениях ни в ресурсах удаляются. + /// + /// Строка - Имена колонок для сворачивания (изменения), разделены запятыми + /// Строка - Имена колонок для суммирования (ресурсы), разделены запятыми [ContextMethod("Свернуть", "GroupBy")] public void GroupBy(string GroupColumnNames, string AggregateColumnNames = null) { @@ -402,7 +416,15 @@ public void GroupBy(string GroupColumnNames, string AggregateColumnNames = null) } } } - + + /// + /// Сдвигает строку на указанное количество позиций. + /// + /// + /// СтрокаТаблицыЗначений - Строка которую сдвигаем + /// Число - Индекс сдвигаемой строки + /// + /// Количество строк, на которое сдвигается строка. Если значение положительное - сдвиг вниз, иначе вверх [ContextMethod("Сдвинуть", "Move")] public void Move(IValue Row, int Offset) { @@ -438,6 +460,11 @@ public void Move(IValue Row, int Offset) } + /// + /// Создает новую таблицу значений с указанными колонками. Данные не копируются. + /// + /// Строка - Имена колонок для копирования, разделены запятыми + /// ТаблицаЗначений [ContextMethod("СкопироватьКолонки", "CopyColumns")] public ValueTable CopyColumns(string ColumnNames = null) { @@ -453,6 +480,17 @@ public ValueTable CopyColumns(string ColumnNames = null) return Result; } + /// + /// Создает новую таблицу значений с указанными строками и колонками. Если передан отбор - копирует строки удовлетворяющие отбору. + /// Если не указаны строки - будут скопированы все строки. Если не указаны колонки - будут скопированы все колонки. + /// Если не указаны оба параметра - будет создана полная копия таблицы значений. + /// + /// + /// Массив - Массив строк для отбора + /// Структура - Параметры отбора. Ключ - Колонка, Значение - Значение отбора + /// + /// Строка - Имена колонок для копирования, разделены запятыми + /// ТаблицаЗначений [ContextMethod("Скопировать", "Copy")] public ValueTable Copy(IValue Rows = null, string ColumnNames = null) { @@ -584,12 +622,25 @@ public int Compare(ValueTableRow x, ValueTableRow y) } } + /// + /// Сортировать строки в таблице значений. Строки сортируются по порядку следования колонок для сортировки, с учетом варианта сортировки. + /// + /// Строка - Имена колонок для сортировки. + /// После имени колонки, через пробел, можно указать направление сортировки: "Убыв" ("Desc") - по убыванию. Возр" ("Asc") - по возрастанию + /// По умолчанию - по возрастанию. + /// + /// СравнениеЗначений - правила сравнения значений при наличии различных типов данных в колонке. [ContextMethod("Сортировать", "Sort")] public void Sort(string columns, IValue comparator = null) { _rows.Sort(new RowComparator(GetSortRules(columns))); } + /// + /// Не поддерживается + /// + /// + /// [ContextMethod("ВыбратьСтроку", "ChooseRow")] public void ChooseRow(string title = null, IValue startRow = null) { diff --git a/src/ScriptEngine.HostedScript/Library/ValueTable/ValueTableColumn.cs b/src/ScriptEngine.HostedScript/Library/ValueTable/ValueTableColumn.cs index afab2cdeb..54e15aea2 100644 --- a/src/ScriptEngine.HostedScript/Library/ValueTable/ValueTableColumn.cs +++ b/src/ScriptEngine.HostedScript/Library/ValueTable/ValueTableColumn.cs @@ -14,6 +14,9 @@ This Source Code Form is subject to the terms of the namespace ScriptEngine.HostedScript.Library.ValueTable { + /// + /// Колонка таблицы значений. + /// [ContextClass("КолонкаТаблицыЗначений", "ValueTableColumn")] public class ValueTableColumn : AutoContext { @@ -44,6 +47,10 @@ public int ID get { return _id; } } + /// + /// Заголовок колонки + /// + /// Строка [ContextProperty("Заголовок", "Title")] public string Title { @@ -51,6 +58,10 @@ public string Title set { _title = value; } } + /// + /// Имя колонки + /// + /// Строка [ContextProperty("Имя", "Name")] public string Name { @@ -68,12 +79,21 @@ public string Name } } + /// + /// Тип значения колонки + /// + /// ОписаниеТипа [ContextProperty("ТипЗначения", "ValueType")] public IValue ValueType { get { return _valueType; } set { _valueType = value; } // TODO: Проверить тип } + + /// + /// Ширина колонки + /// + /// Число [ContextProperty("Ширина", "Width")] public int Width { diff --git a/src/ScriptEngine.HostedScript/Library/ValueTable/ValueTableColumnCollection.cs b/src/ScriptEngine.HostedScript/Library/ValueTable/ValueTableColumnCollection.cs index 1fa2645ca..7b9abe6c4 100644 --- a/src/ScriptEngine.HostedScript/Library/ValueTable/ValueTableColumnCollection.cs +++ b/src/ScriptEngine.HostedScript/Library/ValueTable/ValueTableColumnCollection.cs @@ -13,6 +13,9 @@ This Source Code Form is subject to the terms of the namespace ScriptEngine.HostedScript.Library.ValueTable { + /// + /// Коллекция колонок таблицы значений + /// [ContextClass("КоллекцияКолонокТаблицыЗначений", "ValueTableColumnCollection")] public class ValueTableColumnCollection : DynamicPropertiesAccessor, ICollectionContext, IEnumerable { @@ -23,6 +26,13 @@ public ValueTableColumnCollection() { } + /// + /// Добавляет колонку в таблицу значений + /// + /// Строка - Имя колонки + /// ОписаниеТипов - Тип данных колонки + /// Строка - Заголовок колонки + /// КолонкаТаблицыЗначений [ContextMethod("Добавить", "Add")] public ValueTableColumn Add(string Name, IValue Type = null, string Title = null) { @@ -37,6 +47,13 @@ public ValueTableColumn Add(string Name, IValue Type = null, string Title = null return column; } + /// + /// Вставить колонку в указанную позицию + /// + /// Число - Индекс расположения колонки + /// Строка - Имя колонки + /// ОписаниеТипов - Тип данных колонки + /// КолонкаТаблицыЗначений [ContextMethod("Вставить", "Insert")] public ValueTableColumn Insert(int index, string Name, IValue Type = null) // TODO: добавить Title и Width после того, как количество обрабатываемых параметров будет увеличено хотя бы до 5 @@ -53,18 +70,32 @@ public ValueTableColumn Insert(int index, string Name, IValue Type = null) return column; } + /// + /// Индекс указанной колонки + /// + /// КолонкаТаблицыЗначений - Колонка, для которой определяется индекс + /// Число [ContextMethod("Индекс", "IndexOf")] public int IndexOf(ValueTableColumn column) { return _columns.IndexOf(column); } + /// + /// Количество колонок в таблице значений + /// + /// Число [ContextMethod("Количество", "Count")] public int Count() { return _columns.Count; } + /// + /// Поиск колонки по имени + /// + /// Строка - Имя колонки + /// КолонкаТаблицыЗначений - Найденная колонка таблицы значений, иначе Неопределено. [ContextMethod("Найти", "Find")] public IValue Find(string Name) { @@ -74,6 +105,14 @@ public IValue Find(string Name) return Column; } + /// + /// Удалить колонку значений + /// + /// + /// Строка - Имя колонки для удаления + /// Число - Индекс колонки для удаления + /// КолонкаТаблицыЗначений - Колонка для удаления + /// [ContextMethod("Удалить", "Delete")] public void Delete(IValue Column) { diff --git a/src/ScriptEngine.HostedScript/Library/ValueTable/ValueTableRow.cs b/src/ScriptEngine.HostedScript/Library/ValueTable/ValueTableRow.cs index 352952087..779644176 100644 --- a/src/ScriptEngine.HostedScript/Library/ValueTable/ValueTableRow.cs +++ b/src/ScriptEngine.HostedScript/Library/ValueTable/ValueTableRow.cs @@ -30,6 +30,10 @@ public int Count() return Owner.Columns.Count(); } + /// + /// Владелец строки + /// + /// ТаблицаЗначений [ContextMethod("Владелец", "Owner")] public ValueTable Owner() { @@ -44,6 +48,11 @@ private IValue TryValue(ValueTableColumn Column) return ValueFactory.Create(); // TODO: Определять пустое значение для типа колонки } + /// + /// Получает значение по индексу + /// + /// Число - Индекс колонки + /// Произвольный - Значение колонки [ContextMethod("Получить", "Get")] public IValue Get(int index) { @@ -62,6 +71,11 @@ public IValue Get(ValueTableColumn C) return TryValue(C); } + /// + /// Установить значение + /// + /// Число - Индекс колонки + /// Произвольный - значение для установки [ContextMethod("Установить", "Set")] public void Set(int index, IValue Value) { From 699a6f38c8976a251aaa46ab21aefc2a3f188d8c Mon Sep 17 00:00:00 2001 From: ret-Phoenix Date: Tue, 2 May 2017 13:04:09 +0300 Subject: [PATCH 019/168] =?UTF-8?q?=D0=A0=D0=B5=D1=84=D0=BB=D0=B5=D0=BA?= =?UTF-8?q?=D1=82=D0=BE=D1=80:=20=D0=9F=D0=BE=D0=BB=D1=83=D1=87=D0=B8?= =?UTF-8?q?=D1=82=D1=8C=D0=A2=D0=B0=D0=B1=D0=BB=D0=B8=D1=86=D1=83=D0=A1?= =?UTF-8?q?=D0=B2=D0=BE=D0=B9=D1=81=D1=82=D0=B2()?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Library/Reflector.cs | 23 ++++++++++++++++++- .../Machine/Contexts/ContextIValueImpl.cs | 6 +++++ .../Machine/Contexts/LibraryContextBase.cs | 2 +- .../Machine/Contexts/ReflectableSDO.cs | 5 ++++ .../Machine/Contexts/ScriptDrivenObject.cs | 5 +--- .../Machine/IRuntimeContextInstance.cs | 1 + tests/example-test.os | 1 + tests/reflector.os | 19 ++++++++++++++- 8 files changed, 55 insertions(+), 7 deletions(-) diff --git a/src/ScriptEngine.HostedScript/Library/Reflector.cs b/src/ScriptEngine.HostedScript/Library/Reflector.cs index 5dbc2e689..ff512ee63 100644 --- a/src/ScriptEngine.HostedScript/Library/Reflector.cs +++ b/src/ScriptEngine.HostedScript/Library/Reflector.cs @@ -123,7 +123,28 @@ public ValueTable.ValueTable GetMethodsTable(IRuntimeContextInstance target) } return Result; - } + } + + /// + /// Получает таблицу свойств для переданного объекта.. + /// + /// Объект, из которого получаем таблицу свойств. + /// Таблица значений с 1 колонкой - Имя + [ContextMethod("ПолучитьТаблицуСвойств", "GetPropertiesTable")] + public ValueTable.ValueTable GetPropertiesTable(IRuntimeContextInstance target) + { + ValueTable.ValueTable Result = new ValueTable.ValueTable(); + + var NameColumn = Result.Columns.Add("Имя", ValueFactory.Create(""), "Имя"); // TODO: Доработать после увеличения предела количества параметров + + foreach (var propInfo in target.GetProperties()) + { + ValueTableRow new_row = Result.Add(); + new_row.Set(NameColumn, ValueFactory.Create(propInfo.Identifier)); + } + + return Result; + } [ScriptConstructor] public static IRuntimeContextInstance CreateNew() diff --git a/src/ScriptEngine/Machine/Contexts/ContextIValueImpl.cs b/src/ScriptEngine/Machine/Contexts/ContextIValueImpl.cs index 496beefa8..c5b420194 100644 --- a/src/ScriptEngine/Machine/Contexts/ContextIValueImpl.cs +++ b/src/ScriptEngine/Machine/Contexts/ContextIValueImpl.cs @@ -146,6 +146,12 @@ public virtual void SetIndexedValue(IValue index, IValue val) { throw new NotImplementedException(); } + + public virtual IEnumerable GetProperties() + { + throw new NotImplementedException(); + } + public virtual int FindProperty(string name) { throw RuntimeException.PropNotFoundException(name); diff --git a/src/ScriptEngine/Machine/Contexts/LibraryContextBase.cs b/src/ScriptEngine/Machine/Contexts/LibraryContextBase.cs index 10117b246..2efdf3ac5 100644 --- a/src/ScriptEngine/Machine/Contexts/LibraryContextBase.cs +++ b/src/ScriptEngine/Machine/Contexts/LibraryContextBase.cs @@ -17,7 +17,7 @@ namespace ScriptEngine.Machine.Contexts public class LibraryContextBase : PropertyNameIndexAccessor, IReflectableContext { - public virtual IEnumerable GetProperties() + public override IEnumerable GetProperties() { throw new NotImplementedException(); } diff --git a/src/ScriptEngine/Machine/Contexts/ReflectableSDO.cs b/src/ScriptEngine/Machine/Contexts/ReflectableSDO.cs index 3dfef2bd4..ae2f4cda3 100644 --- a/src/ScriptEngine/Machine/Contexts/ReflectableSDO.cs +++ b/src/ScriptEngine/Machine/Contexts/ReflectableSDO.cs @@ -300,6 +300,11 @@ public void SetIndexedValue(IValue index, IValue val) _instance.SetIndexedValue(index, val); } + public IEnumerable GetProperties() + { + return _instance.GetProperties(); + } + public int FindProperty(string name) { return _instance.FindProperty(name); diff --git a/src/ScriptEngine/Machine/Contexts/ScriptDrivenObject.cs b/src/ScriptEngine/Machine/Contexts/ScriptDrivenObject.cs index 63e8eb724..ed3504e01 100644 --- a/src/ScriptEngine/Machine/Contexts/ScriptDrivenObject.cs +++ b/src/ScriptEngine/Machine/Contexts/ScriptDrivenObject.cs @@ -232,10 +232,7 @@ private MethodInfo[] AttachMethods() #region IReflectableContext Members - public virtual IEnumerable GetProperties() - { - throw new NotImplementedException(); - } + #endregion diff --git a/src/ScriptEngine/Machine/IRuntimeContextInstance.cs b/src/ScriptEngine/Machine/IRuntimeContextInstance.cs index b52281dfb..acdd8b83e 100644 --- a/src/ScriptEngine/Machine/IRuntimeContextInstance.cs +++ b/src/ScriptEngine/Machine/IRuntimeContextInstance.cs @@ -19,6 +19,7 @@ public interface IRuntimeContextInstance IValue GetIndexedValue(IValue index); void SetIndexedValue(IValue index, IValue val); + IEnumerable GetProperties(); int FindProperty(string name); bool IsPropReadable(int propNum); bool IsPropWritable(int propNum); diff --git a/tests/example-test.os b/tests/example-test.os index 104638f54..b5ff00f82 100644 --- a/tests/example-test.os +++ b/tests/example-test.os @@ -1,4 +1,5 @@ Перем юТест; +Перем ЭкспортнаяПеременная Экспорт; Функция Версия() Экспорт Возврат "0.1"; diff --git a/tests/reflector.os b/tests/reflector.os index a74a4bf47..ac0049b59 100644 --- a/tests/reflector.os +++ b/tests/reflector.os @@ -21,6 +21,8 @@ ВсеТесты.Добавить("ТестДолжен_ПроверитьМетод_ПолучитьТаблицуМетодов_ДляРазныхТипов"); ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоПараметрыИзмененныеВПроцедуреВозвращеныВМассив"); + ВсеТесты.Добавить("ТестДолжен_ПроверитьМетод_ПолучитьТаблицуСвойств"); + Возврат ВсеТесты; КонецФункции @@ -179,7 +181,7 @@ ТаблицаМетодов = Рефлектор.ПолучитьТаблицуМетодов(Пример); юТест.ПроверитьРавенство(Строка(ТипЗнч(ТаблицаМетодов)), "ТаблицаЗначений", "ТаблицаМетодов"); - юТест.ПроверитьРавенство(3, ТаблицаМетодов.Количество(), "ТаблицаМетодов.Количество()"); + юТест.ПроверитьРавенство(4, ТаблицаМетодов.Количество(), "ТаблицаМетодов.Количество()"); Метод0 = ТаблицаМетодов.Найти("вызватьметод", "Имя"); юТест.ПроверитьНеРавенство(Неопределено, Метод0, "Метод0"); @@ -258,6 +260,21 @@ КонецПроцедуры +Процедура ТестДолжен_ПроверитьМетод_ПолучитьТаблицуСвойств() Экспорт + + Пример = ПолучитьОбъектДляПроверки("test_reflector"); + Рефлектор = Новый Рефлектор; + + ТаблицаСвойств = Рефлектор.ПолучитьТаблицуСвойств(Пример); + юТест.ПроверитьРавенство(2, ТаблицаСвойств.Количество()); + + юТест.ПроверитьРавенство("ЭкспортнаяПеременная", ТаблицаСвойств[0].Имя); + + ТаблицаСвойств = Рефлектор.ПолучитьТаблицуСвойств(Рефлектор); // BREAK + юТест.ПроверитьРавенство(0, ТаблицаСвойств.Количество()); + +КонецПроцедуры + Функция ПолучитьОбъектДляПроверки(ИмяКласса) ТекПуть = Новый Файл(ТекущийСценарий().Источник).Путь; ПодключитьСценарий(ТекПуть+"example-test.os", ИмяКласса); From 156112baf64df5a0127e15eaa1089c28f6279be6 Mon Sep 17 00:00:00 2001 From: ret-Phoenix Date: Tue, 2 May 2017 21:44:14 +0300 Subject: [PATCH 020/168] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=B0=D0=BB=20=D1=81=D0=BE=D0=B3=D0=BB=D0=B0=D1=81=D0=BD?= =?UTF-8?q?=D0=BE=20=D1=80=D0=B5=D0=BA=D0=BE=D0=BC=D0=B5=D0=BD=D0=B4=D0=B0?= =?UTF-8?q?=D1=86=D0=B8=D0=B8:=20=D1=83=D0=B1=D1=80=D0=B0=D0=BB=20=D0=B8?= =?UTF-8?q?=D0=B7=20=D1=82=D0=B0=D0=B1=D0=BB=D0=B8=D1=86=D1=8B=20=D0=AD?= =?UTF-8?q?=D1=82=D0=BE=D1=82=D0=9E=D0=B1=D1=8A=D0=B5=D0=BA=D1=82=20=D0=B8?= =?UTF-8?q?=20ThisObject=20(=D0=B7=D0=B0=D0=B4=D0=B5=D0=BB=20=D0=BD=D0=B0?= =?UTF-8?q?=20=D0=B1=D1=83=D0=B4=D1=83=D1=89=D0=B5=D0=B5)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ScriptEngine.HostedScript/Library/Reflector.cs | 4 ++++ tests/example-test.os | 3 +++ tests/reflector.os | 6 +++--- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/ScriptEngine.HostedScript/Library/Reflector.cs b/src/ScriptEngine.HostedScript/Library/Reflector.cs index ff512ee63..32c89dfae 100644 --- a/src/ScriptEngine.HostedScript/Library/Reflector.cs +++ b/src/ScriptEngine.HostedScript/Library/Reflector.cs @@ -137,8 +137,12 @@ public ValueTable.ValueTable GetPropertiesTable(IRuntimeContextInstance target) var NameColumn = Result.Columns.Add("Имя", ValueFactory.Create(""), "Имя"); // TODO: Доработать после увеличения предела количества параметров + var SystemVarNames = new string[] { "этотобъект", "thisobject" }; + foreach (var propInfo in target.GetProperties()) { + if (SystemVarNames.Contains(propInfo.Identifier.ToLower())) continue; + ValueTableRow new_row = Result.Add(); new_row.Set(NameColumn, ValueFactory.Create(propInfo.Identifier)); } diff --git a/tests/example-test.os b/tests/example-test.os index b5ff00f82..e38b0a758 100644 --- a/tests/example-test.os +++ b/tests/example-test.os @@ -1,5 +1,8 @@ Перем юТест; +Перем ЭтотОбъек Экспорт; Перем ЭкспортнаяПеременная Экспорт; +Перем Яшма1 Экспорт; +Перем Яшма2; Функция Версия() Экспорт Возврат "0.1"; diff --git a/tests/reflector.os b/tests/reflector.os index ac0049b59..2edf35613 100644 --- a/tests/reflector.os +++ b/tests/reflector.os @@ -266,11 +266,11 @@ Рефлектор = Новый Рефлектор; ТаблицаСвойств = Рефлектор.ПолучитьТаблицуСвойств(Пример); - юТест.ПроверитьРавенство(2, ТаблицаСвойств.Количество()); + юТест.ПроверитьРавенство(3, ТаблицаСвойств.Количество()); - юТест.ПроверитьРавенство("ЭкспортнаяПеременная", ТаблицаСвойств[0].Имя); + юТест.ПроверитьРавенство("ЭкспортнаяПеременная", ТаблицаСвойств[1].Имя); - ТаблицаСвойств = Рефлектор.ПолучитьТаблицуСвойств(Рефлектор); // BREAK + ТаблицаСвойств = Рефлектор.ПолучитьТаблицуСвойств(Рефлектор); юТест.ПроверитьРавенство(0, ТаблицаСвойств.Количество()); КонецПроцедуры From 57190b6e7aa4d974f1475afa460d0a56b7c91a5d Mon Sep 17 00:00:00 2001 From: ret-Phoenix Date: Wed, 3 May 2017 14:54:09 +0300 Subject: [PATCH 021/168] =?UTF-8?q?=D0=9D=D0=B5=D0=BF=D1=83=D0=B1=D0=BB?= =?UTF-8?q?=D0=B8=D1=87=D0=BD=D1=8B=D0=B5=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81?= =?UTF-8?q?=D1=8B=20=D0=B2=20=D1=81=D1=82=D0=B0=D0=BD=D0=B4=D0=B0=D1=80?= =?UTF-8?q?=D1=82=D0=BD=D0=BE=D0=B9=20=D0=B1=D0=B8=D0=B1=D0=BB=D0=B8=D0=BE?= =?UTF-8?q?=D1=82=D0=B5=D0=BA=D0=B5=20#397?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ScriptEngine.HostedScript/Library/CommandLineArguments.cs | 2 +- src/ScriptEngine.HostedScript/Library/ConsoleColorEnum.cs | 2 +- src/ScriptEngine.HostedScript/Library/ConsoleContext.cs | 2 +- .../Library/Hash/HashFunctionEnum.cs | 2 +- src/ScriptEngine.HostedScript/Library/Hash/HashImpl.cs | 2 +- src/ScriptEngine.HostedScript/Library/Json/JSONReader.cs | 2 +- src/ScriptEngine.HostedScript/Library/Json/JSONWriter.cs | 2 +- .../Library/Json/JSONWriterSettings.cs | 2 +- .../Library/RandomNumberGenerator.cs | 2 +- .../Library/Regex/MatchCollectionImpl.cs | 4 ++-- src/ScriptEngine.HostedScript/Library/Regex/MatchImpl.cs | 4 ++-- src/ScriptEngine.HostedScript/Library/SystemGlobalContext.cs | 2 +- 12 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/ScriptEngine.HostedScript/Library/CommandLineArguments.cs b/src/ScriptEngine.HostedScript/Library/CommandLineArguments.cs index 91932abea..ef5e30b0d 100644 --- a/src/ScriptEngine.HostedScript/Library/CommandLineArguments.cs +++ b/src/ScriptEngine.HostedScript/Library/CommandLineArguments.cs @@ -18,7 +18,7 @@ namespace ScriptEngine.HostedScript.Library /// Коллекция представляет собой массив в режиме "ТолькоДляЧтения". Обращение к аргументам осуществляется по порядковому индексу. /// [ContextClass("КоллекцияАргументовКоманднойСтроки", "CommandLineArgumentsCollection")] - class CommandLineArguments : ContextIValueImpl, ICollectionContext + public class CommandLineArguments : ContextIValueImpl, ICollectionContext { private readonly string[] _values; diff --git a/src/ScriptEngine.HostedScript/Library/ConsoleColorEnum.cs b/src/ScriptEngine.HostedScript/Library/ConsoleColorEnum.cs index 7e5709b5e..01bf348f4 100644 --- a/src/ScriptEngine.HostedScript/Library/ConsoleColorEnum.cs +++ b/src/ScriptEngine.HostedScript/Library/ConsoleColorEnum.cs @@ -15,7 +15,7 @@ This Source Code Form is subject to the terms of the namespace ScriptEngine.HostedScript.Library { [SystemEnum("ЦветКонсоли", "ConsoleColor")] - class ConsoleColorEnum : EnumerationContext + public class ConsoleColorEnum : EnumerationContext { readonly Dictionary _valuesCache = new Dictionary(); diff --git a/src/ScriptEngine.HostedScript/Library/ConsoleContext.cs b/src/ScriptEngine.HostedScript/Library/ConsoleContext.cs index 2ee24f0de..2565c150a 100644 --- a/src/ScriptEngine.HostedScript/Library/ConsoleContext.cs +++ b/src/ScriptEngine.HostedScript/Library/ConsoleContext.cs @@ -19,7 +19,7 @@ namespace ScriptEngine.HostedScript.Library /// Предназначен для низкоуровнего манипулирования выводом в консоль. /// [ContextClass("Консоль", "Console")] - class ConsoleContext : AutoContext + public class ConsoleContext : AutoContext { [ContextProperty("НажатаКлавиша", "KeyPressed")] public bool HasKey diff --git a/src/ScriptEngine.HostedScript/Library/Hash/HashFunctionEnum.cs b/src/ScriptEngine.HostedScript/Library/Hash/HashFunctionEnum.cs index 461a1d3f7..931b34299 100644 --- a/src/ScriptEngine.HostedScript/Library/Hash/HashFunctionEnum.cs +++ b/src/ScriptEngine.HostedScript/Library/Hash/HashFunctionEnum.cs @@ -16,7 +16,7 @@ This Source Code Form is subject to the terms of the namespace ScriptEngine.HostedScript.Library.Hash { [SystemEnum("ХешФункция", "HashFunction")] - class HashFunctionEnum : EnumerationContext + public class HashFunctionEnum : EnumerationContext { const string MD5 = "MD5"; const string SHA1 = "SHA1"; diff --git a/src/ScriptEngine.HostedScript/Library/Hash/HashImpl.cs b/src/ScriptEngine.HostedScript/Library/Hash/HashImpl.cs index 692088529..f20d262f2 100644 --- a/src/ScriptEngine.HostedScript/Library/Hash/HashImpl.cs +++ b/src/ScriptEngine.HostedScript/Library/Hash/HashImpl.cs @@ -12,7 +12,7 @@ namespace ScriptEngine.HostedScript.Library.Hash { [ContextClass("ХешированиеДанных", "DataHashing")] - class HashImpl: AutoContext + public class HashImpl : AutoContext { protected HashAlgorithm _provider; protected IValue _enumValue; diff --git a/src/ScriptEngine.HostedScript/Library/Json/JSONReader.cs b/src/ScriptEngine.HostedScript/Library/Json/JSONReader.cs index c15719682..9193a28d9 100644 --- a/src/ScriptEngine.HostedScript/Library/Json/JSONReader.cs +++ b/src/ScriptEngine.HostedScript/Library/Json/JSONReader.cs @@ -11,7 +11,7 @@ namespace ScriptEngine.HostedScript.Library.Json /// Предназначен для последовательного чтения JSON-данных из файла или строки. /// [ContextClass("ЧтениеJSON", "JSONReader")] - class JSONReader : AutoContext + public class JSONReader : AutoContext { private JsonTextReader _reader; // Объект из библиотеки Newtonsoft для работы с форматом JSON diff --git a/src/ScriptEngine.HostedScript/Library/Json/JSONWriter.cs b/src/ScriptEngine.HostedScript/Library/Json/JSONWriter.cs index 547cb1749..fa5b8d667 100644 --- a/src/ScriptEngine.HostedScript/Library/Json/JSONWriter.cs +++ b/src/ScriptEngine.HostedScript/Library/Json/JSONWriter.cs @@ -15,7 +15,7 @@ namespace ScriptEngine.HostedScript.Library.Json /// Предназначен для организации последовательной записи объектов и текстов JSON. /// [ContextClass("ЗаписьJSON", "JSONWriter")] - class JSONWriter : AutoContext + public class JSONWriter : AutoContext { private const int INDENT_SIZE = 0; diff --git a/src/ScriptEngine.HostedScript/Library/Json/JSONWriterSettings.cs b/src/ScriptEngine.HostedScript/Library/Json/JSONWriterSettings.cs index 8713c3f0a..65699b12e 100644 --- a/src/ScriptEngine.HostedScript/Library/Json/JSONWriterSettings.cs +++ b/src/ScriptEngine.HostedScript/Library/Json/JSONWriterSettings.cs @@ -10,7 +10,7 @@ /// Определяет набор параметров, используемых при записи JSON. /// [ContextClass("ПараметрыЗаписиJSON", "JSONWriterSettings")] -class JSONWriterSettings : AutoContext +public class JSONWriterSettings : AutoContext { private bool _useDoubleQuotes; diff --git a/src/ScriptEngine.HostedScript/Library/RandomNumberGenerator.cs b/src/ScriptEngine.HostedScript/Library/RandomNumberGenerator.cs index 662da1235..0372a66f7 100644 --- a/src/ScriptEngine.HostedScript/Library/RandomNumberGenerator.cs +++ b/src/ScriptEngine.HostedScript/Library/RandomNumberGenerator.cs @@ -11,7 +11,7 @@ This Source Code Form is subject to the terms of the namespace ScriptEngine.HostedScript.Library { [ContextClass("ГенераторСлучайныхЧисел", "RandomNumberGenerator")] - class RandomNumberGenerator : AutoContext + public class RandomNumberGenerator : AutoContext { private readonly Random _random; diff --git a/src/ScriptEngine.HostedScript/Library/Regex/MatchCollectionImpl.cs b/src/ScriptEngine.HostedScript/Library/Regex/MatchCollectionImpl.cs index d2e84a768..af219d975 100644 --- a/src/ScriptEngine.HostedScript/Library/Regex/MatchCollectionImpl.cs +++ b/src/ScriptEngine.HostedScript/Library/Regex/MatchCollectionImpl.cs @@ -14,7 +14,7 @@ This Source Code Form is subject to the terms of the namespace ScriptEngine.HostedScript.Library.Regex { [ContextClass("КоллекцияСовпаденийРегулярногоВыражения", "RegExMatchCollection")] - class MatchCollection : AutoContext, ICollectionContext, IEnumerable + public class MatchCollection : AutoContext, ICollectionContext, IEnumerable { private readonly RegExp.MatchCollection _matches; @@ -70,7 +70,7 @@ System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() } [ContextClass("КоллекцияГруппРегулярногоВыражения", "RegExGroupCollection")] - class GroupCollection : AutoContext, ICollectionContext, IEnumerable + public class GroupCollection : AutoContext, ICollectionContext, IEnumerable { private readonly RegExp.GroupCollection _groups; diff --git a/src/ScriptEngine.HostedScript/Library/Regex/MatchImpl.cs b/src/ScriptEngine.HostedScript/Library/Regex/MatchImpl.cs index 635332c9a..110b5eff5 100644 --- a/src/ScriptEngine.HostedScript/Library/Regex/MatchImpl.cs +++ b/src/ScriptEngine.HostedScript/Library/Regex/MatchImpl.cs @@ -11,7 +11,7 @@ This Source Code Form is subject to the terms of the namespace ScriptEngine.HostedScript.Library.Regex { [ContextClass("СовпадениеРегулярногоВыражения", "RegExMatch")] - class MatchImpl : AutoContext + public class MatchImpl : AutoContext { private readonly RegExp.Match _match; @@ -58,7 +58,7 @@ public GroupCollection Groups } [ContextClass("ГруппаРегулярногоВыражения", "RegExGroup")] - class GroupImpl : AutoContext + public class GroupImpl : AutoContext { private readonly RegExp.Group _group; diff --git a/src/ScriptEngine.HostedScript/Library/SystemGlobalContext.cs b/src/ScriptEngine.HostedScript/Library/SystemGlobalContext.cs index 5671e7d12..88fc7f9a1 100644 --- a/src/ScriptEngine.HostedScript/Library/SystemGlobalContext.cs +++ b/src/ScriptEngine.HostedScript/Library/SystemGlobalContext.cs @@ -18,7 +18,7 @@ namespace ScriptEngine.HostedScript.Library /// Глобальный контекст. Представляет глобально доступные свойства и методы. /// [GlobalContext(Category="Процедуры и функции взаимодействия с системой", ManualRegistration=true)] - class SystemGlobalContext : IRuntimeContextInstance, IAttachableContext + public class SystemGlobalContext : IRuntimeContextInstance, IAttachableContext { private IVariable[] _state; private CommandLineArguments _args; From 0045f9753b202582fb1f2be377e85730556e4201 Mon Sep 17 00:00:00 2001 From: ret-Phoenix Date: Wed, 3 May 2017 17:02:23 +0300 Subject: [PATCH 022/168] =?UTF-8?q?=D0=9C=D0=BE=D0=B4=D0=B8=D1=84=D0=B8?= =?UTF-8?q?=D1=86=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BB=20.cs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Library/SystemEnvironmentContext.cs | 1 + .../Library/SystemGlobalContext.cs | 84 ++++++++++++++++++- 2 files changed, 84 insertions(+), 1 deletion(-) diff --git a/src/ScriptEngine.HostedScript/Library/SystemEnvironmentContext.cs b/src/ScriptEngine.HostedScript/Library/SystemEnvironmentContext.cs index 76f317ff7..7e0589a54 100644 --- a/src/ScriptEngine.HostedScript/Library/SystemEnvironmentContext.cs +++ b/src/ScriptEngine.HostedScript/Library/SystemEnvironmentContext.cs @@ -108,6 +108,7 @@ public IValue GetEnvironmentVariable(string varName) [ScriptConstructor] public static IRuntimeContextInstance Create() { + System.Console.WriteLine("deprecated"); return new SystemEnvironmentContext(); } } diff --git a/src/ScriptEngine.HostedScript/Library/SystemGlobalContext.cs b/src/ScriptEngine.HostedScript/Library/SystemGlobalContext.cs index 88fc7f9a1..064010ac0 100644 --- a/src/ScriptEngine.HostedScript/Library/SystemGlobalContext.cs +++ b/src/ScriptEngine.HostedScript/Library/SystemGlobalContext.cs @@ -24,6 +24,7 @@ public class SystemGlobalContext : IRuntimeContextInstance, IAttachableContext private CommandLineArguments _args; private readonly DynamicPropertiesHolder _propHolder = new DynamicPropertiesHolder(); private readonly List> _properties = new List>(); + private SystemEnvironmentContext _systemEnvironmentContext; public SystemGlobalContext() { @@ -33,6 +34,8 @@ public SystemGlobalContext() FileStreams = new FileStreamsManager(); RegisterProperty("ФайловыеПотоки", () => FileStreams); RegisterProperty("FileStreams", () => FileStreams); + + _systemEnvironmentContext = new SystemEnvironmentContext(); } private void RegisterProperty(string name, Func getter) @@ -477,8 +480,87 @@ public void FillPropertyValues(IRuntimeContextInstance acceptor, IRuntimeContext } - #region IAttachableContext Members + #region СистемнаяИнформация + + /// + /// Имя машины, на которой выполняется сценарий + /// + [ContextProperty("ИмяКомпьютера", "MachineName")] + public string MachineName + { + get + { + return _systemEnvironmentContext.MachineName; + } + } + + /// + /// Версия операционной системы, на которой выполняется сценарий + /// + [ContextProperty("ВерсияОС", "OSVersion")] + public string OSVersion + { + get + { + return _systemEnvironmentContext.OSVersion; + } + } + + /// + /// Версия OneScript, выполняющая данный сценарий + /// + [ContextProperty("Версия", "Version")] + public string Version + { + get + { + return _systemEnvironmentContext.Version; + } + } + + /// + /// Возвращает соответствие переменных среды. Ключом является имя переменной, а значением - значение переменной + /// + /// + /// СИ = Новый СистемнаяИнформация(); + /// Для Каждого Переменная Из СИ.ПеременныеСреды() Цикл + /// Сообщить(Переменная.Ключ + " = " + Переменная.Значение); + /// КонецЦикла; + /// + /// Соответствие + [ContextMethod("ПеременныеСреды", "EnvironmentVariables")] + public IRuntimeContextInstance EnvironmentVariables() + { + return _systemEnvironmentContext.EnvironmentVariables(); + } + + /// + /// Позволяет установить переменную среды. + /// Переменная устанавливается в области видимости процесса и очищается после его завершения. + /// + /// Имя переменной + /// Значение переменной + [ContextMethod("УстановитьПеременнуюСреды", "SetEnvironmentVariable")] + public void SetEnvironmentVariable(string varName, string value) + { + _systemEnvironmentContext.SetEnvironmentVariable(varName, value); + } + /// + /// Получить значение переменной среды. + /// + /// Имя переменной + /// Строка. Значение переменной + [ContextMethod("ПолучитьПеременнуюСреды", "GetEnvironmentVariable")] + public IValue GetEnvironmentVariable(string varName) + { + return _systemEnvironmentContext.GetEnvironmentVariable(varName); + } + + #endregion + + #region IAttachableContext Members + public void OnAttach(MachineInstance machine, out IVariable[] variables, out MethodInfo[] methods, From 5a5c23deaf0fa3e576944e83c50385adc4091074 Mon Sep 17 00:00:00 2001 From: ret-Phoenix Date: Thu, 4 May 2017 13:54:50 +0300 Subject: [PATCH 023/168] =?UTF-8?q?=D0=9F=D1=80=D0=BE=D0=BF=D0=B8=D1=81?= =?UTF-8?q?=D0=B0=D0=BB=20=D1=81=D0=B2=D0=BE=D0=B9=D1=81=D1=82=D0=B2=D0=B0?= =?UTF-8?q?=20=D0=B2=20=D0=93=D0=9A.=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=B2=D1=8B=D0=B2=D0=BE=D0=B4:=20SystemInfo=20d?= =?UTF-8?q?eprecated,=20use=20GlobalContext=20=D0=94=D0=BE=D0=B1=D0=B0?= =?UTF-8?q?=D0=B2=D0=B8=D0=BB=20=D1=82=D0=B5=D1=81=D1=82=D1=8B=20=D0=B4?= =?UTF-8?q?=D0=BB=D1=8F=20=D0=93=D0=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Library/SystemEnvironmentContext.cs | 2 +- .../Library/SystemGlobalContext.cs | 185 +++++++++--------- 2 files changed, 98 insertions(+), 89 deletions(-) diff --git a/src/ScriptEngine.HostedScript/Library/SystemEnvironmentContext.cs b/src/ScriptEngine.HostedScript/Library/SystemEnvironmentContext.cs index 7e0589a54..0c976720a 100644 --- a/src/ScriptEngine.HostedScript/Library/SystemEnvironmentContext.cs +++ b/src/ScriptEngine.HostedScript/Library/SystemEnvironmentContext.cs @@ -108,7 +108,7 @@ public IValue GetEnvironmentVariable(string varName) [ScriptConstructor] public static IRuntimeContextInstance Create() { - System.Console.WriteLine("deprecated"); + System.Console.WriteLine("SystemInfo deprecated, use GlobalContext"); return new SystemEnvironmentContext(); } } diff --git a/src/ScriptEngine.HostedScript/Library/SystemGlobalContext.cs b/src/ScriptEngine.HostedScript/Library/SystemGlobalContext.cs index 064010ac0..90fd77cc2 100644 --- a/src/ScriptEngine.HostedScript/Library/SystemGlobalContext.cs +++ b/src/ScriptEngine.HostedScript/Library/SystemGlobalContext.cs @@ -24,18 +24,27 @@ public class SystemGlobalContext : IRuntimeContextInstance, IAttachableContext private CommandLineArguments _args; private readonly DynamicPropertiesHolder _propHolder = new DynamicPropertiesHolder(); private readonly List> _properties = new List>(); - private SystemEnvironmentContext _systemEnvironmentContext; + private readonly SystemEnvironmentContext _systemEnvironmentContext; public SystemGlobalContext() { RegisterProperty("АргументыКоманднойСтроки", ()=>(IValue)CommandLineArguments); - RegisterProperty("CommandLineArguments", () => (IValue)CommandLineArguments); - - FileStreams = new FileStreamsManager(); + RegisterProperty("CommandLineArguments", () => (IValue)CommandLineArguments); + + FileStreams = new FileStreamsManager(); RegisterProperty("ФайловыеПотоки", () => FileStreams); RegisterProperty("FileStreams", () => FileStreams); _systemEnvironmentContext = new SystemEnvironmentContext(); + RegisterProperty("ИмяКомпьютера", () => (IValue)MachineName); + RegisterProperty("MachineName", () => (IValue)MachineName); + + RegisterProperty("ВерсияОС", () => (IValue)OSVersion); + RegisterProperty("OSVersion", () => (IValue)OSVersion); + + RegisterProperty("Версия", () => (IValue)Version); + RegisterProperty("Version", () => (IValue)Version); + } private void RegisterProperty(string name, Func getter) @@ -62,19 +71,19 @@ private void InitContextVariables() } public IHostApplication ApplicationHost { get; set; } - public ICodeSource CodeSource { get; set; } - - - /// - /// Менеджер файловых потоков. - /// + public ICodeSource CodeSource { get; set; } + + + /// + /// Менеджер файловых потоков. + /// [ContextProperty("ФайловыеПотоки","FileStreams")] public FileStreamsManager FileStreams { get; } /// /// Выдает сообщение в консоль. /// - /// Выдаваемое сообщение. + /// Выдаваемое сообщение. /// Статус сообщения. [ContextMethod("Сообщить", "Message")] public void Echo(string message, MessageStatusEnum status = MessageStatusEnum.Ordinary) @@ -482,85 +491,85 @@ public void FillPropertyValues(IRuntimeContextInstance acceptor, IRuntimeContext #region СистемнаяИнформация - /// - /// Имя машины, на которой выполняется сценарий - /// - [ContextProperty("ИмяКомпьютера", "MachineName")] - public string MachineName - { - get - { - return _systemEnvironmentContext.MachineName; - } - } - - /// - /// Версия операционной системы, на которой выполняется сценарий - /// - [ContextProperty("ВерсияОС", "OSVersion")] - public string OSVersion - { - get - { - return _systemEnvironmentContext.OSVersion; - } - } - - /// - /// Версия OneScript, выполняющая данный сценарий - /// - [ContextProperty("Версия", "Version")] - public string Version - { - get - { - return _systemEnvironmentContext.Version; - } - } - - /// - /// Возвращает соответствие переменных среды. Ключом является имя переменной, а значением - значение переменной - /// - /// - /// СИ = Новый СистемнаяИнформация(); - /// Для Каждого Переменная Из СИ.ПеременныеСреды() Цикл - /// Сообщить(Переменная.Ключ + " = " + Переменная.Значение); - /// КонецЦикла; - /// - /// Соответствие - [ContextMethod("ПеременныеСреды", "EnvironmentVariables")] - public IRuntimeContextInstance EnvironmentVariables() - { - return _systemEnvironmentContext.EnvironmentVariables(); - } - - /// - /// Позволяет установить переменную среды. - /// Переменная устанавливается в области видимости процесса и очищается после его завершения. - /// - /// Имя переменной - /// Значение переменной - [ContextMethod("УстановитьПеременнуюСреды", "SetEnvironmentVariable")] - public void SetEnvironmentVariable(string varName, string value) - { - _systemEnvironmentContext.SetEnvironmentVariable(varName, value); - } - - /// - /// Получить значение переменной среды. - /// - /// Имя переменной - /// Строка. Значение переменной - [ContextMethod("ПолучитьПеременнуюСреды", "GetEnvironmentVariable")] - public IValue GetEnvironmentVariable(string varName) - { - return _systemEnvironmentContext.GetEnvironmentVariable(varName); - } - + /// + /// Имя машины, на которой выполняется сценарий + /// + [ContextProperty("ИмяКомпьютера", "MachineName")] + public IValue MachineName + { + get + { + return ValueFactory.Create(_systemEnvironmentContext.MachineName); + } + } + + /// + /// Версия операционной системы, на которой выполняется сценарий + /// + [ContextProperty("ВерсияОС", "OSVersion")] + public IValue OSVersion + { + get + { + return ValueFactory.Create(_systemEnvironmentContext.OSVersion); + } + } + + /// + /// Версия OneScript, выполняющая данный сценарий + /// + [ContextProperty("Версия", "Version")] + public IValue Version + { + get + { + return ValueFactory.Create(_systemEnvironmentContext.Version); + } + } + + /// + /// Возвращает соответствие переменных среды. Ключом является имя переменной, а значением - значение переменной + /// + /// + /// СИ = Новый СистемнаяИнформация(); + /// Для Каждого Переменная Из СИ.ПеременныеСреды() Цикл + /// Сообщить(Переменная.Ключ + " = " + Переменная.Значение); + /// КонецЦикла; + /// + /// Соответствие + [ContextMethod("ПеременныеСреды", "EnvironmentVariables")] + public IRuntimeContextInstance EnvironmentVariables() + { + return _systemEnvironmentContext.EnvironmentVariables(); + } + + /// + /// Позволяет установить переменную среды. + /// Переменная устанавливается в области видимости процесса и очищается после его завершения. + /// + /// Имя переменной + /// Значение переменной + [ContextMethod("УстановитьПеременнуюСреды", "SetEnvironmentVariable")] + public void SetEnvironmentVariable(string varName, string value) + { + _systemEnvironmentContext.SetEnvironmentVariable(varName, value); + } + + /// + /// Получить значение переменной среды. + /// + /// Имя переменной + /// Строка. Значение переменной + [ContextMethod("ПолучитьПеременнуюСреды", "GetEnvironmentVariable")] + public IValue GetEnvironmentVariable(string varName) + { + return _systemEnvironmentContext.GetEnvironmentVariable(varName); + } + #endregion - + #region IAttachableContext Members - + public void OnAttach(MachineInstance machine, out IVariable[] variables, out MethodInfo[] methods, From e08c8fbbf4a669638ec31e329840ab149b3a4ede Mon Sep 17 00:00:00 2001 From: ret-Phoenix Date: Thu, 4 May 2017 15:59:28 +0300 Subject: [PATCH 024/168] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB:=20=D0=9F=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0?= =?UTF-8?q?=D1=82=D0=B5=D0=BB=D1=8C=D0=9E=D0=A1=20=D0=B2=20=D0=A1=D0=98=20?= =?UTF-8?q?=D0=9E=D1=81=D1=82=D0=B0=D0=B2=D0=B8=D0=BB=20=D0=B2=20=D0=93?= =?UTF-8?q?=D0=9A=20=D1=82=D0=BE=D0=BB=D1=8C=D0=BA=D0=BE=20=D0=BC=D0=B5?= =?UTF-8?q?=D1=82=D0=BE=D0=B4=D1=8B=20=D0=BF=D0=BE=20=D1=80=D0=B0=D0=B1?= =?UTF-8?q?=D0=BE=D1=82=D0=B5=20=D1=81=20=D0=9E=D0=BA=D1=80=D1=83=D0=B6?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=D0=BC.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Library/SystemEnvironmentContext.cs | 24 ++++++++- .../Library/SystemGlobalContext.cs | 45 ----------------- tests/global-context-sysinfo.os | 49 +++++++++++++++++++ tests/sysinfo.os | 6 ++- 4 files changed, 77 insertions(+), 47 deletions(-) create mode 100644 tests/global-context-sysinfo.os diff --git a/src/ScriptEngine.HostedScript/Library/SystemEnvironmentContext.cs b/src/ScriptEngine.HostedScript/Library/SystemEnvironmentContext.cs index 0c976720a..c8269efe4 100644 --- a/src/ScriptEngine.HostedScript/Library/SystemEnvironmentContext.cs +++ b/src/ScriptEngine.HostedScript/Library/SystemEnvironmentContext.cs @@ -52,6 +52,26 @@ public string Version } } + /// + /// Имя пользователя ОС с учетом домена + /// Формат строки: \\ИмяДомена\ИмяПользователя. + /// + [ContextProperty("ПользовательОС", "OSUser")] + public string OSUser + { + get + { + string DomainName = System.Environment.UserDomainName; + + if (DomainName != "") + { + return @"\\" + DomainName + @"\" + System.Environment.UserName; + } + + return System.Environment.UserName; + } + } + /// /// Возвращает соответствие переменных среды. Ключом является имя переменной, а значением - значение переменной /// @@ -65,6 +85,7 @@ public string Version [ContextMethod("ПеременныеСреды", "EnvironmentVariables")] public IRuntimeContextInstance EnvironmentVariables() { + System.Console.WriteLine("DeprecationWarning: 'SystemInfo.EnvironmentVariables' is deprecated, use 'EnvironmentVariables' from global context"); var varsMap = new MapImpl(); var allVars = System.Environment.GetEnvironmentVariables(); foreach (DictionaryEntry item in allVars) @@ -86,6 +107,7 @@ public IRuntimeContextInstance EnvironmentVariables() [ContextMethod("УстановитьПеременнуюСреды","SetEnvironmentVariable")] public void SetEnvironmentVariable(string varName, string value) { + System.Console.WriteLine("DeprecationWarning: 'SystemInfo.SetEnvironmentVariable' is deprecated, use 'SetEnvironmentVariable' from global context"); System.Environment.SetEnvironmentVariable(varName, value); } @@ -97,6 +119,7 @@ public void SetEnvironmentVariable(string varName, string value) [ContextMethod("ПолучитьПеременнуюСреды", "GetEnvironmentVariable")] public IValue GetEnvironmentVariable(string varName) { + System.Console.WriteLine("DeprecationWarning: 'SystemInfo.GetEnvironmentVariable' is deprecated, use 'GetEnvironmentVariable' from global context"); string value = System.Environment.GetEnvironmentVariable(varName); if (value == null) return ValueFactory.Create(); @@ -108,7 +131,6 @@ public IValue GetEnvironmentVariable(string varName) [ScriptConstructor] public static IRuntimeContextInstance Create() { - System.Console.WriteLine("SystemInfo deprecated, use GlobalContext"); return new SystemEnvironmentContext(); } } diff --git a/src/ScriptEngine.HostedScript/Library/SystemGlobalContext.cs b/src/ScriptEngine.HostedScript/Library/SystemGlobalContext.cs index 90fd77cc2..98e02114e 100644 --- a/src/ScriptEngine.HostedScript/Library/SystemGlobalContext.cs +++ b/src/ScriptEngine.HostedScript/Library/SystemGlobalContext.cs @@ -36,15 +36,6 @@ public SystemGlobalContext() RegisterProperty("FileStreams", () => FileStreams); _systemEnvironmentContext = new SystemEnvironmentContext(); - RegisterProperty("ИмяКомпьютера", () => (IValue)MachineName); - RegisterProperty("MachineName", () => (IValue)MachineName); - - RegisterProperty("ВерсияОС", () => (IValue)OSVersion); - RegisterProperty("OSVersion", () => (IValue)OSVersion); - - RegisterProperty("Версия", () => (IValue)Version); - RegisterProperty("Version", () => (IValue)Version); - } private void RegisterProperty(string name, Func getter) @@ -491,42 +482,6 @@ public void FillPropertyValues(IRuntimeContextInstance acceptor, IRuntimeContext #region СистемнаяИнформация - /// - /// Имя машины, на которой выполняется сценарий - /// - [ContextProperty("ИмяКомпьютера", "MachineName")] - public IValue MachineName - { - get - { - return ValueFactory.Create(_systemEnvironmentContext.MachineName); - } - } - - /// - /// Версия операционной системы, на которой выполняется сценарий - /// - [ContextProperty("ВерсияОС", "OSVersion")] - public IValue OSVersion - { - get - { - return ValueFactory.Create(_systemEnvironmentContext.OSVersion); - } - } - - /// - /// Версия OneScript, выполняющая данный сценарий - /// - [ContextProperty("Версия", "Version")] - public IValue Version - { - get - { - return ValueFactory.Create(_systemEnvironmentContext.Version); - } - } - /// /// Возвращает соответствие переменных среды. Ключом является имя переменной, а значением - значение переменной /// diff --git a/tests/global-context-sysinfo.os b/tests/global-context-sysinfo.os new file mode 100644 index 000000000..0a1821a24 --- /dev/null +++ b/tests/global-context-sysinfo.os @@ -0,0 +1,49 @@ +/////////////////////////////////////////////////////////////////////// +// +// Тест класса СистемнаяИнформация +// +// +/////////////////////////////////////////////////////////////////////// + +Перем юТест; + +//////////////////////////////////////////////////////////////////// +// Программный интерфейс + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + юТест = ЮнитТестирование; + + ВсеТесты = Новый Массив; + + ВсеТесты.Добавить("ТестДолжен_ПолучитьЗначенияОкружения"); + ВсеТесты.Добавить("ТестДолжен_ПолучитьПеременнуюPATH"); + ВсеТесты.Добавить("ТестДолжен_УстановитьПеременную"); + + Возврат ВсеТесты; +КонецФункции + +Процедура ТестДолжен_ПолучитьЗначенияОкружения() Экспорт + + Переменные = ПеременныеСреды(); + + юТест.ПроверитьЛожь(Переменные.Количество() = 0); + +КонецПроцедуры + +Процедура ТестДолжен_ПолучитьПеременнуюPATH() Экспорт + + юТест.ПроверитьЛожь(ПустаяСтрока(ПолучитьПеременнуюСреды("PATH"))); + +КонецПроцедуры + +Процедура ТестДолжен_УстановитьПеременную() Экспорт + + СтароеЗначение = ПолучитьПеременнуюСреды("OS"); + НовоеЗначение = "NewTestValue"; + + УстановитьПеременнуюСреды("OS", НовоеЗначение); + + юТест.ПроверитьРавенство(НовоеЗначение, ПолучитьПеременнуюСреды("OS")); + +КонецПроцедуры \ No newline at end of file diff --git a/tests/sysinfo.os b/tests/sysinfo.os index bb42e82e0..c14964936 100644 --- a/tests/sysinfo.os +++ b/tests/sysinfo.os @@ -20,6 +20,7 @@ ВсеТесты.Добавить("ТестДолжен_ПолучитьПеременнуюPATH"); ВсеТесты.Добавить("ТестДолжен_УстановитьПеременную"); ВсеТесты.Добавить("ТестДолжен_ПолучитьВерсиюOneScript"); + ВсеТесты.Добавить("ТестДолжен_ПолучитьПользователяОС"); Возврат ВсеТесты; КонецФункции @@ -60,4 +61,7 @@ КонецПроцедуры - +Процедура ТестДолжен_ПолучитьПользователяОС() Экспорт + Си = Новый СистемнаяИнформация(); + юТест.ПроверитьЛожь(ПустаяСтрока(Си.ПользовательОС)); +КонецПроцедуры From 0977fe3be533394bbc5c8956e7f1637f2d189421 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=B5=D1=80=D0=B3=D1=A3=D0=B9=20=D0=91=D0=B0=D1=82?= =?UTF-8?q?=D0=B0=D0=BD=D0=BE=D0=B2?= Date: Mon, 8 May 2017 22:39:54 +0300 Subject: [PATCH 025/168] =?UTF-8?q?=D0=A3=D1=82=D0=BE=D1=87=D0=BD=D1=91?= =?UTF-8?q?=D0=BD=D0=BD=D0=BE=D0=B5=20=D1=81=D0=BE=D0=BE=D0=B1=D1=89=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=BE=D0=B1=20=D0=BE=D1=88=D0=B8=D0=B1?= =?UTF-8?q?=D0=BA=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ScriptEngine/Machine/TypeManager.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/ScriptEngine/Machine/TypeManager.cs b/src/ScriptEngine/Machine/TypeManager.cs index f24832f20..b9a05bb5a 100644 --- a/src/ScriptEngine/Machine/TypeManager.cs +++ b/src/ScriptEngine/Machine/TypeManager.cs @@ -117,8 +117,10 @@ public TypeDescriptor RegisterType(string name, Type implementingClass) if (_knownTypesIndexes.ContainsKey(name)) { var td = GetTypeByName(name); - if (GetImplementingClass(td.ID) != implementingClass) - throw new InvalidOperationException("Name already registered"); + if (GetImplementingClass(td.ID) != implementingClass) + { + throw new InvalidOperationException(string.Format("Name `{0}` is already registered", name)); + } return td; } From a2347d2932f267cce97c3aac4523f2e4f924dc71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=B5=D1=80=D0=B3=D1=A3=D0=B9=20=D0=91=D0=B0=D1=82?= =?UTF-8?q?=D0=B0=D0=BD=D0=BE=D0=B2?= Date: Mon, 8 May 2017 22:55:12 +0300 Subject: [PATCH 026/168] =?UTF-8?q?Fixes=20#388:=20=D0=A1=D0=B8=D0=BC?= =?UTF-8?q?=D0=B2=D0=BE=D0=BB=D1=8B=20=D0=BE=D1=82=D0=BD=D1=8B=D0=BD=D0=B5?= =?UTF-8?q?=20=D0=BD=D0=B5=20=D0=BF=D0=B5=D1=80=D0=B5=D1=87=D0=B8=D1=81?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Символы - набор значений со строковыми полями. --- .../Library/SymbolsContext.cs | 94 +++++++++++++++++++ .../Library/SymbolsEnum.cs | 83 ---------------- .../Library/SystemGlobalContext.cs | 22 +++++ .../ScriptEngine.HostedScript.csproj | 2 +- 4 files changed, 117 insertions(+), 84 deletions(-) create mode 100644 src/ScriptEngine.HostedScript/Library/SymbolsContext.cs delete mode 100644 src/ScriptEngine.HostedScript/Library/SymbolsEnum.cs diff --git a/src/ScriptEngine.HostedScript/Library/SymbolsContext.cs b/src/ScriptEngine.HostedScript/Library/SymbolsContext.cs new file mode 100644 index 000000000..936fa48d9 --- /dev/null +++ b/src/ScriptEngine.HostedScript/Library/SymbolsContext.cs @@ -0,0 +1,94 @@ +/*---------------------------------------------------------- +This Source Code Form is subject to the terms of the +Mozilla Public License, v.2.0. If a copy of the MPL +was not distributed with this file, You can obtain one +at http://mozilla.org/MPL/2.0/. +----------------------------------------------------------*/ +using ScriptEngine.Machine; +using ScriptEngine.Machine.Contexts; + +namespace ScriptEngine.HostedScript.Library +{ + [ContextClass("Символы", "Chars")] + public sealed class SymbolsContext : AutoContext + { + /// + /// Символ перевода строки. + /// + /// Символ перевода строки. + [ContextProperty("ПС")] + public string LF + { + get + { + return "\n"; + } + } + + /// + /// Символ возврата каретки. + /// + /// Символ возврата каретки. + [ContextProperty("ВК")] + public string CR + { + get + { + return "\r"; + } + } + + /// + /// Символ вертикальной табуляции. + /// + /// Символ вертикальной табуляции. + [ContextProperty("ВТаб")] + public string VTab + { + get + { + return "\v"; + } + } + + /// + /// Символ табуляции. + /// + /// Символ горизонтальной табуляции. + [ContextProperty("Таб")] + public string Tab + { + get + { + return "\t"; + } + } + + /// + /// Символ промотки. + /// + /// Символ промотки. + [ContextProperty("ПФ")] + public string FF + { + get + { + return "\f"; + } + } + + /// + /// Символ неразрывного пробела. + /// + /// Символ неразрывного пробела. + [ContextProperty("НПП")] + public string Nbsp + { + get + { + return "\u00A0"; + } + } + + } +} diff --git a/src/ScriptEngine.HostedScript/Library/SymbolsEnum.cs b/src/ScriptEngine.HostedScript/Library/SymbolsEnum.cs deleted file mode 100644 index 0363a12fa..000000000 --- a/src/ScriptEngine.HostedScript/Library/SymbolsEnum.cs +++ /dev/null @@ -1,83 +0,0 @@ -/*---------------------------------------------------------- -This Source Code Form is subject to the terms of the -Mozilla Public License, v.2.0. If a copy of the MPL -was not distributed with this file, You can obtain one -at http://mozilla.org/MPL/2.0/. -----------------------------------------------------------*/ -using ScriptEngine.Machine; -using ScriptEngine.Machine.Contexts; - -namespace ScriptEngine.HostedScript.Library -{ - - [SystemEnum("Символы", "Chars")] - public class SymbolsEnum : EnumerationContext - { - private SymbolsEnum(TypeDescriptor typeRepresentation, TypeDescriptor valuesType) - :base(typeRepresentation, valuesType) - { - - } - - class SymbolsEnumValue : EnumerationValue - { - readonly string _val; - - public SymbolsEnumValue(EnumerationContext owner, string val) - : base(owner) - { - _val = val; - } - - public override string AsString() - { - return _val; - } - - public override DataType DataType - { - get - { - return DataType.String; - } - } - - public override TypeDescriptor SystemType - { - get - { - return TypeDescriptor.FromDataType(DataType); - } - } - - public override int CompareTo(IValue other) - { - return _val.CompareTo(other.AsString()); - } - - public override bool Equals(IValue other) - { - return _val == other.AsString(); - } - } - - public static SymbolsEnum CreateInstance() - { - - var type = TypeManager.RegisterType("Символы", typeof(SymbolsEnum)); - var stringType = TypeDescriptor.FromDataType(DataType.String); - var instance = new SymbolsEnum(type, stringType); - - instance.AddValue("ПС", "LF", new SymbolsEnumValue(instance, "\n")); - instance.AddValue("ВК", "CR", new SymbolsEnumValue(instance, "\r")); - instance.AddValue("ВТаб", "VTab", new SymbolsEnumValue(instance, "\v")); - instance.AddValue("Таб", "Tab", new SymbolsEnumValue(instance, "\t")); - instance.AddValue("ПФ", "FF", new SymbolsEnumValue(instance, "\f")); - instance.AddValue("НПП", "NBSp", new SymbolsEnumValue(instance, "\u00A0")); - - return instance; - } - - } - -} diff --git a/src/ScriptEngine.HostedScript/Library/SystemGlobalContext.cs b/src/ScriptEngine.HostedScript/Library/SystemGlobalContext.cs index 88fc7f9a1..6a61260a5 100644 --- a/src/ScriptEngine.HostedScript/Library/SystemGlobalContext.cs +++ b/src/ScriptEngine.HostedScript/Library/SystemGlobalContext.cs @@ -22,6 +22,7 @@ public class SystemGlobalContext : IRuntimeContextInstance, IAttachableContext { private IVariable[] _state; private CommandLineArguments _args; + private SymbolsContext _symbols; private readonly DynamicPropertiesHolder _propHolder = new DynamicPropertiesHolder(); private readonly List> _properties = new List>(); @@ -33,6 +34,9 @@ public SystemGlobalContext() FileStreams = new FileStreamsManager(); RegisterProperty("ФайловыеПотоки", () => FileStreams); RegisterProperty("FileStreams", () => FileStreams); + + RegisterProperty("Символы", () => (IValue)Chars); + RegisterProperty("Chars", () => (IValue)Chars); } private void RegisterProperty(string name, Func getter) @@ -262,6 +266,24 @@ public IRuntimeContextInstance CommandLineArguments } + /// + /// Содержит набор системных символов. + /// + /// Набор системных символов. + [ContextProperty("Символы")] + public IRuntimeContextInstance Chars + { + get + { + if (_symbols == null) + { + _symbols = new SymbolsContext(); + } + + return _symbols; + } + } + /// /// Запуск приложения в операционной системе /// diff --git a/src/ScriptEngine.HostedScript/ScriptEngine.HostedScript.csproj b/src/ScriptEngine.HostedScript/ScriptEngine.HostedScript.csproj index 2485e4c26..0347b98d6 100644 --- a/src/ScriptEngine.HostedScript/ScriptEngine.HostedScript.csproj +++ b/src/ScriptEngine.HostedScript/ScriptEngine.HostedScript.csproj @@ -160,7 +160,6 @@ - @@ -211,6 +210,7 @@ + From 187f51f494b98bead708d75d80bcfb2c0182354a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=B5=D1=80=D0=B3=D1=A3=D0=B9=20=D0=91=D0=B0=D1=82?= =?UTF-8?q?=D0=B0=D0=BD=D0=BE=D0=B2?= Date: Tue, 9 May 2017 20:21:43 +0300 Subject: [PATCH 027/168] =?UTF-8?q?Fixes=20#408:=20=D0=A2=D0=B8=D0=BF?= =?UTF-8?q?=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D1=8F=20=D0=BA=D0=BE=D0=BB=D0=BE?= =?UTF-8?q?=D0=BD=D0=BE=D0=BA=20=D1=82=D0=B0=D0=B1=D0=BB=D0=B8=D1=86=D1=8B?= =?UTF-8?q?=20=D0=B7=D0=BD=D0=B0=D1=87=D0=B5=D0=BD=D0=B8=D0=B9.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Обрабатывается свойство ТипЗначения, установка и получение значения в строке таблицы значений обрабатывается в соответствии с установленным типом значения. --- .../Library/Reflector.cs | 8 ++-- .../TypeDescription/TypeDescription.cs | 28 +++++++++-- .../Library/ValueTable/ValueTable.cs | 2 +- .../Library/ValueTable/ValueTableColumn.cs | 13 +++--- .../ValueTable/ValueTableColumnCollection.cs | 46 ++++++++----------- .../Library/ValueTable/ValueTableRow.cs | 45 +++++++++--------- tests/valuetable.os | 31 ++++++++++++- 7 files changed, 110 insertions(+), 63 deletions(-) diff --git a/src/ScriptEngine.HostedScript/Library/Reflector.cs b/src/ScriptEngine.HostedScript/Library/Reflector.cs index 32c89dfae..5884534ff 100644 --- a/src/ScriptEngine.HostedScript/Library/Reflector.cs +++ b/src/ScriptEngine.HostedScript/Library/Reflector.cs @@ -110,9 +110,9 @@ public ValueTable.ValueTable GetMethodsTable(IRuntimeContextInstance target) { ValueTable.ValueTable Result = new ValueTable.ValueTable(); - var NameColumn = Result.Columns.Add("Имя", ValueFactory.Create(""), "Имя"); // TODO: Доработать после увеличения предела количества параметров - var CountColumn = Result.Columns.Add("КоличествоПараметров", ValueFactory.Create(""), "Количество параметров"); // TODO: Доработать после увеличения предела количества параметров - var IsFunctionColumn = Result.Columns.Add("ЭтоФункция", ValueFactory.Create(""), "Это функция"); // TODO: Доработать после увеличения предела количества параметров + var NameColumn = Result.Columns.Add("Имя", TypeDescription.StringType(), "Имя"); + var CountColumn = Result.Columns.Add("КоличествоПараметров", TypeDescription.IntegerType(), "Количество параметров"); + var IsFunctionColumn = Result.Columns.Add("ЭтоФункция", TypeDescription.BooleanType(), "Это функция"); foreach(var methInfo in target.GetMethods()) { @@ -135,7 +135,7 @@ public ValueTable.ValueTable GetPropertiesTable(IRuntimeContextInstance target) { ValueTable.ValueTable Result = new ValueTable.ValueTable(); - var NameColumn = Result.Columns.Add("Имя", ValueFactory.Create(""), "Имя"); // TODO: Доработать после увеличения предела количества параметров + var NameColumn = Result.Columns.Add("Имя", TypeDescription.StringType(), "Имя"); var SystemVarNames = new string[] { "этотобъект", "thisobject" }; diff --git a/src/ScriptEngine.HostedScript/Library/TypeDescription/TypeDescription.cs b/src/ScriptEngine.HostedScript/Library/TypeDescription/TypeDescription.cs index a8f15d34a..c1aecb92c 100644 --- a/src/ScriptEngine.HostedScript/Library/TypeDescription/TypeDescription.cs +++ b/src/ScriptEngine.HostedScript/Library/TypeDescription/TypeDescription.cs @@ -16,13 +16,16 @@ public class TypeDescription : AutoContext { private readonly List _types = new List(); - public TypeDescription(IEnumerable types, + public TypeDescription(IEnumerable types = null, NumberQualifiers numberQualifiers = null, StringQualifiers stringQualifiers = null, DateQualifiers dateQualifiers = null, BinaryDataQualifiers binaryDataQualifiers = null) { - _types.AddRange(types); + if (types != null) + { + _types.AddRange(types); + } NumberQualifiers = numberQualifiers ?? new NumberQualifiers(); StringQualifiers = stringQualifiers ?? new StringQualifiers(); DateQualifiers = dateQualifiers ?? new DateQualifiers(); @@ -85,7 +88,7 @@ public IValue AdjustValue(IValue value = null) if (_types.Count == 0) { - return value; + return value ?? ValueFactory.Create(); } TypeTypeValue typeToCast = null; @@ -148,6 +151,25 @@ private static IList ConstructTypeList(IValue types) return _types; } + public static TypeDescription StringType(int length = 0, + AllowedLengthEnum allowedLength = AllowedLengthEnum.Variable) + { + var stringQualifier = new StringQualifiers(length, allowedLength); + return new TypeDescription(ConstructTypeList(ValueFactory.Create("Строка")), null, stringQualifier); + } + + public static TypeDescription IntegerType(int length = 10, + AllowedSignEnum allowedSign = AllowedSignEnum.Any) + { + var numberQualifier = new NumberQualifiers(length, 0, allowedSign); + return new TypeDescription(ConstructTypeList(ValueFactory.Create("Число")), numberQualifier); + } + + public static TypeDescription BooleanType() + { + return new TypeDescription(ConstructTypeList(ValueFactory.Create("Булево"))); + } + [ScriptConstructor] public static IRuntimeContextInstance Constructor( IValue source = null, diff --git a/src/ScriptEngine.HostedScript/Library/ValueTable/ValueTable.cs b/src/ScriptEngine.HostedScript/Library/ValueTable/ValueTable.cs index fe9e50453..75a794444 100644 --- a/src/ScriptEngine.HostedScript/Library/ValueTable/ValueTable.cs +++ b/src/ScriptEngine.HostedScript/Library/ValueTable/ValueTable.cs @@ -474,7 +474,7 @@ public ValueTable CopyColumns(string ColumnNames = null) foreach (ValueTableColumn Column in columns) { - Result.Columns.Add(Column.Name, Column.ValueType, Column.Title); // TODO: Доработать после увеличения предела количества параметров + Result.Columns.Add(Column.Name, Column.ValueType, Column.Title, Column.Width); } return Result; diff --git a/src/ScriptEngine.HostedScript/Library/ValueTable/ValueTableColumn.cs b/src/ScriptEngine.HostedScript/Library/ValueTable/ValueTableColumn.cs index 54e15aea2..93b66ebc0 100644 --- a/src/ScriptEngine.HostedScript/Library/ValueTable/ValueTableColumn.cs +++ b/src/ScriptEngine.HostedScript/Library/ValueTable/ValueTableColumn.cs @@ -22,7 +22,7 @@ public class ValueTableColumn : AutoContext { private string _title; private string _name; - private IValue _valueType; + private TypeDescription _valueType; private int _width; private readonly WeakReference _owner; @@ -30,11 +30,11 @@ public class ValueTableColumn : AutoContext // Порядковый номер колонки не может быть использовать из-за своей изменчивости. private readonly int _id; - public ValueTableColumn(ValueTableColumnCollection Owner, int id, string Name, string Title, IValue Type, int Width) + public ValueTableColumn(ValueTableColumnCollection Owner, int id, string Name, string Title, TypeDescription Type, int Width) { _name = Name; _title = Title; - _valueType = Type; + _valueType = Type ?? new TypeDescription(); _width = Width; _owner = new WeakReference(Owner); @@ -54,7 +54,7 @@ public int ID [ContextProperty("Заголовок", "Title")] public string Title { - get { return _title == null ? _name : _title; } + get { return _title ?? _name; } set { _title = value; } } @@ -84,10 +84,9 @@ public string Name /// /// ОписаниеТипа [ContextProperty("ТипЗначения", "ValueType")] - public IValue ValueType + public TypeDescription ValueType { get { return _valueType; } - set { _valueType = value; } // TODO: Проверить тип } /// @@ -98,7 +97,7 @@ public IValue ValueType public int Width { get { return _width; } - set { _width = value; } // TOOD: Проверить неотрицательность значения + set { _width = value; } } } } diff --git a/src/ScriptEngine.HostedScript/Library/ValueTable/ValueTableColumnCollection.cs b/src/ScriptEngine.HostedScript/Library/ValueTable/ValueTableColumnCollection.cs index 7b9abe6c4..bb0d1c7ba 100644 --- a/src/ScriptEngine.HostedScript/Library/ValueTable/ValueTableColumnCollection.cs +++ b/src/ScriptEngine.HostedScript/Library/ValueTable/ValueTableColumnCollection.cs @@ -34,18 +34,16 @@ public ValueTableColumnCollection() /// Строка - Заголовок колонки /// КолонкаТаблицыЗначений [ContextMethod("Добавить", "Add")] - public ValueTableColumn Add(string Name, IValue Type = null, string Title = null) - { - if (FindColumnByName(Name) != null) - throw new RuntimeException("Неверное имя колонки " + Name); - - var Width = 0; // затычка - - ValueTableColumn column = new ValueTableColumn(this, ++_internal_counter, Name, Title, Type, Width); - _columns.Add(column); - - return column; - } + public ValueTableColumn Add(string Name, TypeDescription Type = null, string Title = null, int Width = 0) + { + if (FindColumnByName(Name) != null) + throw new RuntimeException("Неверное имя колонки " + Name); + + var column = new ValueTableColumn(this, ++_internal_counter, Name, Title, Type, Width); + _columns.Add(column); + + return column; + } /// /// Вставить колонку в указанную позицию @@ -55,20 +53,16 @@ public ValueTableColumn Add(string Name, IValue Type = null, string Title = null /// ОписаниеТипов - Тип данных колонки /// КолонкаТаблицыЗначений [ContextMethod("Вставить", "Insert")] - public ValueTableColumn Insert(int index, string Name, IValue Type = null) - // TODO: добавить Title и Width после того, как количество обрабатываемых параметров будет увеличено хотя бы до 5 - { - if (FindColumnByName(Name) != null) - throw new RuntimeException("Неверное имя колонки " + Name); - - var Title = Name; // TODO: Затычка - var Width = 0; // TODO: Затычка - - ValueTableColumn column = new ValueTableColumn(this, ++_internal_counter, Name, Title, Type, Width); - _columns.Insert(index, column); - - return column; - } + public ValueTableColumn Insert(int index, string Name, TypeDescription Type = null, string Title = null, int Width = 0) + { + if (FindColumnByName(Name) != null) + throw new RuntimeException("Неверное имя колонки " + Name); + + ValueTableColumn column = new ValueTableColumn(this, ++_internal_counter, Name, Title, Type, Width); + _columns.Insert(index, column); + + return column; + } /// /// Индекс указанной колонки diff --git a/src/ScriptEngine.HostedScript/Library/ValueTable/ValueTableRow.cs b/src/ScriptEngine.HostedScript/Library/ValueTable/ValueTableRow.cs index 779644176..9239381b6 100644 --- a/src/ScriptEngine.HostedScript/Library/ValueTable/ValueTableRow.cs +++ b/src/ScriptEngine.HostedScript/Library/ValueTable/ValueTableRow.cs @@ -26,8 +26,8 @@ public ValueTableRow(ValueTable Owner) public int Count() { - var Owner = _owner.Target as ValueTable; - return Owner.Columns.Count(); + var owner = _owner.Target as ValueTable; + return owner.Columns.Count(); } /// @@ -40,13 +40,15 @@ public ValueTable Owner() return _owner.Target as ValueTable; } - private IValue TryValue(ValueTableColumn Column) - { - IValue Value; - if (_data.TryGetValue(Column, out Value)) - return Value; - return ValueFactory.Create(); // TODO: Определять пустое значение для типа колонки - } + private IValue TryValue(ValueTableColumn Column) + { + IValue Value; + if (_data.TryGetValue(Column, out Value)) + { + return Value; + } + return Column.ValueType.AdjustValue(); + } /// /// Получает значение по индексу @@ -80,18 +82,18 @@ public IValue Get(ValueTableColumn C) public void Set(int index, IValue Value) { var C = Owner().Columns.FindColumnByIndex(index); - _data[C] = Value; + _data[C] = C.ValueType.AdjustValue(Value); } public void Set(IValue index, IValue Value) { var C = Owner().Columns.GetColumnByIIndex(index); - _data[C] = Value; + _data[C] = C.ValueType.AdjustValue(Value); } public void Set(ValueTableColumn Column, IValue Value) { - _data[Column] = Value; + _data[Column] = Column.ValueType.AdjustValue(Value); } public IEnumerator GetEnumerator() @@ -128,11 +130,11 @@ public override IValue GetPropValue(int propNum) return TryValue(C); } - public override void SetPropValue(int propNum, IValue newVal) - { - ValueTableColumn C = Owner().Columns.FindColumnById(propNum); - _data[C] = newVal; - } + public override void SetPropValue(int propNum, IValue newVal) + { + ValueTableColumn C = Owner().Columns.FindColumnById(propNum); + _data[C] = C.ValueType.AdjustValue(newVal); + } private ValueTableColumn GetColumnByIIndex(IValue index) { @@ -145,10 +147,11 @@ public override IValue GetIndexedValue(IValue index) return TryValue(C); } - public override void SetIndexedValue(IValue index, IValue val) - { - _data[GetColumnByIIndex(index)] = val; - } + public override void SetIndexedValue(IValue index, IValue val) + { + var C = GetColumnByIIndex(index); + _data[C] = C.ValueType.AdjustValue(val); + } private static readonly ContextMethodsMapper _methods = new ContextMethodsMapper(); diff --git a/tests/valuetable.os b/tests/valuetable.os index 2d9605adc..4e9c0f4c9 100644 --- a/tests/valuetable.os +++ b/tests/valuetable.os @@ -35,6 +35,8 @@ ВсеТесты.Добавить("ТестДолжен_ЗагрузитьКолонку"); + ВсеТесты.Добавить("ТестДолжен_ПроверитьТипизациюКолонки"); + Возврат ВсеТесты; КонецФункции @@ -526,4 +528,31 @@ юТест.ПроверитьРавенство(Т.Итог("Количество2"), 15); юТест.ПроверитьРавенство(Т.Итог("Количество3"), 15); -КонецПроцедуры \ No newline at end of file +КонецПроцедуры + +Процедура ТестДолжен_ПроверитьТипизациюКолонки() Экспорт + + Таблица = Новый ТаблицаЗначений; + Таблица.Колонки.Добавить("Колонка1", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(10))); + + СтрокаТаблицы = Таблица.Добавить(); + СтрокаТаблицы.Колонка1 = 1; + + юТест.ПроверитьРавенство(СтрокаТаблицы.Колонка1, "1"); + + СтрокаТаблицы.Колонка1 = Неопределено; + юТест.ПроверитьРавенство(СтрокаТаблицы.Колонка1, "", "Неопределено - Пустая строка"); + + Таблица.Колонки.Добавить("Колонка2", Новый ОписаниеТипов("Строка,Число")); + СтрокаТаблицы.Колонка2 = 1; + юТест.ПроверитьРавенство(СтрокаТаблицы.Колонка2, 1); + + СтрокаТаблицы.Колонка2 = "ъ"; + юТест.ПроверитьРавенство(СтрокаТаблицы.Колонка2, "ъ"); + + + СтрокаТаблицы.Колонка2 = Неопределено; + юТест.ПроверитьРавенство(СтрокаТаблицы.Колонка2, Неопределено); + +КонецПроцедуры + From e9d7bd546f8d4f81be9ef492a434512232eade86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=B5=D1=80=D0=B3=D1=A3=D0=B9=20=D0=91=D0=B0=D1=82?= =?UTF-8?q?=D0=B0=D0=BD=D0=BE=D0=B2?= Date: Tue, 9 May 2017 20:45:06 +0300 Subject: [PATCH 028/168] =?UTF-8?q?=D0=A2=D0=B8=D0=BF=D0=B8=D0=B7=D0=B0?= =?UTF-8?q?=D1=86=D0=B8=D1=8F=20=D0=B4=D0=B5=D1=80=D0=B5=D0=B2=D0=B0=20?= =?UTF-8?q?=D0=B7=D0=BD=D0=B0=D1=87=D0=B5=D0=BD=D0=B8=D0=B9.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit В колонках дерева значений обрабатывается параметр ТипЗначения. Установка и получение свойств строк дерева выполняется с учётом типа значения колонки. --- .../Library/ValueTree/ValueTreeColumn.cs | 11 ++-- .../ValueTree/ValueTreeColumnCollection.cs | 4 +- .../Library/ValueTree/ValueTreeRow.cs | 65 ++++++++++--------- tests/valuetree.os | 30 ++++++++- 4 files changed, 70 insertions(+), 40 deletions(-) diff --git a/src/ScriptEngine.HostedScript/Library/ValueTree/ValueTreeColumn.cs b/src/ScriptEngine.HostedScript/Library/ValueTree/ValueTreeColumn.cs index b2d32b132..42c2225d0 100644 --- a/src/ScriptEngine.HostedScript/Library/ValueTree/ValueTreeColumn.cs +++ b/src/ScriptEngine.HostedScript/Library/ValueTree/ValueTreeColumn.cs @@ -21,7 +21,7 @@ public class ValueTreeColumn : AutoContext { private string _title; private string _name; - private IValue _valueType; + private TypeDescription _valueType; private int _width; private readonly ValueTreeColumnCollection _owner; @@ -29,11 +29,11 @@ public class ValueTreeColumn : AutoContext // Порядковый номер колонки не может быть использовать из-за своей изменчивости. private readonly int _id; - public ValueTreeColumn(ValueTreeColumnCollection Owner, int id, string Name, string Title, IValue Type, int Width) + public ValueTreeColumn(ValueTreeColumnCollection Owner, int id, string Name, string Title, TypeDescription Type, int Width) { _name = Name; _title = Title ?? Name; - _valueType = Type; + _valueType = Type ?? new TypeDescription(); _width = Width; _owner = Owner; @@ -60,7 +60,7 @@ public int ID [ContextProperty("Заголовок", "Title")] public string Title { - get { return _title == null ? _name : _title; } + get { return _title ?? _name; } set { _title = value; } } @@ -81,10 +81,9 @@ public string Name } [ContextProperty("ТипЗначения", "ValueType")] - public IValue ValueType + public TypeDescription ValueType { get { return _valueType; } - set { _valueType = value; } // TODO: Проверить тип } [ContextProperty("Ширина", "Width")] diff --git a/src/ScriptEngine.HostedScript/Library/ValueTree/ValueTreeColumnCollection.cs b/src/ScriptEngine.HostedScript/Library/ValueTree/ValueTreeColumnCollection.cs index 2622f8927..75f0680bf 100644 --- a/src/ScriptEngine.HostedScript/Library/ValueTree/ValueTreeColumnCollection.cs +++ b/src/ScriptEngine.HostedScript/Library/ValueTree/ValueTreeColumnCollection.cs @@ -36,7 +36,7 @@ public ValueTreeColumnCollection() /// Число. Ширина колонки. Необязательный параметр. /// КолонкаДереваЗначений. Добавленная колонка. [ContextMethod("Добавить", "Add")] - public ValueTreeColumn Add(string name, IValue type = null, string title = null, int width = 0) + public ValueTreeColumn Add(string name, TypeDescription type = null, string title = null, int width = 0) { if (FindColumnByName(name) != null) throw new RuntimeException("Неверное имя колонки " + name); @@ -57,7 +57,7 @@ public ValueTreeColumn Add(string name, IValue type = null, string title = null, /// Число. Ширина колонки. Необязательный параметр. /// КолонкаДереваЗначений. Добавленная колонка. [ContextMethod("Вставить", "Insert")] - public ValueTreeColumn Insert(int index, string name, IValue type = null, string title = null, int width = 0) + public ValueTreeColumn Insert(int index, string name, TypeDescription type = null, string title = null, int width = 0) { if (FindColumnByName(name) != null) throw new RuntimeException("Неверное имя колонки " + name); diff --git a/src/ScriptEngine.HostedScript/Library/ValueTree/ValueTreeRow.cs b/src/ScriptEngine.HostedScript/Library/ValueTree/ValueTreeRow.cs index f0d3c09a7..d82f000b2 100644 --- a/src/ScriptEngine.HostedScript/Library/ValueTree/ValueTreeRow.cs +++ b/src/ScriptEngine.HostedScript/Library/ValueTree/ValueTreeRow.cs @@ -65,13 +65,15 @@ public ValueTree Owner() return _owner; } - private IValue TryValue(ValueTreeColumn column) - { - IValue value; - if (_data.TryGetValue(column, out value)) - return value; - return ValueFactory.Create(); // TODO: Определять пустое значение для типа колонки - } + private IValue TryValue(ValueTreeColumn column) + { + IValue value; + if (_data.TryGetValue(column, out value)) + { + return value; + } + return column.ValueType.AdjustValue(); + } /// /// Получает значение по индексу. @@ -96,28 +98,28 @@ public IValue Get(ValueTreeColumn column) return TryValue(column); } - /// - /// Устанавливает значение по индексу. - /// - /// Число. Индекс параметра, которому задаётся значение. - /// Произвольный. Новое значение. - [ContextMethod("Установить", "Set")] - public void Set(int index, IValue value) - { - var column = Owner().Columns.FindColumnByIndex(index); - _data[column] = value; - } - - public void Set(IValue index, IValue value) - { - var column = Owner().Columns.GetColumnByIIndex(index); - _data[column] = value; - } - - public void Set(ValueTreeColumn column, IValue value) - { - _data[column] = value; - } + /// + /// Устанавливает значение по индексу. + /// + /// Число. Индекс параметра, которому задаётся значение. + /// Произвольный. Новое значение. + [ContextMethod("Установить", "Set")] + public void Set(int index, IValue value) + { + var column = Owner().Columns.FindColumnByIndex(index); + _data[column] = column.ValueType.AdjustValue(value); + } + + public void Set(IValue index, IValue value) + { + var column = Owner().Columns.GetColumnByIIndex(index); + _data[column] = column.ValueType.AdjustValue(value); + } + + public void Set(ValueTreeColumn column, IValue value) + { + _data[column] = column.ValueType.AdjustValue(value); + } /// /// Возвращает уровень вложенности строки в дереве. @@ -183,7 +185,7 @@ public override void SetPropValue(int propNum, IValue newVal) } else { - _data[column] = newVal; + _data[column] = column.ValueType.AdjustValue(newVal); } } @@ -200,7 +202,8 @@ public override IValue GetIndexedValue(IValue index) public override void SetIndexedValue(IValue index, IValue val) { - _data[GetColumnByIIndex(index)] = val; + var column = GetColumnByIIndex(index); + _data[GetColumnByIIndex(index)] = column.ValueType.AdjustValue(val); } diff --git a/tests/valuetree.os b/tests/valuetree.os index 50931763c..d0ff974da 100644 --- a/tests/valuetree.os +++ b/tests/valuetree.os @@ -36,6 +36,8 @@ ВсеТесты.Добавить("ТестДолжен_ПроверитьСортировкуСтрок"); ВсеТесты.Добавить("ТестДолжен_УстановитьШирину"); + + ВсеТесты.Добавить("ТестДолжен_ПроверитьТипизациюКолонки"); Возврат ВсеТесты; @@ -600,7 +602,6 @@ КонецПроцедуры - Процедура ТестДолжен_УстановитьШирину() Экспорт Д = Новый ДеревоЗначений; @@ -611,3 +612,30 @@ юТест.ПроверитьРавенство(Колонка.Ширина, 5, "Установка/чтение ширины колонки"); КонецПроцедуры + +Процедура ТестДолжен_ПроверитьТипизациюКолонки() Экспорт + + Дерево = Новый ДеревоЗначений; + Дерево.Колонки.Добавить("Колонка1", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(10))); + + СтрокаДерева = Дерево.Строки.Добавить(); + СтрокаДерева.Колонка1 = 1; + + юТест.ПроверитьРавенство(СтрокаДерева.Колонка1, "1"); + + СтрокаДерева.Колонка1 = Неопределено; + юТест.ПроверитьРавенство(СтрокаДерева.Колонка1, "", "Неопределено - Пустая строка"); + + Дерево.Колонки.Добавить("Колонка2", Новый ОписаниеТипов("Строка,Число")); + СтрокаДерева.Колонка2 = 1; + юТест.ПроверитьРавенство(СтрокаДерева.Колонка2, 1); + + СтрокаДерева.Колонка2 = "ъ"; + юТест.ПроверитьРавенство(СтрокаДерева.Колонка2, "ъ"); + + + СтрокаДерева.Колонка2 = Неопределено; + юТест.ПроверитьРавенство(СтрокаДерева.Колонка2, Неопределено); + +КонецПроцедуры + From eb362cec84fae39dfb6df1f65bd3dbc7e255e706 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=B5=D1=80=D0=B3=D1=A3=D0=B9=20=D0=91=D0=B0=D1=82?= =?UTF-8?q?=D0=B0=D0=BD=D0=BE=D0=B2?= Date: Wed, 10 May 2017 22:23:56 +0300 Subject: [PATCH 029/168] =?UTF-8?q?Fixes=20#433:=20=D0=A3=D0=BF=D0=B0?= =?UTF-8?q?=D0=BA=D0=BE=D0=B2=D0=BA=D0=B0=20=D1=84=D0=B0=D0=B9=D0=BB=D0=BE?= =?UTF-8?q?=D0=B2=20=D0=B1=D0=BE=D0=BB=D0=B5=D0=B5=204=D0=93=D0=91.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ScriptEngine.HostedScript/Library/Zip/ZipWriter.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/ScriptEngine.HostedScript/Library/Zip/ZipWriter.cs b/src/ScriptEngine.HostedScript/Library/Zip/ZipWriter.cs index 15a828987..83a5b46dc 100644 --- a/src/ScriptEngine.HostedScript/Library/Zip/ZipWriter.cs +++ b/src/ScriptEngine.HostedScript/Library/Zip/ZipWriter.cs @@ -56,6 +56,7 @@ public void Open( _zip.Comment = comment; _zip.CompressionMethod = MakeZipCompressionMethod(compressionMethod); _zip.CompressionLevel = MakeZipCompressionLevel(compressionLevel); + _zip.UseZip64WhenSaving = Zip64Option.AsNecessary; // Zlib падает с NullReferenceException, если задать шифрование //_zip.Encryption = MakeZipEncryption(encryptionMethod); } From 4d401fe1d393be919d21bb1b1ee00d18a67aed39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=B5=D1=80=D0=B3=D1=A3=D0=B9=20=D0=91=D0=B0=D1=82?= =?UTF-8?q?=D0=B0=D0=BD=D0=BE=D0=B2?= Date: Wed, 10 May 2017 22:48:28 +0300 Subject: [PATCH 030/168] =?UTF-8?q?1.0.17=20=D0=B2=20GlobalAssembly?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- appveyor.yml | 2 +- src/GlobalAssemblyInfo.cs | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index d3e01f386..56e68582f 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,4 +1,4 @@ -version: 1.0.16-alpha{build} +version: 1.0.17-alpha{build} pull_requests: do_not_increment_build_number: true configuration: Release diff --git a/src/GlobalAssemblyInfo.cs b/src/GlobalAssemblyInfo.cs index 2f65028f5..0130fb7a9 100644 --- a/src/GlobalAssemblyInfo.cs +++ b/src/GlobalAssemblyInfo.cs @@ -15,11 +15,11 @@ This Source Code Form is subject to the terms of the //------------------------------------------------------------------------------ [assembly: System.Reflection.AssemblyCompany("BeaverSoft")] -[assembly: System.Reflection.AssemblyCopyright("Copyright (c) 2016 EvilBeaver")] +[assembly: System.Reflection.AssemblyCopyright("Copyright (c) 2017 EvilBeaver")] [assembly: System.Reflection.AssemblyConfiguration("Commit 2a614c0")] -[assembly: System.Reflection.AssemblyVersion("1.0.16.0")] -[assembly: System.Reflection.AssemblyFileVersion("1.0.16.0")] -[assembly: System.Reflection.AssemblyInformationalVersion("1.0.16.0")] +[assembly: System.Reflection.AssemblyVersion("1.0.17.0")] +[assembly: System.Reflection.AssemblyFileVersion("1.0.17.0")] +[assembly: System.Reflection.AssemblyInformationalVersion("1.0.17.0")] @@ -27,15 +27,15 @@ internal sealed partial class ThisAssembly { internal const string AssemblyCompany = "BeaverSoft"; - internal const string AssemblyCopyright = "Copyright (c) 2016 EvilBeaver"; + internal const string AssemblyCopyright = "Copyright (c) 2017 EvilBeaver"; internal const string AssemblyConfiguration = "Commit 2a614c0"; - internal const string AssemblyVersion = "1.0.14.0"; + internal const string AssemblyVersion = "1.0.17.0"; - internal const string AssemblyFileVersion = "1.0.14.0"; + internal const string AssemblyFileVersion = "1.0.17.0"; - internal const string AssemblyInformationalVersion = "1.0.14.0"; + internal const string AssemblyInformationalVersion = "1.0.17.0"; private ThisAssembly() { } From 1827b70875cea822cc8a467b46d84bb575157bb7 Mon Sep 17 00:00:00 2001 From: ret-Phoenix Date: Thu, 11 May 2017 02:11:55 +0300 Subject: [PATCH 031/168] =?UTF-8?q?-=20=D0=92=D1=8B=D0=BD=D0=B5=D1=81=20?= =?UTF-8?q?=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D1=83=20=D1=81=20=D0=BF=D0=B5?= =?UTF-8?q?=D1=80=D0=B5=D0=BC=D0=B5=D0=BD=D0=BD=D1=8B=D0=BC=D0=B8=20=D0=BE?= =?UTF-8?q?=D0=BA=D1=80=D1=83=D0=B6=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=B2=20?= =?UTF-8?q?=D0=BE=D1=82=D0=B4=D0=B5=D0=BB=D1=8C=D0=BD=D1=8B=D0=B9=20=D0=BA?= =?UTF-8?q?=D0=BB=D0=B0=D1=81=D1=81.=20=D0=94=D0=BE=D1=81=D1=82=D1=83?= =?UTF-8?q?=D0=BF=D0=BD=D0=BE=20=D1=87=D0=B5=D1=80=D0=B5=D0=B7=20=D0=93?= =?UTF-8?q?=D0=BB=D0=BE=D0=B1=D0=B0=D0=BB=D1=8C=D0=BD=D1=8B=D0=B9=20=D0=BA?= =?UTF-8?q?=D0=BE=D0=BD=D1=82=D0=B5=D0=BA=D1=81=D1=82=20-=20=D0=98=D0=B7?= =?UTF-8?q?=D0=BC=D0=B5=D0=BD=D0=B8=D0=BB=20=D1=81=D0=BE=D0=BE=D0=B1=D1=89?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BE=D0=B1=20=D1=83=D1=81=D1=82?= =?UTF-8?q?=D0=B0=D1=80=D0=B5=D0=B2=D1=88=D0=B5=D0=BC=20=D0=BC=D0=B5=D1=82?= =?UTF-8?q?=D0=BE=D0=B4=D0=B5=20-=20=D0=9F=D0=B5=D1=80=D0=B5=D0=B8=D0=BC?= =?UTF-8?q?=D0=B5=D0=BD=D0=BE=D0=B2=D0=B0=D0=BB=20=D1=82=D0=B5=D1=81=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Library/EnvironmentVariablesImpl.cs | 73 +++++++++++++++++++ .../Library/SystemEnvironmentContext.cs | 6 +- .../Library/SystemGlobalContext.cs | 43 ----------- .../ScriptEngine.HostedScript.csproj | 1 + ...xt-sysinfo.os => environment-variables.os} | 0 5 files changed, 77 insertions(+), 46 deletions(-) create mode 100644 src/ScriptEngine.HostedScript/Library/EnvironmentVariablesImpl.cs rename tests/{global-context-sysinfo.os => environment-variables.os} (100%) diff --git a/src/ScriptEngine.HostedScript/Library/EnvironmentVariablesImpl.cs b/src/ScriptEngine.HostedScript/Library/EnvironmentVariablesImpl.cs new file mode 100644 index 000000000..50c839472 --- /dev/null +++ b/src/ScriptEngine.HostedScript/Library/EnvironmentVariablesImpl.cs @@ -0,0 +1,73 @@ +using ScriptEngine.Machine; +using ScriptEngine.Machine.Contexts; + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace ScriptEngine.HostedScript.Library +{ + [GlobalContext(Category = "Работа с переменными окружения")] + public class EnvironmentVariablesImpl : GlobalContextBase + { + + /// + /// Возвращает соответствие переменных среды. Ключом является имя переменной, а значением - значение переменной + /// + /// + /// Для Каждого Переменная Из ПеременныеСреды() Цикл + /// Сообщить(Переменная.Ключ + " = " + Переменная.Значение); + /// КонецЦикла; + /// + /// Соответствие + [ContextMethod("ПеременныеСреды", "EnvironmentVariables")] + public IRuntimeContextInstance EnvironmentVariables() + { + var varsMap = new MapImpl(); + var allVars = System.Environment.GetEnvironmentVariables(); + foreach (DictionaryEntry item in allVars) + { + varsMap.Insert( + ValueFactory.Create((string)item.Key), + ValueFactory.Create((string)item.Value)); + } + + return varsMap; + } + + /// + /// Позволяет установить переменную среды. + /// Переменная устанавливается в области видимости процесса и очищается после его завершения. + /// + /// Имя переменной + /// Значение переменной + [ContextMethod("УстановитьПеременнуюСреды", "SetEnvironmentVariable")] + public void SetEnvironmentVariable(string varName, string value) + { + System.Environment.SetEnvironmentVariable(varName, value); + } + + /// + /// Получить значение переменной среды. + /// + /// Имя переменной + /// Строка. Значение переменной + [ContextMethod("ПолучитьПеременнуюСреды", "GetEnvironmentVariable")] + public IValue GetEnvironmentVariable(string varName) + { + string value = System.Environment.GetEnvironmentVariable(varName); + if (value == null) + return ValueFactory.Create(); + else + return ValueFactory.Create(value); + + } + + public static IAttachableContext CreateInstance() + { + return new EnvironmentVariablesImpl(); + } + } +} diff --git a/src/ScriptEngine.HostedScript/Library/SystemEnvironmentContext.cs b/src/ScriptEngine.HostedScript/Library/SystemEnvironmentContext.cs index c8269efe4..80a631ac9 100644 --- a/src/ScriptEngine.HostedScript/Library/SystemEnvironmentContext.cs +++ b/src/ScriptEngine.HostedScript/Library/SystemEnvironmentContext.cs @@ -85,7 +85,7 @@ public string OSUser [ContextMethod("ПеременныеСреды", "EnvironmentVariables")] public IRuntimeContextInstance EnvironmentVariables() { - System.Console.WriteLine("DeprecationWarning: 'SystemInfo.EnvironmentVariables' is deprecated, use 'EnvironmentVariables' from global context"); + SystemLogger.Write("WARNING! Deprecated method: 'SystemInfo.EnvironmentVariables' is deprecated, use 'EnvironmentVariables' from global context"); var varsMap = new MapImpl(); var allVars = System.Environment.GetEnvironmentVariables(); foreach (DictionaryEntry item in allVars) @@ -107,7 +107,7 @@ public IRuntimeContextInstance EnvironmentVariables() [ContextMethod("УстановитьПеременнуюСреды","SetEnvironmentVariable")] public void SetEnvironmentVariable(string varName, string value) { - System.Console.WriteLine("DeprecationWarning: 'SystemInfo.SetEnvironmentVariable' is deprecated, use 'SetEnvironmentVariable' from global context"); + SystemLogger.Write("WARNING! Deprecated method: 'SystemInfo.SetEnvironmentVariable' is deprecated, use 'SetEnvironmentVariable' from global context"); System.Environment.SetEnvironmentVariable(varName, value); } @@ -119,7 +119,7 @@ public void SetEnvironmentVariable(string varName, string value) [ContextMethod("ПолучитьПеременнуюСреды", "GetEnvironmentVariable")] public IValue GetEnvironmentVariable(string varName) { - System.Console.WriteLine("DeprecationWarning: 'SystemInfo.GetEnvironmentVariable' is deprecated, use 'GetEnvironmentVariable' from global context"); + SystemLogger.Write("WARNING! Deprecated method: 'SystemInfo.GetEnvironmentVariable' is deprecated, use 'GetEnvironmentVariable' from global context"); string value = System.Environment.GetEnvironmentVariable(varName); if (value == null) return ValueFactory.Create(); diff --git a/src/ScriptEngine.HostedScript/Library/SystemGlobalContext.cs b/src/ScriptEngine.HostedScript/Library/SystemGlobalContext.cs index 98e02114e..107bf0437 100644 --- a/src/ScriptEngine.HostedScript/Library/SystemGlobalContext.cs +++ b/src/ScriptEngine.HostedScript/Library/SystemGlobalContext.cs @@ -480,49 +480,6 @@ public void FillPropertyValues(IRuntimeContextInstance acceptor, IRuntimeContext } - #region СистемнаяИнформация - - /// - /// Возвращает соответствие переменных среды. Ключом является имя переменной, а значением - значение переменной - /// - /// - /// СИ = Новый СистемнаяИнформация(); - /// Для Каждого Переменная Из СИ.ПеременныеСреды() Цикл - /// Сообщить(Переменная.Ключ + " = " + Переменная.Значение); - /// КонецЦикла; - /// - /// Соответствие - [ContextMethod("ПеременныеСреды", "EnvironmentVariables")] - public IRuntimeContextInstance EnvironmentVariables() - { - return _systemEnvironmentContext.EnvironmentVariables(); - } - - /// - /// Позволяет установить переменную среды. - /// Переменная устанавливается в области видимости процесса и очищается после его завершения. - /// - /// Имя переменной - /// Значение переменной - [ContextMethod("УстановитьПеременнуюСреды", "SetEnvironmentVariable")] - public void SetEnvironmentVariable(string varName, string value) - { - _systemEnvironmentContext.SetEnvironmentVariable(varName, value); - } - - /// - /// Получить значение переменной среды. - /// - /// Имя переменной - /// Строка. Значение переменной - [ContextMethod("ПолучитьПеременнуюСреды", "GetEnvironmentVariable")] - public IValue GetEnvironmentVariable(string varName) - { - return _systemEnvironmentContext.GetEnvironmentVariable(varName); - } - - #endregion - #region IAttachableContext Members public void OnAttach(MachineInstance machine, diff --git a/src/ScriptEngine.HostedScript/ScriptEngine.HostedScript.csproj b/src/ScriptEngine.HostedScript/ScriptEngine.HostedScript.csproj index 2485e4c26..225428b97 100644 --- a/src/ScriptEngine.HostedScript/ScriptEngine.HostedScript.csproj +++ b/src/ScriptEngine.HostedScript/ScriptEngine.HostedScript.csproj @@ -115,6 +115,7 @@ + diff --git a/tests/global-context-sysinfo.os b/tests/environment-variables.os similarity index 100% rename from tests/global-context-sysinfo.os rename to tests/environment-variables.os From 7033d9c9fbaa774c2fac95a398b96ff7e2e92e6c Mon Sep 17 00:00:00 2001 From: ret-Phoenix Date: Thu, 11 May 2017 14:34:44 +0300 Subject: [PATCH 032/168] =?UTF-8?q?#424=20=D0=A1=D1=82=D1=80=D0=9F=D0=BE?= =?UTF-8?q?=D0=BB=D1=83=D1=87=D0=B8=D1=82=D1=8C=D0=A1=D1=82=D1=80=D0=BE?= =?UTF-8?q?=D0=BA=D1=83=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=D0=B5=D1=82?= =?UTF-8?q?=20=D1=81=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D0=B0=D0=BC=D0=B8,?= =?UTF-8?q?=20=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=B8=D0=BB=20=D0=B7?= =?UTF-8?q?=D0=B0=D0=BC=D0=B5=D0=BD=D0=B8=D0=B2=20=D1=86=D0=B8=D0=BA=D0=BB?= =?UTF-8?q?=20=D0=BD=D0=B0=20Split?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ScriptEngine/Machine/MachineInstance.cs | 31 ++------------------- 1 file changed, 3 insertions(+), 28 deletions(-) diff --git a/src/ScriptEngine/Machine/MachineInstance.cs b/src/ScriptEngine/Machine/MachineInstance.cs index 23a9e8af7..d7b01b4ee 100644 --- a/src/ScriptEngine/Machine/MachineInstance.cs +++ b/src/ScriptEngine/Machine/MachineInstance.cs @@ -1747,35 +1747,10 @@ private void StrGetLine(int arg) string result = ""; if (lineNumber >= 1) { - int lineStart = 0; - int currentLineNumber = 1; - while (true) - { - int lineEnd = strArg.IndexOf('\n', lineStart); - if (lineEnd > 0) - { - if (currentLineNumber == lineNumber) - { - if (lineEnd > lineStart) - result = strArg.Substring(lineStart, lineEnd - lineStart); - - break; - } - - lineStart = lineEnd + 1; - currentLineNumber++; - } - else - { - if (currentLineNumber == lineNumber) - { - result = strArg.Substring(lineStart); - } - break; - } - } + string[] subStrVals = strArg.Split(new Char[] { '\n' }, lineNumber + 1); + result = subStrVals[lineNumber - 1]; } - + _operationStack.Push(ValueFactory.Create(result)); NextInstruction(); } From de5696ee771472b545bdde2db843072d563be121 Mon Sep 17 00:00:00 2001 From: ret-Phoenix Date: Thu, 11 May 2017 16:05:04 +0300 Subject: [PATCH 033/168] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B0=D0=BB=D1=8C=D0=BD=D1=8B?= =?UTF-8?q?=D0=B9=20=D1=82=D0=B5=D1=81=D1=82=20(=D0=BF=D1=80=D0=B8=20?= =?UTF-8?q?=D1=81=D1=82=D0=B0=D1=80=D0=BE=D0=BC=20=D0=B2=D0=B0=D1=80=D0=B8?= =?UTF-8?q?=D0=B0=D0=BD=D1=82=D0=B5)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/StrGetLine.os | 67 ++++++++++++++++++++++++++++ tests/module.txt | 105 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 172 insertions(+) create mode 100644 tests/StrGetLine.os create mode 100644 tests/module.txt diff --git a/tests/StrGetLine.os b/tests/StrGetLine.os new file mode 100644 index 000000000..9167bdd87 --- /dev/null +++ b/tests/StrGetLine.os @@ -0,0 +1,67 @@ +Перем юТест; + +Функция ПолучитьТекстИзФайла(ИмяФайла) Экспорт + ТекПуть = Новый Файл(ТекущийСценарий().Источник).Путь; + ПутьКФайлу = ТекПуть + ИмяФайла; + ФайлОбмена = Новый Файл(ПутьКФайлу); + Данные = ""; + Если ФайлОбмена.Существует() Тогда + Текст = Новый ЧтениеТекста(ПутьКФайлу, КодировкаТекста.ANSI); + Данные = Текст.Прочитать(); + Текст.Закрыть(); + ОсвободитьОбъект(Текст); + КонецЕсли; + возврат Данные; +КонецФункции + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + юТест = ЮнитТестирование; + + ВсеТесты = Новый Массив; + + ВсеТесты.Добавить("ТестДолжен_ВернутьСтроку1"); + ВсеТесты.Добавить("ТестДолжен_ВернутьСтроку2"); + ВсеТесты.Добавить("ТестДолжен_ВернутьСтроку5"); + ВсеТесты.Добавить("ТестДолжен_ВывестиДанные"); + + Возврат ВсеТесты; +КонецФункции + +Процедура ТестДолжен_ВернутьСтроку1() Экспорт + + Данные = ПолучитьТекстИзФайла("module.txt"); + Стр = СтрПолучитьСтроку(Данные, 1); + + юТест.ПроверитьРавенство("", Стр); +КонецПроцедуры + +Процедура ТестДолжен_ВернутьСтроку2() Экспорт + + Данные = ПолучитьТекстИзФайла("module.txt"); + Стр = СтрПолучитьСтроку(Данные, 2); + + юТест.ПроверитьРавенство("// Функция ищет резюме кандидата", Стр); +КонецПроцедуры + +Процедура ТестДолжен_ВернутьСтроку5() Экспорт + + Данные = ПолучитьТекстИзФайла("module.txt"); + Стр = СтрПолучитьСтроку(Данные, 5); + + юТест.ПроверитьРавенство("Функция НайтиРезюмеКандидата(ЗаявкаКандидата, ТиповаяАнкета = Неопределено) Экспорт", Стр); +КонецПроцедуры + +Процедура ТестДолжен_ВывестиДанные() Экспорт + + Данные = ПолучитьТекстИзФайла("module.txt"); + + КолСтрок = СтрЧислоСтрок(Данные)-1; + + Сообщить("Количество строк: " + КолСтрок); + Для А = 0 По КолСтрок Цикл + Стр = СокрЛП(СтрПолучитьСтроку(Данные, А)); + Сообщить("" + А + ":" + Стр); + КонецЦикла; + +КонецПроцедуры \ No newline at end of file diff --git a/tests/module.txt b/tests/module.txt new file mode 100644 index 000000000..29f5cbc88 --- /dev/null +++ b/tests/module.txt @@ -0,0 +1,105 @@ + +// ������� ���� ������ ��������� +// +// � �������� ������������� ����� �������� ������ �� ��������� ������� ������ +������� ��������������������(���������������, ������������� = ������������) ������� + + ������ = ����� ������; + + ������.������������������("���������������", ���������������); + + ������.����� = + "������� ����������� + | ����� + | ����� ���������.��������������������� ���� NULL + | ��� ���������.��������������������� = ��������(����������.�������������.������������) + | ����� ���������.��������������������� + | ����� ���������.��������������������� + | ����� ��� ������������� + |�� + | ��������� ��� ��������� + | ����� ���������� (������� + | ����������������.���������.��������������������� ��� ��������������������� + | �� + | ����������.���������������� ��� ���������������� + | ��� + | ����������������.������ = &���������������) ��� ��������� + | �� (������) + |��� + | ����� + | ����� ���������.��������������������� ���� NULL + | ��� ���������.��������������������� = ��������(����������.�������������.������������) + | ����� ���������.��������������������� + | ����� ���������.��������������������� + | ����� <> ��������(����������.�������������.������������)"; + ������� = ������.���������().�������(); + + ���� �������.���������() ����� + ������������� = �������.�������������; + + ����� + ������� ������������; + + ���������; + + ������.������������������("�������������", �������������); + + ������.����� = + "������� ����������� ������ 1 + | �����.������ + |�� + | ��������.����� ��� ����� + |��� + | �����.���������������� = &��������������� + | � �����.������������� = &������������� + | + |����������� �� + | �����.���� ����"; + ������� = ������.���������().�������(); + + ���� �������.���������() ����� + ������� �������.������; + + ����� + ������� ������������; + + ���������; + +������������ + +������� ���������������������������������������������������������() ������� + + ������� + "������� + | �����������������������.������.�������������.������������� ��� ������, + | �����������������������.������.������������������ ��� ������, + | �����������������������.������������ ��� �����, + | �����������������������.������.������������� ��� ������������������������, + | ����������������������.������������ + |�� + | ��������.�����.������� ��� ����������������������� + | ����� ���������� ����������.���������������������� ��� ���������������������� + | �� �����������������������.������������ = ����������������������.������ + | + |��� + | �����������������������.������.���������������� = &������� + | + |����������� �� + | �����������������������.������.����"; + +������������ + +��������� �������������������������������(�����, ��������������, �����) ������� + + �������������.�������������������������������(�����, ��������������, �����); + +�������������� + +��������� �������������������������������������������������������(������������������������) ������� + + ������������������������.��������(���("��������������.����������������")); + ������������������������.��������(���("��������������.�����")); + ������������������������.��������(���("��������������.�������������")); + +�������������� + \ No newline at end of file From 83d26c6992b470ec6413f37d1628b434e4f898b9 Mon Sep 17 00:00:00 2001 From: ret-Phoenix Date: Fri, 12 May 2017 12:09:36 +0300 Subject: [PATCH 034/168] =?UTF-8?q?=D0=9F=D1=80=D0=B8=D0=BC=D0=B5=D1=80=20?= =?UTF-8?q?=D0=B2=20=D0=BA=D0=BE=D0=B4=D0=B8=D1=80=D0=BE=D0=B2=D0=BA=D0=B5?= =?UTF-8?q?=20UTF8.=20module-ok.txt=20-=20=D0=BE=D1=82=D1=80=D0=B0=D0=B1?= =?UTF-8?q?=D0=B0=D1=82=D1=8B=D0=B2=D0=B0=D0=B5=D1=82=20=D0=BD=D0=B0=20?= =?UTF-8?q?=D0=BE=D0=B1=D0=BE=D0=B8=D1=85=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8?= =?UTF-8?q?=D1=8F=D1=85=20=D0=B4=D0=B2=D0=B8=D0=B6=D0=BA=D0=B0=20module.tx?= =?UTF-8?q?t=20-=20=D0=BD=D0=B0=20=D1=81=D1=82=D0=B0=D1=80=D0=BE=D0=BC=20?= =?UTF-8?q?=D0=BF=D0=B0=D0=B4=D0=B0=D0=B5=D1=82,=20=D0=BD=D0=B0=20=D0=BD?= =?UTF-8?q?=D0=BE=D0=B2=D0=BE=D0=BC=20=D0=9E=D0=BA.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/StrGetLine.os | 13 +++- tests/module-ok.txt | 15 +++++ tests/module.txt | 156 ++++++++++++++++++++++---------------------- 3 files changed, 104 insertions(+), 80 deletions(-) create mode 100644 tests/module-ok.txt diff --git a/tests/StrGetLine.os b/tests/StrGetLine.os index 9167bdd87..67d46425d 100644 --- a/tests/StrGetLine.os +++ b/tests/StrGetLine.os @@ -6,7 +6,7 @@ ФайлОбмена = Новый Файл(ПутьКФайлу); Данные = ""; Если ФайлОбмена.Существует() Тогда - Текст = Новый ЧтениеТекста(ПутьКФайлу, КодировкаТекста.ANSI); + Текст = Новый ЧтениеТекста(ПутьКФайлу, КодировкаТекста.UTF8); Данные = Текст.Прочитать(); Текст.Закрыть(); ОсвободитьОбъект(Текст); @@ -24,6 +24,7 @@ ВсеТесты.Добавить("ТестДолжен_ВернутьСтроку2"); ВсеТесты.Добавить("ТестДолжен_ВернутьСтроку5"); ВсеТесты.Добавить("ТестДолжен_ВывестиДанные"); + ВсеТесты.Добавить("ТестДолжен_ВернутьСтроку10"); Возврат ВсеТесты; КонецФункции @@ -64,4 +65,12 @@ Сообщить("" + А + ":" + Стр); КонецЦикла; -КонецПроцедуры \ No newline at end of file +КонецПроцедуры + +Процедура ТестДолжен_ВернутьСтроку10() Экспорт + + Данные = ПолучитьТекстИзФайла("module-ok.txt"); + Стр = СтрПолучитьСтроку(Данные, 10); + + юТест.ПроверитьРавенство("// СтрокаРодитель - Родительская строка дерева значений для вывода сообщения", Стр); +КонецПроцедуры diff --git a/tests/module-ok.txt b/tests/module-ok.txt new file mode 100644 index 000000000..cb830f0d0 --- /dev/null +++ b/tests/module-ok.txt @@ -0,0 +1,15 @@ +//Функция проверяет необходимость вывода сообщений в панель комментариев, при необходимости выводит сообщение в панель комментариев +// +// Параметры: +// ТекстСообщения - Строка - Текст сообщения +// Статус - ПеречислениеСсылка.ВидыСообщений - Вид сообщения +// - СтатусСообщения - Статус сообщения (используется для совместимости со старыми вызовами процедуры Сообщить) +// Заголовок - Строка - Текст заголовка +// РасшифровкаСообщения - Массив - Массив с данными расшифровки +// - Ссылка - Ссылка на объект +// СтрокаРодитель - Родительская строка дерева значений для вывода сообщения +// РаскрытьСообщение - Булево - Признак раскрытия строки дерева сообщений +// +// Возвращаемое значение: +// СтрокаДереваЗначенний - Строка дерева значений, в которую записано текущее сообщение +//Если вывод сообщений в панель комментариев не предусмотрен, возвращается Неопределено diff --git a/tests/module.txt b/tests/module.txt index 29f5cbc88..08611cecb 100644 --- a/tests/module.txt +++ b/tests/module.txt @@ -1,105 +1,105 @@ -// ������� ���� ������ ��������� +// Функция ищет резюме кандидата // -// � �������� ������������� ����� �������� ������ �� ��������� ������� ������ -������� ��������������������(���������������, ������������� = ������������) ������� +// В параметр ТиповаяАнкета будет передана ссылка на найденную типовую анкету +Функция НайтиРезюмеКандидата(ЗаявкаКандидата, ТиповаяАнкета = Неопределено) Экспорт - ������ = ����� ������; + Запрос = Новый Запрос; - ������.������������������("���������������", ���������������); + Запрос.УстановитьПараметр("ЗаявкаКандидата", ЗаявкаКандидата); - ������.����� = - "������� ����������� - | ����� - | ����� ���������.��������������������� ���� NULL - | ��� ���������.��������������������� = ��������(����������.�������������.������������) - | ����� ���������.��������������������� - | ����� ���������.��������������������� - | ����� ��� ������������� - |�� - | ��������� ��� ��������� - | ����� ���������� (������� - | ����������������.���������.��������������������� ��� ��������������������� - | �� - | ����������.���������������� ��� ���������������� - | ��� - | ����������������.������ = &���������������) ��� ��������� - | �� (������) - |��� - | ����� - | ����� ���������.��������������������� ���� NULL - | ��� ���������.��������������������� = ��������(����������.�������������.������������) - | ����� ���������.��������������������� - | ����� ���������.��������������������� - | ����� <> ��������(����������.�������������.������������)"; - ������� = ������.���������().�������(); + Запрос.Текст = + "ВЫБРАТЬ РАЗРЕШЕННЫЕ + | ВЫБОР + | КОГДА Должности.АнкетаРезюмеКандидата ЕСТЬ NULL + | ИЛИ Должности.АнкетаРезюмеКандидата = ЗНАЧЕНИЕ(Справочник.ТиповыеАнкеты.ПустаяСсылка) + | ТОГДА Константы.АнкетаРезюмеКандидата + | ИНАЧЕ Должности.АнкетаРезюмеКандидата + | КОНЕЦ КАК ТиповаяАнкета + |ИЗ + | Константы КАК Константы + | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ + | ЗаявкиКандидатов.Должность.АнкетаРезюмеКандидата КАК АнкетаРезюмеКандидата + | ИЗ + | Справочник.ЗаявкиКандидатов КАК ЗаявкиКандидатов + | ГДЕ + | ЗаявкиКандидатов.Ссылка = &ЗаявкаКандидата) КАК Должности + | ПО (ИСТИНА) + |ГДЕ + | ВЫБОР + | КОГДА Должности.АнкетаРезюмеКандидата ЕСТЬ NULL + | ИЛИ Должности.АнкетаРезюмеКандидата = ЗНАЧЕНИЕ(Справочник.ТиповыеАнкеты.ПустаяСсылка) + | ТОГДА Константы.АнкетаРезюмеКандидата + | ИНАЧЕ Должности.АнкетаРезюмеКандидата + | КОНЕЦ <> ЗНАЧЕНИЕ(Справочник.ТиповыеАнкеты.ПустаяСсылка)"; + Выборка = Запрос.Выполнить().Выбрать(); - ���� �������.���������() ����� - ������������� = �������.�������������; + Если Выборка.Следующий() Тогда + ТиповаяАнкета = Выборка.ТиповаяАнкета; - ����� - ������� ������������; + Иначе + Возврат Неопределено; - ���������; + КонецЕсли; - ������.������������������("�������������", �������������); + Запрос.УстановитьПараметр("ТиповаяАнкета", ТиповаяАнкета); - ������.����� = - "������� ����������� ������ 1 - | �����.������ - |�� - | ��������.����� ��� ����� - |��� - | �����.���������������� = &��������������� - | � �����.������������� = &������������� + Запрос.Текст = + "ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1 + | Опрос.Ссылка + |ИЗ + | Документ.Опрос КАК Опрос + |ГДЕ + | Опрос.ОпрашиваемоеЛицо = &ЗаявкаКандидата + | И Опрос.ТиповаяАнкета = &ТиповаяАнкета | - |����������� �� - | �����.���� ����"; - ������� = ������.���������().�������(); + |УПОРЯДОЧИТЬ ПО + | Опрос.Дата УБЫВ"; + Выборка = Запрос.Выполнить().Выбрать(); - ���� �������.���������() ����� - ������� �������.������; + Если Выборка.Следующий() Тогда + Возврат Выборка.Ссылка; - ����� - ������� ������������; + Иначе + Возврат Неопределено; - ���������; + КонецЕсли; -������������ +КонецФункции -������� ���������������������������������������������������������() ������� +Функция ПечатьСведенийОФизлицеТекстЗапросаРезультатыАнкетирования() Экспорт - ������� - "������� - | �����������������������.������.�������������.������������� ��� ������, - | �����������������������.������.������������������ ��� ������, - | �����������������������.������������ ��� �����, - | �����������������������.������.������������� ��� ������������������������, - | ����������������������.������������ - |�� - | ��������.�����.������� ��� ����������������������� - | ����� ���������� ����������.���������������������� ��� ���������������������� - | �� �����������������������.������������ = ����������������������.������ + Возврат + "ВЫБРАТЬ + | РезультатыАнкетирования.Ссылка.ТиповаяАнкета.Представление КАК Анкета, + | РезультатыАнкетирования.Вопрос.ПолнаяФормулировка КАК Вопрос, + | РезультатыАнкетирования.ТиповойОтвет КАК Ответ, + | РезультатыАнкетирования.Ссылка.Представление КАК РегистраторПредставление, + | ВариантыОтветовОпросов.ОценкаОтвета + |ИЗ + | Документ.Опрос.Вопросы КАК РезультатыАнкетирования + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВариантыОтветовОпросов КАК ВариантыОтветовОпросов + | ПО РезультатыАнкетирования.ТиповойОтвет = ВариантыОтветовОпросов.Ссылка | - |��� - | �����������������������.������.���������������� = &������� + |ГДЕ + | РезультатыАнкетирования.Ссылка.ОпрашиваемоеЛицо = &ФизЛицо | - |����������� �� - | �����������������������.������.����"; + |УПОРЯДОЧИТЬ ПО + | РезультатыАнкетирования.Ссылка.Дата"; -������������ +КонецФункции -��������� �������������������������������(�����, ��������������, �����) ������� +Процедура ЗаполнитьФизическоеЛицоПоОпросу(Форма, ФизическоеЛицо, Опрос) Экспорт - �������������.�������������������������������(�����, ��������������, �����); + Анкетирование.ЗаполнитьФизическоеЛицоПоОпросу(Форма, ФизическоеЛицо, Опрос); -�������������� +КонецПроцедуры -��������� �������������������������������������������������������(������������������������) ������� +Процедура ИменаДополнительныхТиповДополнитьОбъектамиАнкетирования(ИменаДополнительныхТипов) Экспорт - ������������������������.��������(���("��������������.����������������")); - ������������������������.��������(���("��������������.�����")); - ������������������������.��������(���("��������������.�������������")); + ИменаДополнительныхТипов.Добавить(Тип("ДокументОбъект.ЗаявкаНаОбучение")); + ИменаДополнительныхТипов.Добавить(Тип("ДокументОбъект.Опрос")); + ИменаДополнительныхТипов.Добавить(Тип("ДокументОбъект.РассылкаАнкет")); -�������������� +КонецПроцедуры \ No newline at end of file From 041feaaeb81638e274b32e81ed65283129e2b701 Mon Sep 17 00:00:00 2001 From: ret-Phoenix Date: Tue, 16 May 2017 09:37:50 +0300 Subject: [PATCH 035/168] =?UTF-8?q?=D0=9F=D0=BE=D0=B4=D0=BF=D1=80=D0=B0?= =?UTF-8?q?=D0=B2=D0=B8=D0=BB=20=D1=82=D0=B5=D1=81=D1=82=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/StrGetLine.os | 25 ++------- tests/fixtures/module.txt | 10 ++++ tests/module-ok.txt | 15 ------ tests/module.txt | 105 -------------------------------------- 4 files changed, 15 insertions(+), 140 deletions(-) create mode 100644 tests/fixtures/module.txt delete mode 100644 tests/module-ok.txt delete mode 100644 tests/module.txt diff --git a/tests/StrGetLine.os b/tests/StrGetLine.os index 67d46425d..c2e7b721b 100644 --- a/tests/StrGetLine.os +++ b/tests/StrGetLine.os @@ -2,7 +2,7 @@ Функция ПолучитьТекстИзФайла(ИмяФайла) Экспорт ТекПуть = Новый Файл(ТекущийСценарий().Источник).Путь; - ПутьКФайлу = ТекПуть + ИмяФайла; + ПутьКФайлу = ТекПуть + "fixtures\" + ИмяФайла; ФайлОбмена = Новый Файл(ПутьКФайлу); Данные = ""; Если ФайлОбмена.Существует() Тогда @@ -23,7 +23,6 @@ ВсеТесты.Добавить("ТестДолжен_ВернутьСтроку1"); ВсеТесты.Добавить("ТестДолжен_ВернутьСтроку2"); ВсеТесты.Добавить("ТестДолжен_ВернутьСтроку5"); - ВсеТесты.Добавить("ТестДолжен_ВывестиДанные"); ВсеТесты.Добавить("ТестДолжен_ВернутьСтроку10"); Возврат ВсеТесты; @@ -42,7 +41,7 @@ Данные = ПолучитьТекстИзФайла("module.txt"); Стр = СтрПолучитьСтроку(Данные, 2); - юТест.ПроверитьРавенство("// Функция ищет резюме кандидата", Стр); + юТест.ПроверитьРавенство("Стр2", Стр); КонецПроцедуры Процедура ТестДолжен_ВернутьСтроку5() Экспорт @@ -50,27 +49,13 @@ Данные = ПолучитьТекстИзФайла("module.txt"); Стр = СтрПолучитьСтроку(Данные, 5); - юТест.ПроверитьРавенство("Функция НайтиРезюмеКандидата(ЗаявкаКандидата, ТиповаяАнкета = Неопределено) Экспорт", Стр); -КонецПроцедуры - -Процедура ТестДолжен_ВывестиДанные() Экспорт - - Данные = ПолучитьТекстИзФайла("module.txt"); - - КолСтрок = СтрЧислоСтрок(Данные)-1; - - Сообщить("Количество строк: " + КолСтрок); - Для А = 0 По КолСтрок Цикл - Стр = СокрЛП(СтрПолучитьСтроку(Данные, А)); - Сообщить("" + А + ":" + Стр); - КонецЦикла; - + юТест.ПроверитьРавенство("", Стр); КонецПроцедуры Процедура ТестДолжен_ВернутьСтроку10() Экспорт - Данные = ПолучитьТекстИзФайла("module-ok.txt"); + Данные = ПолучитьТекстИзФайла("module.txt"); Стр = СтрПолучитьСтроку(Данные, 10); - юТест.ПроверитьРавенство("// СтрокаРодитель - Родительская строка дерева значений для вывода сообщения", Стр); + юТест.ПроверитьРавенство("Стр10", Стр); КонецПроцедуры diff --git a/tests/fixtures/module.txt b/tests/fixtures/module.txt new file mode 100644 index 000000000..d3f6f1eba --- /dev/null +++ b/tests/fixtures/module.txt @@ -0,0 +1,10 @@ + +Стр2 +Стр3 +Стр4 + +Стр6 +Стр7 +Стр8 + +Стр10 \ No newline at end of file diff --git a/tests/module-ok.txt b/tests/module-ok.txt deleted file mode 100644 index cb830f0d0..000000000 --- a/tests/module-ok.txt +++ /dev/null @@ -1,15 +0,0 @@ -//Функция проверяет необходимость вывода сообщений в панель комментариев, при необходимости выводит сообщение в панель комментариев -// -// Параметры: -// ТекстСообщения - Строка - Текст сообщения -// Статус - ПеречислениеСсылка.ВидыСообщений - Вид сообщения -// - СтатусСообщения - Статус сообщения (используется для совместимости со старыми вызовами процедуры Сообщить) -// Заголовок - Строка - Текст заголовка -// РасшифровкаСообщения - Массив - Массив с данными расшифровки -// - Ссылка - Ссылка на объект -// СтрокаРодитель - Родительская строка дерева значений для вывода сообщения -// РаскрытьСообщение - Булево - Признак раскрытия строки дерева сообщений -// -// Возвращаемое значение: -// СтрокаДереваЗначенний - Строка дерева значений, в которую записано текущее сообщение -//Если вывод сообщений в панель комментариев не предусмотрен, возвращается Неопределено diff --git a/tests/module.txt b/tests/module.txt deleted file mode 100644 index 08611cecb..000000000 --- a/tests/module.txt +++ /dev/null @@ -1,105 +0,0 @@ - -// Функция ищет резюме кандидата -// -// В параметр ТиповаяАнкета будет передана ссылка на найденную типовую анкету -Функция НайтиРезюмеКандидата(ЗаявкаКандидата, ТиповаяАнкета = Неопределено) Экспорт - - Запрос = Новый Запрос; - - Запрос.УстановитьПараметр("ЗаявкаКандидата", ЗаявкаКандидата); - - Запрос.Текст = - "ВЫБРАТЬ РАЗРЕШЕННЫЕ - | ВЫБОР - | КОГДА Должности.АнкетаРезюмеКандидата ЕСТЬ NULL - | ИЛИ Должности.АнкетаРезюмеКандидата = ЗНАЧЕНИЕ(Справочник.ТиповыеАнкеты.ПустаяСсылка) - | ТОГДА Константы.АнкетаРезюмеКандидата - | ИНАЧЕ Должности.АнкетаРезюмеКандидата - | КОНЕЦ КАК ТиповаяАнкета - |ИЗ - | Константы КАК Константы - | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ - | ЗаявкиКандидатов.Должность.АнкетаРезюмеКандидата КАК АнкетаРезюмеКандидата - | ИЗ - | Справочник.ЗаявкиКандидатов КАК ЗаявкиКандидатов - | ГДЕ - | ЗаявкиКандидатов.Ссылка = &ЗаявкаКандидата) КАК Должности - | ПО (ИСТИНА) - |ГДЕ - | ВЫБОР - | КОГДА Должности.АнкетаРезюмеКандидата ЕСТЬ NULL - | ИЛИ Должности.АнкетаРезюмеКандидата = ЗНАЧЕНИЕ(Справочник.ТиповыеАнкеты.ПустаяСсылка) - | ТОГДА Константы.АнкетаРезюмеКандидата - | ИНАЧЕ Должности.АнкетаРезюмеКандидата - | КОНЕЦ <> ЗНАЧЕНИЕ(Справочник.ТиповыеАнкеты.ПустаяСсылка)"; - Выборка = Запрос.Выполнить().Выбрать(); - - Если Выборка.Следующий() Тогда - ТиповаяАнкета = Выборка.ТиповаяАнкета; - - Иначе - Возврат Неопределено; - - КонецЕсли; - - Запрос.УстановитьПараметр("ТиповаяАнкета", ТиповаяАнкета); - - Запрос.Текст = - "ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1 - | Опрос.Ссылка - |ИЗ - | Документ.Опрос КАК Опрос - |ГДЕ - | Опрос.ОпрашиваемоеЛицо = &ЗаявкаКандидата - | И Опрос.ТиповаяАнкета = &ТиповаяАнкета - | - |УПОРЯДОЧИТЬ ПО - | Опрос.Дата УБЫВ"; - Выборка = Запрос.Выполнить().Выбрать(); - - Если Выборка.Следующий() Тогда - Возврат Выборка.Ссылка; - - Иначе - Возврат Неопределено; - - КонецЕсли; - -КонецФункции - -Функция ПечатьСведенийОФизлицеТекстЗапросаРезультатыАнкетирования() Экспорт - - Возврат - "ВЫБРАТЬ - | РезультатыАнкетирования.Ссылка.ТиповаяАнкета.Представление КАК Анкета, - | РезультатыАнкетирования.Вопрос.ПолнаяФормулировка КАК Вопрос, - | РезультатыАнкетирования.ТиповойОтвет КАК Ответ, - | РезультатыАнкетирования.Ссылка.Представление КАК РегистраторПредставление, - | ВариантыОтветовОпросов.ОценкаОтвета - |ИЗ - | Документ.Опрос.Вопросы КАК РезультатыАнкетирования - | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВариантыОтветовОпросов КАК ВариантыОтветовОпросов - | ПО РезультатыАнкетирования.ТиповойОтвет = ВариантыОтветовОпросов.Ссылка - | - |ГДЕ - | РезультатыАнкетирования.Ссылка.ОпрашиваемоеЛицо = &ФизЛицо - | - |УПОРЯДОЧИТЬ ПО - | РезультатыАнкетирования.Ссылка.Дата"; - -КонецФункции - -Процедура ЗаполнитьФизическоеЛицоПоОпросу(Форма, ФизическоеЛицо, Опрос) Экспорт - - Анкетирование.ЗаполнитьФизическоеЛицоПоОпросу(Форма, ФизическоеЛицо, Опрос); - -КонецПроцедуры - -Процедура ИменаДополнительныхТиповДополнитьОбъектамиАнкетирования(ИменаДополнительныхТипов) Экспорт - - ИменаДополнительныхТипов.Добавить(Тип("ДокументОбъект.ЗаявкаНаОбучение")); - ИменаДополнительныхТипов.Добавить(Тип("ДокументОбъект.Опрос")); - ИменаДополнительныхТипов.Добавить(Тип("ДокументОбъект.РассылкаАнкет")); - -КонецПроцедуры - \ No newline at end of file From 08ab93e58644fe4eb7db4c79a74633d6963efc41 Mon Sep 17 00:00:00 2001 From: ret-Phoenix Date: Tue, 16 May 2017 12:32:23 +0300 Subject: [PATCH 036/168] =?UTF-8?q?=D0=9F=D0=BE=D0=B4=D0=BF=D1=80=D0=B0?= =?UTF-8?q?=D0=B2=D0=B8=D0=BB=20=D1=82=D0=B5=D1=81=D1=82=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/StrGetLine.os | 35 +++++++++++++++++------------------ tests/fixtures/module.txt | 10 ---------- 2 files changed, 17 insertions(+), 28 deletions(-) delete mode 100644 tests/fixtures/module.txt diff --git a/tests/StrGetLine.os b/tests/StrGetLine.os index c2e7b721b..a94c635c2 100644 --- a/tests/StrGetLine.os +++ b/tests/StrGetLine.os @@ -1,18 +1,19 @@ Перем юТест; - -Функция ПолучитьТекстИзФайла(ИмяФайла) Экспорт - ТекПуть = Новый Файл(ТекущийСценарий().Источник).Путь; - ПутьКФайлу = ТекПуть + "fixtures\" + ИмяФайла; - ФайлОбмена = Новый Файл(ПутьКФайлу); - Данные = ""; - Если ФайлОбмена.Существует() Тогда - Текст = Новый ЧтениеТекста(ПутьКФайлу, КодировкаТекста.UTF8); - Данные = Текст.Прочитать(); - Текст.Закрыть(); - ОсвободитьОбъект(Текст); - КонецЕсли; - возврат Данные; -КонецФункции +Перем Данные; + +Процедура Инициализация() + Данные = + " + |Стр2 + |Стр3 + |Стр4 + | + |Стр6 + |Стр7 + |Стр8 + | + |Стр10"; +КонецПроцедуры Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт @@ -30,7 +31,6 @@ Процедура ТестДолжен_ВернутьСтроку1() Экспорт - Данные = ПолучитьТекстИзФайла("module.txt"); Стр = СтрПолучитьСтроку(Данные, 1); юТест.ПроверитьРавенство("", Стр); @@ -38,7 +38,6 @@ Процедура ТестДолжен_ВернутьСтроку2() Экспорт - Данные = ПолучитьТекстИзФайла("module.txt"); Стр = СтрПолучитьСтроку(Данные, 2); юТест.ПроверитьРавенство("Стр2", Стр); @@ -46,7 +45,6 @@ Процедура ТестДолжен_ВернутьСтроку5() Экспорт - Данные = ПолучитьТекстИзФайла("module.txt"); Стр = СтрПолучитьСтроку(Данные, 5); юТест.ПроверитьРавенство("", Стр); @@ -54,8 +52,9 @@ Процедура ТестДолжен_ВернутьСтроку10() Экспорт - Данные = ПолучитьТекстИзФайла("module.txt"); Стр = СтрПолучитьСтроку(Данные, 10); юТест.ПроверитьРавенство("Стр10", Стр); КонецПроцедуры + +Инициализация(); \ No newline at end of file diff --git a/tests/fixtures/module.txt b/tests/fixtures/module.txt deleted file mode 100644 index d3f6f1eba..000000000 --- a/tests/fixtures/module.txt +++ /dev/null @@ -1,10 +0,0 @@ - -Стр2 -Стр3 -Стр4 - -Стр6 -Стр7 -Стр8 - -Стр10 \ No newline at end of file From 3977caca63d8ae5e7f0f3213398da0eaad6815b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=B5=D1=80=D0=B3=D1=A3=D0=B9=20=D0=91=D0=B0=D1=82?= =?UTF-8?q?=D0=B0=D0=BD=D0=BE=D0=B2?= Date: Tue, 16 May 2017 19:35:44 +0300 Subject: [PATCH 037/168] =?UTF-8?q?=D0=92=D0=B5=D1=80=D0=BD=D1=83=D0=BB=20?= =?UTF-8?q?=D0=BF=D1=80=D0=BE=D0=B1=D0=B5=D0=BB=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Library/ValueTable/ValueTableColumn.cs | 11 ++--- .../ValueTable/ValueTableColumnCollection.cs | 47 +++++++++---------- 2 files changed, 26 insertions(+), 32 deletions(-) diff --git a/src/ScriptEngine.HostedScript/Library/ValueTable/ValueTableColumn.cs b/src/ScriptEngine.HostedScript/Library/ValueTable/ValueTableColumn.cs index 93b66ebc0..1ffe2021d 100644 --- a/src/ScriptEngine.HostedScript/Library/ValueTable/ValueTableColumn.cs +++ b/src/ScriptEngine.HostedScript/Library/ValueTable/ValueTableColumn.cs @@ -5,9 +5,6 @@ This Source Code Form is subject to the terms of the at http://mozilla.org/MPL/2.0/. ----------------------------------------------------------*/ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; using ScriptEngine.Machine.Contexts; using ScriptEngine.Machine; @@ -33,8 +30,8 @@ public class ValueTableColumn : AutoContext public ValueTableColumn(ValueTableColumnCollection Owner, int id, string Name, string Title, TypeDescription Type, int Width) { _name = Name; - _title = Title; - _valueType = Type ?? new TypeDescription(); + _title = Title; + _valueType = Type ?? new TypeDescription(); _width = Width; _owner = new WeakReference(Owner); @@ -83,8 +80,8 @@ public string Name /// Тип значения колонки /// /// ОписаниеТипа - [ContextProperty("ТипЗначения", "ValueType")] - public TypeDescription ValueType + [ContextProperty("ТипЗначения", "ValueType")] + public TypeDescription ValueType { get { return _valueType; } } diff --git a/src/ScriptEngine.HostedScript/Library/ValueTable/ValueTableColumnCollection.cs b/src/ScriptEngine.HostedScript/Library/ValueTable/ValueTableColumnCollection.cs index bb0d1c7ba..a3f65a928 100644 --- a/src/ScriptEngine.HostedScript/Library/ValueTable/ValueTableColumnCollection.cs +++ b/src/ScriptEngine.HostedScript/Library/ValueTable/ValueTableColumnCollection.cs @@ -6,8 +6,6 @@ This Source Code Form is subject to the terms of the ----------------------------------------------------------*/ using System; using System.Collections.Generic; -using System.Linq; -using System.Text; using ScriptEngine.Machine.Contexts; using ScriptEngine.Machine; @@ -33,17 +31,17 @@ public ValueTableColumnCollection() /// ОписаниеТипов - Тип данных колонки /// Строка - Заголовок колонки /// КолонкаТаблицыЗначений - [ContextMethod("Добавить", "Add")] - public ValueTableColumn Add(string Name, TypeDescription Type = null, string Title = null, int Width = 0) - { - if (FindColumnByName(Name) != null) - throw new RuntimeException("Неверное имя колонки " + Name); + [ContextMethod("Добавить", "Add")] + public ValueTableColumn Add(string Name, TypeDescription Type = null, string Title = null, int Width = 0) + { + if (FindColumnByName(Name) != null) + throw new RuntimeException("Неверное имя колонки " + Name); - var column = new ValueTableColumn(this, ++_internal_counter, Name, Title, Type, Width); - _columns.Add(column); + var column = new ValueTableColumn(this, ++_internal_counter, Name, Title, Type, Width); + _columns.Add(column); - return column; - } + return column; + } /// /// Вставить колонку в указанную позицию @@ -52,17 +50,17 @@ public ValueTableColumn Add(string Name, TypeDescription Type = null, string Tit /// Строка - Имя колонки /// ОписаниеТипов - Тип данных колонки /// КолонкаТаблицыЗначений - [ContextMethod("Вставить", "Insert")] - public ValueTableColumn Insert(int index, string Name, TypeDescription Type = null, string Title = null, int Width = 0) - { - if (FindColumnByName(Name) != null) - throw new RuntimeException("Неверное имя колонки " + Name); + [ContextMethod("Вставить", "Insert")] + public ValueTableColumn Insert(int index, string Name, TypeDescription Type = null, string Title = null, int Width = 0) + { + if (FindColumnByName(Name) != null) + throw new RuntimeException("Неверное имя колонки " + Name); - ValueTableColumn column = new ValueTableColumn(this, ++_internal_counter, Name, Title, Type, Width); - _columns.Insert(index, column); + ValueTableColumn column = new ValueTableColumn(this, ++_internal_counter, Name, Title, Type, Width); + _columns.Insert(index, column); - return column; - } + return column; + } /// /// Индекс указанной колонки @@ -185,7 +183,8 @@ public ValueTableColumn GetColumnByIIndex(IValue index) return Column; } - if (index is ValueTableColumn) { + if (index is ValueTableColumn) + { return index as ValueTableColumn; } @@ -210,8 +209,7 @@ public override void CallAsProcedure(int methodNumber, IValue[] arguments) try { binding(this, arguments); - } - catch (System.Reflection.TargetInvocationException e) + } catch (System.Reflection.TargetInvocationException e) { throw e.InnerException; } @@ -223,8 +221,7 @@ public override void CallAsFunction(int methodNumber, IValue[] arguments, out IV try { retValue = binding(this, arguments); - } - catch (System.Reflection.TargetInvocationException e) + } catch (System.Reflection.TargetInvocationException e) { throw e.InnerException; } From 4bd7bf57ddf0295dddb732b791728e2e01091c77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=B5=D1=80=D0=B3=D1=A3=D0=B9=20=D0=91=D0=B0=D1=82?= =?UTF-8?q?=D0=B0=D0=BD=D0=BE=D0=B2?= Date: Tue, 16 May 2017 19:55:43 +0300 Subject: [PATCH 038/168] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=BE=20=D0=BE=D0=BF=D1=80=D0=B5=D0=B4=D0=B5?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B2=D0=BD=D1=83=D1=82=D1=80?= =?UTF-8?q?=D0=B5=D0=BD=D0=BD=D0=B8=D1=85=20=D1=82=D0=B8=D0=BF=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TypeDescription/TypeDescription.cs | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/ScriptEngine.HostedScript/Library/TypeDescription/TypeDescription.cs b/src/ScriptEngine.HostedScript/Library/TypeDescription/TypeDescription.cs index c1aecb92c..24f17b010 100644 --- a/src/ScriptEngine.HostedScript/Library/TypeDescription/TypeDescription.cs +++ b/src/ScriptEngine.HostedScript/Library/TypeDescription/TypeDescription.cs @@ -151,23 +151,38 @@ private static IList ConstructTypeList(IValue types) return _types; } + static TypeTypeValue TypeNumber() + { + return new TypeTypeValue(TypeManager.GetTypeById((int)DataType.Number)); + } + + static TypeTypeValue TypeBoolean() + { + return new TypeTypeValue(TypeManager.GetTypeById((int)DataType.Boolean)); + } + + static TypeTypeValue TypeString() + { + return new TypeTypeValue(TypeManager.GetTypeById((int)DataType.String)); + } + public static TypeDescription StringType(int length = 0, AllowedLengthEnum allowedLength = AllowedLengthEnum.Variable) { var stringQualifier = new StringQualifiers(length, allowedLength); - return new TypeDescription(ConstructTypeList(ValueFactory.Create("Строка")), null, stringQualifier); + return new TypeDescription(new TypeTypeValue[] { TypeString() }, null, stringQualifier); } public static TypeDescription IntegerType(int length = 10, AllowedSignEnum allowedSign = AllowedSignEnum.Any) { var numberQualifier = new NumberQualifiers(length, 0, allowedSign); - return new TypeDescription(ConstructTypeList(ValueFactory.Create("Число")), numberQualifier); + return new TypeDescription(new TypeTypeValue[] { TypeNumber() }, numberQualifier); } public static TypeDescription BooleanType() { - return new TypeDescription(ConstructTypeList(ValueFactory.Create("Булево"))); + return new TypeDescription(new TypeTypeValue[] { TypeBoolean() }); } [ScriptConstructor] From 389eb1efdc7fbd43b1180863f8f033a9813426a2 Mon Sep 17 00:00:00 2001 From: Sergey Batanov Date: Wed, 17 May 2017 10:52:38 +0300 Subject: [PATCH 039/168] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=20=D1=82=D0=B5=D1=81=D1=82=20http?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/http.os | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/http.os b/tests/http.os index c43a14edb..5c3714822 100644 --- a/tests/http.os +++ b/tests/http.os @@ -174,7 +174,7 @@ Запрос = Новый HttpЗапрос("/get"); Соединение = Новый HttpСоединение(мАдресРесурса); - Ответ = Соединение.ВызватьHTTPМетод("UNKNOWN", Запрос); + Ответ = Соединение.ВызватьHTTPМетод("POST", Запрос); юТест.ПроверитьРавенство(405, Ответ.КодСостояния); юТест.ПроверитьВхождение(Ответ.ПолучитьТелоКакСтроку(), "Method Not Allowed"); @@ -199,4 +199,4 @@ /// ИНИЦИАЛИЗАЦИЯ /////////////////////////////////////////////////////////////////// -мАдресРесурса = "httpbin.org"; \ No newline at end of file +мАдресРесурса = "httpbin.org"; From bf62d4801efb504ff74081d903af6cca5fc4bc21 Mon Sep 17 00:00:00 2001 From: ret-Phoenix Date: Tue, 23 May 2017 00:59:43 +0300 Subject: [PATCH 040/168] =?UTF-8?q?=D0=94=D0=B5=D1=81=D1=82=D1=80=D1=83?= =?UTF-8?q?=D0=BA=D1=82=D0=BE=D1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Machine/Contexts/ScriptDrivenObject.cs | 10 ++++++++++ tests/destructor.os | 19 +++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 tests/destructor.os diff --git a/src/ScriptEngine/Machine/Contexts/ScriptDrivenObject.cs b/src/ScriptEngine/Machine/Contexts/ScriptDrivenObject.cs index ed3504e01..0500cb89a 100644 --- a/src/ScriptEngine/Machine/Contexts/ScriptDrivenObject.cs +++ b/src/ScriptEngine/Machine/Contexts/ScriptDrivenObject.cs @@ -23,6 +23,16 @@ public abstract class ScriptDrivenObject : PropertyNameIndexAccessor, IAttachabl private readonly Dictionary _methodSearchCache = new Dictionary(StringComparer.OrdinalIgnoreCase); private readonly Dictionary _propertySearchCache = new Dictionary(StringComparer.OrdinalIgnoreCase); + ~ScriptDrivenObject() + { + var methId = GetScriptMethod("деструктор"); + if (methId > -1) + { + CallAsProcedure(methId, new IValue[0]); + } + + } + public ScriptDrivenObject(LoadedModuleHandle module) : this(module.Module) { } diff --git a/tests/destructor.os b/tests/destructor.os new file mode 100644 index 000000000..e3906f017 --- /dev/null +++ b/tests/destructor.os @@ -0,0 +1,19 @@ +Перем юТест; + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + юТест = ЮнитТестирование; + + ВсеТесты = Новый Массив; + + ВсеТесты.Добавить("ТестДолжен_ОтработатьДеструктор"); + +КонецФункции + +Процедура ТестДолжен_ОтработатьДеструктор() Экспорт + +КонецПроцедуры + +Процедура Деструктор() + Сообщить("~ from u.class"); +КонецПроцедуры \ No newline at end of file From d692424095bdb96ed36a4c97ffbaa51e6d4d7b0e Mon Sep 17 00:00:00 2001 From: ret-Phoenix Date: Tue, 23 May 2017 16:36:15 +0300 Subject: [PATCH 041/168] =?UTF-8?q?=D0=9A=D0=BE=D0=BD=D1=81=D1=82=D1=80?= =?UTF-8?q?=D1=83=D0=BA=D1=82=D0=BE=D1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Contexts/AttachedScriptsFactory.cs | 4 +- .../Machine/Contexts/ScriptDrivenObject.cs | 62 +++++++++++++--- .../Contexts/UserScriptContextInstance.cs | 10 ++- tests/constructor.os | 72 +++++++++++++++++++ tests/destructor.os | 19 ----- tests/testdata/magic-object.os | 2 + tests/testdata/no-magic-object.os | 2 + 7 files changed, 140 insertions(+), 31 deletions(-) create mode 100644 tests/constructor.os delete mode 100644 tests/destructor.os create mode 100644 tests/testdata/magic-object.os create mode 100644 tests/testdata/no-magic-object.os diff --git a/src/ScriptEngine/Machine/Contexts/AttachedScriptsFactory.cs b/src/ScriptEngine/Machine/Contexts/AttachedScriptsFactory.cs index 7eab34048..c55b3539c 100644 --- a/src/ScriptEngine/Machine/Contexts/AttachedScriptsFactory.cs +++ b/src/ScriptEngine/Machine/Contexts/AttachedScriptsFactory.cs @@ -180,10 +180,10 @@ public static void Dispose() [ScriptConstructor(ParametrizeWithClassName = true)] public static IRuntimeContextInstance ScriptFactory(string typeName, IValue[] arguments) - { + { var module = _instance._loadedModules[typeName]; - var newObj = new UserScriptContextInstance(module, typeName); + var newObj = new UserScriptContextInstance(module, typeName, arguments); newObj.AddProperty("ЭтотОбъект", newObj); newObj.InitOwnData(); newObj.Initialize(_instance._engine.Machine); diff --git a/src/ScriptEngine/Machine/Contexts/ScriptDrivenObject.cs b/src/ScriptEngine/Machine/Contexts/ScriptDrivenObject.cs index 0500cb89a..121f28437 100644 --- a/src/ScriptEngine/Machine/Contexts/ScriptDrivenObject.cs +++ b/src/ScriptEngine/Machine/Contexts/ScriptDrivenObject.cs @@ -23,15 +23,18 @@ public abstract class ScriptDrivenObject : PropertyNameIndexAccessor, IAttachabl private readonly Dictionary _methodSearchCache = new Dictionary(StringComparer.OrdinalIgnoreCase); private readonly Dictionary _propertySearchCache = new Dictionary(StringComparer.OrdinalIgnoreCase); - ~ScriptDrivenObject() - { - var methId = GetScriptMethod("деструктор"); - if (methId > -1) - { - CallAsProcedure(methId, new IValue[0]); - } + private IValue[] constructorParams = new IValue[0]; + + public IValue[] ConstructorParams { get { return constructorParams; } set { constructorParams = value; } } + + //~ScriptDrivenObject() + //{ + // var methId = GetScriptMethod("деструктор", "destructor"); + // if (methId > -1) + // { + // CallAsProcedure(methId, new IValue[0]); + // } - } public ScriptDrivenObject(LoadedModuleHandle module) : this(module.Module) { @@ -39,7 +42,6 @@ public ScriptDrivenObject(LoadedModuleHandle module) : this(module.Module) public ScriptDrivenObject(LoadedModuleHandle module, bool deffered) : this(module.Module, deffered) { - } internal ScriptDrivenObject(LoadedModule module, bool deffered) @@ -116,6 +118,48 @@ public void Initialize(MachineInstance runner) _machine.AttachContext(this, true); _machine.ExecuteModuleBody(); }); + + var methId = GetScriptMethod("конструктор", "constructor"); + int constructorParamsCount = ConstructorParams.Count(); + + if (methId > -1) + { + bool hasParamsError = false; + var procInfo = GetMethodInfo(methId); + + int procParamsCount = procInfo.Params.Count(); + + if (procParamsCount < constructorParamsCount) + { + hasParamsError = true; + } + + int reqParams = 0; + foreach(var itm in procInfo.Params) + { + if (!itm.HasDefaultValue) reqParams++; + } + if (reqParams > constructorParamsCount) + { + hasParamsError = true; + } + if (hasParamsError) + { + throw new RuntimeException("Параметры конструктора: " + + "необходимых параметров: " + Math.Min(procParamsCount, reqParams).ToString() + + ", передано параметров " + constructorParamsCount.ToString() + ); + } + + CallAsProcedure(methId, ConstructorParams); + } + else + { + if (constructorParamsCount > 0) + { + throw new RuntimeException("Конструктор не определен, но переданы параметры конструктора."); + } + } } protected int GetScriptMethod(string methodName, string alias = null) diff --git a/src/ScriptEngine/Machine/Contexts/UserScriptContextInstance.cs b/src/ScriptEngine/Machine/Contexts/UserScriptContextInstance.cs index 36fe63a6e..064b6db8a 100644 --- a/src/ScriptEngine/Machine/Contexts/UserScriptContextInstance.cs +++ b/src/ScriptEngine/Machine/Contexts/UserScriptContextInstance.cs @@ -18,16 +18,24 @@ public class UserScriptContextInstance : ScriptDrivenObject Dictionary _ownPropertyIndexes; List _ownProperties; + internal UserScriptContextInstance(LoadedModule module) : base(module) { _module = module; } - internal UserScriptContextInstance(LoadedModule module, string asObjectOfType) + internal UserScriptContextInstance(LoadedModule module, string asObjectOfType, IValue[] args = null) : base(module, true) { DefineType(TypeManager.GetTypeByName(asObjectOfType)); _module = module; + + ConstructorParams = args; + if (args == null) + { + ConstructorParams = new IValue[0]; + } + } public void AddProperty(string name, IValue value) diff --git a/tests/constructor.os b/tests/constructor.os new file mode 100644 index 000000000..0c174c6f3 --- /dev/null +++ b/tests/constructor.os @@ -0,0 +1,72 @@ +#Использовать asserts +#Использовать logos + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + ВсеТесты = Новый Массив; + + ВсеТесты.Добавить("ТестДолжен_СообщитьОбОшибкеНетКонструктора"); + ВсеТесты.Добавить("ТестДолжен_СообщитьОбОшибкеСлишкомМногоПараметров"); + ВсеТесты.Добавить("ТестДолжен_СообщитьОбОшибкеСлишкомМалоПараметров"); + ВсеТесты.Добавить("ТестДолжен_СоздатьОбъект"); + ВсеТесты.Добавить("ТестДолжен_СоздатьОбъектЛог"); + + Возврат ВсеТесты; + +КонецФункции + +Процедура ТестДолжен_СообщитьОбОшибкеНетКонструктора() Экспорт + + Попытка + ТекПуть = Новый Файл(ТекущийСценарий().Источник).Путь; + ПодключитьСценарий(ОбъединитьПути(ТекПуть,"testdata", "no-magic-object.os") , "ПроверкаБезКонструктора"); + + НовыйОбъект = Новый ПроверкаБезКонструктора(1); + Исключение + Ожидаем.Что(ОписаниеОшибки()).Содержит("Конструктор не определен"); + КонецПопытки; + +КонецПроцедуры + +Процедура ТестДолжен_СообщитьОбОшибкеСлишкомМногоПараметров() Экспорт + + Попытка + ТекПуть = Новый Файл(ТекущийСценарий().Источник).Путь; + ПодключитьСценарий(ОбъединитьПути(ТекПуть,"testdata", "magic-object.os") , "Проверка"); + + НовыйОбъект = Новый Проверка(1, 2, 3, 4, 5); + + Исключение + Ожидаем.Что(ОписаниеОшибки()).Содержит("необходимых параметров: 3, передано параметров 5"); + КонецПопытки; + +КонецПроцедуры + +Процедура ТестДолжен_СообщитьОбОшибкеСлишкомМалоПараметров() Экспорт + + Попытка + ТекПуть = Новый Файл(ТекущийСценарий().Источник).Путь; + ПодключитьСценарий(ОбъединитьПути(ТекПуть,"testdata", "magic-object.os") , "Проверка"); + + НовыйОбъект = Новый Проверка(1, 2); + + Исключение + Ожидаем.Что(ОписаниеОшибки()).Содержит("необходимых параметров: 3, передано параметров 2"); + КонецПопытки; + +КонецПроцедуры + +Процедура ТестДолжен_СоздатьОбъект() Экспорт + + ТекПуть = Новый Файл(ТекущийСценарий().Источник).Путь; + ПодключитьСценарий(ОбъединитьПути(ТекПуть,"testdata", "magic-object.os") , "Проверка"); + + НовыйОбъект = Новый Проверка(1, 2, 3); + +КонецПроцедуры + +Процедура ТестДолжен_СоздатьОбъектЛог() Экспорт + + НовыйОбъект = Новый Лог(); + +КонецПроцедуры diff --git a/tests/destructor.os b/tests/destructor.os deleted file mode 100644 index e3906f017..000000000 --- a/tests/destructor.os +++ /dev/null @@ -1,19 +0,0 @@ -Перем юТест; - -Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт - - юТест = ЮнитТестирование; - - ВсеТесты = Новый Массив; - - ВсеТесты.Добавить("ТестДолжен_ОтработатьДеструктор"); - -КонецФункции - -Процедура ТестДолжен_ОтработатьДеструктор() Экспорт - -КонецПроцедуры - -Процедура Деструктор() - Сообщить("~ from u.class"); -КонецПроцедуры \ No newline at end of file diff --git a/tests/testdata/magic-object.os b/tests/testdata/magic-object.os new file mode 100644 index 000000000..8695e4756 --- /dev/null +++ b/tests/testdata/magic-object.os @@ -0,0 +1,2 @@ +Процедура Конструктор(Прм1, Прм2, Прм3, Прм4 = 4) +КонецПроцедуры \ No newline at end of file diff --git a/tests/testdata/no-magic-object.os b/tests/testdata/no-magic-object.os new file mode 100644 index 000000000..be223d287 --- /dev/null +++ b/tests/testdata/no-magic-object.os @@ -0,0 +1,2 @@ +Процедура КакаяТоПроцедура(Прм1, Прм2, Прм3, Прм4 = 4) +КонецПроцедуры \ No newline at end of file From c87c6e6e90d3bb14ccae6eea0537a0edceddb9ac Mon Sep 17 00:00:00 2001 From: ret-Phoenix Date: Tue, 23 May 2017 23:58:27 +0300 Subject: [PATCH 042/168] =?UTF-8?q?=D0=9D=D0=B0=D1=87=D0=B0=D0=BB=20=D0=BF?= =?UTF-8?q?=D0=B5=D1=80=D0=B5=D0=B2=D0=BE=D0=B4=20=D0=BA=D0=BB=D0=B0=D1=81?= =?UTF-8?q?=D1=81=D0=BE=D0=B2=20=D0=B8=D0=B7=20=D1=80=D0=B0=D1=81=D1=88?= =?UTF-8?q?=D0=B8=D1=80=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Library/SystemEnvironmentContext.cs | 128 ++++++++++++++++++ 1 file changed, 128 insertions(+) diff --git a/src/ScriptEngine.HostedScript/Library/SystemEnvironmentContext.cs b/src/ScriptEngine.HostedScript/Library/SystemEnvironmentContext.cs index 80a631ac9..0559f58fb 100644 --- a/src/ScriptEngine.HostedScript/Library/SystemEnvironmentContext.cs +++ b/src/ScriptEngine.HostedScript/Library/SystemEnvironmentContext.cs @@ -72,6 +72,83 @@ public string OSUser } } + /// + /// Определяет, является ли текущая операционная система 64-разрядной. + /// + [ContextProperty("Это64БитнаяОперационнаяСистема")] + public bool Is64BitOperatingSystem + { + get { return System.Environment.Is64BitOperatingSystem; } + } + + /// + /// Возвращает число процессоров. + /// 32-битовое целое число со знаком, которое возвращает количество процессоров на текущем компьютере. + /// Значение по умолчанию отсутствует. Если текущий компьютер содержит несколько групп процессоров, + /// данное свойство возвращает число логических процессоров, доступных для использования средой CLR + /// + [ContextProperty("КоличествоПроцессоров")] + public int ProcessorCount + { + get { return System.Environment.ProcessorCount; } + } + + /// + /// Возвращает количество байтов на странице памяти операционной системы + /// + [ContextProperty("РазмерСистемнойСтраницы")] + public int SystemPageSize + { + get { return System.Environment.SystemPageSize; } + } + + /// + /// Возвращает время, истекшее с момента загрузки системы (в миллисекундах). + /// + [ContextProperty("ВремяРаботыСМоментаЗагрузки")] + public int TickCount + { + get { return System.Environment.TickCount; } + } + + + ///// + ///// Список специальных папок + ///// + //[ContextProperty("СпециальнаяПапка")] + //public IValue SpecialFolder + //{ + // get + // { + // return new SpecialFolder(); + // } + //} + + [ContextMethod("ПолучитьПутьПапки")] + public string GetFolderPath(IValue folder) + { + return System.Environment.GetFolderPath((System.Environment.SpecialFolder)folder.AsNumber()); + } + + /// + /// Возвращает массив строк, содержащий имена логических дисков текущего компьютера. + /// + [ContextProperty("ИменаЛогическихДисков")] + public ArrayImpl GetLogicalDrives + { + get + { + ArrayImpl arr = new ArrayImpl(); + var data = System.Environment.GetLogicalDrives(); + foreach (var itm in data) + { + arr.Add(ValueFactory.Create(itm)); + } + return arr; + } + } + + /// /// Возвращает соответствие переменных среды. Ключом является имя переменной, а значением - значение переменной /// @@ -134,4 +211,55 @@ public static IRuntimeContextInstance Create() return new SystemEnvironmentContext(); } } + + [SystemEnum("СпециальнаяПапка", "SpecialFolder")] + class ServiceStartModeEnum : EnumerationContext + { + private ServiceStartModeEnum(TypeDescriptor typeRepresentation, TypeDescriptor valuesType) + : base(typeRepresentation, valuesType) + { + + } + + public static ServiceStartModeEnum CreateInstance() + { + ServiceStartModeEnum instance; + var type = TypeManager.RegisterType("ПеречислениеРежимЗапуска", typeof(ServiceStartModeEnum)); + var enumValueType = TypeManager.RegisterType("РежимЗапуска", typeof(CLREnumValueWrapper)); + + instance = new ServiceStartModeEnum(type, enumValueType); + + instance.AddValue("РепозиторийДокументов", "Personal", new CLREnumValueWrapper(instance, SpecialFolder.Personal)); + instance.AddValue("ДанныеПриложений", "ApplicationData", new CLREnumValueWrapper(instance, SpecialFolder.ApplicationData)); + instance.AddValue("ЛокальныйКаталогДанныхПриложений", "LocalApplicationData", new CLREnumValueWrapper(instance, SpecialFolder.LocalApplicationData)); + instance.AddValue("КаталогРабочийСтол", "Desktop", new CLREnumValueWrapper(instance, SpecialFolder.Desktop)); + instance.AddValue("Вручную", "DesktopDirectory", new CLREnumValueWrapper(instance, SpecialFolder.DesktopDirectory)); + instance.AddValue("System", "MyMusic", new CLREnumValueWrapper(instance, SpecialFolder.MyMusic)); + instance.AddValue("System", "MyPictures", new CLREnumValueWrapper(instance, SpecialFolder.MyPictures)); + instance.AddValue("System", "Templates", new CLREnumValueWrapper(instance, SpecialFolder.Templates)); + instance.AddValue("System", "MyVideos", new CLREnumValueWrapper(instance, SpecialFolder.MyVideos)); + instance.AddValue("System", "CommonTemplates", new CLREnumValueWrapper(instance, SpecialFolder.CommonTemplates)); + instance.AddValue("System", "UserProfile", new CLREnumValueWrapper(instance, SpecialFolder.UserProfile)); + instance.AddValue("System", "CommonApplicationData", new CLREnumValueWrapper(instance, SpecialFolder.CommonApplicationData)); + + return instance; + } + } + + public enum SpecialFolder + { + Personal = 0x05, + ApplicationData = 0x1a, + LocalApplicationData = 0x1c, + Desktop = 0x00, + DesktopDirectory = 0x10, + MyMusic = 0x0d, + MyPictures = 0x27, + Templates = 0x15, + MyVideos = 0x0e, + CommonTemplates = 0x2d, + Fonts = 0x14, + UserProfile = 0x28, + CommonApplicationData = 0x23 + } } From bff9380a9c878cad870e97789385b059381504e6 Mon Sep 17 00:00:00 2001 From: ret-Phoenix Date: Sat, 27 May 2017 00:03:16 +0300 Subject: [PATCH 043/168] =?UTF-8?q?#441=20=D0=A0=D0=B0=D1=81=D1=88=D0=B8?= =?UTF-8?q?=D1=80=D0=B8=D1=82=D1=8C=20=D0=B8=D0=BD=D1=84=D0=BE=D1=80=D0=BC?= =?UTF-8?q?=D0=B0=D1=86=D0=B8=D1=8E=20=D0=BE=D0=B1=20"=D0=9E=D0=BA=D1=80?= =?UTF-8?q?=D1=83=D0=B6=D0=B5=D0=BD=D0=B8=D0=B8"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Library/ServiceStartModeEnum.cs | 60 ++++++++++ .../Library/SystemEnvironmentContext.cs | 76 ++++-------- .../ScriptEngine.HostedScript.csproj | 1 + tests/sysinfo.os | 111 ++++++++++++++++++ 4 files changed, 195 insertions(+), 53 deletions(-) create mode 100644 src/ScriptEngine.HostedScript/Library/ServiceStartModeEnum.cs diff --git a/src/ScriptEngine.HostedScript/Library/ServiceStartModeEnum.cs b/src/ScriptEngine.HostedScript/Library/ServiceStartModeEnum.cs new file mode 100644 index 000000000..f8a76e547 --- /dev/null +++ b/src/ScriptEngine.HostedScript/Library/ServiceStartModeEnum.cs @@ -0,0 +1,60 @@ +using ScriptEngine.Machine; +using ScriptEngine.Machine.Contexts; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace ScriptEngine.HostedScript.Library +{ + [SystemEnum("СпециальнаяПапка", "SpecialFolder")] + class ServiceStartModeEnum : EnumerationContext + { + private ServiceStartModeEnum(TypeDescriptor typeRepresentation, TypeDescriptor valuesType) + : base(typeRepresentation, valuesType) + { + + } + + public static ServiceStartModeEnum CreateInstance() + { + ServiceStartModeEnum instance; + var type = TypeManager.RegisterType("ПеречислениеСпециальнаяПапка", typeof(ServiceStartModeEnum)); + var enumValueType = TypeManager.RegisterType("СпециальнаяПапка", typeof(CLREnumValueWrapper)); + + instance = new ServiceStartModeEnum(type, enumValueType); + + instance.AddValue("РепозиторийДокументов", "Personal", new CLREnumValueWrapper(instance, SpecialFolder.Personal)); + instance.AddValue("ДанныеПриложений", "ApplicationData", new CLREnumValueWrapper(instance, SpecialFolder.ApplicationData)); + instance.AddValue("ЛокальныйКаталогДанныхПриложений", "LocalApplicationData", new CLREnumValueWrapper(instance, SpecialFolder.LocalApplicationData)); + instance.AddValue("РабочийСтол", "Desktop", new CLREnumValueWrapper(instance, SpecialFolder.Desktop)); + instance.AddValue("КаталогРабочийСтол", "DesktopDirectory", new CLREnumValueWrapper(instance, SpecialFolder.DesktopDirectory)); + instance.AddValue("МояМузыка", "MyMusic", new CLREnumValueWrapper(instance, SpecialFolder.MyMusic)); + instance.AddValue("МоиРисунки", "MyPictures", new CLREnumValueWrapper(instance, SpecialFolder.MyPictures)); + instance.AddValue("Шаблоны", "Templates", new CLREnumValueWrapper(instance, SpecialFolder.Templates)); + instance.AddValue("МоиВидеозаписи", "MyVideos", new CLREnumValueWrapper(instance, SpecialFolder.MyVideos)); + instance.AddValue("ОбщиеШаблоны", "CommonTemplates", new CLREnumValueWrapper(instance, SpecialFolder.CommonTemplates)); + instance.AddValue("ПрофильПользователя", "UserProfile", new CLREnumValueWrapper(instance, SpecialFolder.UserProfile)); + instance.AddValue("ОбщийКаталогДанныхПриложения", "CommonApplicationData", new CLREnumValueWrapper(instance, SpecialFolder.CommonApplicationData)); + + return instance; + } + } + + public enum SpecialFolder + { + Personal = 0x05, + ApplicationData = 0x1a, + LocalApplicationData = 0x1c, + Desktop = 0x00, + DesktopDirectory = 0x10, + MyMusic = 0x0d, + MyPictures = 0x27, + Templates = 0x15, + MyVideos = 0x0e, + CommonTemplates = 0x2d, + Fonts = 0x14, + UserProfile = 0x28, + CommonApplicationData = 0x23 + } +} diff --git a/src/ScriptEngine.HostedScript/Library/SystemEnvironmentContext.cs b/src/ScriptEngine.HostedScript/Library/SystemEnvironmentContext.cs index 0559f58fb..80ab43729 100644 --- a/src/ScriptEngine.HostedScript/Library/SystemEnvironmentContext.cs +++ b/src/ScriptEngine.HostedScript/Library/SystemEnvironmentContext.cs @@ -120,14 +120,35 @@ public int TickCount //{ // get // { - // return new SpecialFolder(); + // return new ServiceStartModeEnum(); // } //} [ContextMethod("ПолучитьПутьПапки")] public string GetFolderPath(IValue folder) { - return System.Environment.GetFolderPath((System.Environment.SpecialFolder)folder.AsNumber()); + var val = ""; + System.Console.WriteLine(folder.SystemType.Name); + + switch (((CLREnumValueWrapper)folder).UnderlyingValue) + { + case SpecialFolder.ApplicationData: val = System.Environment.GetFolderPath((System.Environment.SpecialFolder.ApplicationData)); break; + case SpecialFolder.CommonApplicationData: val = System.Environment.GetFolderPath((System.Environment.SpecialFolder.CommonApplicationData)); break; + case SpecialFolder.CommonTemplates: val = System.Environment.GetFolderPath((System.Environment.SpecialFolder.CommonTemplates)); break; + case SpecialFolder.Desktop: val = System.Environment.GetFolderPath((System.Environment.SpecialFolder.Desktop)); break; + case SpecialFolder.DesktopDirectory: val = System.Environment.GetFolderPath((System.Environment.SpecialFolder.DesktopDirectory)); break; + case SpecialFolder.Fonts: val = System.Environment.GetFolderPath((System.Environment.SpecialFolder.Fonts)); break; + case SpecialFolder.LocalApplicationData: val = System.Environment.GetFolderPath((System.Environment.SpecialFolder.LocalApplicationData)); break; + case SpecialFolder.MyMusic: val = System.Environment.GetFolderPath((System.Environment.SpecialFolder.MyMusic)); break; + case SpecialFolder.MyPictures: val = System.Environment.GetFolderPath((System.Environment.SpecialFolder.MyPictures)); break; + case SpecialFolder.MyVideos: val = System.Environment.GetFolderPath((System.Environment.SpecialFolder.MyVideos)); break; + case SpecialFolder.Personal: val = System.Environment.GetFolderPath((System.Environment.SpecialFolder.Personal)); break; + case SpecialFolder.Templates: val = System.Environment.GetFolderPath((System.Environment.SpecialFolder.Templates)); break; + case SpecialFolder.UserProfile: val = System.Environment.GetFolderPath((System.Environment.SpecialFolder.UserProfile)); break; + } + return val; + + //return System.Environment.GetFolderPath((System.Environment.SpecialFolder)folder.AsNumber()); } /// @@ -211,55 +232,4 @@ public static IRuntimeContextInstance Create() return new SystemEnvironmentContext(); } } - - [SystemEnum("СпециальнаяПапка", "SpecialFolder")] - class ServiceStartModeEnum : EnumerationContext - { - private ServiceStartModeEnum(TypeDescriptor typeRepresentation, TypeDescriptor valuesType) - : base(typeRepresentation, valuesType) - { - - } - - public static ServiceStartModeEnum CreateInstance() - { - ServiceStartModeEnum instance; - var type = TypeManager.RegisterType("ПеречислениеРежимЗапуска", typeof(ServiceStartModeEnum)); - var enumValueType = TypeManager.RegisterType("РежимЗапуска", typeof(CLREnumValueWrapper)); - - instance = new ServiceStartModeEnum(type, enumValueType); - - instance.AddValue("РепозиторийДокументов", "Personal", new CLREnumValueWrapper(instance, SpecialFolder.Personal)); - instance.AddValue("ДанныеПриложений", "ApplicationData", new CLREnumValueWrapper(instance, SpecialFolder.ApplicationData)); - instance.AddValue("ЛокальныйКаталогДанныхПриложений", "LocalApplicationData", new CLREnumValueWrapper(instance, SpecialFolder.LocalApplicationData)); - instance.AddValue("КаталогРабочийСтол", "Desktop", new CLREnumValueWrapper(instance, SpecialFolder.Desktop)); - instance.AddValue("Вручную", "DesktopDirectory", new CLREnumValueWrapper(instance, SpecialFolder.DesktopDirectory)); - instance.AddValue("System", "MyMusic", new CLREnumValueWrapper(instance, SpecialFolder.MyMusic)); - instance.AddValue("System", "MyPictures", new CLREnumValueWrapper(instance, SpecialFolder.MyPictures)); - instance.AddValue("System", "Templates", new CLREnumValueWrapper(instance, SpecialFolder.Templates)); - instance.AddValue("System", "MyVideos", new CLREnumValueWrapper(instance, SpecialFolder.MyVideos)); - instance.AddValue("System", "CommonTemplates", new CLREnumValueWrapper(instance, SpecialFolder.CommonTemplates)); - instance.AddValue("System", "UserProfile", new CLREnumValueWrapper(instance, SpecialFolder.UserProfile)); - instance.AddValue("System", "CommonApplicationData", new CLREnumValueWrapper(instance, SpecialFolder.CommonApplicationData)); - - return instance; - } - } - - public enum SpecialFolder - { - Personal = 0x05, - ApplicationData = 0x1a, - LocalApplicationData = 0x1c, - Desktop = 0x00, - DesktopDirectory = 0x10, - MyMusic = 0x0d, - MyPictures = 0x27, - Templates = 0x15, - MyVideos = 0x0e, - CommonTemplates = 0x2d, - Fonts = 0x14, - UserProfile = 0x28, - CommonApplicationData = 0x23 - } } diff --git a/src/ScriptEngine.HostedScript/ScriptEngine.HostedScript.csproj b/src/ScriptEngine.HostedScript/ScriptEngine.HostedScript.csproj index 17664714e..81e2680e9 100644 --- a/src/ScriptEngine.HostedScript/ScriptEngine.HostedScript.csproj +++ b/src/ScriptEngine.HostedScript/ScriptEngine.HostedScript.csproj @@ -151,6 +151,7 @@ + diff --git a/tests/sysinfo.os b/tests/sysinfo.os index c14964936..450e07b05 100644 --- a/tests/sysinfo.os +++ b/tests/sysinfo.os @@ -22,6 +22,26 @@ ВсеТесты.Добавить("ТестДолжен_ПолучитьВерсиюOneScript"); ВсеТесты.Добавить("ТестДолжен_ПолучитьПользователяОС"); + // Значения зависят от машины запуска + ВсеТесты.Добавить("ТестДолжен_ПолучитьЭто64БитнаяОперационнаяСистема"); + ВсеТесты.Добавить("ТестДолжен_ПолучитьКоличествоПроцессоров"); + ВсеТесты.Добавить("ТестДолжен_ПолучитьРазмерСистемнойСтраницы"); + ВсеТесты.Добавить("ТестДолжен_ПолучитьВремяРаботыСМоментаЗагрузки"); + ВсеТесты.Добавить("ТестДолжен_ПолучитьИменаЛогическихДисков"); + // Пути к папкам + ВсеТесты.Добавить("ТестДолжен_ПолучитьПолучитьПутьПапки_РепозиторийДокументов"); + ВсеТесты.Добавить("ТестДолжен_ПолучитьПолучитьПутьПапки_ДанныеПриложений"); + ВсеТесты.Добавить("ТестДолжен_ПолучитьПолучитьПутьПапки_ЛокальныйКаталогДанныхПриложений"); + ВсеТесты.Добавить("ТестДолжен_ПолучитьПолучитьПутьПапки_РабочийСтол"); + ВсеТесты.Добавить("ТестДолжен_ПолучитьПолучитьПутьПапки_КаталогРабочийСтол"); + ВсеТесты.Добавить("ТестДолжен_ПолучитьПолучитьПутьПапки_МояМузыка"); + ВсеТесты.Добавить("ТестДолжен_ПолучитьПолучитьПутьПапки_МоиРисунки"); + ВсеТесты.Добавить("ТестДолжен_ПолучитьПолучитьПутьПапки_Шаблоны"); + ВсеТесты.Добавить("ТестДолжен_ПолучитьПолучитьПутьПапки_МоиВидеозаписи"); + ВсеТесты.Добавить("ТестДолжен_ПолучитьПолучитьПутьПапки_ОбщиеШаблоны"); + ВсеТесты.Добавить("ТестДолжен_ПолучитьПолучитьПутьПапки_ПрофильПользователя"); + ВсеТесты.Добавить("ТестДолжен_ПолучитьПолучитьПутьПапки_ОбщийКаталогДанныхПриложения"); + Возврат ВсеТесты; КонецФункции @@ -65,3 +85,94 @@ Си = Новый СистемнаяИнформация(); юТест.ПроверитьЛожь(ПустаяСтрока(Си.ПользовательОС)); КонецПроцедуры + +Процедура ТестДолжен_ПолучитьЭто64БитнаяОперационнаяСистема() Экспорт + Си = Новый СистемнаяИнформация(); + юТест.ПроверитьИстину(Си.Это64БитнаяОперационнаяСистема); +КонецПроцедуры + +Процедура ТестДолжен_ПолучитьКоличествоПроцессоров() Экспорт + Си = Новый СистемнаяИнформация(); + юТест.ПроверитьБольше(Си.КоличествоПроцессоров,0); +КонецПроцедуры + +Процедура ТестДолжен_ПолучитьРазмерСистемнойСтраницы() Экспорт + Си = Новый СистемнаяИнформация(); + юТест.ПроверитьБольше(Си.РазмерСистемнойСтраницы,0); +КонецПроцедуры + +Процедура ТестДолжен_ПолучитьВремяРаботыСМоментаЗагрузки() Экспорт + Си = Новый СистемнаяИнформация(); + юТест.ПроверитьБольше(Си.ВремяРаботыСМоментаЗагрузки,0); +КонецПроцедуры + +Процедура ТестДолжен_ПолучитьИменаЛогическихДисков() Экспорт + Си = Новый СистемнаяИнформация(); + юТест.ПроверитьБольше(Си.ИменаЛогическихДисков.Количество(),0); +КонецПроцедуры + +/////////////////////////////////////////////////////////////////////// +// +// Проверка спец.папок +// +/////////////////////////////////////////////////////////////////////// + +Процедура ТестДолжен_ПолучитьПолучитьПутьПапки_РепозиторийДокументов() Экспорт + Си = Новый СистемнаяИнформация(); + юТест.ПроверитьНеРавенство(СИ.ПолучитьПутьПапки(СпециальнаяПапка.РепозиторийДокументов),""); +КонецПроцедуры + +Процедура ТестДолжен_ПолучитьПолучитьПутьПапки_ДанныеПриложений() Экспорт + Си = Новый СистемнаяИнформация(); + юТест.ПроверитьНеРавенство(СИ.ПолучитьПутьПапки(СпециальнаяПапка.ДанныеПриложений),""); +КонецПроцедуры + +Процедура ТестДолжен_ПолучитьПолучитьПутьПапки_ЛокальныйКаталогДанныхПриложений() Экспорт + Си = Новый СистемнаяИнформация(); + юТест.ПроверитьНеРавенство(СИ.ПолучитьПутьПапки(СпециальнаяПапка.ЛокальныйКаталогДанныхПриложений),""); +КонецПроцедуры + +Процедура ТестДолжен_ПолучитьПолучитьПутьПапки_РабочийСтол() Экспорт + Си = Новый СистемнаяИнформация(); + юТест.ПроверитьНеРавенство(СИ.ПолучитьПутьПапки(СпециальнаяПапка.РабочийСтол),""); +КонецПроцедуры + +Процедура ТестДолжен_ПолучитьПолучитьПутьПапки_КаталогРабочийСтол() Экспорт + Си = Новый СистемнаяИнформация(); + юТест.ПроверитьНеРавенство(СИ.ПолучитьПутьПапки(СпециальнаяПапка.КаталогРабочийСтол),""); +КонецПроцедуры + +Процедура ТестДолжен_ПолучитьПолучитьПутьПапки_МояМузыка() Экспорт + Си = Новый СистемнаяИнформация(); + юТест.ПроверитьНеРавенство(СИ.ПолучитьПутьПапки(СпециальнаяПапка.МояМузыка),""); +КонецПроцедуры + +Процедура ТестДолжен_ПолучитьПолучитьПутьПапки_МоиРисунки() Экспорт + Си = Новый СистемнаяИнформация(); + юТест.ПроверитьНеРавенство(СИ.ПолучитьПутьПапки(СпециальнаяПапка.МоиРисунки),""); +КонецПроцедуры + +Процедура ТестДолжен_ПолучитьПолучитьПутьПапки_Шаблоны() Экспорт + Си = Новый СистемнаяИнформация(); + юТест.ПроверитьНеРавенство(СИ.ПолучитьПутьПапки(СпециальнаяПапка.Шаблоны),""); +КонецПроцедуры + +Процедура ТестДолжен_ПолучитьПолучитьПутьПапки_МоиВидеозаписи() Экспорт + Си = Новый СистемнаяИнформация(); + юТест.ПроверитьНеРавенство(СИ.ПолучитьПутьПапки(СпециальнаяПапка.МоиВидеозаписи),""); +КонецПроцедуры + +Процедура ТестДолжен_ПолучитьПолучитьПутьПапки_ОбщиеШаблоны() Экспорт + Си = Новый СистемнаяИнформация(); + юТест.ПроверитьНеРавенство(СИ.ПолучитьПутьПапки(СпециальнаяПапка.ОбщиеШаблоны),""); +КонецПроцедуры + +Процедура ТестДолжен_ПолучитьПолучитьПутьПапки_ПрофильПользователя() Экспорт + Си = Новый СистемнаяИнформация(); + юТест.ПроверитьНеРавенство(СИ.ПолучитьПутьПапки(СпециальнаяПапка.ПрофильПользователя),""); +КонецПроцедуры + +Процедура ТестДолжен_ПолучитьПолучитьПутьПапки_ОбщийКаталогДанныхПриложения() Экспорт + Си = Новый СистемнаяИнформация(); + юТест.ПроверитьНеРавенство(СИ.ПолучитьПутьПапки(СпециальнаяПапка.ОбщийКаталогДанныхПриложения),""); +КонецПроцедуры \ No newline at end of file From 1cfa093f67378f7d958cfe5824df753de4383263 Mon Sep 17 00:00:00 2001 From: ret-Phoenix Date: Sat, 27 May 2017 00:08:27 +0300 Subject: [PATCH 044/168] =?UTF-8?q?#440=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=20=D0=A1?= =?UTF-8?q?=D0=B8=D0=B3=D0=BD=D0=B0=D0=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ScriptEngine.HostedScript/Library/ConsoleContext.cs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/ScriptEngine.HostedScript/Library/ConsoleContext.cs b/src/ScriptEngine.HostedScript/Library/ConsoleContext.cs index 2565c150a..d14d689ce 100644 --- a/src/ScriptEngine.HostedScript/Library/ConsoleContext.cs +++ b/src/ScriptEngine.HostedScript/Library/ConsoleContext.cs @@ -159,6 +159,15 @@ public IValue InputEncoding } } + /// + /// Воспроизводит звуковой сигнал. + /// + [ContextMethod("Сигнал")] + public void Beep() + { + System.Media.SystemSounds.Beep.Play(); + } + [ScriptConstructor] public static IRuntimeContextInstance Constructor() { From 9192f067760e2f89a5d6a992fb0cc6190f181b24 Mon Sep 17 00:00:00 2001 From: ret-Phoenix Date: Mon, 29 May 2017 00:55:13 +0300 Subject: [PATCH 045/168] =?UTF-8?q?=D0=9D=D0=B0=D0=B1=D1=80=D0=BE=D1=81?= =?UTF-8?q?=D0=BA=D0=B8=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D1=8B=20=D1=81=20?= =?UTF-8?q?=D0=B4=D0=B8=D1=81=D0=BA=D0=B0=D0=BC=D0=B8=20(=D0=BF=D1=80?= =?UTF-8?q?=D0=BE=D0=B5=D0=BA=D1=82=20=D0=BD=D0=B5=20=D1=81=D0=BE=D0=B1?= =?UTF-8?q?=D0=B8=D1=80=D0=B0=D0=B5=D1=82=D1=81=D1=8F,=20=D0=BA=D0=BE?= =?UTF-8?q?=D0=BC=D0=BC=D0=B8=D1=82=20=D0=B4=D0=BB=D1=8F=20=D0=BF=D0=B5?= =?UTF-8?q?=D1=80=D0=B5=D0=BD=D0=BE=D1=81=D0=B0=20=D0=BD=D0=B0=20=D0=B4?= =?UTF-8?q?=D1=80=D1=83=D0=B3=D1=83=D1=8E=20=D0=BC=D0=B0=D1=88=D0=B8=D0=BD?= =?UTF-8?q?=D1=83)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Library/DriveInfo/DriveInfo.cs | 137 ++++++++++++++++++ .../Library/DriveInfo/DriveTypeEnum.cs | 90 ++++++++++++ .../ScriptEngine.HostedScript.csproj | 2 + 3 files changed, 229 insertions(+) create mode 100644 src/ScriptEngine.HostedScript/Library/DriveInfo/DriveInfo.cs create mode 100644 src/ScriptEngine.HostedScript/Library/DriveInfo/DriveTypeEnum.cs diff --git a/src/ScriptEngine.HostedScript/Library/DriveInfo/DriveInfo.cs b/src/ScriptEngine.HostedScript/Library/DriveInfo/DriveInfo.cs new file mode 100644 index 000000000..1ce1e9c7c --- /dev/null +++ b/src/ScriptEngine.HostedScript/Library/DriveInfo/DriveInfo.cs @@ -0,0 +1,137 @@ +using ScriptEngine.HostedScript.Library; +using ScriptEngine.Machine; +using ScriptEngine.Machine.Contexts; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.IO; + +namespace onescript_extensions.DriveInfo +{ + [ContextClass("ИнформацияОДиске", "DriveInfo")] + public class DriveInfo : AutoContext + { + private System.IO.DriveInfo _driveInfo; + + public DriveInfo(string driveName) + { + DriveInfo = new System.IO.DriveInfo(driveName); + } + + [ScriptConstructor] + public static IRuntimeContextInstance Constructor(IValue driveName) + { + return new DriveInfo(driveName.AsString()); + } + + + /// + /// Указывает объем доступного свободного места на диске в байтах. + /// + [ContextProperty("Доступно")] + public Int64 AvailableFreeSpace + { + get { return DriveInfo.AvailableFreeSpace; } + } + + /// + /// Получает имя файловой системы + /// + [ContextProperty("ИмяФС")] + public string DriveFormat + { + get { return DriveInfo.DriveFormat; } + } + + [ContextProperty("ТипДиска", "DriveType")] + public DriveType DriveTypeProp + { + get { return ValueFactory.Create( DriveInfo.DriveType ); } + } + + /// + /// Получает значение, указывающее состояние готовности диска. + /// + [ContextProperty("Готов")] + public bool IsReady + { + get + { + return DriveInfo.IsReady; + } + } + + /// + /// Возвращает имя диска + /// + [ContextProperty("Имя")] + public string Name + { + get + { + return DriveInfo.Name; + } + } + + /// + /// Возвращает корневой каталог диска. + /// + [ContextProperty("КорневойКаталог")] + public IValue RootDirectory + { + get + { + return new FileContext(DriveInfo.RootDirectory.FullName); + } + } + + /// + /// Возвращает общий объем свободного места, доступного на диске, в байтах + /// + [ContextProperty("ОбщийОбъемСвободногоМеста")] + public Int64 TotalFreeSpace + { + get { return DriveInfo.TotalFreeSpace; } + } + + /// + /// Возвращает общий размер места для хранения на диске в байтах. + /// + [ContextProperty("РазмерДиска")] + public Int64 TotalSize + { + get { return DriveInfo.TotalSize; } + } + + /// + /// Возвращает или задает метку тома диска. + /// + [ContextProperty("МеткаТома")] + public string VolumeLabel + { + get + { + return DriveInfo.VolumeLabel; + } + set + { + DriveInfo.VolumeLabel = value; + } + } + + public System.IO.DriveInfo DriveInfo + { + get + { + return _driveInfo; + } + + set + { + _driveInfo = value; + } + } + } +} diff --git a/src/ScriptEngine.HostedScript/Library/DriveInfo/DriveTypeEnum.cs b/src/ScriptEngine.HostedScript/Library/DriveInfo/DriveTypeEnum.cs new file mode 100644 index 000000000..90e077085 --- /dev/null +++ b/src/ScriptEngine.HostedScript/Library/DriveInfo/DriveTypeEnum.cs @@ -0,0 +1,90 @@ +using ScriptEngine.Machine.Contexts; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using ScriptEngine.Machine; + +namespace onescript_extensions.DriveInfo +{ + [SystemEnum("ТипДиска", "DriveType")] + class DriveTypeEnum : EnumerationContext + { + + const System.IO.DriveType CDRom = System.IO.DriveType.CDRom; + //const int SHA1 = "SHA1"; + //const int SHA256 = "SHA256"; + //const int SHA384 = "SHA384"; + //const int SHA512 = "SHA512"; + //const int CRC32 = "CRC32"; + + //public DriveTypeEnum(TypeDescriptor typeRepresentation, TypeDescriptor valuesType) : base(typeRepresentation, valuesType) + //{ + //} + + /// + /// Диск является устройством оптических дисков, такие как компакт-ДИСК или DVD-диск. + /// + [ContextProperty("ОптическийДиск")] + public int CDRom + { + get { return (int)System.IO.DriveType.CDRom; } + } + + /// + /// Диск является жестким диском. + /// + [ContextProperty("ЖесткийДиск")] + public int Fixed + { + get { return (int)System.IO.DriveType.Fixed; } + } + + /// + /// Диск является сетевым диском. + /// + [ContextProperty("СетевойДиск")] + public int Network + { + get { return (int)System.IO.DriveType.Network; } + } + + /// + /// Диск не имеет корневой каталог. + /// + [ContextProperty("НеИмеетКорневойКаталог")] + public int NoRootDirectory + { + get { return (int)System.IO.DriveType.NoRootDirectory; } + } + + /// + /// Диск является диском ОЗУ. + /// + [ContextProperty("ДискОЗУ")] + public int Ram + { + get { return (int)System.IO.DriveType.Ram; } + } + + /// + /// Диск является съемное запоминающее устройство, например, дисковод гибких дисков или USB-устройство флэш-памяти. + /// + [ContextProperty("СъемноеЗапоминающееУстройство")] + public int Removable + { + get { return (int)System.IO.DriveType.Removable; } + } + + /// + /// Тип диска неизвестен. + /// + [ContextProperty("Неизвестный")] + public int Unknown + { + get { return (int)System.IO.DriveType.Unknown; } + } + + } +} diff --git a/src/ScriptEngine.HostedScript/ScriptEngine.HostedScript.csproj b/src/ScriptEngine.HostedScript/ScriptEngine.HostedScript.csproj index 81e2680e9..7bc173607 100644 --- a/src/ScriptEngine.HostedScript/ScriptEngine.HostedScript.csproj +++ b/src/ScriptEngine.HostedScript/ScriptEngine.HostedScript.csproj @@ -94,6 +94,8 @@ GlobalAssemblyInfo.cs + + From 08edd4593357a30a432ab9b1d4cbd4468670ae65 Mon Sep 17 00:00:00 2001 From: afanasko Date: Wed, 31 May 2017 23:53:20 +0300 Subject: [PATCH 046/168] =?UTF-8?q?=D0=A2=D0=B0=D0=B9=D0=BC=D0=B0=D1=83?= =?UTF-8?q?=D1=82=20=D1=82=D0=B5=D0=BF=D0=B5=D1=80=D1=8C=20=D0=B7=D0=B0?= =?UTF-8?q?=D0=B4=D0=B0=D0=B5=D1=82=D1=81=D1=8F=20=D0=B2=20=D1=81=D0=B5?= =?UTF-8?q?=D0=BA=D1=83=D0=BD=D0=B4=D0=B0=D1=85,=20=D0=BD=D1=83=D0=BB?= =?UTF-8?q?=D0=B5=D0=B2=D0=BE=D0=B5=20=D0=B7=D0=BD=D0=B0=D1=87=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=B7=D0=B0=D0=B4=D0=B0=D0=B5=D1=82=20=D0=B1?= =?UTF-8?q?=D0=B5=D1=81=D0=BA=D0=BE=D0=BD=D0=B5=D1=87=D0=BD=D0=BE=D0=B5=20?= =?UTF-8?q?=D0=BE=D0=B6=D0=B8=D0=B4=D0=B0=D0=BD=D0=B8=D0=B5.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Library/Http/HttpConnectionContext.cs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/ScriptEngine.HostedScript/Library/Http/HttpConnectionContext.cs b/src/ScriptEngine.HostedScript/Library/Http/HttpConnectionContext.cs index cbf4e17b6..cd17508c3 100644 --- a/src/ScriptEngine.HostedScript/Library/Http/HttpConnectionContext.cs +++ b/src/ScriptEngine.HostedScript/Library/Http/HttpConnectionContext.cs @@ -55,7 +55,8 @@ public HttpConnectionContext(string host, Port = _hostUri.Port; User = user == null ? String.Empty : user; - Password = password == null ? String.Empty : password; + Password = password == null ? String.Empty : password; + Timeout = timeout; _proxy = proxy; UseOSAuthentication = useOSAuth; @@ -222,8 +223,14 @@ private HttpWebRequest CreateRequest(string resource) if(_proxy != null) request.Proxy = _proxy.GetProxy(uriBuilder.Scheme); - if (Timeout > 0) - request.Timeout = Timeout; + if (Timeout == 0) + { + request.Timeout = System.Threading.Timeout.Infinite; + } + else + { + request.Timeout = Timeout * 1000; + } return request; From 01838002804c135c619fe29718a87b28424df2a4 Mon Sep 17 00:00:00 2001 From: bambr1975 Date: Wed, 7 Jun 2017 11:06:43 +0300 Subject: [PATCH 047/168] Update SystemGlobalContext.cs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Небольшие правки документации для более корректного вывода справки --- src/ScriptEngine.HostedScript/Library/SystemGlobalContext.cs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/ScriptEngine.HostedScript/Library/SystemGlobalContext.cs b/src/ScriptEngine.HostedScript/Library/SystemGlobalContext.cs index f86f8682e..da36f87a3 100644 --- a/src/ScriptEngine.HostedScript/Library/SystemGlobalContext.cs +++ b/src/ScriptEngine.HostedScript/Library/SystemGlobalContext.cs @@ -89,10 +89,9 @@ public void Echo(string message, MessageStatusEnum status = MessageStatusEnum.Or /// Подключенный сценарий выступает, как самостоятельный класс, создаваемый оператором Новый /// /// Путь к подключаемому сценарию - /// Имя типа, которое будет иметь новый класс. Экземпляры класса создаются оператором Новый. + /// Имя типа, которое будет иметь новый класс. Экземпляры класса создаются оператором Новый. /// ПодключитьСценарий("C:\file.os", "МойОбъект"); /// А = Новый МойОбъект(); - /// [ContextMethod("ПодключитьСценарий", "AttachScript")] public void AttachScript(string path, string typeName) { @@ -134,11 +133,11 @@ public IRuntimeContextInstance LoadScript(string path, StructureImpl externalCon /// Подключает внешнюю сборку среды .NET (*.dll) и регистрирует классы 1Script, объявленные в этой сборке. /// Публичные классы, отмеченные в dll атрибутом ContextClass, будут импортированы аналогично встроенным классам 1Script. /// Загружаемая сборка должна ссылаться на сборку ScriptEngine.dll + /// /// /// ПодключитьВнешнююКомпоненту("C:\MyAssembly.dll"); /// КлассИзКомпоненты = Новый КлассИзКомпоненты(); // тип объявлен внутри компоненты /// - /// /// Путь к внешней компоненте [ContextMethod("ПодключитьВнешнююКомпоненту", "AttachAddIn")] public void AttachAddIn(string dllPath) From 11b9b9fde7cc5823e4b3de3735dc25d8b409272d Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Thu, 8 Jun 2017 13:57:28 +0300 Subject: [PATCH 048/168] =?UTF-8?q?fixed=20#386=20=D0=9E=D1=82=D1=81=D1=83?= =?UTF-8?q?=D1=82=D1=81=D1=82=D0=B2=D1=83=D0=B5=D1=82=20=D0=9F=D0=BE=D0=BB?= =?UTF-8?q?=D1=83=D1=87=D0=B8=D1=82=D1=8CCOM=D0=9E=D0=B1=D1=8A=D0=B5=D0=BA?= =?UTF-8?q?=D1=82()=20=D0=B8=D0=B7=201=D0=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Library/SystemGlobalContext.cs | 49 ++++++++++++++++++- .../Machine/Contexts/SafeArrayWrapper.cs | 6 +++ 2 files changed, 53 insertions(+), 2 deletions(-) diff --git a/src/ScriptEngine.HostedScript/Library/SystemGlobalContext.cs b/src/ScriptEngine.HostedScript/Library/SystemGlobalContext.cs index da36f87a3..6d55e4a99 100644 --- a/src/ScriptEngine.HostedScript/Library/SystemGlobalContext.cs +++ b/src/ScriptEngine.HostedScript/Library/SystemGlobalContext.cs @@ -7,7 +7,11 @@ This Source Code Form is subject to the terms of the using System; using System.Collections.Generic; using System.Linq; +using System.Runtime.InteropServices; +using System.Runtime.InteropServices.ComTypes; using System.Text; +using System.Threading; + using ScriptEngine.Environment; using ScriptEngine.Machine; using ScriptEngine.Machine.Contexts; @@ -499,6 +503,48 @@ public void FillPropertyValues(IRuntimeContextInstance acceptor, IRuntimeContext } + + /// + /// Получает объект класса COM по его имени или пути. Подробнее см. синтакс-помощник от 1С. + /// + /// Путь к библиотеке + /// Имя класса + /// COMОбъект + [ContextMethod("ПолучитьCOMОбъект", "GetCOMObject")] + public IValue GetCOMObject(string pathName = null, string className = null) + { + var comObject = GetCOMObjectInternal(pathName, className); + + return COMWrapperContext.Create(comObject); + } + + /// + /// Ported from Microsoft.VisualBasic, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + /// By JetBrains dotPeek decompiler + /// + private object GetCOMObjectInternal(string pathName = null, string className = null) + { + if (String.IsNullOrEmpty(className)) + { + return Marshal.BindToMoniker(pathName); + } + else if (pathName == null) + { + return Marshal.GetActiveObject(className); + } + else if (pathName.Length == 0) + { + return Activator.CreateInstance(System.Type.GetTypeFromProgID(className)); + } + else + { + var persistFile = (IPersistFile)Marshal.GetActiveObject(className); + persistFile.Load(pathName, 0); + + return (object)persistFile; + } + } + #region IAttachableContext Members public void OnAttach(MachineInstance machine, @@ -619,7 +665,6 @@ static SystemGlobalContext() { _methods = new ContextMethodsMapper(); } - - + } } diff --git a/src/ScriptEngine/Machine/Contexts/SafeArrayWrapper.cs b/src/ScriptEngine/Machine/Contexts/SafeArrayWrapper.cs index 177033b05..e847e6940 100644 --- a/src/ScriptEngine/Machine/Contexts/SafeArrayWrapper.cs +++ b/src/ScriptEngine/Machine/Contexts/SafeArrayWrapper.cs @@ -58,6 +58,12 @@ public void SetValue(int index, IValue value) _array[index] = newValue; } + [ContextMethod("Выгрузить", "Unload")] + public object Unload() + { + throw new NotSupportedException("FIXME: Method 'Unload' is not supported. Consider use SafeArrayWrapper as V8.Array directly."); + } + public override IValue GetIndexedValue(IValue index) { var intIndex = (int)index.AsNumber(); From f6a6bac755a6584816fe4fdbbb29c91cbf08e698 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Thu, 8 Jun 2017 14:06:08 +0300 Subject: [PATCH 049/168] =?UTF-8?q?fixed=20#419=20-=20=D0=BD=D0=B5=D1=81?= =?UTF-8?q?=D0=BE=D0=B2=D0=BC=D0=B5=D1=81=D1=82=D0=B8=D0=BC=D0=BE=D0=B5=20?= =?UTF-8?q?=D1=81=201=D0=A1=20=D0=BF=D0=BE=D0=B2=D0=B5=D0=B4=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Library/FileOperations.cs | 4 ++++ tests/global-funcs.os | 20 +++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/src/ScriptEngine.HostedScript/Library/FileOperations.cs b/src/ScriptEngine.HostedScript/Library/FileOperations.cs index c65053100..ed265f54e 100644 --- a/src/ScriptEngine.HostedScript/Library/FileOperations.cs +++ b/src/ScriptEngine.HostedScript/Library/FileOperations.cs @@ -204,6 +204,10 @@ public void DeleteFiles(string path, string mask = "") } else { + // bugfix #419 + if (!Directory.Exists(path)) + return; + var entries = System.IO.Directory.EnumerateFileSystemEntries(path, mask) .AsParallel() .ToArray(); diff --git a/tests/global-funcs.os b/tests/global-funcs.os index 6b7c4a8d2..fff8be2e6 100644 --- a/tests/global-funcs.os +++ b/tests/global-funcs.os @@ -64,6 +64,7 @@ ВсеТесты.Добавить("Тест_ДолженПроверитьДекодированиеURLвКодировкеURL"); ВсеТесты.Добавить("Тест_ДолженПроверитьЧтоПоискФайловВНеизвестномКаталогеВозвращаетПустойМассив"); + ВсеТесты.Добавить("Тест_ДолженПроверитьЧтоУдалениеВНеизвестномКаталогеНеПадает"); ВсеТесты.Добавить("Тест_ДолженПроверитьЧтоПоискФайловПоИмениСуществующегоФайлаВозвращаетМассив"); ВсеТесты.Добавить("Тест_ДолженПроверитьЧтоПоискФайловРаботает"); //ВсеТесты.Добавить("Тест_ДолженПроверитьЧтоПоискФайловРазрешаетСсылкиВПутях"); @@ -579,6 +580,25 @@ КонецПроцедуры +Процедура Тест_ДолженПроверитьЧтоУдалениеВНеизвестномКаталогеНеПадает() Экспорт + + СИ = Новый СистемнаяИнформация(); + Если Найти(СИ.ВерсияОС,"Windows") > 0 Тогда + Каталог = "C:\нет такого пути"; + Иначе + Каталог = "/none/path"; + КонецЕсли; + + // На всякий случай, проверим, вдруг каталог есть + Файл = Новый Файл(Каталог); + Если Файл.Существует() Тогда + ВызватьИсключение "В текущем окружении каталог " + Каталог + " существует. Не выполняем тест"; + КонецЕсли; + + УдалитьФайлы(Каталог, "*.txt"); + +КонецПроцедуры + Процедура Тест_ДолженПроверитьЧтоПоискФайловПоИмениСуществующегоФайлаВозвращаетМассив() Экспорт ВФ = юТест.ИмяВременногоФайла(); From b921d538d63c498cfe0142b1ea573054bbb3e7ff Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Thu, 8 Jun 2017 14:30:42 +0300 Subject: [PATCH 050/168] =?UTF-8?q?fixed=20#445=20-=20=D0=B2=D0=BE=D0=B7?= =?UTF-8?q?=D0=B2=D1=80=D0=B0=D1=82=20=D0=9D=D0=B5=D0=BE=D0=BF=D1=80=D0=B5?= =?UTF-8?q?=D0=B4=D0=B5=D0=BB=D0=B5=D0=BD=D0=BE=20=D0=BD=D0=B0=20=D0=BF?= =?UTF-8?q?=D1=83=D1=81=D1=82=D0=BE=D0=BC=20=D0=BF=D0=BE=D1=82=D0=BE=D0=BA?= =?UTF-8?q?=D0=B5=20=D0=BF=D1=80=D0=BE=D1=86=D0=B5=D1=81=D1=81=D0=B0=20?= =?UTF-8?q?=D0=B2=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=D0=B5=20=D0=9F=D1=80?= =?UTF-8?q?=D0=BE=D1=87=D0=B8=D1=82=D0=B0=D1=82=D1=8C=20(=D0=BD=D0=B5?= =?UTF-8?q?=D1=81=D0=BE=D0=BE=D1=82=D0=B2=D0=B5=D1=82=D1=81=D1=82=D0=B2?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=B4=D0=BE=D0=BA=D1=83=D0=BC=D0=B5=D0=BD=D1=82?= =?UTF-8?q?=D0=B0=D1=86=D0=B8=D0=B8)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Library/StdTextReadStream.cs | 7 +++++-- tests/process.os | 19 +++++++++++++++++++ 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/src/ScriptEngine.HostedScript/Library/StdTextReadStream.cs b/src/ScriptEngine.HostedScript/Library/StdTextReadStream.cs index a732efee5..519fdcf81 100644 --- a/src/ScriptEngine.HostedScript/Library/StdTextReadStream.cs +++ b/src/ScriptEngine.HostedScript/Library/StdTextReadStream.cs @@ -49,9 +49,12 @@ public bool HasData /// /// Строка [ContextMethod("Прочитать", "Read")] - public string Read() + public IValue Read() { - return _reader.ReadToEnd(); + if (_reader.Peek() == -1) + return ValueFactory.Create(); + + return ValueFactory.Create(_reader.ReadToEnd()); } /// diff --git a/tests/process.os b/tests/process.os index 60093f701..8a4e96093 100644 --- a/tests/process.os +++ b/tests/process.os @@ -12,6 +12,7 @@ Если Найти(СИ.ВерсияОС, "Windows") > 0 Тогда ВсеТесты.Добавить("ТестДолжен_ПрочитатьВыводOscriptСразу"); ВсеТесты.Добавить("ТестДолжен_ПрочитатьВыводOscriptПострочно"); + ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоМетодПрочитатьНаПустомПотокеВернетНеопределено"); ВсеТесты.Добавить("ТестДолжен_ЗаписатьВоВходнойПотокПроцесса"); ВсеТесты.Добавить("ТестДолжен_НайтиПроцессПоИмени"); ВсеТесты.Добавить("ТестДолжен_НайтиПроцессПоPID"); @@ -184,6 +185,24 @@ КонецПроцедуры +Процедура ТестДолжен_ПроверитьЧтоМетодПрочитатьНаПустомПотокеВернетНеопределено() Экспорт + + Путь = ПутьОСкрипт(); + + Процесс = СоздатьПроцесс("""" + Путь + """",,Истина); + Процесс.Запустить(); + Процесс.ОжидатьЗавершения(); + + Стр = Процесс.ПотокВывода.Прочитать(); + юТест.ПроверитьРавенство(Тип("Строка"), ТипЗнч(Стр), "Сначала должен был прочитать строку"); + юТест.ПроверитьЛожь(ПустаяСтрока(Стр), "Вывод не должен быть пустым"); + + Стр = Процесс.ПотокВывода.Прочитать(); + юТест.ПроверитьРавенство(Тип("Неопределено"), ТипЗнч(Стр), "После должен был прочитать Неопределено"); + юТест.ПроверитьИстину(ПустаяСтрока(Стр), "Вывод должен быть пустым"); + +КонецПроцедуры + Функция ЗаписатьТестовыйСкрипт() ТекстСкрипта = " From 012c980745e36f75a7c00fa8f7d9e0f30e75b400 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Thu, 8 Jun 2017 14:37:16 +0300 Subject: [PATCH 051/168] fixed #414 --- src/oscript/ShowUsageBehavior.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/oscript/ShowUsageBehavior.cs b/src/oscript/ShowUsageBehavior.cs index 017dbebd0..3e35c5874 100644 --- a/src/oscript/ShowUsageBehavior.cs +++ b/src/oscript/ShowUsageBehavior.cs @@ -25,7 +25,7 @@ public override int Execute() Output.WriteLine("Mode can be one of these:"); Output.WriteLine(String.Format(" {0,-12}measures execution time", "-measure")); Output.WriteLine(String.Format(" {0,-12}shows compiled module without execution", "-compile")); - Output.WriteLine(String.Format(" {0,-12}provides syntax check", "-check")); + Output.WriteLine(String.Format(" {0,-12}provides syntax check", "-check [-env=]")); Output.WriteLine(String.Format(" {0,-12}provides syntax check in CGI-mode", "-check -cgi")); Output.WriteLine(); Output.WriteLine(String.Format(" {0} set output encoding", "-encoding=")); From 0e7f36c22f8535e80c6d1c29f66bad6781de251f Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Thu, 8 Jun 2017 14:49:00 +0300 Subject: [PATCH 052/168] =?UTF-8?q?fixed=20#375=20=D0=BF=D1=80=D0=B5=D0=B4?= =?UTF-8?q?=D1=83=D0=BF=D1=80=D0=B5=D0=B6=D0=B4=D0=B5=D0=BD=D0=B8=D0=B5=20?= =?UTF-8?q?=D0=BE=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=D0=B5=20=D0=92=D1=8B?= =?UTF-8?q?=D0=BF=D0=BE=D0=BB=D0=BD=D0=B8=D1=82=D1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ScriptEngine/Compiler/Compiler.cs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/ScriptEngine/Compiler/Compiler.cs b/src/ScriptEngine/Compiler/Compiler.cs index 0d6fc3fd5..0e4abf3fa 100644 --- a/src/ScriptEngine/Compiler/Compiler.cs +++ b/src/ScriptEngine/Compiler/Compiler.cs @@ -340,6 +340,13 @@ private void BuildSingleMethod() throw CompilerException.IdentifierExpected(); } + // issue #375 + if (String.Compare(_lastExtractedLexem.Content, "выполнить", StringComparison.OrdinalIgnoreCase) == 0 + || String.Compare(_lastExtractedLexem.Content, "execute", StringComparison.OrdinalIgnoreCase) == 0) + { + SystemLogger.Write($"WARNING! Method name '{_lastExtractedLexem.Content}' is DEPRECATED. Rename it"); + } + int definitionLine = _parser.CurrentLine; MethodInfo method = new MethodInfo(); method.Name = _lastExtractedLexem.Content; From 26ad256bb8b8df358f193758aefcb3e7bb7cbf38 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Thu, 8 Jun 2017 15:12:27 +0300 Subject: [PATCH 053/168] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B5=D0=BE=D0=BF?= =?UTF-8?q?=D1=80=D0=B5=D0=B4=D0=B5=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BF?= =?UTF-8?q?=D0=B5=D1=80=D0=B5=D0=BC=D0=B5=D0=BD=D0=BD=D1=8B=D1=85=20=D1=81?= =?UTF-8?q?=D1=80=D0=B5=D0=B4=D1=8B=20=D0=B2=20=D0=A1=D0=BE=D0=B7=D0=B4?= =?UTF-8?q?=D0=B0=D1=82=D1=8C=D0=9F=D1=80=D0=BE=D1=86=D0=B5=D1=81=D1=81.?= =?UTF-8?q?=20closes=20#366?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Library/ProcessContext.cs | 10 +++++++++- .../Library/ProcessOutputWrapper.cs | 2 +- .../Library/SystemGlobalContext.cs | 4 ++-- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/ScriptEngine.HostedScript/Library/ProcessContext.cs b/src/ScriptEngine.HostedScript/Library/ProcessContext.cs index 8c5ede759..bac47d01e 100644 --- a/src/ScriptEngine.HostedScript/Library/ProcessContext.cs +++ b/src/ScriptEngine.HostedScript/Library/ProcessContext.cs @@ -210,7 +210,7 @@ public void Dispose() _p.Dispose(); } - public static ProcessContext Create(string cmdLine, string currentDir = null, bool redirectOutput = false, bool redirectInput = false, IValue encoding = null) + public static ProcessContext Create(string cmdLine, string currentDir = null, bool redirectOutput = false, bool redirectInput = false, IValue encoding = null, MapImpl env = null) { var sInfo = PrepareProcessStartupInfo(cmdLine, currentDir); sInfo.UseShellExecute = false; @@ -231,6 +231,14 @@ public static ProcessContext Create(string cmdLine, string currentDir = null, bo sInfo.StandardErrorEncoding = enc; } + if (env != null) + { + foreach (var kv in env) + { + sInfo.EnvironmentVariables[kv.Key.AsString()] = kv.Value.AsString(); + } + } + var p = new System.Diagnostics.Process(); p.StartInfo = sInfo; diff --git a/src/ScriptEngine.HostedScript/Library/ProcessOutputWrapper.cs b/src/ScriptEngine.HostedScript/Library/ProcessOutputWrapper.cs index ceacf1216..94b919aa8 100644 --- a/src/ScriptEngine.HostedScript/Library/ProcessOutputWrapper.cs +++ b/src/ScriptEngine.HostedScript/Library/ProcessOutputWrapper.cs @@ -213,7 +213,7 @@ private void EnterReadLock() { if (_process.HasExited) { - _process.WaitForExit(); // ожидание закрытия потоков + _process.WaitForExit(15000); // ожидание закрытия потоков } _locker.EnterReadLock(); diff --git a/src/ScriptEngine.HostedScript/Library/SystemGlobalContext.cs b/src/ScriptEngine.HostedScript/Library/SystemGlobalContext.cs index 6d55e4a99..cdc02d89d 100644 --- a/src/ScriptEngine.HostedScript/Library/SystemGlobalContext.cs +++ b/src/ScriptEngine.HostedScript/Library/SystemGlobalContext.cs @@ -322,9 +322,9 @@ public void RunApp(string cmdLine, string currentDir = null, bool wait = false, /// Перехватывать стандартный поток stdin /// Кодировка стандартных потоков вывода и ошибок [ContextMethod("СоздатьПроцесс", "CreateProcess")] - public ProcessContext CreateProcess(string cmdLine, string currentDir = null, bool redirectOutput = false, bool redirectInput = false, IValue encoding = null) + public ProcessContext CreateProcess(string cmdLine, string currentDir = null, bool redirectOutput = false, bool redirectInput = false, IValue encoding = null, MapImpl env = null) { - return ProcessContext.Create(cmdLine, currentDir, redirectOutput, redirectInput, encoding); + return ProcessContext.Create(cmdLine, currentDir, redirectOutput, redirectInput, encoding, env); } /// From 17c51c5431ff6a70116e30bbae7a04c7cf676ecd Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Fri, 9 Jun 2017 10:34:28 +0300 Subject: [PATCH 054/168] =?UTF-8?q?=D0=A2=D0=B5=D1=81=D1=82=20=D0=BD=D0=B0?= =?UTF-8?q?=20=D0=BF=D1=80=D0=B5=D1=84=D0=B8=D0=BA=D1=81=20=D0=BB=D0=B8?= =?UTF-8?q?=D1=86=D0=B5=D0=BD=D0=B7=D0=B8=D0=B8=20=D0=B2=20=D1=84=D0=B0?= =?UTF-8?q?=D0=B9=D0=BB=D0=B0=D1=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/source-licensing.os | 119 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 tests/source-licensing.os diff --git a/tests/source-licensing.os b/tests/source-licensing.os new file mode 100644 index 000000000..e5b40084a --- /dev/null +++ b/tests/source-licensing.os @@ -0,0 +1,119 @@ +Перем юТест; + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + юТест = ЮнитТестирование; + + ВсеТесты = Новый Массив; + + ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоВсеФайлыИмеютПрефиксЛицензии"); + + Возврат ВсеТесты; +КонецФункции + +Процедура ТестДолжен_ПроверитьЧтоВсеФайлыИмеютПрефиксЛицензии() Экспорт + + КаталогИсходников = КаталогИсходниковПроекта(); + + Если не КаталогИсходников.Существует() Тогда + Возврат; // если запустили тесты вне каталога репы GIT, то тест не имеет смысла. + КонецЕсли; + + юТест.ПроверитьИстину(ПротестироватьИсходники(КаталогИсходников.ПолноеИмя)); + +КонецПроцедуры + +Функция КаталогИсходниковПроекта() + Возврат Новый Файл(ОбъединитьПути(ТекущийСценарий().Каталог,"../src")); +КонецФункции + +Функция ПротестироватьИсходники(Знач КаталогИсходников, Знач ИсправлятьТутЖе = Ложь) Экспорт + + ФайлыИсключения = Новый Массив; // чужой код + ФайлыИсключения.Добавить("src/DebugServer/DebugSession.cs"); + ФайлыИсключения.Добавить("src/DebugServer/ServiceProxy.cs"); + + ВсеФайлы = НайтиФайлы(КаталогИсходников, ПолучитьМаскуВсеФайлы()); + ЕстьОшибки = Ложь; + + Для Каждого Файл Из ВсеФайлы Цикл + + Если Файл.Расширение = ".cs" Тогда + + ЭтоФайлИсключение = Ложь; + ПриведенныйПуть = СтрЗаменить(Файл.ПолноеИмя, "\", "/"); + Для Каждого ФайлИсключение Из ФайлыИсключения Цикл + Если Найти(ПриведенныйПуть, ФайлИсключение) > 0 Тогда + ЭтоФайлИсключение = Истина; + КонецЕсли; + КонецЦикла; + + Если ЭтоФайлИсключение Тогда + Продолжить; + КонецЕсли; + ЕстьОшибкиСейчас = ПроверитьФайл(Файл); + ЕстьОшибки = ЕстьОшибки ИЛИ ЕстьОшибкиСейчас; + + Если ИсправлятьТутЖе Тогда + ИсправитьФайл(Файл); + КонецЕсли; + + ИначеЕсли Файл.ЭтоКаталог() и Файл.Имя <> "obj" Тогда + ЕстьОшибкиСейчас = ПротестироватьИсходники(Файл.ПолноеИмя); + ЕстьОшибки = ЕстьОшибки ИЛИ ЕстьОшибкиСейчас; + КонецЕсли; + + КонецЦикла; + + Возврат Не ЕстьОшибки; + +КонецФункции + +Функция ПроверитьФайл(Знач Файл) + + Префикс = ПрефиксЛицензии(); + + Документ = Новый ТекстовыйДокумент; + Документ.Прочитать(Файл.ПолноеИмя); + + СтрокаВФайле = + Документ.ПолучитьСтроку(1) + " + |" + Документ.ПолучитьСтроку(2) + " + |" + Документ.ПолучитьСтроку(3) + " + |" + Документ.ПолучитьСтроку(4) + " + |" + Документ.ПолучитьСтроку(5) + " + |" + Документ.ПолучитьСтроку(6); + + Попытка + юТест.ПроверитьРавенство(Префикс, СтрокаВФайле, "В файле " + Файл.ПолноеИмя + " должен присутствовать префикс лицензии"); + Исключение + Сообщить(ИнформацияОбОшибке().Описание); + Возврат Ложь; + КонецПопытки; + + Возврат Истина; + +КонецФункции + +Процедура ИсправитьФайл(Знач Файл) + Документ = Новый ТекстовыйДокумент; + Документ.Прочитать(Файл.ПолноеИмя); + Документ.ВставитьСтроку(1, ПрефиксЛицензии()); + Документ.Записать(Файл.ПолноеИмя); +КонецПроцедуры + +Функция ПрефиксЛицензии() + Возврат + "/*---------------------------------------------------------- + |This Source Code Form is subject to the terms of the + |Mozilla Public License, v.2.0. If a copy of the MPL + |was not distributed with this file, You can obtain one + |at http://mozilla.org/MPL/2.0/. + |----------------------------------------------------------*/"; +КонецФункции + +Если СтартовыйСценарий().Источник = ТекущийСценарий().Источник Тогда + Если АргументыКоманднойСтроки.Количество() и АргументыКоманднойСтроки[0] = "-fix" Тогда + ПротестироватьИсходники(КаталогИсходниковПроекта().ПолноеИмя, Истина); + КонецЕсли; +КонецЕсли; From 987ba47a898a2400eafb9f1f6e20c38988d5c7f9 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Fri, 9 Jun 2017 11:22:04 +0300 Subject: [PATCH 055/168] =?UTF-8?q?=D0=90=D0=B2=D1=82=D0=BE=D1=84=D0=B8?= =?UTF-8?q?=D0=BA=D1=81=20=D0=BB=D0=B8=D1=86=D0=B5=D0=BD=D0=B7=D0=B8=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/source-licensing.os | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/tests/source-licensing.os b/tests/source-licensing.os index e5b40084a..f03b66a74 100644 --- a/tests/source-licensing.os +++ b/tests/source-licensing.os @@ -1,4 +1,6 @@ -Перем юТест; +#Использовать asserts + +Перем юТест; Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт @@ -30,6 +32,8 @@ Функция ПротестироватьИсходники(Знач КаталогИсходников, Знач ИсправлятьТутЖе = Ложь) Экспорт ФайлыИсключения = Новый Массив; // чужой код + ФайлыИсключения.Добавить("src/GlobalAssemblyInfo.cs"); + ФайлыИсключения.Добавить("src/oscript/Web/Multipart/"); ФайлыИсключения.Добавить("src/DebugServer/DebugSession.cs"); ФайлыИсключения.Добавить("src/DebugServer/ServiceProxy.cs"); @@ -51,15 +55,16 @@ Если ЭтоФайлИсключение Тогда Продолжить; КонецЕсли; - ЕстьОшибкиСейчас = ПроверитьФайл(Файл); + + ЕстьОшибкиСейчас = Не ПроверитьФайл(Файл); ЕстьОшибки = ЕстьОшибки ИЛИ ЕстьОшибкиСейчас; - Если ИсправлятьТутЖе Тогда + Если ЕстьОшибкиСейчас и ИсправлятьТутЖе Тогда ИсправитьФайл(Файл); КонецЕсли; ИначеЕсли Файл.ЭтоКаталог() и Файл.Имя <> "obj" Тогда - ЕстьОшибкиСейчас = ПротестироватьИсходники(Файл.ПолноеИмя); + ЕстьОшибкиСейчас = Не ПротестироватьИсходники(Файл.ПолноеИмя, ИсправлятьТутЖе); ЕстьОшибки = ЕстьОшибки ИЛИ ЕстьОшибкиСейчас; КонецЕсли; @@ -96,6 +101,7 @@ КонецФункции Процедура ИсправитьФайл(Знач Файл) + Сообщить("ИСПРАВЛЯЮ ФАЙЛ: " + Файл.ПолноеИмя); Документ = Новый ТекстовыйДокумент; Документ.Прочитать(Файл.ПолноеИмя); Документ.ВставитьСтроку(1, ПрефиксЛицензии()); @@ -114,6 +120,8 @@ Если СтартовыйСценарий().Источник = ТекущийСценарий().Источник Тогда Если АргументыКоманднойСтроки.Количество() и АргументыКоманднойСтроки[0] = "-fix" Тогда + юТест = Утверждения; + Сообщить("Автофикс"); ПротестироватьИсходники(КаталогИсходниковПроекта().ПолноеИмя, Истина); КонецЕсли; КонецЕсли; From 0d296e00aef6b191678e287ecc4f088e97cff100 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Fri, 9 Jun 2017 11:23:27 +0300 Subject: [PATCH 056/168] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D1=8B=20=D0=BF=D1=80=D0=B5=D1=84=D0=B8=D0=BA?= =?UTF-8?q?=D1=81=D1=8B=20=D0=BB=D0=B8=D1=86=D0=B5=D0=BD=D0=B7=D0=B8=D0=B9?= =?UTF-8?q?=20=D0=B2=20=D1=84=D0=B0=D0=B9=D0=BB=D0=B0=D1=85.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DirectiveIgnorer.cs | 8 +++++- .../DirectiveMultiResolver.cs | 8 +++++- .../Library/Binary/BinaryDataBuffer.cs | 10 ++++++-- .../Library/Binary/DataReader.cs | 25 +++++++++++++------ .../Library/Binary/DataWriter.cs | 22 +++++++++++----- .../Library/Binary/EndianBitConverter.cs | 10 ++++++-- .../Library/Binary/FileStreamContext.cs | 10 ++++++-- .../Library/Binary/FileStreamsManager.cs | 10 ++++++-- .../Library/Binary/GenericStream.cs | 10 ++++++-- .../Library/Binary/GenericStreamImpl.cs | 8 +++++- .../Library/Binary/MemoryStreamContext.cs | 8 +++++- .../Library/Binary/ReadDataResult.cs | 10 ++++++-- .../Library/Binary/StreamEnums.cs | 8 +++++- .../Library/EnvironmentVariablesImpl.cs | 10 ++++++-- .../Library/FixedArrayImpl.cs | 6 ++--- .../Library/FixedStructureImpl.cs | 6 ++--- .../Library/Hash/Crc32.cs | 8 +++++- .../Library/Hash/HashImpl.cs | 8 +++++- .../Library/Json/JSONCharactersEscapeMode.cs | 8 +++++- .../Library/Json/JSONLineBreak.cs | 8 +++++- .../Library/Json/JSONReader.cs | 8 +++++- .../Library/Json/JSONValueTypeEnum.cs | 8 +++++- .../Library/Json/JSONWriter.cs | 10 ++++++-- .../Library/Json/JSONWriterSettings.cs | 10 ++++++-- .../Library/ProcessOutputWrapper.cs | 8 +++++- .../Library/ValueList/ValueListImpl.cs | 8 +++++- .../Library/ValueList/ValueListItem.cs | 8 +++++- .../Compiler/CompiledCodeIndexer.cs | 8 +++++- .../Compiler/ISourceCodeIndexer.cs | 8 +++++- .../Machine/Contexts/EnumItemAttribute.cs | 8 +++++- .../Machine/ExternalContextData.cs | 8 +++++- .../Machine/ExternalSystemException.cs | 10 ++++++-- src/TestApp/EditedFileSource.cs | 8 +++++- 33 files changed, 253 insertions(+), 58 deletions(-) diff --git a/src/ScriptEngine.HostedScript/DirectiveIgnorer.cs b/src/ScriptEngine.HostedScript/DirectiveIgnorer.cs index 74aa8fc09..d825185a4 100644 --- a/src/ScriptEngine.HostedScript/DirectiveIgnorer.cs +++ b/src/ScriptEngine.HostedScript/DirectiveIgnorer.cs @@ -1,4 +1,10 @@ -using System; +/*---------------------------------------------------------- +This Source Code Form is subject to the terms of the +Mozilla Public License, v.2.0. If a copy of the MPL +was not distributed with this file, You can obtain one +at http://mozilla.org/MPL/2.0/. +----------------------------------------------------------*/ +using System; using System.Collections.Generic; using ScriptEngine.Environment; diff --git a/src/ScriptEngine.HostedScript/DirectiveMultiResolver.cs b/src/ScriptEngine.HostedScript/DirectiveMultiResolver.cs index b998dbe04..144b0f5af 100644 --- a/src/ScriptEngine.HostedScript/DirectiveMultiResolver.cs +++ b/src/ScriptEngine.HostedScript/DirectiveMultiResolver.cs @@ -1,4 +1,10 @@ -using System; +/*---------------------------------------------------------- +This Source Code Form is subject to the terms of the +Mozilla Public License, v.2.0. If a copy of the MPL +was not distributed with this file, You can obtain one +at http://mozilla.org/MPL/2.0/. +----------------------------------------------------------*/ +using System; using System.Collections.Generic; using ScriptEngine.Environment; diff --git a/src/ScriptEngine.HostedScript/Library/Binary/BinaryDataBuffer.cs b/src/ScriptEngine.HostedScript/Library/Binary/BinaryDataBuffer.cs index 952de8721..d02623ae3 100644 --- a/src/ScriptEngine.HostedScript/Library/Binary/BinaryDataBuffer.cs +++ b/src/ScriptEngine.HostedScript/Library/Binary/BinaryDataBuffer.cs @@ -1,4 +1,10 @@ - +/*---------------------------------------------------------- +This Source Code Form is subject to the terms of the +Mozilla Public License, v.2.0. If a copy of the MPL +was not distributed with this file, You can obtain one +at http://mozilla.org/MPL/2.0/. +----------------------------------------------------------*/ + using System; using System.Collections.Generic; using System.IO; @@ -514,4 +520,4 @@ public void ThrowIfReadonly() if (_readOnly) throw new RuntimeException("Буфер находится в режиме \"Только чтение\""); } -} \ No newline at end of file +} diff --git a/src/ScriptEngine.HostedScript/Library/Binary/DataReader.cs b/src/ScriptEngine.HostedScript/Library/Binary/DataReader.cs index 871240f51..768c2267b 100644 --- a/src/ScriptEngine.HostedScript/Library/Binary/DataReader.cs +++ b/src/ScriptEngine.HostedScript/Library/Binary/DataReader.cs @@ -1,4 +1,10 @@ - +/*---------------------------------------------------------- +This Source Code Form is subject to the terms of the +Mozilla Public License, v.2.0. If a copy of the MPL +was not distributed with this file, You can obtain one +at http://mozilla.org/MPL/2.0/. +----------------------------------------------------------*/ + //using System; //using ScriptEngine.Machine; //using ScriptEngine.Machine.Contexts; @@ -18,11 +24,16 @@ //[ContextClass("ЧтениеДанных", "DataReader")] //class DataReader : AutoContext //{ - //private IValue _TextEncoding - //private string _ConvertibleSplitterOfLines - //private IValue _ByteOrder - //private string _LineSplitter - //private bool _ReadCompleted + +//private IValue _TextEncoding + +//private string _ConvertibleSplitterOfLines + +//private IValue _ByteOrder + +//private string _LineSplitter + +//private bool _ReadCompleted //public DataReader() //{ @@ -4740,4 +4751,4 @@ // return null; //} -//} \ No newline at end of file +//} diff --git a/src/ScriptEngine.HostedScript/Library/Binary/DataWriter.cs b/src/ScriptEngine.HostedScript/Library/Binary/DataWriter.cs index db10b21a4..ca5c33a1f 100644 --- a/src/ScriptEngine.HostedScript/Library/Binary/DataWriter.cs +++ b/src/ScriptEngine.HostedScript/Library/Binary/DataWriter.cs @@ -1,4 +1,10 @@ - +/*---------------------------------------------------------- +This Source Code Form is subject to the terms of the +Mozilla Public License, v.2.0. If a copy of the MPL +was not distributed with this file, You can obtain one +at http://mozilla.org/MPL/2.0/. +----------------------------------------------------------*/ + //using System; //using ScriptEngine.Machine; //using ScriptEngine.Machine.Contexts; @@ -19,10 +25,14 @@ //[ContextClass("ЗаписьДанных", "DataWriter")] //class DataWriter : AutoContext //{ - //private IValue _TextEncoding - //private string _ConvertibleSplitterOfLines - //private IValue _ByteOrder - //private string _LineSplitter + +//private IValue _TextEncoding + +//private string _ConvertibleSplitterOfLines + +//private IValue _ByteOrder + +//private string _LineSplitter //public DataWriter() //{ @@ -1811,4 +1821,4 @@ // return null; //} -//} \ No newline at end of file +//} diff --git a/src/ScriptEngine.HostedScript/Library/Binary/EndianBitConverter.cs b/src/ScriptEngine.HostedScript/Library/Binary/EndianBitConverter.cs index bc86ef2ba..2a7b02e20 100644 --- a/src/ScriptEngine.HostedScript/Library/Binary/EndianBitConverter.cs +++ b/src/ScriptEngine.HostedScript/Library/Binary/EndianBitConverter.cs @@ -1,4 +1,10 @@ -using System; +/*---------------------------------------------------------- +This Source Code Form is subject to the terms of the +Mozilla Public License, v.2.0. If a copy of the MPL +was not distributed with this file, You can obtain one +at http://mozilla.org/MPL/2.0/. +----------------------------------------------------------*/ +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -721,4 +727,4 @@ public ulong ToUInt64(byte[] value, int startIndex) } } } -} \ No newline at end of file +} diff --git a/src/ScriptEngine.HostedScript/Library/Binary/FileStreamContext.cs b/src/ScriptEngine.HostedScript/Library/Binary/FileStreamContext.cs index 6d06823f5..286bc131e 100644 --- a/src/ScriptEngine.HostedScript/Library/Binary/FileStreamContext.cs +++ b/src/ScriptEngine.HostedScript/Library/Binary/FileStreamContext.cs @@ -1,4 +1,10 @@ -using System; +/*---------------------------------------------------------- +This Source Code Form is subject to the terms of the +Mozilla Public License, v.2.0. If a copy of the MPL +was not distributed with this file, You can obtain one +at http://mozilla.org/MPL/2.0/. +----------------------------------------------------------*/ +using System; using System.IO; using ScriptEngine.Machine; using ScriptEngine.Machine.Contexts; @@ -287,4 +293,4 @@ public static FileStreamContext Constructor(IValue filename, IValue openMode, IV ContextValuesMarshaller.ConvertParam(bufferSize)); } } -} \ No newline at end of file +} diff --git a/src/ScriptEngine.HostedScript/Library/Binary/FileStreamsManager.cs b/src/ScriptEngine.HostedScript/Library/Binary/FileStreamsManager.cs index c297ac45c..ed8131456 100644 --- a/src/ScriptEngine.HostedScript/Library/Binary/FileStreamsManager.cs +++ b/src/ScriptEngine.HostedScript/Library/Binary/FileStreamsManager.cs @@ -1,4 +1,10 @@ - +/*---------------------------------------------------------- +This Source Code Form is subject to the terms of the +Mozilla Public License, v.2.0. If a copy of the MPL +was not distributed with this file, You can obtain one +at http://mozilla.org/MPL/2.0/. +----------------------------------------------------------*/ + using System; using System.IO; @@ -180,4 +186,4 @@ public IValue CreateTempFile(int MemoryLimit = 0, int BufferSize = 0) throw new NotImplementedException(); } -} \ No newline at end of file +} diff --git a/src/ScriptEngine.HostedScript/Library/Binary/GenericStream.cs b/src/ScriptEngine.HostedScript/Library/Binary/GenericStream.cs index 067e0d8c9..80ba5c010 100644 --- a/src/ScriptEngine.HostedScript/Library/Binary/GenericStream.cs +++ b/src/ScriptEngine.HostedScript/Library/Binary/GenericStream.cs @@ -1,4 +1,10 @@ -using System; +/*---------------------------------------------------------- +This Source Code Form is subject to the terms of the +Mozilla Public License, v.2.0. If a copy of the MPL +was not distributed with this file, You can obtain one +at http://mozilla.org/MPL/2.0/. +----------------------------------------------------------*/ +using System; using System.IO; using ScriptEngine.Machine; using ScriptEngine.Machine.Contexts; @@ -245,4 +251,4 @@ public Stream GetUnderlyingStream() return _underlyingStream; } } -} \ No newline at end of file +} diff --git a/src/ScriptEngine.HostedScript/Library/Binary/GenericStreamImpl.cs b/src/ScriptEngine.HostedScript/Library/Binary/GenericStreamImpl.cs index c8c117543..d515e808f 100644 --- a/src/ScriptEngine.HostedScript/Library/Binary/GenericStreamImpl.cs +++ b/src/ScriptEngine.HostedScript/Library/Binary/GenericStreamImpl.cs @@ -1,4 +1,10 @@ -using System; +/*---------------------------------------------------------- +This Source Code Form is subject to the terms of the +Mozilla Public License, v.2.0. If a copy of the MPL +was not distributed with this file, You can obtain one +at http://mozilla.org/MPL/2.0/. +----------------------------------------------------------*/ +using System; using System.CodeDom; using System.Collections.Generic; using System.IO; diff --git a/src/ScriptEngine.HostedScript/Library/Binary/MemoryStreamContext.cs b/src/ScriptEngine.HostedScript/Library/Binary/MemoryStreamContext.cs index 48f2c6908..c97f26c3c 100644 --- a/src/ScriptEngine.HostedScript/Library/Binary/MemoryStreamContext.cs +++ b/src/ScriptEngine.HostedScript/Library/Binary/MemoryStreamContext.cs @@ -1,4 +1,10 @@ -using System; +/*---------------------------------------------------------- +This Source Code Form is subject to the terms of the +Mozilla Public License, v.2.0. If a copy of the MPL +was not distributed with this file, You can obtain one +at http://mozilla.org/MPL/2.0/. +----------------------------------------------------------*/ +using System; using System.IO; using ScriptEngine.Machine; using ScriptEngine.Machine.Contexts; diff --git a/src/ScriptEngine.HostedScript/Library/Binary/ReadDataResult.cs b/src/ScriptEngine.HostedScript/Library/Binary/ReadDataResult.cs index aac19c237..0ff4655d6 100644 --- a/src/ScriptEngine.HostedScript/Library/Binary/ReadDataResult.cs +++ b/src/ScriptEngine.HostedScript/Library/Binary/ReadDataResult.cs @@ -1,4 +1,10 @@ - +/*---------------------------------------------------------- +This Source Code Form is subject to the terms of the +Mozilla Public License, v.2.0. If a copy of the MPL +was not distributed with this file, You can obtain one +at http://mozilla.org/MPL/2.0/. +----------------------------------------------------------*/ + //using System; //using ScriptEngine.Machine; //using ScriptEngine.Machine.Contexts; @@ -168,4 +174,4 @@ // return null; //} -//} \ No newline at end of file +//} diff --git a/src/ScriptEngine.HostedScript/Library/Binary/StreamEnums.cs b/src/ScriptEngine.HostedScript/Library/Binary/StreamEnums.cs index 4d98e0678..a35f9add0 100644 --- a/src/ScriptEngine.HostedScript/Library/Binary/StreamEnums.cs +++ b/src/ScriptEngine.HostedScript/Library/Binary/StreamEnums.cs @@ -1,4 +1,10 @@ -using System; +/*---------------------------------------------------------- +This Source Code Form is subject to the terms of the +Mozilla Public License, v.2.0. If a copy of the MPL +was not distributed with this file, You can obtain one +at http://mozilla.org/MPL/2.0/. +----------------------------------------------------------*/ +using System; using System.Collections.Generic; using System.Linq; using System.Text; diff --git a/src/ScriptEngine.HostedScript/Library/EnvironmentVariablesImpl.cs b/src/ScriptEngine.HostedScript/Library/EnvironmentVariablesImpl.cs index 50c839472..13fd55791 100644 --- a/src/ScriptEngine.HostedScript/Library/EnvironmentVariablesImpl.cs +++ b/src/ScriptEngine.HostedScript/Library/EnvironmentVariablesImpl.cs @@ -1,5 +1,11 @@ -using ScriptEngine.Machine; -using ScriptEngine.Machine.Contexts; +/*---------------------------------------------------------- +This Source Code Form is subject to the terms of the +Mozilla Public License, v.2.0. If a copy of the MPL +was not distributed with this file, You can obtain one +at http://mozilla.org/MPL/2.0/. +----------------------------------------------------------*/ +using ScriptEngine.Machine; +using ScriptEngine.Machine.Contexts; using System; using System.Collections; diff --git a/src/ScriptEngine.HostedScript/Library/FixedArrayImpl.cs b/src/ScriptEngine.HostedScript/Library/FixedArrayImpl.cs index bff13427b..d5509d294 100644 --- a/src/ScriptEngine.HostedScript/Library/FixedArrayImpl.cs +++ b/src/ScriptEngine.HostedScript/Library/FixedArrayImpl.cs @@ -1,7 +1,7 @@ /*---------------------------------------------------------- -This Source Code Form is subject to the terms of the -Mozilla Public License, v.2.0. If a copy of the MPL -was not distributed with this file, You can obtain one +This Source Code Form is subject to the terms of the +Mozilla Public License, v.2.0. If a copy of the MPL +was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. ----------------------------------------------------------*/ using System; diff --git a/src/ScriptEngine.HostedScript/Library/FixedStructureImpl.cs b/src/ScriptEngine.HostedScript/Library/FixedStructureImpl.cs index 888da444d..6d7c3b83b 100644 --- a/src/ScriptEngine.HostedScript/Library/FixedStructureImpl.cs +++ b/src/ScriptEngine.HostedScript/Library/FixedStructureImpl.cs @@ -1,7 +1,7 @@ /*---------------------------------------------------------- -This Source Code Form is subject to the terms of the -Mozilla Public License, v.2.0. If a copy of the MPL -was not distributed with this file, You can obtain one +This Source Code Form is subject to the terms of the +Mozilla Public License, v.2.0. If a copy of the MPL +was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. ----------------------------------------------------------*/ using System.Collections.Generic; diff --git a/src/ScriptEngine.HostedScript/Library/Hash/Crc32.cs b/src/ScriptEngine.HostedScript/Library/Hash/Crc32.cs index f445e83dc..598a1b71c 100644 --- a/src/ScriptEngine.HostedScript/Library/Hash/Crc32.cs +++ b/src/ScriptEngine.HostedScript/Library/Hash/Crc32.cs @@ -1,4 +1,10 @@ -using System; +/*---------------------------------------------------------- +This Source Code Form is subject to the terms of the +Mozilla Public License, v.2.0. If a copy of the MPL +was not distributed with this file, You can obtain one +at http://mozilla.org/MPL/2.0/. +----------------------------------------------------------*/ +using System; using System.Collections.Generic; using System.Linq; using System.Text; diff --git a/src/ScriptEngine.HostedScript/Library/Hash/HashImpl.cs b/src/ScriptEngine.HostedScript/Library/Hash/HashImpl.cs index f20d262f2..0dd8d00b9 100644 --- a/src/ScriptEngine.HostedScript/Library/Hash/HashImpl.cs +++ b/src/ScriptEngine.HostedScript/Library/Hash/HashImpl.cs @@ -1,4 +1,10 @@ -using System; +/*---------------------------------------------------------- +This Source Code Form is subject to the terms of the +Mozilla Public License, v.2.0. If a copy of the MPL +was not distributed with this file, You can obtain one +at http://mozilla.org/MPL/2.0/. +----------------------------------------------------------*/ +using System; using System.Collections.Generic; using System.Linq; using System.Text; diff --git a/src/ScriptEngine.HostedScript/Library/Json/JSONCharactersEscapeMode.cs b/src/ScriptEngine.HostedScript/Library/Json/JSONCharactersEscapeMode.cs index e9d8e15ab..4a11ca6bb 100644 --- a/src/ScriptEngine.HostedScript/Library/Json/JSONCharactersEscapeMode.cs +++ b/src/ScriptEngine.HostedScript/Library/Json/JSONCharactersEscapeMode.cs @@ -1,4 +1,10 @@ -using ScriptEngine.Machine; +/*---------------------------------------------------------- +This Source Code Form is subject to the terms of the +Mozilla Public License, v.2.0. If a copy of the MPL +was not distributed with this file, You can obtain one +at http://mozilla.org/MPL/2.0/. +----------------------------------------------------------*/ +using ScriptEngine.Machine; using ScriptEngine.Machine.Contexts; namespace ScriptEngine.HostedScript.Library.Json diff --git a/src/ScriptEngine.HostedScript/Library/Json/JSONLineBreak.cs b/src/ScriptEngine.HostedScript/Library/Json/JSONLineBreak.cs index 48b71ff98..bec86b28a 100644 --- a/src/ScriptEngine.HostedScript/Library/Json/JSONLineBreak.cs +++ b/src/ScriptEngine.HostedScript/Library/Json/JSONLineBreak.cs @@ -1,4 +1,10 @@ -using ScriptEngine.Machine; +/*---------------------------------------------------------- +This Source Code Form is subject to the terms of the +Mozilla Public License, v.2.0. If a copy of the MPL +was not distributed with this file, You can obtain one +at http://mozilla.org/MPL/2.0/. +----------------------------------------------------------*/ +using ScriptEngine.Machine; using ScriptEngine.Machine.Contexts; namespace ScriptEngine.HostedScript.Library.Json diff --git a/src/ScriptEngine.HostedScript/Library/Json/JSONReader.cs b/src/ScriptEngine.HostedScript/Library/Json/JSONReader.cs index 9193a28d9..3233a750b 100644 --- a/src/ScriptEngine.HostedScript/Library/Json/JSONReader.cs +++ b/src/ScriptEngine.HostedScript/Library/Json/JSONReader.cs @@ -1,4 +1,10 @@ -using System; +/*---------------------------------------------------------- +This Source Code Form is subject to the terms of the +Mozilla Public License, v.2.0. If a copy of the MPL +was not distributed with this file, You can obtain one +at http://mozilla.org/MPL/2.0/. +----------------------------------------------------------*/ +using System; using ScriptEngine.Machine; using ScriptEngine.Machine.Contexts; using System.IO; diff --git a/src/ScriptEngine.HostedScript/Library/Json/JSONValueTypeEnum.cs b/src/ScriptEngine.HostedScript/Library/Json/JSONValueTypeEnum.cs index 41594971d..dec845f5d 100644 --- a/src/ScriptEngine.HostedScript/Library/Json/JSONValueTypeEnum.cs +++ b/src/ScriptEngine.HostedScript/Library/Json/JSONValueTypeEnum.cs @@ -1,4 +1,10 @@ -using ScriptEngine.Machine; +/*---------------------------------------------------------- +This Source Code Form is subject to the terms of the +Mozilla Public License, v.2.0. If a copy of the MPL +was not distributed with this file, You can obtain one +at http://mozilla.org/MPL/2.0/. +----------------------------------------------------------*/ +using ScriptEngine.Machine; using ScriptEngine.Machine.Contexts; namespace ScriptEngine.HostedScript.Library.Json diff --git a/src/ScriptEngine.HostedScript/Library/Json/JSONWriter.cs b/src/ScriptEngine.HostedScript/Library/Json/JSONWriter.cs index fa5b8d667..ca4654d12 100644 --- a/src/ScriptEngine.HostedScript/Library/Json/JSONWriter.cs +++ b/src/ScriptEngine.HostedScript/Library/Json/JSONWriter.cs @@ -1,4 +1,10 @@ - +/*---------------------------------------------------------- +This Source Code Form is subject to the terms of the +Mozilla Public License, v.2.0. If a copy of the MPL +was not distributed with this file, You can obtain one +at http://mozilla.org/MPL/2.0/. +----------------------------------------------------------*/ + using System; using ScriptEngine.Machine; using ScriptEngine.Machine.Contexts; @@ -429,4 +435,4 @@ public void SetString(IValue settings = null) } } -} \ No newline at end of file +} diff --git a/src/ScriptEngine.HostedScript/Library/Json/JSONWriterSettings.cs b/src/ScriptEngine.HostedScript/Library/Json/JSONWriterSettings.cs index 65699b12e..bf1ecbada 100644 --- a/src/ScriptEngine.HostedScript/Library/Json/JSONWriterSettings.cs +++ b/src/ScriptEngine.HostedScript/Library/Json/JSONWriterSettings.cs @@ -1,4 +1,10 @@ - +/*---------------------------------------------------------- +This Source Code Form is subject to the terms of the +Mozilla Public License, v.2.0. If a copy of the MPL +was not distributed with this file, You can obtain one +at http://mozilla.org/MPL/2.0/. +----------------------------------------------------------*/ + using System; using ScriptEngine.Machine; using ScriptEngine.Machine.Contexts; @@ -231,4 +237,4 @@ public bool EscapeAngleBrackets } -} \ No newline at end of file +} diff --git a/src/ScriptEngine.HostedScript/Library/ProcessOutputWrapper.cs b/src/ScriptEngine.HostedScript/Library/ProcessOutputWrapper.cs index 94b919aa8..4040d4033 100644 --- a/src/ScriptEngine.HostedScript/Library/ProcessOutputWrapper.cs +++ b/src/ScriptEngine.HostedScript/Library/ProcessOutputWrapper.cs @@ -1,4 +1,10 @@ -using System; +/*---------------------------------------------------------- +This Source Code Form is subject to the terms of the +Mozilla Public License, v.2.0. If a copy of the MPL +was not distributed with this file, You can obtain one +at http://mozilla.org/MPL/2.0/. +----------------------------------------------------------*/ +using System; using System.Collections.Generic; using System.IO; using System.Linq; diff --git a/src/ScriptEngine.HostedScript/Library/ValueList/ValueListImpl.cs b/src/ScriptEngine.HostedScript/Library/ValueList/ValueListImpl.cs index a85b00f22..4160dfb25 100644 --- a/src/ScriptEngine.HostedScript/Library/ValueList/ValueListImpl.cs +++ b/src/ScriptEngine.HostedScript/Library/ValueList/ValueListImpl.cs @@ -1,4 +1,10 @@ -using ScriptEngine.Machine; +/*---------------------------------------------------------- +This Source Code Form is subject to the terms of the +Mozilla Public License, v.2.0. If a copy of the MPL +was not distributed with this file, You can obtain one +at http://mozilla.org/MPL/2.0/. +----------------------------------------------------------*/ +using ScriptEngine.Machine; using ScriptEngine.Machine.Contexts; using System; using System.Collections.Generic; diff --git a/src/ScriptEngine.HostedScript/Library/ValueList/ValueListItem.cs b/src/ScriptEngine.HostedScript/Library/ValueList/ValueListItem.cs index c50e81dcc..3f1a85f78 100644 --- a/src/ScriptEngine.HostedScript/Library/ValueList/ValueListItem.cs +++ b/src/ScriptEngine.HostedScript/Library/ValueList/ValueListItem.cs @@ -1,4 +1,10 @@ -using ScriptEngine.Machine; +/*---------------------------------------------------------- +This Source Code Form is subject to the terms of the +Mozilla Public License, v.2.0. If a copy of the MPL +was not distributed with this file, You can obtain one +at http://mozilla.org/MPL/2.0/. +----------------------------------------------------------*/ +using ScriptEngine.Machine; using ScriptEngine.Machine.Contexts; using System; using System.Collections.Generic; diff --git a/src/ScriptEngine/Compiler/CompiledCodeIndexer.cs b/src/ScriptEngine/Compiler/CompiledCodeIndexer.cs index b0d5481c9..dc1dc1b04 100644 --- a/src/ScriptEngine/Compiler/CompiledCodeIndexer.cs +++ b/src/ScriptEngine/Compiler/CompiledCodeIndexer.cs @@ -1,4 +1,10 @@ -using System; +/*---------------------------------------------------------- +This Source Code Form is subject to the terms of the +Mozilla Public License, v.2.0. If a copy of the MPL +was not distributed with this file, You can obtain one +at http://mozilla.org/MPL/2.0/. +----------------------------------------------------------*/ +using System; using System.Collections.Generic; using System.Linq; using System.Text; diff --git a/src/ScriptEngine/Compiler/ISourceCodeIndexer.cs b/src/ScriptEngine/Compiler/ISourceCodeIndexer.cs index e62a6348b..56a3a31de 100644 --- a/src/ScriptEngine/Compiler/ISourceCodeIndexer.cs +++ b/src/ScriptEngine/Compiler/ISourceCodeIndexer.cs @@ -1,4 +1,10 @@ -using System; +/*---------------------------------------------------------- +This Source Code Form is subject to the terms of the +Mozilla Public License, v.2.0. If a copy of the MPL +was not distributed with this file, You can obtain one +at http://mozilla.org/MPL/2.0/. +----------------------------------------------------------*/ +using System; namespace ScriptEngine.Compiler { interface ISourceCodeIndexer diff --git a/src/ScriptEngine/Machine/Contexts/EnumItemAttribute.cs b/src/ScriptEngine/Machine/Contexts/EnumItemAttribute.cs index 5257c27f9..9c7760fec 100644 --- a/src/ScriptEngine/Machine/Contexts/EnumItemAttribute.cs +++ b/src/ScriptEngine/Machine/Contexts/EnumItemAttribute.cs @@ -1,4 +1,10 @@ -using System; +/*---------------------------------------------------------- +This Source Code Form is subject to the terms of the +Mozilla Public License, v.2.0. If a copy of the MPL +was not distributed with this file, You can obtain one +at http://mozilla.org/MPL/2.0/. +----------------------------------------------------------*/ +using System; namespace ScriptEngine { [AttributeUsage(AttributeTargets.Field)] diff --git a/src/ScriptEngine/Machine/ExternalContextData.cs b/src/ScriptEngine/Machine/ExternalContextData.cs index 94e677523..ace45b020 100644 --- a/src/ScriptEngine/Machine/ExternalContextData.cs +++ b/src/ScriptEngine/Machine/ExternalContextData.cs @@ -1,4 +1,10 @@ -using System; +/*---------------------------------------------------------- +This Source Code Form is subject to the terms of the +Mozilla Public License, v.2.0. If a copy of the MPL +was not distributed with this file, You can obtain one +at http://mozilla.org/MPL/2.0/. +----------------------------------------------------------*/ +using System; using System.Collections.Generic; using System.Linq; using System.Text; diff --git a/src/ScriptEngine/Machine/ExternalSystemException.cs b/src/ScriptEngine/Machine/ExternalSystemException.cs index 37cdea325..3c4e806bb 100644 --- a/src/ScriptEngine/Machine/ExternalSystemException.cs +++ b/src/ScriptEngine/Machine/ExternalSystemException.cs @@ -1,4 +1,10 @@ -using System; +/*---------------------------------------------------------- +This Source Code Form is subject to the terms of the +Mozilla Public License, v.2.0. If a copy of the MPL +was not distributed with this file, You can obtain one +at http://mozilla.org/MPL/2.0/. +----------------------------------------------------------*/ +using System; namespace ScriptEngine.Machine { @@ -9,4 +15,4 @@ public ExternalSystemException(Exception reason) { } } -} \ No newline at end of file +} diff --git a/src/TestApp/EditedFileSource.cs b/src/TestApp/EditedFileSource.cs index 79a9c26c8..0eb0f0c28 100644 --- a/src/TestApp/EditedFileSource.cs +++ b/src/TestApp/EditedFileSource.cs @@ -1,4 +1,10 @@ -using System; +/*---------------------------------------------------------- +This Source Code Form is subject to the terms of the +Mozilla Public License, v.2.0. If a copy of the MPL +was not distributed with this file, You can obtain one +at http://mozilla.org/MPL/2.0/. +----------------------------------------------------------*/ +using System; using System.Collections.Generic; using System.Linq; using System.Text; From 9569fb8bfe5b8c5617393801c421eb67ad399b36 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Fri, 9 Jun 2017 11:26:18 +0300 Subject: [PATCH 057/168] =?UTF-8?q?=D0=9F=D0=BE=D0=B4=D1=82=D1=8F=D0=BD?= =?UTF-8?q?=D1=83=D0=BB=20=D0=BA=D0=BE=D0=BC=D0=BC=D0=B8=D1=82=20=D1=81?= =?UTF-8?q?=D1=82=D0=B0=D0=BD=D0=B4=D0=B0=D1=80=D1=82=D0=BD=D0=BE=D0=B9=20?= =?UTF-8?q?=D0=B1=D0=B8=D0=B1=D0=BB=D0=B8=D0=BE=D1=82=D0=B5=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- oscript-library | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oscript-library b/oscript-library index d161c1d91..a70eca686 160000 --- a/oscript-library +++ b/oscript-library @@ -1 +1 @@ -Subproject commit d161c1d9152f8009b6850bee798e746fba6d5805 +Subproject commit a70eca6866a43861597ec94f2b16090bcfade172 From 147314a019eb7e7f1469d75e8ffa5a0c4ce45cc1 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Fri, 9 Jun 2017 11:55:14 +0300 Subject: [PATCH 058/168] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=B2=D0=BA=D0=BB=D1=8E=D1=87=D0=B0=D0=B5=D0=BC=D1=8B?= =?UTF-8?q?=D0=B9=20=D0=B2=20=D0=BF=D0=BE=D1=81=D1=82=D0=B0=D0=B2=D0=BA?= =?UTF-8?q?=D1=83=20opm?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- oscript-library | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oscript-library b/oscript-library index a70eca686..7b0c542a6 160000 --- a/oscript-library +++ b/oscript-library @@ -1 +1 @@ -Subproject commit a70eca6866a43861597ec94f2b16090bcfade172 +Subproject commit 7b0c542a65da429eed263d1b516a7e92e1780fed From 89a063d043a4ad548962e659249b9da3c2999fcc Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Fri, 9 Jun 2017 18:11:22 +0300 Subject: [PATCH 059/168] =?UTF-8?q?=D0=9F=D0=BE=D1=87=D0=B8=D0=BD=D0=B8?= =?UTF-8?q?=D0=BB=20=D1=82=D0=B5=D1=81=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/process.os | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/process.os b/tests/process.os index 8a4e96093..395317b7a 100644 --- a/tests/process.os +++ b/tests/process.os @@ -134,7 +134,7 @@ |Mode can be one of these: | -measure measures execution time | -compile shows compiled module without execution - | -check provides syntax check + | -check [-env=]provides syntax check | -check -cgi provides syntax check in CGI-mode | | -encoding= set output encoding From c2d79c0343c89ae700fc69295916c5a19dd55248 Mon Sep 17 00:00:00 2001 From: Sergey Batanov Date: Thu, 15 Jun 2017 12:49:42 +0300 Subject: [PATCH 060/168] =?UTF-8?q?=D0=9F=D1=80=D0=BE=D0=B5=D0=BA=D1=82=20?= =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=20VisualStudio?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/1Script.sln | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/src/1Script.sln b/src/1Script.sln index 38a9dbac9..02604bc14 100644 --- a/src/1Script.sln +++ b/src/1Script.sln @@ -26,34 +26,68 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution EndProject Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "Installer", "Installer\Installer.wixproj", "{BBE794A6-B159-422F-B655-B7F03F25F223}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Component", "Component\Component.csproj", "{B6C3C000-699B-4A2F-92D1-EEAEA9CFE2AB}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution + {4585BA5D-9EC4-4C89-8250-2033D2AC2999}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4585BA5D-9EC4-4C89-8250-2033D2AC2999}.Debug|Any CPU.Build.0 = Debug|Any CPU {4585BA5D-9EC4-4C89-8250-2033D2AC2999}.Debug|x86.ActiveCfg = Debug|x86 {4585BA5D-9EC4-4C89-8250-2033D2AC2999}.Debug|x86.Build.0 = Debug|x86 + {4585BA5D-9EC4-4C89-8250-2033D2AC2999}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4585BA5D-9EC4-4C89-8250-2033D2AC2999}.Release|Any CPU.Build.0 = Release|Any CPU {4585BA5D-9EC4-4C89-8250-2033D2AC2999}.Release|x86.ActiveCfg = Release|x86 {4585BA5D-9EC4-4C89-8250-2033D2AC2999}.Release|x86.Build.0 = Release|x86 + {F062D1D9-D307-492A-A56B-FF3C55F8F6C0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F062D1D9-D307-492A-A56B-FF3C55F8F6C0}.Debug|Any CPU.Build.0 = Debug|Any CPU {F062D1D9-D307-492A-A56B-FF3C55F8F6C0}.Debug|x86.ActiveCfg = Debug|Any CPU {F062D1D9-D307-492A-A56B-FF3C55F8F6C0}.Debug|x86.Build.0 = Debug|Any CPU + {F062D1D9-D307-492A-A56B-FF3C55F8F6C0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F062D1D9-D307-492A-A56B-FF3C55F8F6C0}.Release|Any CPU.Build.0 = Release|Any CPU {F062D1D9-D307-492A-A56B-FF3C55F8F6C0}.Release|x86.ActiveCfg = Release|Any CPU {F062D1D9-D307-492A-A56B-FF3C55F8F6C0}.Release|x86.Build.0 = Release|Any CPU + {F09A46BD-5737-45E7-BA60-A47C9F7821A9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F09A46BD-5737-45E7-BA60-A47C9F7821A9}.Debug|Any CPU.Build.0 = Debug|Any CPU {F09A46BD-5737-45E7-BA60-A47C9F7821A9}.Debug|x86.ActiveCfg = Debug|Any CPU {F09A46BD-5737-45E7-BA60-A47C9F7821A9}.Debug|x86.Build.0 = Debug|Any CPU + {F09A46BD-5737-45E7-BA60-A47C9F7821A9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F09A46BD-5737-45E7-BA60-A47C9F7821A9}.Release|Any CPU.Build.0 = Release|Any CPU {F09A46BD-5737-45E7-BA60-A47C9F7821A9}.Release|x86.ActiveCfg = Release|Any CPU {F09A46BD-5737-45E7-BA60-A47C9F7821A9}.Release|x86.Build.0 = Release|Any CPU + {2590E2BB-CC1F-4775-80ED-451F45C9A4F1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2590E2BB-CC1F-4775-80ED-451F45C9A4F1}.Debug|Any CPU.Build.0 = Debug|Any CPU {2590E2BB-CC1F-4775-80ED-451F45C9A4F1}.Debug|x86.ActiveCfg = Debug|x86 {2590E2BB-CC1F-4775-80ED-451F45C9A4F1}.Debug|x86.Build.0 = Debug|x86 + {2590E2BB-CC1F-4775-80ED-451F45C9A4F1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2590E2BB-CC1F-4775-80ED-451F45C9A4F1}.Release|Any CPU.Build.0 = Release|Any CPU {2590E2BB-CC1F-4775-80ED-451F45C9A4F1}.Release|x86.ActiveCfg = Release|x86 {2590E2BB-CC1F-4775-80ED-451F45C9A4F1}.Release|x86.Build.0 = Release|x86 + {795AA2F5-3074-4BC5-A30F-1B6354044D9B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {795AA2F5-3074-4BC5-A30F-1B6354044D9B}.Debug|Any CPU.Build.0 = Debug|Any CPU {795AA2F5-3074-4BC5-A30F-1B6354044D9B}.Debug|x86.ActiveCfg = Debug|x86 {795AA2F5-3074-4BC5-A30F-1B6354044D9B}.Debug|x86.Build.0 = Debug|x86 + {795AA2F5-3074-4BC5-A30F-1B6354044D9B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {795AA2F5-3074-4BC5-A30F-1B6354044D9B}.Release|Any CPU.Build.0 = Release|Any CPU {795AA2F5-3074-4BC5-A30F-1B6354044D9B}.Release|x86.ActiveCfg = Release|x86 {795AA2F5-3074-4BC5-A30F-1B6354044D9B}.Release|x86.Build.0 = Release|x86 + {BBE794A6-B159-422F-B655-B7F03F25F223}.Debug|Any CPU.ActiveCfg = Debug|x86 {BBE794A6-B159-422F-B655-B7F03F25F223}.Debug|x86.ActiveCfg = Debug|x86 + {BBE794A6-B159-422F-B655-B7F03F25F223}.Release|Any CPU.ActiveCfg = Release|x86 {BBE794A6-B159-422F-B655-B7F03F25F223}.Release|x86.ActiveCfg = Release|x86 + {B6C3C000-699B-4A2F-92D1-EEAEA9CFE2AB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B6C3C000-699B-4A2F-92D1-EEAEA9CFE2AB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B6C3C000-699B-4A2F-92D1-EEAEA9CFE2AB}.Debug|x86.ActiveCfg = Debug|Any CPU + {B6C3C000-699B-4A2F-92D1-EEAEA9CFE2AB}.Debug|x86.Build.0 = Debug|Any CPU + {B6C3C000-699B-4A2F-92D1-EEAEA9CFE2AB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B6C3C000-699B-4A2F-92D1-EEAEA9CFE2AB}.Release|Any CPU.Build.0 = Release|Any CPU + {B6C3C000-699B-4A2F-92D1-EEAEA9CFE2AB}.Release|x86.ActiveCfg = Release|Any CPU + {B6C3C000-699B-4A2F-92D1-EEAEA9CFE2AB}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE From 2d4a6589779cd36c1d297437af59025edcb1f885 Mon Sep 17 00:00:00 2001 From: Sergey Batanov Date: Thu, 15 Jun 2017 12:56:19 +0300 Subject: [PATCH 061/168] =?UTF-8?q?=D0=9B=D0=B8=D1=86=D0=B5=D0=BD=D0=B7?= =?UTF-8?q?=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Component/Properties/AssemblyInfo.cs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/Component/Properties/AssemblyInfo.cs b/src/Component/Properties/AssemblyInfo.cs index 93ae369e7..4bee8397e 100644 --- a/src/Component/Properties/AssemblyInfo.cs +++ b/src/Component/Properties/AssemblyInfo.cs @@ -1,4 +1,10 @@ -using System.Reflection; +/*---------------------------------------------------------- +This Source Code Form is subject to the terms of the +Mozilla Public License, v.2.0. If a copy of the MPL +was not distributed with this file, You can obtain one +at http://mozilla.org/MPL/2.0/. +----------------------------------------------------------*/ +using System.Reflection; using System.Runtime.CompilerServices; // Information about this assembly is defined by the following attributes. From f741c851b04d23040de294b440732c19965d435f Mon Sep 17 00:00:00 2001 From: ret-Phoenix Date: Fri, 16 Jun 2017 11:09:52 +0300 Subject: [PATCH 062/168] =?UTF-8?q?+=20=D0=98=D0=BD=D1=84=D0=BE=D1=80?= =?UTF-8?q?=D0=BC=D0=B0=D1=86=D0=B8=D1=8F=D0=9E=D0=94=D0=B8=D1=81=D0=BA?= =?UTF-8?q?=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/1Script.sln | 4 +- .../Library/DriveInfo/DriveInfo.cs | 37 ++++--- .../Library/DriveInfo/DriveTypeEnum.cs | 99 ++++++------------- ...eStartModeEnum.cs => SpecialFolderEnum.cs} | 12 +-- .../ScriptEngine.HostedScript.csproj | 2 +- tests/driveinfo.os | 78 +++++++++++++++ 6 files changed, 133 insertions(+), 99 deletions(-) rename src/ScriptEngine.HostedScript/Library/{ServiceStartModeEnum.cs => SpecialFolderEnum.cs} (86%) create mode 100644 tests/driveinfo.os diff --git a/src/1Script.sln b/src/1Script.sln index 38a9dbac9..693922243 100644 --- a/src/1Script.sln +++ b/src/1Script.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 14 -VisualStudioVersion = 14.0.25420.1 +# Visual Studio 15 +VisualStudioVersion = 15.0.26403.7 MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestApp", "TestApp\TestApp.csproj", "{4585BA5D-9EC4-4C89-8250-2033D2AC2999}" ProjectSection(ProjectDependencies) = postProject diff --git a/src/ScriptEngine.HostedScript/Library/DriveInfo/DriveInfo.cs b/src/ScriptEngine.HostedScript/Library/DriveInfo/DriveInfo.cs index 1ce1e9c7c..1c570bdd4 100644 --- a/src/ScriptEngine.HostedScript/Library/DriveInfo/DriveInfo.cs +++ b/src/ScriptEngine.HostedScript/Library/DriveInfo/DriveInfo.cs @@ -2,13 +2,8 @@ using ScriptEngine.Machine; using ScriptEngine.Machine.Contexts; using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.IO; -namespace onescript_extensions.DriveInfo +namespace ScriptEngine.HostedScript.Library.DriveInfo { [ContextClass("ИнформацияОДиске", "DriveInfo")] public class DriveInfo : AutoContext @@ -17,7 +12,7 @@ public class DriveInfo : AutoContext public DriveInfo(string driveName) { - DriveInfo = new System.IO.DriveInfo(driveName); + SystemDriveInfo = new System.IO.DriveInfo(driveName); } [ScriptConstructor] @@ -33,7 +28,7 @@ public static IRuntimeContextInstance Constructor(IValue driveName) [ContextProperty("Доступно")] public Int64 AvailableFreeSpace { - get { return DriveInfo.AvailableFreeSpace; } + get { return SystemDriveInfo.AvailableFreeSpace; } } /// @@ -42,13 +37,17 @@ public Int64 AvailableFreeSpace [ContextProperty("ИмяФС")] public string DriveFormat { - get { return DriveInfo.DriveFormat; } + get { return SystemDriveInfo.DriveFormat; } } [ContextProperty("ТипДиска", "DriveType")] - public DriveType DriveTypeProp + public IValue DriveTypeProp { - get { return ValueFactory.Create( DriveInfo.DriveType ); } + get { + var dte = DriveTypeEnum.CreateInstance(); + //Console.WriteLine("index::" + ((int)_driveInfo.DriveType) + "::" + dte.IndexOf(new CLREnumValueWrapper(dte, _driveInfo.DriveType))); + return dte.GetPropValue((int)_driveInfo.DriveType); + } } /// @@ -59,7 +58,7 @@ public bool IsReady { get { - return DriveInfo.IsReady; + return SystemDriveInfo.IsReady; } } @@ -71,7 +70,7 @@ public string Name { get { - return DriveInfo.Name; + return SystemDriveInfo.Name; } } @@ -83,7 +82,7 @@ public IValue RootDirectory { get { - return new FileContext(DriveInfo.RootDirectory.FullName); + return new FileContext(SystemDriveInfo.RootDirectory.FullName); } } @@ -93,7 +92,7 @@ public IValue RootDirectory [ContextProperty("ОбщийОбъемСвободногоМеста")] public Int64 TotalFreeSpace { - get { return DriveInfo.TotalFreeSpace; } + get { return SystemDriveInfo.TotalFreeSpace; } } /// @@ -102,7 +101,7 @@ public Int64 TotalFreeSpace [ContextProperty("РазмерДиска")] public Int64 TotalSize { - get { return DriveInfo.TotalSize; } + get { return SystemDriveInfo.TotalSize; } } /// @@ -113,15 +112,15 @@ public string VolumeLabel { get { - return DriveInfo.VolumeLabel; + return SystemDriveInfo.VolumeLabel; } set { - DriveInfo.VolumeLabel = value; + SystemDriveInfo.VolumeLabel = value; } } - public System.IO.DriveInfo DriveInfo + public System.IO.DriveInfo SystemDriveInfo { get { diff --git a/src/ScriptEngine.HostedScript/Library/DriveInfo/DriveTypeEnum.cs b/src/ScriptEngine.HostedScript/Library/DriveInfo/DriveTypeEnum.cs index 90e077085..845198ac3 100644 --- a/src/ScriptEngine.HostedScript/Library/DriveInfo/DriveTypeEnum.cs +++ b/src/ScriptEngine.HostedScript/Library/DriveInfo/DriveTypeEnum.cs @@ -1,90 +1,47 @@ using ScriptEngine.Machine.Contexts; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using ScriptEngine.Machine; -namespace onescript_extensions.DriveInfo +namespace ScriptEngine.HostedScript.Library.DriveInfo { + /// + /// Типы дисков: + /// - Диск является устройством оптических дисков, такие как компакт-ДИСК или DVD-диск. + /// - Диск является жестким диском. + /// - Диск является сетевым диском. + /// - Диск не имеет корневой каталог. + /// - Диск является диском ОЗУ. + /// - Диск является съемное запоминающее устройство, например, дисковод гибких дисков или USB-устройство флэш-памяти. + /// - Тип диска неизвестен. + /// [SystemEnum("ТипДиска", "DriveType")] - class DriveTypeEnum : EnumerationContext + public class DriveTypeEnum : EnumerationContext { - const System.IO.DriveType CDRom = System.IO.DriveType.CDRom; - //const int SHA1 = "SHA1"; - //const int SHA256 = "SHA256"; - //const int SHA384 = "SHA384"; - //const int SHA512 = "SHA512"; - //const int CRC32 = "CRC32"; - - //public DriveTypeEnum(TypeDescriptor typeRepresentation, TypeDescriptor valuesType) : base(typeRepresentation, valuesType) - //{ - //} - - /// - /// Диск является устройством оптических дисков, такие как компакт-ДИСК или DVD-диск. - /// - [ContextProperty("ОптическийДиск")] - public int CDRom + private DriveTypeEnum(TypeDescriptor typeRepresentation, TypeDescriptor valuesType) + : base(typeRepresentation, valuesType) { - get { return (int)System.IO.DriveType.CDRom; } - } - /// - /// Диск является жестким диском. - /// - [ContextProperty("ЖесткийДиск")] - public int Fixed - { - get { return (int)System.IO.DriveType.Fixed; } - } - - /// - /// Диск является сетевым диском. - /// - [ContextProperty("СетевойДиск")] - public int Network - { - get { return (int)System.IO.DriveType.Network; } } - /// - /// Диск не имеет корневой каталог. - /// - [ContextProperty("НеИмеетКорневойКаталог")] - public int NoRootDirectory + public static DriveTypeEnum CreateInstance() { - get { return (int)System.IO.DriveType.NoRootDirectory; } - } + DriveTypeEnum instance; + var type = TypeManager.RegisterType("ПеречислениеТипДиска", typeof(DriveTypeEnum)); + var enumValueType = TypeManager.RegisterType("ТипДиска", typeof(CLREnumValueWrapper)); - /// - /// Диск является диском ОЗУ. - /// - [ContextProperty("ДискОЗУ")] - public int Ram - { - get { return (int)System.IO.DriveType.Ram; } - } + instance = new DriveTypeEnum(type, enumValueType); - /// - /// Диск является съемное запоминающее устройство, например, дисковод гибких дисков или USB-устройство флэш-памяти. - /// - [ContextProperty("СъемноеЗапоминающееУстройство")] - public int Removable - { - get { return (int)System.IO.DriveType.Removable; } - } + instance.AddValue("Неизвестный", "Unknown", new CLREnumValueWrapper(instance, System.IO.DriveType.Unknown)); + instance.AddValue("НеИмеетКорневойКаталог", "NoRootDirectory", new CLREnumValueWrapper(instance, System.IO.DriveType.NoRootDirectory)); + instance.AddValue("СъемноеЗапоминающееУстройство", "Removable", new CLREnumValueWrapper(instance, System.IO.DriveType.Removable)); + instance.AddValue("ЖесткийДиск", "Fixed", new CLREnumValueWrapper(instance, System.IO.DriveType.Fixed)); + instance.AddValue("СетевойДиск", "Network", new CLREnumValueWrapper(instance, System.IO.DriveType.Network)); + instance.AddValue("ОптическийДиск", "CDRom", new CLREnumValueWrapper(instance, System.IO.DriveType.CDRom)); + instance.AddValue("ДискОЗУ", "Ram", new CLREnumValueWrapper(instance, System.IO.DriveType.Ram)); - /// - /// Тип диска неизвестен. - /// - [ContextProperty("Неизвестный")] - public int Unknown - { - get { return (int)System.IO.DriveType.Unknown; } + return instance; } } + } diff --git a/src/ScriptEngine.HostedScript/Library/ServiceStartModeEnum.cs b/src/ScriptEngine.HostedScript/Library/SpecialFolderEnum.cs similarity index 86% rename from src/ScriptEngine.HostedScript/Library/ServiceStartModeEnum.cs rename to src/ScriptEngine.HostedScript/Library/SpecialFolderEnum.cs index f8a76e547..7ec99711c 100644 --- a/src/ScriptEngine.HostedScript/Library/ServiceStartModeEnum.cs +++ b/src/ScriptEngine.HostedScript/Library/SpecialFolderEnum.cs @@ -8,21 +8,21 @@ namespace ScriptEngine.HostedScript.Library { [SystemEnum("СпециальнаяПапка", "SpecialFolder")] - class ServiceStartModeEnum : EnumerationContext + class SpecialFolderEnum : EnumerationContext { - private ServiceStartModeEnum(TypeDescriptor typeRepresentation, TypeDescriptor valuesType) + private SpecialFolderEnum(TypeDescriptor typeRepresentation, TypeDescriptor valuesType) : base(typeRepresentation, valuesType) { } - public static ServiceStartModeEnum CreateInstance() + public static SpecialFolderEnum CreateInstance() { - ServiceStartModeEnum instance; - var type = TypeManager.RegisterType("ПеречислениеСпециальнаяПапка", typeof(ServiceStartModeEnum)); + SpecialFolderEnum instance; + var type = TypeManager.RegisterType("ПеречислениеСпециальнаяПапка", typeof(SpecialFolderEnum)); var enumValueType = TypeManager.RegisterType("СпециальнаяПапка", typeof(CLREnumValueWrapper)); - instance = new ServiceStartModeEnum(type, enumValueType); + instance = new SpecialFolderEnum(type, enumValueType); instance.AddValue("РепозиторийДокументов", "Personal", new CLREnumValueWrapper(instance, SpecialFolder.Personal)); instance.AddValue("ДанныеПриложений", "ApplicationData", new CLREnumValueWrapper(instance, SpecialFolder.ApplicationData)); diff --git a/src/ScriptEngine.HostedScript/ScriptEngine.HostedScript.csproj b/src/ScriptEngine.HostedScript/ScriptEngine.HostedScript.csproj index 7bc173607..ce7f6075e 100644 --- a/src/ScriptEngine.HostedScript/ScriptEngine.HostedScript.csproj +++ b/src/ScriptEngine.HostedScript/ScriptEngine.HostedScript.csproj @@ -153,7 +153,7 @@ - + diff --git a/tests/driveinfo.os b/tests/driveinfo.os new file mode 100644 index 000000000..b4ea7941b --- /dev/null +++ b/tests/driveinfo.os @@ -0,0 +1,78 @@ +#Использовать asserts + +Функция ПолучитьСписокТестов(Тестирование) Экспорт + + СписокТестов = Новый Массив; + СписокТестов.Добавить("Тест_Должен_ВернутьДоступноеМесто"); + СписокТестов.Добавить("Тест_Должен_ВернутьИмяФС"); + СписокТестов.Добавить("Тест_Должен_ВернутьТипДиска"); + СписокТестов.Добавить("Тест_Должен_ВернутьГотов"); + СписокТестов.Добавить("Тест_Должен_ВернутьИмя"); + СписокТестов.Добавить("Тест_Должен_ВернутьКорневойКаталог"); + СписокТестов.Добавить("Тест_Должен_ВернутьОбщийОбъемСвободногоМеста"); + СписокТестов.Добавить("Тест_Должен_ВернутьРазмерДиска"); + СписокТестов.Добавить("Тест_Должен_ВернутьМеткаТома"); + + СписокТестов.Добавить("Тест_Должен_ВывестиЗначения"); + + Возврат СписокТестов; + +КонецФункции + +Процедура Тест_Должен_ВернутьДоступноеМесто() Экспорт + ИнформацияОДиске = Новый ИнформацияОДиске(Новый СистемнаяИнформация().ИменаЛогическихДисков[0]); + Ожидаем.Что(ИнформацияОДиске.Доступно).Больше(0); +КонецПроцедуры + +Процедура Тест_Должен_ВернутьИмяФС() Экспорт + ИнформацияОДиске = Новый ИнформацияОДиске(Новый СистемнаяИнформация().ИменаЛогическихДисков[0]); + Ожидаем.Что(ИнформацияОДиске.ИмяФС).ЭтоНе().Равно(""); +КонецПроцедуры + +Процедура Тест_Должен_ВернутьТипДиска() Экспорт + ИнформацияОДиске = Новый ИнформацияОДиске(Новый СистемнаяИнформация().ИменаЛогическихДисков[0]); + Ожидаем.Что(ИнформацияОДиске.ТипДиска).ЭтоНе().Равно(""); +КонецПроцедуры + +Процедура Тест_Должен_ВернутьГотов() Экспорт + ИнформацияОДиске = Новый ИнформацияОДиске(Новый СистемнаяИнформация().ИменаЛогическихДисков[0]); + Ожидаем.Что(ИнформацияОДиске.Готов).ЭтоИстина(); +КонецПроцедуры + +Процедура Тест_Должен_ВернутьИмя() Экспорт + ИнформацияОДиске = Новый ИнформацияОДиске(Новый СистемнаяИнформация().ИменаЛогическихДисков[0]); + Ожидаем.Что(ИнформацияОДиске.Имя).ЭтоНе().Равно(""); +КонецПроцедуры + +Процедура Тест_Должен_ВернутьКорневойКаталог() Экспорт + ИнформацияОДиске = Новый ИнформацияОДиске(Новый СистемнаяИнформация().ИменаЛогическихДисков[0]); + Ожидаем.Что(ИнформацияОДиске.КорневойКаталог.Путь).ЭтоНе().Равно(""); +КонецПроцедуры + +Процедура Тест_Должен_ВернутьОбщийОбъемСвободногоМеста() Экспорт + ИнформацияОДиске = Новый ИнформацияОДиске(Новый СистемнаяИнформация().ИменаЛогическихДисков[0]); + Ожидаем.Что(ИнформацияОДиске.ОбщийОбъемСвободногоМеста).Больше(0); +КонецПроцедуры + +Процедура Тест_Должен_ВернутьРазмерДиска() Экспорт + ИнформацияОДиске = Новый ИнформацияОДиске(Новый СистемнаяИнформация().ИменаЛогическихДисков[0]); + Ожидаем.Что(ИнформацияОДиске.РазмерДиска).Больше(0); +КонецПроцедуры + +Процедура Тест_Должен_ВернутьМеткаТома() Экспорт + ИнформацияОДиске = Новый ИнформацияОДиске(Новый СистемнаяИнформация().ИменаЛогическихДисков[0]); + Ожидаем.Что(ИнформацияОДиске.МеткаТома).Существует(); +КонецПроцедуры + +Процедура Тест_Должен_ВывестиЗначения() Экспорт + ИнформацияОДиске = Новый ИнформацияОДиске(Новый СистемнаяИнформация().ИменаЛогическихДисков[0]); + Сообщить("Доступно: " + ИнформацияОДиске.Доступно); + Сообщить("ИмяФС: " + ИнформацияОДиске.ИмяФС); + Сообщить("ТипДиска: " + ИнформацияОДиске.ТипДиска); + Сообщить("Готов: " + ИнформацияОДиске.Готов); + Сообщить("Имя: " + ИнформацияОДиске.Имя); + Сообщить("КорневойКаталог.Путь: " + ИнформацияОДиске.КорневойКаталог.Путь); + Сообщить("ОбщийОбъемСвободногоМеста: " + ИнформацияОДиске.ОбщийОбъемСвободногоМеста); + Сообщить("РазмерДиска: " + ИнформацияОДиске.РазмерДиска); + Сообщить("МеткаТома: " + ИнформацияОДиске.МеткаТома); +КонецПроцедуры \ No newline at end of file From 70510c334462e385a9d5b7a5bcfdd1838675f803 Mon Sep 17 00:00:00 2001 From: ret-Phoenix Date: Fri, 16 Jun 2017 11:17:50 +0300 Subject: [PATCH 063/168] =?UTF-8?q?+=20=D0=9A=D0=BE=D0=BD=D1=81=D1=82?= =?UTF-8?q?=D1=80=D1=83=D0=BA=D1=82=D0=BE=D1=80=20(=D0=9F=D1=80=D0=B8?= =?UTF-8?q?=D0=A1=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD=D0=B8=D0=B8=D0=9E=D0=B1?= =?UTF-8?q?=D1=8A=D0=B5=D0=BA=D1=82=D0=B0,=20OnObjectCreate)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ScriptEngine.HostedScript/Library/DriveInfo/DriveInfo.cs | 5 ++++- src/ScriptEngine/Machine/Contexts/ScriptDrivenObject.cs | 2 +- tests/testdata/magic-object.os | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/ScriptEngine.HostedScript/Library/DriveInfo/DriveInfo.cs b/src/ScriptEngine.HostedScript/Library/DriveInfo/DriveInfo.cs index 1c570bdd4..e7bf9ced4 100644 --- a/src/ScriptEngine.HostedScript/Library/DriveInfo/DriveInfo.cs +++ b/src/ScriptEngine.HostedScript/Library/DriveInfo/DriveInfo.cs @@ -40,12 +40,15 @@ public string DriveFormat get { return SystemDriveInfo.DriveFormat; } } + /// + /// Возвращает тип диска + /// + /// ТипДиска [ContextProperty("ТипДиска", "DriveType")] public IValue DriveTypeProp { get { var dte = DriveTypeEnum.CreateInstance(); - //Console.WriteLine("index::" + ((int)_driveInfo.DriveType) + "::" + dte.IndexOf(new CLREnumValueWrapper(dte, _driveInfo.DriveType))); return dte.GetPropValue((int)_driveInfo.DriveType); } } diff --git a/src/ScriptEngine/Machine/Contexts/ScriptDrivenObject.cs b/src/ScriptEngine/Machine/Contexts/ScriptDrivenObject.cs index 121f28437..56639e35b 100644 --- a/src/ScriptEngine/Machine/Contexts/ScriptDrivenObject.cs +++ b/src/ScriptEngine/Machine/Contexts/ScriptDrivenObject.cs @@ -119,7 +119,7 @@ public void Initialize(MachineInstance runner) _machine.ExecuteModuleBody(); }); - var methId = GetScriptMethod("конструктор", "constructor"); + var methId = GetScriptMethod("ПриСозданииОбъекта", "OnObjectCreate"); int constructorParamsCount = ConstructorParams.Count(); if (methId > -1) diff --git a/tests/testdata/magic-object.os b/tests/testdata/magic-object.os index 8695e4756..ec942e602 100644 --- a/tests/testdata/magic-object.os +++ b/tests/testdata/magic-object.os @@ -1,2 +1,2 @@ -Процедура Конструктор(Прм1, Прм2, Прм3, Прм4 = 4) +Процедура ПриСозданииОбъекта(Прм1, Прм2, Прм3, Прм4 = 4) КонецПроцедуры \ No newline at end of file From d0fde9218f97e1c6a6c5ba8e46026b6963a5ecc1 Mon Sep 17 00:00:00 2001 From: Sergey Batanov Date: Wed, 14 Jun 2017 15:56:45 +0300 Subject: [PATCH 064/168] =?UTF-8?q?=D0=90=D1=80=D0=B3=D1=83=D0=BC=D0=B5?= =?UTF-8?q?=D0=BD=D1=82=D1=8B=20=D0=BA=D0=BE=D0=BC=D0=B0=D0=BD=D0=B4=D0=BD?= =?UTF-8?q?=D0=BE=D0=B9=20=D1=81=D1=82=D1=80=D0=BE=D0=BA=D0=B8:=20=D0=BA?= =?UTF-8?q?=D1=80=D0=B0=D1=81=D0=BD=D1=8B=D0=B9=20=D1=82=D0=B5=D1=81=D1=82?= =?UTF-8?q?.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/engine-behaviors.os | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tests/engine-behaviors.os b/tests/engine-behaviors.os index 28552eacd..244668787 100644 --- a/tests/engine-behaviors.os +++ b/tests/engine-behaviors.os @@ -40,6 +40,7 @@ ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоВозможноИспользоватьПараметрыОбычногоИсключения"); ВсеТесты.Добавить("ТестДолжен_ПроверитьПередачуПеречисленийЧерезПараметры"); ВсеТесты.Добавить("ТестДолжен_ПроверитьКомпиляциюКлючевыхСловВСвойствахСтруктуры"); + ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоАргументыКоманднойСтрокиЭтоФиксированныйМассив"); Возврат ВсеТесты; @@ -390,3 +391,9 @@ юТест.ПроверитьРавенство(Null, Структура.Null, "Null"); КонецПроцедуры + +Процедура ТестДолжен_ПроверитьЧтоАргументыКоманднойСтрокиЭтоФиксированныйМассив() Экспорт + + юТест.ПроверитьРавенство(ТипЗнч(АргументыКоманднойСтроки), Тип("ФиксированныйМассив"), "Аргументы командной строки - фиксированный массив"); + +КонецПроцедуры From 34cb6f02eb9236e2a2e91cbd718da1093ee3d883 Mon Sep 17 00:00:00 2001 From: Sergey Batanov Date: Wed, 14 Jun 2017 16:11:24 +0300 Subject: [PATCH 065/168] =?UTF-8?q?Fixes=20#450:=20=D0=90=D1=80=D0=B3?= =?UTF-8?q?=D1=83=D0=BC=D0=B5=D0=BD=D1=82=D1=8B=D0=9A=D0=BE=D0=BC=D0=B0?= =?UTF-8?q?=D0=BD=D0=B4=D0=BD=D0=BE=D0=B9=D0=A1=D1=82=D1=80=D0=BE=D0=BA?= =?UTF-8?q?=D0=B8=20-=20=D0=A4=D0=B8=D0=BA=D1=81=D0=9C=D0=B0=D1=81=D1=81?= =?UTF-8?q?=D0=B8=D0=B2.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit АргументыКоманднойСтроки сделаны фиксированным массивом. Отдельный класс удалён. --- .../Library/CommandLineArguments.cs | 118 ------------------ .../Library/SystemGlobalContext.cs | 15 +-- .../ScriptEngine.HostedScript.csproj | 1 - 3 files changed, 8 insertions(+), 126 deletions(-) delete mode 100644 src/ScriptEngine.HostedScript/Library/CommandLineArguments.cs diff --git a/src/ScriptEngine.HostedScript/Library/CommandLineArguments.cs b/src/ScriptEngine.HostedScript/Library/CommandLineArguments.cs deleted file mode 100644 index ef5e30b0d..000000000 --- a/src/ScriptEngine.HostedScript/Library/CommandLineArguments.cs +++ /dev/null @@ -1,118 +0,0 @@ -/*---------------------------------------------------------- -This Source Code Form is subject to the terms of the -Mozilla Public License, v.2.0. If a copy of the MPL -was not distributed with this file, You can obtain one -at http://mozilla.org/MPL/2.0/. -----------------------------------------------------------*/ -using System; -using System.Collections.Generic; -using System.Linq; - -using ScriptEngine.Machine; -using ScriptEngine.Machine.Contexts; - -namespace ScriptEngine.HostedScript.Library -{ - /// - /// Коллекция позволяет получить аргументы, переданные сценарию в командной строке. - /// Коллекция представляет собой массив в режиме "ТолькоДляЧтения". Обращение к аргументам осуществляется по порядковому индексу. - /// - [ContextClass("КоллекцияАргументовКоманднойСтроки", "CommandLineArgumentsCollection")] - public class CommandLineArguments : ContextIValueImpl, ICollectionContext - { - private readonly string[] _values; - - public CommandLineArguments(string[] arguments) - { - _values = arguments; - } - - public override bool IsIndexed - { - get - { - return true; - } - } - - public override IValue GetIndexedValue(IValue index) - { - var arrIdx = (int)index.AsNumber(); - return ValueFactory.Create(_values[arrIdx]); - } - - public override void SetIndexedValue(IValue index, IValue val) - { - throw new RuntimeException("Коллекция предназначена только для чтения"); - } - - public override int FindMethod(string name) - { - if (name.ToLower() == "количество" || name.ToLower() == "count") - { - return 0; - } - else - throw RuntimeException.MethodNotFoundException(name); - } - - public override IEnumerable GetMethods() - { - yield return GetMethodInfo(0); - } - - public override void CallAsFunction(int methodNumber, IValue[] arguments, out IValue retValue) - { - if (methodNumber == 0) - retValue = ValueFactory.Create(this.Count()); - else - retValue = null; - } - - public override void CallAsProcedure(int methodNumber, IValue[] arguments) - { - } - - public override MethodInfo GetMethodInfo(int methodNumber) - { - if (methodNumber == 0) - return new MethodInfo() - { - Name = "количество", - Alias = "count", - IsFunction = true, - Params = new ParameterDefinition[0] - }; - else - throw new InvalidOperationException(); - } - - - #region ICollectionContext Members - - public int Count() - { - return _values.Length; - } - - public void Clear() - { - throw new RuntimeException("Коллекция предназначена только для чтения"); - } - - public CollectionEnumerator GetManagedIterator() - { - return new CollectionEnumerator(_values.Select(x=>ValueFactory.Create(x))); - } - - #endregion - - - private static readonly CommandLineArguments _empty = new CommandLineArguments(new string[0]); - - public static CommandLineArguments Empty - { - get { return _empty; } - } - } -} diff --git a/src/ScriptEngine.HostedScript/Library/SystemGlobalContext.cs b/src/ScriptEngine.HostedScript/Library/SystemGlobalContext.cs index cdc02d89d..5f28f3b66 100644 --- a/src/ScriptEngine.HostedScript/Library/SystemGlobalContext.cs +++ b/src/ScriptEngine.HostedScript/Library/SystemGlobalContext.cs @@ -25,7 +25,7 @@ namespace ScriptEngine.HostedScript.Library public class SystemGlobalContext : IRuntimeContextInstance, IAttachableContext { private IVariable[] _state; - private CommandLineArguments _args; + private FixedArrayImpl _args; private SymbolsContext _symbols; private readonly DynamicPropertiesHolder _propHolder = new DynamicPropertiesHolder(); private readonly List> _properties = new List>(); @@ -255,14 +255,15 @@ public IRuntimeContextInstance CommandLineArguments { if (_args == null) { - if (ApplicationHost == null) + var argsArray = new ArrayImpl(); + if (ApplicationHost != null) { - _args = Library.CommandLineArguments.Empty; - } - else - { - _args = new CommandLineArguments(ApplicationHost.GetCommandLineArguments()); + foreach (var arg in ApplicationHost.GetCommandLineArguments()) + { + argsArray.Add(ValueFactory.Create(arg)); + } } + _args = new FixedArrayImpl(argsArray); } return _args; diff --git a/src/ScriptEngine.HostedScript/ScriptEngine.HostedScript.csproj b/src/ScriptEngine.HostedScript/ScriptEngine.HostedScript.csproj index 17664714e..be6d100e4 100644 --- a/src/ScriptEngine.HostedScript/ScriptEngine.HostedScript.csproj +++ b/src/ScriptEngine.HostedScript/ScriptEngine.HostedScript.csproj @@ -113,7 +113,6 @@ - From 0c3d0d5db04acea4aa212abc13f292d240ebab1a Mon Sep 17 00:00:00 2001 From: Andrei Ovsiankin Date: Fri, 16 Jun 2017 17:28:01 +0300 Subject: [PATCH 066/168] =?UTF-8?q?=D0=9E=D1=82=D0=BA=D0=B0=D1=82=20=D0=BD?= =?UTF-8?q?=D0=B0=2015=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8=D1=8E=20=D1=81?= =?UTF-8?q?=D1=82=D1=83=D0=B4=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/1Script.sln | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/1Script.sln b/src/1Script.sln index 693922243..38a9dbac9 100644 --- a/src/1Script.sln +++ b/src/1Script.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.26403.7 +# Visual Studio 14 +VisualStudioVersion = 14.0.25420.1 MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestApp", "TestApp\TestApp.csproj", "{4585BA5D-9EC4-4C89-8250-2033D2AC2999}" ProjectSection(ProjectDependencies) = postProject From 7915f0ebb17c50547c952cbd0d6ff31eb7b5de79 Mon Sep 17 00:00:00 2001 From: Sergey Batanov Date: Sun, 18 Jun 2017 18:53:22 +0300 Subject: [PATCH 067/168] =?UTF-8?q?msbuild=20=D0=B2=D0=BC=D0=B5=D1=81?= =?UTF-8?q?=D1=82=D0=BE=20xbuild.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- install/build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/build.sh b/install/build.sh index 89139184a..774a779db 100755 --- a/install/build.sh +++ b/install/build.sh @@ -4,5 +4,5 @@ # ./build.sh /p:Platform="x86" to build for x86 cd `dirname $0` -xbuild /p:Platform="Any CPU" /p:Configuration="Release" $@ ../src/1Script_Mono.sln +msbuild /p:Platform="Any CPU" /p:Configuration="Release" $@ ../src/1Script_Mono.sln From 60f1d6d2bd7d464095dd5ec0c4de94f6f67c54d8 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Mon, 19 Jun 2017 09:56:41 +0300 Subject: [PATCH 068/168] =?UTF-8?q?=D0=A3=D0=B1=D1=80=D0=B0=D0=BB=20=D0=BA?= =?UTF-8?q?=D0=BE=D0=BC=D0=BC=D0=B5=D0=BD=D1=82=D0=B8=D1=80=D0=BE=D0=B2?= =?UTF-8?q?=D0=B0=D0=BD=D0=BD=D1=8B=D0=B9=20=D0=BA=D0=BE=D0=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Library/SystemEnvironmentContext.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/ScriptEngine.HostedScript/Library/SystemEnvironmentContext.cs b/src/ScriptEngine.HostedScript/Library/SystemEnvironmentContext.cs index 80ab43729..114423f2b 100644 --- a/src/ScriptEngine.HostedScript/Library/SystemEnvironmentContext.cs +++ b/src/ScriptEngine.HostedScript/Library/SystemEnvironmentContext.cs @@ -147,8 +147,7 @@ public string GetFolderPath(IValue folder) case SpecialFolder.UserProfile: val = System.Environment.GetFolderPath((System.Environment.SpecialFolder.UserProfile)); break; } return val; - - //return System.Environment.GetFolderPath((System.Environment.SpecialFolder)folder.AsNumber()); + } /// From a01b762955de485376f15fea565e873b6892fb55 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Mon, 19 Jun 2017 09:57:03 +0300 Subject: [PATCH 069/168] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B5=D0=B2=D0=B5?= =?UTF-8?q?=D0=BB=20=D0=BD=D0=B0=20=D0=A4=D0=B8=D0=BA=D1=81=D0=B8=D1=80?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0=D0=BD=D0=BD=D1=8B=D0=B9=D0=9C=D0=B0=D1=81?= =?UTF-8?q?=D1=81=D0=B8=D0=B2=20=D0=B8=D0=BC=D0=B5=D0=BD=D0=B0=20=D0=BB?= =?UTF-8?q?=D0=BE=D0=B3=D0=B8=D1=87=D0=B5=D1=81=D0=BA=D0=B8=D1=85=20=D0=B4?= =?UTF-8?q?=D0=B8=D1=81=D0=BA=D0=BE=D0=B2.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Library/SystemEnvironmentContext.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/ScriptEngine.HostedScript/Library/SystemEnvironmentContext.cs b/src/ScriptEngine.HostedScript/Library/SystemEnvironmentContext.cs index 114423f2b..548d275c9 100644 --- a/src/ScriptEngine.HostedScript/Library/SystemEnvironmentContext.cs +++ b/src/ScriptEngine.HostedScript/Library/SystemEnvironmentContext.cs @@ -154,17 +154,17 @@ public string GetFolderPath(IValue folder) /// Возвращает массив строк, содержащий имена логических дисков текущего компьютера. /// [ContextProperty("ИменаЛогическихДисков")] - public ArrayImpl GetLogicalDrives + public FixedArrayImpl GetLogicalDrives { get { - ArrayImpl arr = new ArrayImpl(); + var arr = new ArrayImpl(); var data = System.Environment.GetLogicalDrives(); foreach (var itm in data) { arr.Add(ValueFactory.Create(itm)); } - return arr; + return new FixedArrayImpl(arr); } } From 02d637816745c28cff9fc95a96b18549a44b7871 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Mon, 19 Jun 2017 10:07:06 +0300 Subject: [PATCH 070/168] =?UTF-8?q?=D0=A3=D0=B1=D1=80=D0=B0=D0=BB=20=D0=BE?= =?UTF-8?q?=D1=82=D0=BB=D0=B0=D0=B4=D0=BE=D1=87=D0=BD=D1=8B=D0=B9=20=D0=B2?= =?UTF-8?q?=D1=8B=D0=B2=D0=BE=D0=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Library/SystemEnvironmentContext.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/ScriptEngine.HostedScript/Library/SystemEnvironmentContext.cs b/src/ScriptEngine.HostedScript/Library/SystemEnvironmentContext.cs index 548d275c9..60c23ea3e 100644 --- a/src/ScriptEngine.HostedScript/Library/SystemEnvironmentContext.cs +++ b/src/ScriptEngine.HostedScript/Library/SystemEnvironmentContext.cs @@ -128,8 +128,7 @@ public int TickCount public string GetFolderPath(IValue folder) { var val = ""; - System.Console.WriteLine(folder.SystemType.Name); - + switch (((CLREnumValueWrapper)folder).UnderlyingValue) { case SpecialFolder.ApplicationData: val = System.Environment.GetFolderPath((System.Environment.SpecialFolder.ApplicationData)); break; From 29c15ca91b1f39e79da2ae1b42499ece731f907e Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Mon, 19 Jun 2017 10:07:42 +0300 Subject: [PATCH 071/168] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B5=D0=B8=D0=BC?= =?UTF-8?q?=D0=B5=D0=BD=D0=BE=D0=B2=D0=B0=D0=BB=20=D0=BF=D0=B5=D1=80=D0=B5?= =?UTF-8?q?=D1=87=D0=B8=D1=81=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5,=20=D1=82.?= =?UTF-8?q?=D0=BA.=20=D0=B7=D0=BD=D0=B0=D1=87=D0=B5=D0=BD=D0=B8=D1=8F=20?= =?UTF-8?q?=D1=8D=D0=BA=D0=B2=D0=B8=D0=B2=D0=B0=D0=BB=D0=B5=D0=BD=D1=82?= =?UTF-8?q?=D0=BD=D1=8B,=20=D0=B0=20=D0=BD=D0=B0=D0=B7=D0=B2=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=B1=D0=BE=D0=BB=D0=B5=D0=B5=20=D0=BF=D1=80?= =?UTF-8?q?=D0=B8=D0=B2=D1=8B=D1=87=D0=BD=D0=BE.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ScriptEngine.HostedScript/Library/SpecialFolderEnum.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ScriptEngine.HostedScript/Library/SpecialFolderEnum.cs b/src/ScriptEngine.HostedScript/Library/SpecialFolderEnum.cs index 7ec99711c..5aa7571b9 100644 --- a/src/ScriptEngine.HostedScript/Library/SpecialFolderEnum.cs +++ b/src/ScriptEngine.HostedScript/Library/SpecialFolderEnum.cs @@ -24,7 +24,7 @@ public static SpecialFolderEnum CreateInstance() instance = new SpecialFolderEnum(type, enumValueType); - instance.AddValue("РепозиторийДокументов", "Personal", new CLREnumValueWrapper(instance, SpecialFolder.Personal)); + instance.AddValue("МоиДокументы", "Personal", new CLREnumValueWrapper(instance, SpecialFolder.Personal)); instance.AddValue("ДанныеПриложений", "ApplicationData", new CLREnumValueWrapper(instance, SpecialFolder.ApplicationData)); instance.AddValue("ЛокальныйКаталогДанныхПриложений", "LocalApplicationData", new CLREnumValueWrapper(instance, SpecialFolder.LocalApplicationData)); instance.AddValue("РабочийСтол", "Desktop", new CLREnumValueWrapper(instance, SpecialFolder.Desktop)); From 196830fd9a8f54145799d6cc1b938f71cef859b9 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Mon, 19 Jun 2017 10:16:32 +0300 Subject: [PATCH 072/168] =?UTF-8?q?=D0=9F=D1=80=D0=B5=D0=B0=D0=BC=D0=B1?= =?UTF-8?q?=D1=83=D0=BB=D0=B0=20=D1=81=20=D0=BB=D0=B8=D1=86=D0=B5=D0=BD?= =?UTF-8?q?=D0=B7=D0=B8=D0=B5=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Library/SpecialFolderEnum.cs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/ScriptEngine.HostedScript/Library/SpecialFolderEnum.cs b/src/ScriptEngine.HostedScript/Library/SpecialFolderEnum.cs index 5aa7571b9..ddabf6864 100644 --- a/src/ScriptEngine.HostedScript/Library/SpecialFolderEnum.cs +++ b/src/ScriptEngine.HostedScript/Library/SpecialFolderEnum.cs @@ -1,4 +1,11 @@ -using ScriptEngine.Machine; +/*---------------------------------------------------------- +This Source Code Form is subject to the terms of the +Mozilla Public License, v.2.0. If a copy of the MPL +was not distributed with this file, You can obtain one +at http://mozilla.org/MPL/2.0/. +----------------------------------------------------------*/ + +using ScriptEngine.Machine; using ScriptEngine.Machine.Contexts; using System; using System.Collections.Generic; From e283c96d697b89d7679a37dd56f3306528eca457 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Mon, 19 Jun 2017 10:27:02 +0300 Subject: [PATCH 073/168] =?UTF-8?q?=D0=A3=D0=BF=D1=80=D0=BE=D1=81=D1=82?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=B8=D1=81=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=A1=D0=BF=D0=B5=D1=86=D0=B8?= =?UTF-8?q?=D0=B0=D0=BB=D1=8C=D0=BD=D0=BE=D0=B9=D0=9F=D0=B0=D0=BF=D0=BA?= =?UTF-8?q?=D0=B8,=20=D0=BF=D1=80=D0=B8=D0=B2=D1=8F=D0=B7=D0=B0=D0=BB=20?= =?UTF-8?q?=D0=BD=D0=B0=D0=BF=D1=80=D1=8F=D0=BC=D1=83=D1=8E=20=D0=BA=20?= =?UTF-8?q?=D1=81=D0=B8=D1=81=D1=82=D0=B5=D0=BC=D0=BD=D0=BE=D0=BC=D1=83=20?= =?UTF-8?q?=D0=BF=D0=B5=D1=80=D0=B5=D1=87=D0=B8=D1=81=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D1=8E.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Library/SpecialFolderEnum.cs | 48 ++++++------------- .../Library/SystemEnvironmentContext.cs | 24 ++-------- 2 files changed, 20 insertions(+), 52 deletions(-) diff --git a/src/ScriptEngine.HostedScript/Library/SpecialFolderEnum.cs b/src/ScriptEngine.HostedScript/Library/SpecialFolderEnum.cs index ddabf6864..ece5d2ec7 100644 --- a/src/ScriptEngine.HostedScript/Library/SpecialFolderEnum.cs +++ b/src/ScriptEngine.HostedScript/Library/SpecialFolderEnum.cs @@ -7,10 +7,8 @@ This Source Code Form is subject to the terms of the using ScriptEngine.Machine; using ScriptEngine.Machine.Contexts; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; + +using sysFolder = System.Environment.SpecialFolder; namespace ScriptEngine.HostedScript.Library { @@ -27,41 +25,25 @@ public static SpecialFolderEnum CreateInstance() { SpecialFolderEnum instance; var type = TypeManager.RegisterType("ПеречислениеСпециальнаяПапка", typeof(SpecialFolderEnum)); - var enumValueType = TypeManager.RegisterType("СпециальнаяПапка", typeof(CLREnumValueWrapper)); + var enumValueType = TypeManager.RegisterType("СпециальнаяПапка", typeof(CLREnumValueWrapper)); instance = new SpecialFolderEnum(type, enumValueType); - instance.AddValue("МоиДокументы", "Personal", new CLREnumValueWrapper(instance, SpecialFolder.Personal)); - instance.AddValue("ДанныеПриложений", "ApplicationData", new CLREnumValueWrapper(instance, SpecialFolder.ApplicationData)); - instance.AddValue("ЛокальныйКаталогДанныхПриложений", "LocalApplicationData", new CLREnumValueWrapper(instance, SpecialFolder.LocalApplicationData)); - instance.AddValue("РабочийСтол", "Desktop", new CLREnumValueWrapper(instance, SpecialFolder.Desktop)); - instance.AddValue("КаталогРабочийСтол", "DesktopDirectory", new CLREnumValueWrapper(instance, SpecialFolder.DesktopDirectory)); - instance.AddValue("МояМузыка", "MyMusic", new CLREnumValueWrapper(instance, SpecialFolder.MyMusic)); - instance.AddValue("МоиРисунки", "MyPictures", new CLREnumValueWrapper(instance, SpecialFolder.MyPictures)); - instance.AddValue("Шаблоны", "Templates", new CLREnumValueWrapper(instance, SpecialFolder.Templates)); - instance.AddValue("МоиВидеозаписи", "MyVideos", new CLREnumValueWrapper(instance, SpecialFolder.MyVideos)); - instance.AddValue("ОбщиеШаблоны", "CommonTemplates", new CLREnumValueWrapper(instance, SpecialFolder.CommonTemplates)); - instance.AddValue("ПрофильПользователя", "UserProfile", new CLREnumValueWrapper(instance, SpecialFolder.UserProfile)); - instance.AddValue("ОбщийКаталогДанныхПриложения", "CommonApplicationData", new CLREnumValueWrapper(instance, SpecialFolder.CommonApplicationData)); + instance.AddValue("МоиДокументы", "MyDocuments", new CLREnumValueWrapper(instance, sysFolder.Personal)); + instance.AddValue("ДанныеПриложений", "ApplicationData", new CLREnumValueWrapper(instance, sysFolder.ApplicationData)); + instance.AddValue("ЛокальныйКаталогДанныхПриложений", "LocalApplicationData", new CLREnumValueWrapper(instance, sysFolder.LocalApplicationData)); + instance.AddValue("РабочийСтол", "Desktop", new CLREnumValueWrapper(instance, sysFolder.Desktop)); + instance.AddValue("КаталогРабочийСтол", "DesktopDirectory", new CLREnumValueWrapper(instance, sysFolder.DesktopDirectory)); + instance.AddValue("МояМузыка", "MyMusic", new CLREnumValueWrapper(instance, sysFolder.MyMusic)); + instance.AddValue("МоиРисунки", "MyPictures", new CLREnumValueWrapper(instance, sysFolder.MyPictures)); + instance.AddValue("Шаблоны", "Templates", new CLREnumValueWrapper(instance, sysFolder.Templates)); + instance.AddValue("МоиВидеозаписи", "MyVideos", new CLREnumValueWrapper(instance, sysFolder.MyVideos)); + instance.AddValue("ОбщиеШаблоны", "CommonTemplates", new CLREnumValueWrapper(instance, sysFolder.CommonTemplates)); + instance.AddValue("ПрофильПользователя", "UserProfile", new CLREnumValueWrapper(instance, sysFolder.UserProfile)); + instance.AddValue("ОбщийКаталогДанныхПриложения", "CommonApplicationData", new CLREnumValueWrapper(instance, sysFolder.CommonApplicationData)); return instance; } } - public enum SpecialFolder - { - Personal = 0x05, - ApplicationData = 0x1a, - LocalApplicationData = 0x1c, - Desktop = 0x00, - DesktopDirectory = 0x10, - MyMusic = 0x0d, - MyPictures = 0x27, - Templates = 0x15, - MyVideos = 0x0e, - CommonTemplates = 0x2d, - Fonts = 0x14, - UserProfile = 0x28, - CommonApplicationData = 0x23 - } } diff --git a/src/ScriptEngine.HostedScript/Library/SystemEnvironmentContext.cs b/src/ScriptEngine.HostedScript/Library/SystemEnvironmentContext.cs index 60c23ea3e..665a216c8 100644 --- a/src/ScriptEngine.HostedScript/Library/SystemEnvironmentContext.cs +++ b/src/ScriptEngine.HostedScript/Library/SystemEnvironmentContext.cs @@ -127,25 +127,11 @@ public int TickCount [ContextMethod("ПолучитьПутьПапки")] public string GetFolderPath(IValue folder) { - var val = ""; - - switch (((CLREnumValueWrapper)folder).UnderlyingValue) - { - case SpecialFolder.ApplicationData: val = System.Environment.GetFolderPath((System.Environment.SpecialFolder.ApplicationData)); break; - case SpecialFolder.CommonApplicationData: val = System.Environment.GetFolderPath((System.Environment.SpecialFolder.CommonApplicationData)); break; - case SpecialFolder.CommonTemplates: val = System.Environment.GetFolderPath((System.Environment.SpecialFolder.CommonTemplates)); break; - case SpecialFolder.Desktop: val = System.Environment.GetFolderPath((System.Environment.SpecialFolder.Desktop)); break; - case SpecialFolder.DesktopDirectory: val = System.Environment.GetFolderPath((System.Environment.SpecialFolder.DesktopDirectory)); break; - case SpecialFolder.Fonts: val = System.Environment.GetFolderPath((System.Environment.SpecialFolder.Fonts)); break; - case SpecialFolder.LocalApplicationData: val = System.Environment.GetFolderPath((System.Environment.SpecialFolder.LocalApplicationData)); break; - case SpecialFolder.MyMusic: val = System.Environment.GetFolderPath((System.Environment.SpecialFolder.MyMusic)); break; - case SpecialFolder.MyPictures: val = System.Environment.GetFolderPath((System.Environment.SpecialFolder.MyPictures)); break; - case SpecialFolder.MyVideos: val = System.Environment.GetFolderPath((System.Environment.SpecialFolder.MyVideos)); break; - case SpecialFolder.Personal: val = System.Environment.GetFolderPath((System.Environment.SpecialFolder.Personal)); break; - case SpecialFolder.Templates: val = System.Environment.GetFolderPath((System.Environment.SpecialFolder.Templates)); break; - case SpecialFolder.UserProfile: val = System.Environment.GetFolderPath((System.Environment.SpecialFolder.UserProfile)); break; - } - return val; + var typedValue = folder as CLREnumValueWrapper; + if (typedValue == null) + throw RuntimeException.InvalidArgumentType(); + + return System.Environment.GetFolderPath(typedValue.UnderlyingValue); } From 8606c253a9fb73c7ca7c62df127d00f510f67da0 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Mon, 19 Jun 2017 10:27:35 +0300 Subject: [PATCH 074/168] =?UTF-8?q?=D0=97=D0=B0=D0=BA=D0=BE=D0=BC=D0=BC?= =?UTF-8?q?=D0=B5=D0=BD=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=BD?= =?UTF-8?q?=D1=8B=D0=B9=20=D0=BA=D0=BE=D0=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Library/SystemEnvironmentContext.cs | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/src/ScriptEngine.HostedScript/Library/SystemEnvironmentContext.cs b/src/ScriptEngine.HostedScript/Library/SystemEnvironmentContext.cs index 665a216c8..4e17a7578 100644 --- a/src/ScriptEngine.HostedScript/Library/SystemEnvironmentContext.cs +++ b/src/ScriptEngine.HostedScript/Library/SystemEnvironmentContext.cs @@ -110,20 +110,7 @@ public int TickCount { get { return System.Environment.TickCount; } } - - - ///// - ///// Список специальных папок - ///// - //[ContextProperty("СпециальнаяПапка")] - //public IValue SpecialFolder - //{ - // get - // { - // return new ServiceStartModeEnum(); - // } - //} - + [ContextMethod("ПолучитьПутьПапки")] public string GetFolderPath(IValue folder) { From a7dbb9f3873611eb2a91bd3174780af57b69918b Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Mon, 19 Jun 2017 10:41:35 +0300 Subject: [PATCH 075/168] =?UTF-8?q?=D0=94=D0=BE=D0=BA=D1=83=D0=BC=D0=B5?= =?UTF-8?q?=D0=BD=D1=82=D0=B0=D1=86=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Library/SpecialFolderEnum.cs | 3 +++ .../Library/SystemEnvironmentContext.cs | 20 ++++++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/ScriptEngine.HostedScript/Library/SpecialFolderEnum.cs b/src/ScriptEngine.HostedScript/Library/SpecialFolderEnum.cs index ece5d2ec7..3f0fe9242 100644 --- a/src/ScriptEngine.HostedScript/Library/SpecialFolderEnum.cs +++ b/src/ScriptEngine.HostedScript/Library/SpecialFolderEnum.cs @@ -12,6 +12,9 @@ This Source Code Form is subject to the terms of the namespace ScriptEngine.HostedScript.Library { + /// + /// Системное перечисление для специальных папок. + /// [SystemEnum("СпециальнаяПапка", "SpecialFolder")] class SpecialFolderEnum : EnumerationContext { diff --git a/src/ScriptEngine.HostedScript/Library/SystemEnvironmentContext.cs b/src/ScriptEngine.HostedScript/Library/SystemEnvironmentContext.cs index 4e17a7578..cdd618cf4 100644 --- a/src/ScriptEngine.HostedScript/Library/SystemEnvironmentContext.cs +++ b/src/ScriptEngine.HostedScript/Library/SystemEnvironmentContext.cs @@ -110,7 +110,25 @@ public int TickCount { get { return System.Environment.TickCount; } } - + + /// + /// Возвращает путь для специальной папки. Поддерживаемые значения: + /// + /// * МоиДокументы / MyDocuments + /// * ДанныеПриложений / ApplicationData + /// * ЛокальныйКаталогДанныхПриложений / LocalApplicationData + /// * РабочийСтол / Desktop + /// * КаталогРабочийСтол / DesktopDirectory + /// * МояМузыка / MyMusic + /// * МоиРисунки / MyPictures + /// * Шаблоны / Templates + /// * МоиВидеозаписи / MyVideos + /// * ОбщиеШаблоны / CommonTemplates + /// * ПрофильПользователя / UserProfile + /// * ОбщийКаталогДанныхПриложения / CommonApplicationData + /// + /// Тип: СпециальнаяПапка + /// Строка [ContextMethod("ПолучитьПутьПапки")] public string GetFolderPath(IValue folder) { From 97524727e7b983efd94f168da168cad03d3b306b Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Mon, 19 Jun 2017 12:45:19 +0300 Subject: [PATCH 076/168] =?UTF-8?q?=D0=9A=D0=BE=D0=BD=D1=81=D0=BE=D0=BB?= =?UTF-8?q?=D1=8C=D0=BD=D1=8B=D0=B9=20=D0=B1=D0=B8=D0=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ScriptEngine.HostedScript/Library/ConsoleContext.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ScriptEngine.HostedScript/Library/ConsoleContext.cs b/src/ScriptEngine.HostedScript/Library/ConsoleContext.cs index d14d689ce..4b939fa83 100644 --- a/src/ScriptEngine.HostedScript/Library/ConsoleContext.cs +++ b/src/ScriptEngine.HostedScript/Library/ConsoleContext.cs @@ -165,7 +165,7 @@ public IValue InputEncoding [ContextMethod("Сигнал")] public void Beep() { - System.Media.SystemSounds.Beep.Play(); + Console.Beep(); } [ScriptConstructor] From 52fb6d76b834a047fb82df060cc174a9509171b3 Mon Sep 17 00:00:00 2001 From: Sergey Batanov Date: Tue, 20 Jun 2017 09:49:16 +0300 Subject: [PATCH 077/168] =?UTF-8?q?=D0=97=D0=B0=D0=B3=D1=80=D1=83=D0=B7?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=B1=D0=B8=D0=B1=D0=BB=D0=B8=D0=BE=D1=82=D0=B5?= =?UTF-8?q?=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/NUnitTests/NUnitTests.csproj | 5 ++++- src/NUnitTests/TestRunnerTest.cs | 17 ++++++----------- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/src/NUnitTests/NUnitTests.csproj b/src/NUnitTests/NUnitTests.csproj index 99ee79183..01674d709 100644 --- a/src/NUnitTests/NUnitTests.csproj +++ b/src/NUnitTests/NUnitTests.csproj @@ -71,6 +71,9 @@ + + + @@ -98,4 +101,4 @@ --> - + \ No newline at end of file diff --git a/src/NUnitTests/TestRunnerTest.cs b/src/NUnitTests/TestRunnerTest.cs index 5e8830c13..7b20dd809 100644 --- a/src/NUnitTests/TestRunnerTest.cs +++ b/src/NUnitTests/TestRunnerTest.cs @@ -1,5 +1,5 @@ using System; - +using System.IO; using NUnit.Framework; namespace NUnitTests @@ -10,30 +10,25 @@ public class UnitTestWrapper const int TEST_STATE_FAILED = 3; private EngineWrapperNUnit host; + private string solutionRoot; [OneTimeSetUp] public void Initialize() { host = new EngineWrapperNUnit(); host.StartEngine(); + solutionRoot = Path.Combine(TestContext.CurrentContext.TestDirectory, "..", "..", "..", ".."); + host.Engine.InitExternalLibraries(Path.Combine(solutionRoot, "oscript-library", "src"), null); } [Test] public void RunEngineTests() { - host = new EngineWrapperNUnit(); - host.StartEngine(); + String testRunnerPath = Path.Combine(solutionRoot, "tests", "testrunner.os"); - String testRunnerPath = System.IO.Path.Combine( - NUnit.Framework.TestContext.CurrentContext.TestDirectory, "..","..","..","..", - "tests", "testrunner.os" - ); - - NUnit.Framework.Assert.IsTrue(System.IO.File.Exists(testRunnerPath), + Assert.IsTrue(File.Exists(testRunnerPath), "Запускатель тестов отсутствует по пути " + testRunnerPath); - - var result = host.RunTestScriptFromPath(testRunnerPath, "-runall " + new System.IO.FileInfo(testRunnerPath).Directory.FullName); if (result == TEST_STATE_FAILED) From d06d321367c635a8c5fd31e3d7f1798b3c4c422b Mon Sep 17 00:00:00 2001 From: Sergey Batanov Date: Tue, 20 Jun 2017 11:12:19 +0300 Subject: [PATCH 078/168] =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D1=91?= =?UTF-8?q?=D0=BD=20=D1=81=D0=BF=D0=BE=D1=81=D0=BE=D0=B1=20=D0=BE=D0=BF?= =?UTF-8?q?=D1=80=D0=B5=D0=B4=D0=B5=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=BF?= =?UTF-8?q?=D1=83=D1=82=D0=B8=20=D0=BA=20=D1=84=D0=B0=D0=B9=D0=BB=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/oscript/CgiBehavior.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/oscript/CgiBehavior.cs b/src/oscript/CgiBehavior.cs index 232df4ffd..70f3a3442 100644 --- a/src/oscript/CgiBehavior.cs +++ b/src/oscript/CgiBehavior.cs @@ -29,10 +29,10 @@ public CgiBehavior() public override int Execute() { string scriptFile; - scriptFile = Environment.GetEnvironmentVariable("PATH_TRANSLATED"); + scriptFile = Environment.GetEnvironmentVariable("SCRIPT_FILENAME"); if (scriptFile == null) { - scriptFile = Environment.GetEnvironmentVariable("SCRIPT_FILENAME"); + scriptFile = Environment.GetEnvironmentVariable("PATH_TRANSLATED"); } if (scriptFile == null) From e94ea4681a9af95fa1a774f8ee03c58920d97d90 Mon Sep 17 00:00:00 2001 From: Sergey Batanov Date: Tue, 20 Jun 2017 12:06:40 +0300 Subject: [PATCH 079/168] =?UTF-8?q?CGI:=20=D0=9E=D1=82=D0=BF=D1=80=D0=B0?= =?UTF-8?q?=D0=B2=D0=B8=D1=82=D1=8C=D0=A4=D0=B0=D0=B9=D0=BB.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit В режиме CGI добавлена команда отдачи файла. --- src/oscript/CgiBehavior.cs | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/oscript/CgiBehavior.cs b/src/oscript/CgiBehavior.cs index 70f3a3442..da6701083 100644 --- a/src/oscript/CgiBehavior.cs +++ b/src/oscript/CgiBehavior.cs @@ -12,6 +12,7 @@ This Source Code Form is subject to the terms of the using System; using System.Collections.Generic; using System.Linq; +using System.IO; using System.Text; namespace oscript @@ -99,6 +100,36 @@ public void Header(string header, string value) _headersWritten.Add(header); } + [ContextMethod("ОтдатьФайл", "SendFile")] + public void SendFile(string filePath, string downloadFileName = null) + { + if (_isContentEchoed) + { + throw new InvalidOperationException("Content already sent!"); + } + + if (!IsHeaderWritten("Content-type")) + { + Header("Content-type", "application/octet-stream"); + } + if (string.IsNullOrEmpty(downloadFileName)) + { + var finfo = new FileInfo(filePath); + downloadFileName = finfo.Name; + } + using (var fs = new FileStream(filePath, FileMode.Open)) + { + Header("Content-disposition", string.Format("inline; filename=\"{0}\"", downloadFileName)); + Header("Content-length", fs.Length.ToString()); + oscript.Output.WriteLine(); + + using (var stdout = Console.OpenStandardOutput()) + { + fs.CopyTo(stdout); + } + } + } + public Encoding Encoding { get; set; } private bool IsHeaderWritten(string header) From 763bd1b5eccd13f0d7aa53e557e272fed29068a8 Mon Sep 17 00:00:00 2001 From: Sergey Batanov Date: Tue, 20 Jun 2017 12:45:21 +0300 Subject: [PATCH 080/168] =?UTF-8?q?CGI:=20=D0=9E=D1=82=D0=BF=D1=80=D0=B0?= =?UTF-8?q?=D0=B2=D0=B8=D1=82=D1=8C=D0=A4=D0=B0=D0=B9=D0=BB.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ОтдатьФайл Переименовано в ОтправитьФайл. --- src/oscript/CgiBehavior.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/oscript/CgiBehavior.cs b/src/oscript/CgiBehavior.cs index da6701083..33f78d21d 100644 --- a/src/oscript/CgiBehavior.cs +++ b/src/oscript/CgiBehavior.cs @@ -100,7 +100,7 @@ public void Header(string header, string value) _headersWritten.Add(header); } - [ContextMethod("ОтдатьФайл", "SendFile")] + [ContextMethod("ОтправитьФайл", "SendFile")] public void SendFile(string filePath, string downloadFileName = null) { if (_isContentEchoed) From 8eb0c7650bba7d815f4a8d95aeb8ba8e8085acc4 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Tue, 20 Jun 2017 13:51:06 +0300 Subject: [PATCH 081/168] =?UTF-8?q?=D0=9A=D0=BB=D1=8E=D1=87=D0=B8=20-check?= =?UTF-8?q?=20-compile=20=D0=B2=D1=8B=D0=B4=D0=B0=D1=8E=D1=82=20=D0=BE?= =?UTF-8?q?=D1=88=D0=B8=D0=B1=D0=BA=D1=83:=20Object=20reference=20not=20se?= =?UTF-8?q?t=20to=20an=20instance=20of=20an=20object.=20fixes=20#457?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../HostedScriptEngine.cs | 2 +- src/oscript/CheckSyntaxBehavior.cs | 2 + src/oscript/DoNothingHost.cs | 37 +++++++++++++++++++ src/oscript/ShowCompiledBehavior.cs | 1 + src/oscript/oscript.csproj | 1 + 5 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 src/oscript/DoNothingHost.cs diff --git a/src/ScriptEngine.HostedScript/HostedScriptEngine.cs b/src/ScriptEngine.HostedScript/HostedScriptEngine.cs index 8847432c5..4fe96eb77 100644 --- a/src/ScriptEngine.HostedScript/HostedScriptEngine.cs +++ b/src/ScriptEngine.HostedScript/HostedScriptEngine.cs @@ -208,7 +208,7 @@ public Process CreateProcess(IHostApplication host, ScriptModuleHandle moduleHan return InitProcess(host, ref module); } - private void SetGlobalEnvironment(IHostApplication host, ICodeSource src) + public void SetGlobalEnvironment(IHostApplication host, ICodeSource src) { _globalCtx.ApplicationHost = host; _globalCtx.CodeSource = src; diff --git a/src/oscript/CheckSyntaxBehavior.cs b/src/oscript/CheckSyntaxBehavior.cs index 88a0d2318..d5bf31e01 100644 --- a/src/oscript/CheckSyntaxBehavior.cs +++ b/src/oscript/CheckSyntaxBehavior.cs @@ -41,6 +41,8 @@ public override int Execute() ScriptFileHelper.OnBeforeScriptRead(hostedScript); var source = hostedScript.Loader.FromFile(_path); + hostedScript.SetGlobalEnvironment(new DoNothingHost(), source); + try { if(_envFile != null) diff --git a/src/oscript/DoNothingHost.cs b/src/oscript/DoNothingHost.cs new file mode 100644 index 000000000..3f6a5eab6 --- /dev/null +++ b/src/oscript/DoNothingHost.cs @@ -0,0 +1,37 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +using ScriptEngine.HostedScript; +using ScriptEngine.HostedScript.Library; + +namespace oscript +{ + class DoNothingHost : IHostApplication + { + public void Echo(string str, MessageStatusEnum status = MessageStatusEnum.Ordinary) + { + + } + + public void ShowExceptionInfo(Exception exc) + { + + } + + public bool InputString(out string result, int maxLen) + { + result = ""; + return true; + } + + public string[] GetCommandLineArguments() + { + return new[] + { + "" + }; + } + } +} diff --git a/src/oscript/ShowCompiledBehavior.cs b/src/oscript/ShowCompiledBehavior.cs index 7fa39ee96..5e608820f 100644 --- a/src/oscript/ShowCompiledBehavior.cs +++ b/src/oscript/ShowCompiledBehavior.cs @@ -30,6 +30,7 @@ public override int Execute() ScriptFileHelper.OnBeforeScriptRead(hostedScript); var source = hostedScript.Loader.FromFile(_path); var compiler = hostedScript.GetCompilerService(); + hostedScript.SetGlobalEnvironment(new DoNothingHost(), source); var writer = new ScriptEngine.Compiler.ModuleWriter(compiler); try { diff --git a/src/oscript/oscript.csproj b/src/oscript/oscript.csproj index 53ef2012e..00fc51938 100644 --- a/src/oscript/oscript.csproj +++ b/src/oscript/oscript.csproj @@ -95,6 +95,7 @@ + From e873c4fdf5b685f22641af68a9e73d117e7fb203 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Tue, 20 Jun 2017 14:44:35 +0300 Subject: [PATCH 082/168] =?UTF-8?q?=D0=BF=D0=B5=D1=80=D0=B5=D0=BE=D0=BF?= =?UTF-8?q?=D1=80=D0=B5=D0=B4=D0=B5=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BD?= =?UTF-8?q?=D0=B0=D1=81=D1=82=D1=80=D0=BE=D0=B5=D0=BA=20=D0=B2=20=D0=BF?= =?UTF-8?q?=D0=B5=D1=80=D0=B5=D0=BC=D0=B5=D0=BD=D0=BD=D0=BE=D0=B9=20=D0=BE?= =?UTF-8?q?=D0=BA=D1=80=D1=83=D0=B6=D0=B5=D0=BD=D0=B8=D1=8F=20closes=20#45?= =?UTF-8?q?1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../EngineConfigProvider.cs | 13 +++++++++++++ src/ScriptEngine/FormatParametersList.cs | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/ScriptEngine.HostedScript/EngineConfigProvider.cs b/src/ScriptEngine.HostedScript/EngineConfigProvider.cs index 8a39c5177..78b92f48e 100644 --- a/src/ScriptEngine.HostedScript/EngineConfigProvider.cs +++ b/src/ScriptEngine.HostedScript/EngineConfigProvider.cs @@ -6,6 +6,7 @@ This Source Code Form is subject to the terms of the ----------------------------------------------------------*/ using System; +using System.Collections; using System.Collections.Generic; using System.IO; using System.Linq; @@ -104,12 +105,24 @@ private void ReadCustomConfig() } } + private void ReadEnvironmentOverrides() + { + var env = System.Environment.GetEnvironmentVariable("OSCRIPT_CONFIG"); + if(env == null) + return; + + var paramList = new FormatParametersList(env); + _currentConfig.Merge(paramList.ToDictionary()); + } + public KeyValueConfig ReadConfig() { ReadDefaultConfig(); ReadCustomConfig(); + ReadEnvironmentOverrides(); return _currentConfig; } + } } diff --git a/src/ScriptEngine/FormatParametersList.cs b/src/ScriptEngine/FormatParametersList.cs index 26e8e79e1..8f2687fe1 100644 --- a/src/ScriptEngine/FormatParametersList.cs +++ b/src/ScriptEngine/FormatParametersList.cs @@ -86,7 +86,7 @@ private static string ReadParameter(string format, ref int index) int start = index; while (index < format.Length) { - if (Char.IsLetter(format, index)) + if (Char.IsLetterOrDigit(format, index) || format[index] == '.' || format[index] == '_') index++; else if (format[index] == '=') { From 2164aaf16af1528b479c0e7377c683f3b3af7d07 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Wed, 21 Jun 2017 14:58:36 +0300 Subject: [PATCH 083/168] =?UTF-8?q?=D0=9F=D0=B0=D0=B4=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D1=82=D0=B5=D1=81=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=B0?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F,=20=D0=B5=D1=81=D0=BB=D0=B8=20=D0=B7=D0=B0?= =?UTF-8?q?=D0=BF=D1=83=D1=89=D0=B5=D0=BD=D0=BE=20=D0=B2=20=D1=81=D1=80?= =?UTF-8?q?=D0=B5=D0=B4=D0=B5=20=D1=81=20=D0=BF=D1=80=D0=BE=D0=B1=D0=B5?= =?UTF-8?q?=D0=BB=D0=B0=D0=BC=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BuildAll.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BuildAll.csproj b/BuildAll.csproj index 30bacbbfb..42c89d369 100644 --- a/BuildAll.csproj +++ b/BuildAll.csproj @@ -192,7 +192,7 @@ - + From 2d56194748dfcbfdb5cb506259f217cdaadeef7f Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Wed, 21 Jun 2017 15:34:25 +0300 Subject: [PATCH 084/168] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=BA=D0=B8=20=D1=81=D0=BA=D1=80=D0=B8=D0=BF=D1=82=D0=B0?= =?UTF-8?q?=20=D1=81=D0=B1=D0=BE=D1=80=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BuildAll.csproj | 308 ++++++++++++++++++++++++------------------------ 1 file changed, 152 insertions(+), 156 deletions(-) diff --git a/BuildAll.csproj b/BuildAll.csproj index 42c89d369..e0b1cb6b3 100644 --- a/BuildAll.csproj +++ b/BuildAll.csproj @@ -1,111 +1,111 @@ - - - Release - $(MSBuildProjectDirectory)\install\build\ - $(MSBuildProjectDirectory)\dist\ + + + Release + $(MSBuildProjectDirectory)\install\build\ + $(MSBuildProjectDirectory)\dist\ $(OutputPathForBuild)\bin\ $(OutputPathForBuild)\lib\ $(OutputPathForBuild)\doc\ $(MSBuildProjectDirectory)\mddoc\ $(OutputPathForBuild)\examples\ - $(MSBuildProjectDirectory)\src\1Script.sln - "$(InnoSetupPath)\iscc.exe" + $(MSBuildProjectDirectory)\src\1Script.sln + "$(InnoSetupPath)\iscc.exe" "$(NugetPath)\nuget.exe" - 1 - 0 - 11 - 0 - - + 1 + 0 + 11 + 0 + + - - - $(ReleaseNumber) + + + $(ReleaseNumber) $(Build)$(Suffix) - - - - - $(BUILD_NUMBER) - + + + + + $(BUILD_NUMBER) + - - - - - - - - - - - + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - + @@ -120,50 +120,50 @@ - - - + + + - + + + - - - + - - - - - - - - - - "$(CertPassword)" - "$(CertPath)" - - - - - - - - + + + + + + + + + + "$(CertPassword)" + "$(CertPath)" + + + + + + + + - - - - - - - - - + + + + + + + + @@ -173,39 +173,35 @@ - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + From 58de3efa01679265a07256ef2ef381d4ce99a1f0 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Wed, 21 Jun 2017 15:36:48 +0300 Subject: [PATCH 085/168] Indentation --- BuildAll.csproj | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/BuildAll.csproj b/BuildAll.csproj index e0b1cb6b3..0b757a671 100644 --- a/BuildAll.csproj +++ b/BuildAll.csproj @@ -98,28 +98,28 @@ - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + From e35d7bc48dd8946fd1dc888f7b6287e2684938fc Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Wed, 21 Jun 2017 15:59:25 +0300 Subject: [PATCH 086/168] =?UTF-8?q?=D0=9D=D0=B5=20=D1=85=D0=B2=D0=B0=D1=82?= =?UTF-8?q?=D0=B0=D0=B5=D1=82=20=D0=BA=D0=B0=D0=B2=D1=8B=D1=87=D0=B5=D0=BA?= =?UTF-8?q?=20=D0=B2=20=D1=88=D0=B0=D0=B3=D0=B5=20CreateZip?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BuildAll.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BuildAll.csproj b/BuildAll.csproj index 0b757a671..85a369493 100644 --- a/BuildAll.csproj +++ b/BuildAll.csproj @@ -201,7 +201,7 @@ - + From 4a1c8528c16313cc1084c3b0da69f7d8363309a0 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Wed, 21 Jun 2017 16:07:16 +0300 Subject: [PATCH 087/168] =?UTF-8?q?=D0=AF=20=D0=BB=D1=8E=D0=B1=D0=BB=D1=8E?= =?UTF-8?q?=20=D0=B4=D0=B5=D0=B2=D0=BE=D0=BF=D1=81=20=D0=B7=D0=B0=20=D1=88?= =?UTF-8?q?=D0=B0=D0=BC=D0=B0=D0=BD=D1=81=D1=82=D0=B2=D0=BE=20=D1=81=20?= =?UTF-8?q?=D0=BA=D0=B0=D0=B2=D1=8B=D1=87=D0=BA=D0=B0=D0=BC=D0=B8=20=D0=B8?= =?UTF-8?q?=20=D1=81=D0=BB=D1=8D=D1=88=D0=B0=D0=BC=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BuildAll.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BuildAll.csproj b/BuildAll.csproj index 85a369493..a5453dbf4 100644 --- a/BuildAll.csproj +++ b/BuildAll.csproj @@ -201,7 +201,7 @@ - + From ed6337564b45eacaa0c13284060de20a8a16ac18 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Wed, 21 Jun 2017 16:15:10 +0300 Subject: [PATCH 088/168] =?UTF-8?q?=D0=A3=D0=B1=D1=80=D0=B0=D0=BB=20=D0=BF?= =?UTF-8?q?=D1=80=D0=B5=D0=B4=D1=83=D0=BF=D1=80=D0=B5=D0=B6=D0=B4=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20Method=20name=20'=D0=92=D1=8B=D0=BF=D0=BE?= =?UTF-8?q?=D0=BB=D0=BD=D0=B8=D1=82=D1=8C'=20is=20DEPRECATED?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- install/unicode-zipper.os | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install/unicode-zipper.os b/install/unicode-zipper.os index 597457aef..a64faa611 100644 --- a/install/unicode-zipper.os +++ b/install/unicode-zipper.os @@ -23,7 +23,7 @@ КонецПроцедуры -Процедура Выполнить() +Процедура ВыполнитьОбработку() Команда = АргументыКоманднойСтроки[0]; Если Команда = "pack" Тогда @@ -39,7 +39,7 @@ //////////////////////////////////////////////////////////////////// Попытка - Выполнить(); + ВыполнитьОбработку(); Исключение Сообщить(ОписаниеОшибки()); ЗавершитьРаботу(1); From e3f28204ed671457dd484b468a837271377d0fb6 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Wed, 21 Jun 2017 16:17:15 +0300 Subject: [PATCH 089/168] =?UTF-8?q?=D0=9F=D1=80=D0=BE=D0=B1=D0=BD=D1=8B?= =?UTF-8?q?=D0=B9=20Jenkinsfile?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Jenkinsfile | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 Jenkinsfile diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 000000000..24744d785 --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,32 @@ + +pipeline { + + agent none + + stages { + stage('01. Windows Build') { + agent { label 'windows' } + + environment { + releaseNumber = 17 + } + + steps { + git 'https://github.com/EvilBeaver/OneScript.git' + bat 'git submodule update --init' + + bat "chcp 1251 > nul\r\n\"${tool 'nuget'}\" restore 1Script.sln" + bat "chcp 1251 > nul\r\n\"${tool 'MSBuild'}\" BuildAll.csproj /p:Configuration=Release /p:Platform=x86 /p:ReleaseNumber=$releaseNumber /t:Build" + bat "chcp 1251 > nul\r\n\"${tool 'MSBuild'}\" BuildAll.csproj /p:Configuration=Release /p:Platform=x86 /p:ReleaseNumber=$releaseNumber /t:xUnitTest" + + junit 'tests/tests.xml' + + bat "chcp 1251\r\n\"${tool 'MSBuild'}\" BuildAll.csproj /p:Configuration=Release /p:Platform=x86 /p:ReleaseNumber=$releaseNumber /p:InnoSetupPath=\"${tool 'InnoSetup'}\" /t:CreateZip;CreateMSI;CreateNuget" + + archiveArtifacts artifacts: '**/dist/*.exe, **/dist/*.msi, **/dist/*.zip, **/dist/*.nupkg, **/tests/*.xml', fingerprint: true + } + + } + } + +} \ No newline at end of file From 9e939680f0b77d073c314b5fa6257fcb7a656073 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Wed, 21 Jun 2017 16:19:51 +0300 Subject: [PATCH 090/168] =?UTF-8?q?=D0=9D=D0=B5=D0=B2=D0=B5=D1=80=D0=BD?= =?UTF-8?q?=D0=BE=20=D1=83=D0=BA=D0=B0=D0=B7=D0=B0=D0=BD=20=D0=BF=D1=83?= =?UTF-8?q?=D1=82=D1=8C=20=D0=B4=D0=BB=D1=8F=20=D1=81=D0=B1=D0=BE=D1=80?= =?UTF-8?q?=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BuildAll.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BuildAll.csproj b/BuildAll.csproj index a5453dbf4..50521c809 100644 --- a/BuildAll.csproj +++ b/BuildAll.csproj @@ -201,7 +201,7 @@ - + From 7a5d15d574ea442bc4ddf51929d9074b9942e546 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Wed, 21 Jun 2017 16:52:58 +0300 Subject: [PATCH 091/168] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D1=82=D0=B5=D1=81=D1=82=D1=8B=20=D0=BF=D0=BE=20?= =?UTF-8?q?=D0=BF=D1=80=D0=BE=D1=86=D0=B5=D1=81=D1=81=D0=B0=D0=BC.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/process.os | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/tests/process.os b/tests/process.os index 395317b7a..6cedb07d9 100644 --- a/tests/process.os +++ b/tests/process.os @@ -89,13 +89,23 @@ Процесс.ПотокВвода.Закрыть(); Консоль.КодировкаВходногоПотока = КодировкаПоУмолчанию; + + Вывод = ""; + Пока Не Процесс.Завершен ИЛИ Процесс.ПотокВывода.ЕстьДанные Цикл + СтрокаПотока = Процесс.ПотокВывода.ПрочитатьСтроку(); + Если СтрокаПотока = Неопределено Тогда + Приостановить(20); + Продолжить; + КонецЕсли; + Вывод = Вывод + СтрокаПотока + " + |"; + КонецЦикла; Процесс.ОжидатьЗавершения(); - Вывод = Процесс.ПотокВывода.Прочитать(); - Эталон = НормализоватьПереводыСтрок("1 |2 - |3"); + |3 + |"); юТест.ПроверитьРавенство(Эталон, НормализоватьПереводыСтрок(Вывод)); КонецПроцедуры @@ -192,7 +202,9 @@ Процесс = СоздатьПроцесс("""" + Путь + """",,Истина); Процесс.Запустить(); Процесс.ОжидатьЗавершения(); - + + ДатьШансПотокамКЗакрытию(Процесс); + Стр = Процесс.ПотокВывода.Прочитать(); юТест.ПроверитьРавенство(Тип("Строка"), ТипЗнч(Стр), "Сначала должен был прочитать строку"); юТест.ПроверитьЛожь(ПустаяСтрока(Стр), "Вывод не должен быть пустым"); @@ -203,6 +215,16 @@ КонецПроцедуры +Процедура ДатьШансПотокамКЗакрытию(Процесс) + Для Сч = 1 По 100 Цикл + // возникают ситуации, когда внутренние читатели процесса еще не сбросили данные в oscript + // надо копать синхронизацию. + Если Процесс.ПотокВывода.ЕстьДанные Тогда + Прервать; + КонецЕсли; + КонецЦикла; +КонецПроцедуры + Функция ЗаписатьТестовыйСкрипт() ТекстСкрипта = " From 78bd2bdfe6d53ba330b5ce22bcb05de5ee449cf1 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Wed, 21 Jun 2017 16:57:02 +0300 Subject: [PATCH 092/168] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=20=D1=82=D0=B5=D1=81=D1=82=20=D0=BF=D0=BE?= =?UTF-8?q?=D0=BA=D0=B0=D0=B7=D0=B0=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8=D0=B8?= =?UTF-8?q?.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/showversion.os | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tests/showversion.os b/tests/showversion.os index ae9f40d15..5c920095f 100644 --- a/tests/showversion.os +++ b/tests/showversion.os @@ -26,6 +26,14 @@ Процесс.Запустить(); Процесс.ОжидатьЗавершения(); + Для Сч = 1 По 100 Цикл + // возникают ситуации, когда внутренние читатели процесса еще не сбросили данные в oscript + // надо копать синхронизацию. + Если Процесс.ПотокВывода.ЕстьДанные Тогда + Прервать; + КонецЕсли; + КонецЦикла; + ДанныеВывода = Процесс.ПотокВывода.Прочитать(); ДанныеВывода = СокрП(ДанныеВывода); From 5430f6f326d98340039413e220f75fcb830ac9d8 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Wed, 21 Jun 2017 16:57:27 +0300 Subject: [PATCH 093/168] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D1=82=D0=B5=D1=81=D1=82=20ret-Phoenix=20(=D1=81?= =?UTF-8?q?=D0=BB=D0=BE=D0=BC=D0=B0=D0=BB=D1=81=D1=8F=20=D0=BF=D0=BE=D1=81?= =?UTF-8?q?=D0=BB=D0=B5=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B8=D0=BC=D0=B5=D0=BD?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F=20=D0=BF=D0=B5=D1=80=D0=B5?= =?UTF-8?q?=D1=87=D0=B8=D1=81=D0=BB=D0=B5=D0=BD=D0=B8=D0=B9)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/sysinfo.os | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/sysinfo.os b/tests/sysinfo.os index 450e07b05..62f7a3e97 100644 --- a/tests/sysinfo.os +++ b/tests/sysinfo.os @@ -119,7 +119,7 @@ Процедура ТестДолжен_ПолучитьПолучитьПутьПапки_РепозиторийДокументов() Экспорт Си = Новый СистемнаяИнформация(); - юТест.ПроверитьНеРавенство(СИ.ПолучитьПутьПапки(СпециальнаяПапка.РепозиторийДокументов),""); + юТест.ПроверитьНеРавенство(СИ.ПолучитьПутьПапки(СпециальнаяПапка.МоиДокументы),""); КонецПроцедуры Процедура ТестДолжен_ПолучитьПолучитьПутьПапки_ДанныеПриложений() Экспорт From 47b6d0791e7f35618b2ea6c922c3dbf3fe70e93c Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Wed, 21 Jun 2017 16:58:59 +0300 Subject: [PATCH 094/168] =?UTF-8?q?=D0=A3=D0=B1=D1=80=D0=B0=D0=BB=20=D1=83?= =?UTF-8?q?=D1=81=D1=82=D0=B0=D1=80=D0=B5=D0=B2=D1=88=D0=B8=D0=B5=20=D0=BC?= =?UTF-8?q?=D0=B5=D1=82=D0=BE=D0=B4=D1=8B.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/sysinfo.os | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/tests/sysinfo.os b/tests/sysinfo.os index 62f7a3e97..286598cc9 100644 --- a/tests/sysinfo.os +++ b/tests/sysinfo.os @@ -47,9 +47,7 @@ Процедура ТестДолжен_ПолучитьЗначенияОкружения() Экспорт - Си = Новый СистемнаяИнформация(); - - Переменные = Си.ПеременныеСреды(); + Переменные = ПеременныеСреды(); юТест.ПроверитьЛожь(Переменные.Количество() = 0); @@ -57,20 +55,18 @@ Процедура ТестДолжен_ПолучитьПеременнуюPATH() Экспорт - Си = Новый СистемнаяИнформация(); - юТест.ПроверитьЛожь(ПустаяСтрока(Си.ПолучитьПеременнуюСреды("PATH"))); + юТест.ПроверитьЛожь(ПустаяСтрока(ПолучитьПеременнуюСреды("PATH"))); КонецПроцедуры Процедура ТестДолжен_УстановитьПеременную() Экспорт - Си = Новый СистемнаяИнформация(); - СтароеЗначение = Си.ПолучитьПеременнуюСреды("OS"); + СтароеЗначение = ПолучитьПеременнуюСреды("OS"); НовоеЗначение = "NewTestValue"; - Си.УстановитьПеременнуюСреды("OS", НовоеЗначение); + УстановитьПеременнуюСреды("OS", НовоеЗначение); - юТест.ПроверитьРавенство(НовоеЗначение, Си.ПолучитьПеременнуюСреды("OS")); + юТест.ПроверитьРавенство(НовоеЗначение, ПолучитьПеременнуюСреды("OS")); КонецПроцедуры From 3c9ebe14f7103608fe969c9391421e96532379f6 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Wed, 21 Jun 2017 17:10:07 +0300 Subject: [PATCH 095/168] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20devnull=20=D0=B4=D0=BB=D1=8F=20=D0=BA=D1=80=D0=B0?= =?UTF-8?q?=D1=81=D0=BE=D1=82=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 24744d785..7911a3939 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -21,7 +21,7 @@ pipeline { junit 'tests/tests.xml' - bat "chcp 1251\r\n\"${tool 'MSBuild'}\" BuildAll.csproj /p:Configuration=Release /p:Platform=x86 /p:ReleaseNumber=$releaseNumber /p:InnoSetupPath=\"${tool 'InnoSetup'}\" /t:CreateZip;CreateMSI;CreateNuget" + bat "chcp 1251\r\n > nul\"${tool 'MSBuild'}\" BuildAll.csproj /p:Configuration=Release /p:Platform=x86 /p:ReleaseNumber=$releaseNumber /p:InnoSetupPath=\"${tool 'InnoSetup'}\" /t:CreateZip;CreateMSI;CreateNuget" archiveArtifacts artifacts: '**/dist/*.exe, **/dist/*.msi, **/dist/*.zip, **/dist/*.nupkg, **/tests/*.xml', fingerprint: true } From 08d6a7914957537e31699466154b8ee93d5afb62 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Wed, 21 Jun 2017 17:10:44 +0300 Subject: [PATCH 096/168] =?UTF-8?q?=D0=A2=D1=80=D0=B5=D0=B1=D1=83=D0=B5?= =?UTF-8?q?=D1=82=D1=81=D1=8F=20=D1=80=D0=B5=D0=BA=D1=83=D1=80=D1=81=D0=B8?= =?UTF-8?q?=D0=B2=D0=BD=D1=8B=D0=B9=20=D0=B0=D0=BF=D0=B4=D0=B5=D0=B9=D1=82?= =?UTF-8?q?=20=D0=BC=D0=BE=D0=B4=D1=83=D0=BB=D0=B5=D0=B9=20=D0=B4=D0=BB?= =?UTF-8?q?=D1=8F=20=D1=81=D0=B1=D0=BE=D1=80=D0=BA=D0=B8.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 7911a3939..04155dcb7 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -13,7 +13,7 @@ pipeline { steps { git 'https://github.com/EvilBeaver/OneScript.git' - bat 'git submodule update --init' + bat 'git submodule update --init --recursive' bat "chcp 1251 > nul\r\n\"${tool 'nuget'}\" restore 1Script.sln" bat "chcp 1251 > nul\r\n\"${tool 'MSBuild'}\" BuildAll.csproj /p:Configuration=Release /p:Platform=x86 /p:ReleaseNumber=$releaseNumber /t:Build" From f854adaec4a6d44fcb84b29983d486b69cff1908 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Wed, 21 Jun 2017 17:17:09 +0300 Subject: [PATCH 097/168] =?UTF-8?q?=D0=9F=D0=BE=D0=B4=D1=81=D0=BA=D0=B0?= =?UTF-8?q?=D0=B7=D0=BA=D0=B0=20=D0=B2=20=D1=82=D0=B5=D1=81=D1=82=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/source-licensing.os | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/source-licensing.os b/tests/source-licensing.os index f03b66a74..574a48727 100644 --- a/tests/source-licensing.os +++ b/tests/source-licensing.os @@ -21,7 +21,7 @@ Возврат; // если запустили тесты вне каталога репы GIT, то тест не имеет смысла. КонецЕсли; - юТест.ПроверитьИстину(ПротестироватьИсходники(КаталогИсходников.ПолноеИмя)); + юТест.ПроверитьИстину(ПротестироватьИсходники(КаталогИсходников.ПолноеИмя), "Какие-то файлы не имеют лицензии. См. полный лог сборки"); КонецПроцедуры From ff8383d474b1fa3311d39409f6ca259fb39a7f4e Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Wed, 21 Jun 2017 17:17:48 +0300 Subject: [PATCH 098/168] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=BE=20=D0=BE=D1=82=D1=81=D1=83=D1=82=D1=81?= =?UTF-8?q?=D1=82=D0=B2=D0=B8=D0=B5=20=D0=BF=D1=80=D0=B5=D1=84=D0=B8=D0=BA?= =?UTF-8?q?=D1=81=D0=B0=20=D0=BB=D0=B8=D1=86=D0=B5=D0=BD=D0=B7=D0=B8=D0=B8?= =?UTF-8?q?.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/NUnitTests/EngineWrapperNUnit.cs | 8 +++++++- src/NUnitTests/Properties/AssemblyInfo.cs | 8 +++++++- src/NUnitTests/TestRunnerTest.cs | 10 ++++++++-- .../Library/DriveInfo/DriveInfo.cs | 8 +++++++- .../Library/DriveInfo/DriveTypeEnum.cs | 8 +++++++- src/oscript/DoNothingHost.cs | 8 +++++++- 6 files changed, 43 insertions(+), 7 deletions(-) diff --git a/src/NUnitTests/EngineWrapperNUnit.cs b/src/NUnitTests/EngineWrapperNUnit.cs index 013cb1ab8..f7d1c584b 100644 --- a/src/NUnitTests/EngineWrapperNUnit.cs +++ b/src/NUnitTests/EngineWrapperNUnit.cs @@ -1,4 +1,10 @@ -using System; +/*---------------------------------------------------------- +This Source Code Form is subject to the terms of the +Mozilla Public License, v.2.0. If a copy of the MPL +was not distributed with this file, You can obtain one +at http://mozilla.org/MPL/2.0/. +----------------------------------------------------------*/ +using System; using System.Collections.Generic; using System.Linq; using System.Text; diff --git a/src/NUnitTests/Properties/AssemblyInfo.cs b/src/NUnitTests/Properties/AssemblyInfo.cs index 74251e1d4..48b5d8499 100644 --- a/src/NUnitTests/Properties/AssemblyInfo.cs +++ b/src/NUnitTests/Properties/AssemblyInfo.cs @@ -1,4 +1,10 @@ -using System.Reflection; +/*---------------------------------------------------------- +This Source Code Form is subject to the terms of the +Mozilla Public License, v.2.0. If a copy of the MPL +was not distributed with this file, You can obtain one +at http://mozilla.org/MPL/2.0/. +----------------------------------------------------------*/ +using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/src/NUnitTests/TestRunnerTest.cs b/src/NUnitTests/TestRunnerTest.cs index 7b20dd809..61d208099 100644 --- a/src/NUnitTests/TestRunnerTest.cs +++ b/src/NUnitTests/TestRunnerTest.cs @@ -1,4 +1,10 @@ -using System; +/*---------------------------------------------------------- +This Source Code Form is subject to the terms of the +Mozilla Public License, v.2.0. If a copy of the MPL +was not distributed with this file, You can obtain one +at http://mozilla.org/MPL/2.0/. +----------------------------------------------------------*/ +using System; using System.IO; using NUnit.Framework; @@ -31,7 +37,7 @@ public void RunEngineTests() var result = host.RunTestScriptFromPath(testRunnerPath, "-runall " + new System.IO.FileInfo(testRunnerPath).Directory.FullName); - if (result == TEST_STATE_FAILED) + if (result == TEST_STATE_FAILED) { NUnit.Framework.Assert.Fail("Есть непройденные тесты!"); } diff --git a/src/ScriptEngine.HostedScript/Library/DriveInfo/DriveInfo.cs b/src/ScriptEngine.HostedScript/Library/DriveInfo/DriveInfo.cs index e7bf9ced4..11c2c0593 100644 --- a/src/ScriptEngine.HostedScript/Library/DriveInfo/DriveInfo.cs +++ b/src/ScriptEngine.HostedScript/Library/DriveInfo/DriveInfo.cs @@ -1,4 +1,10 @@ -using ScriptEngine.HostedScript.Library; +/*---------------------------------------------------------- +This Source Code Form is subject to the terms of the +Mozilla Public License, v.2.0. If a copy of the MPL +was not distributed with this file, You can obtain one +at http://mozilla.org/MPL/2.0/. +----------------------------------------------------------*/ +using ScriptEngine.HostedScript.Library; using ScriptEngine.Machine; using ScriptEngine.Machine.Contexts; using System; diff --git a/src/ScriptEngine.HostedScript/Library/DriveInfo/DriveTypeEnum.cs b/src/ScriptEngine.HostedScript/Library/DriveInfo/DriveTypeEnum.cs index 845198ac3..9c40f7ba0 100644 --- a/src/ScriptEngine.HostedScript/Library/DriveInfo/DriveTypeEnum.cs +++ b/src/ScriptEngine.HostedScript/Library/DriveInfo/DriveTypeEnum.cs @@ -1,4 +1,10 @@ -using ScriptEngine.Machine.Contexts; +/*---------------------------------------------------------- +This Source Code Form is subject to the terms of the +Mozilla Public License, v.2.0. If a copy of the MPL +was not distributed with this file, You can obtain one +at http://mozilla.org/MPL/2.0/. +----------------------------------------------------------*/ +using ScriptEngine.Machine.Contexts; using ScriptEngine.Machine; namespace ScriptEngine.HostedScript.Library.DriveInfo diff --git a/src/oscript/DoNothingHost.cs b/src/oscript/DoNothingHost.cs index 3f6a5eab6..2f7d240a6 100644 --- a/src/oscript/DoNothingHost.cs +++ b/src/oscript/DoNothingHost.cs @@ -1,4 +1,10 @@ -using System; +/*---------------------------------------------------------- +This Source Code Form is subject to the terms of the +Mozilla Public License, v.2.0. If a copy of the MPL +was not distributed with this file, You can obtain one +at http://mozilla.org/MPL/2.0/. +----------------------------------------------------------*/ +using System; using System.Collections.Generic; using System.Linq; using System.Text; From b6a4a6ae62bdba57f68d33f810b0a50f344ca57e Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Wed, 21 Jun 2017 17:59:46 +0300 Subject: [PATCH 099/168] =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B1=D0=B8=D0=BB?= =?UTF-8?q?=D0=B8=D0=B7=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=20=D1=82=D0=B5?= =?UTF-8?q?=D1=81=D1=82=20codestat.os?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/codestat.os | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/tests/codestat.os b/tests/codestat.os index 4de6ef42f..fdc2437f2 100644 --- a/tests/codestat.os +++ b/tests/codestat.os @@ -51,7 +51,7 @@ Функция ПолучитьВыводДляСкрипта(Знач ИмяФайлаОСкрипта) - ИмяФайлаВывода = ЗапуститьФайлСкрипта(ИмяФайлаОСкрипта); + ИмяФайлаВывода = ЗапуститьФайлСкрипта(""""+ИмяФайлаОСкрипта+""""); Чтение = Новый ЧтениеJson(); Чтение.ОткрытьФайл(ИмяФайлаВывода, "UTF-8"); @@ -103,9 +103,16 @@ Процесс = СоздатьПроцесс(СтрокаЗапуска,,Истина); Процесс.Запустить(); + + Пока Не Процесс.Завершен ИЛИ Процесс.ПотокВывода.ЕстьДанные Цикл + Стр = Процесс.ПотокВывода.Прочитать(); + Если Стр <> Неопределено Тогда + Сообщить(Стр); + КонецЕсли; + КонецЦикла; - Процесс.ОжидатьЗавершения(); - + юТест.ПроверитьРавенство(0, Процесс.КодВозврата, "Процесс должен был завершиться успешно"); + УдалитьФайлы(ИмяФайлаСистемногоСкриптаЗапуска); Возврат ИмяФайлаВывода; From 08da6433049e6bbe093d1471c75cf0913f46325c Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Thu, 22 Jun 2017 01:27:35 +0300 Subject: [PATCH 100/168] =?UTF-8?q?=D0=A3=D1=82=D0=BE=D1=87=D0=BD=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=BF=D1=83=D1=82=D1=8C=20=D0=B2=20restore?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 04155dcb7..562b848e8 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -15,7 +15,7 @@ pipeline { git 'https://github.com/EvilBeaver/OneScript.git' bat 'git submodule update --init --recursive' - bat "chcp 1251 > nul\r\n\"${tool 'nuget'}\" restore 1Script.sln" + bat "chcp 1251 > nul\r\n\"${tool 'nuget'}\" restore src/1Script.sln" bat "chcp 1251 > nul\r\n\"${tool 'MSBuild'}\" BuildAll.csproj /p:Configuration=Release /p:Platform=x86 /p:ReleaseNumber=$releaseNumber /t:Build" bat "chcp 1251 > nul\r\n\"${tool 'MSBuild'}\" BuildAll.csproj /p:Configuration=Release /p:Platform=x86 /p:ReleaseNumber=$releaseNumber /t:xUnitTest" From d7a188a1c6b3d6e241d18f462549b84155ad4bdf Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Thu, 22 Jun 2017 01:56:50 +0300 Subject: [PATCH 101/168] =?UTF-8?q?=D0=9A=D0=BE=D0=B4=D0=B8=D1=80=D0=BE?= =?UTF-8?q?=D0=B2=D0=BA=D0=B0=20=D0=B2=D1=8B=D1=85=D0=BB=D0=BE=D0=BF=D0=B0?= =?UTF-8?q?=20=D0=B0=D0=B3=D0=B5=D0=BD=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Jenkinsfile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 562b848e8..d6c139357 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -15,13 +15,13 @@ pipeline { git 'https://github.com/EvilBeaver/OneScript.git' bat 'git submodule update --init --recursive' - bat "chcp 1251 > nul\r\n\"${tool 'nuget'}\" restore src/1Script.sln" - bat "chcp 1251 > nul\r\n\"${tool 'MSBuild'}\" BuildAll.csproj /p:Configuration=Release /p:Platform=x86 /p:ReleaseNumber=$releaseNumber /t:Build" - bat "chcp 1251 > nul\r\n\"${tool 'MSBuild'}\" BuildAll.csproj /p:Configuration=Release /p:Platform=x86 /p:ReleaseNumber=$releaseNumber /t:xUnitTest" + bat "chcp 65001 > nul\r\n\"${tool 'nuget'}\" restore src/1Script.sln" + bat "chcp 65001 > nul\r\n\"${tool 'MSBuild'}\" BuildAll.csproj /p:Configuration=Release /p:Platform=x86 /p:ReleaseNumber=$releaseNumber /t:Build" + bat "chcp 65001 > nul\r\n\"${tool 'MSBuild'}\" BuildAll.csproj /p:Configuration=Release /p:Platform=x86 /p:ReleaseNumber=$releaseNumber /t:xUnitTest" junit 'tests/tests.xml' - bat "chcp 1251\r\n > nul\"${tool 'MSBuild'}\" BuildAll.csproj /p:Configuration=Release /p:Platform=x86 /p:ReleaseNumber=$releaseNumber /p:InnoSetupPath=\"${tool 'InnoSetup'}\" /t:CreateZip;CreateMSI;CreateNuget" + bat "chcp 65001\r\n > nul\"${tool 'MSBuild'}\" BuildAll.csproj /p:Configuration=Release /p:Platform=x86 /p:ReleaseNumber=$releaseNumber /p:InnoSetupPath=\"${tool 'InnoSetup'}\" /t:CreateZip;CreateMSI;CreateNuget" archiveArtifacts artifacts: '**/dist/*.exe, **/dist/*.msi, **/dist/*.zip, **/dist/*.nupkg, **/tests/*.xml', fingerprint: true } From 28d9ac9621d5848e358bede6fac12a21d415cf69 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Thu, 22 Jun 2017 02:04:21 +0300 Subject: [PATCH 102/168] =?UTF-8?q?=D0=95=D1=89=D0=B5=20=D0=BE=D0=B4=D0=BD?= =?UTF-8?q?=D0=B0=20=D0=BE=D0=BF=D0=B5=D1=87=D0=B0=D1=82=D0=BA=D0=B0.=20?= =?UTF-8?q?=D0=9F=D0=BE=D1=80=D0=B0=20=D1=81=D0=BF=D0=B0=D1=82=D1=8C.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index d6c139357..d5274083f 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -21,7 +21,7 @@ pipeline { junit 'tests/tests.xml' - bat "chcp 65001\r\n > nul\"${tool 'MSBuild'}\" BuildAll.csproj /p:Configuration=Release /p:Platform=x86 /p:ReleaseNumber=$releaseNumber /p:InnoSetupPath=\"${tool 'InnoSetup'}\" /t:CreateZip;CreateMSI;CreateNuget" + bat "chcp 65001 > nul\r\n\"${tool 'MSBuild'}\" BuildAll.csproj /p:Configuration=Release /p:Platform=x86 /p:ReleaseNumber=$releaseNumber /p:InnoSetupPath=\"${tool 'InnoSetup'}\" /t:CreateZip;CreateMSI;CreateNuget" archiveArtifacts artifacts: '**/dist/*.exe, **/dist/*.msi, **/dist/*.zip, **/dist/*.nupkg, **/tests/*.xml', fingerprint: true } From 2a345a5e83281354d076f9ec2cff579d057c20a5 Mon Sep 17 00:00:00 2001 From: Sergey Batanov Date: Thu, 22 Jun 2017 09:56:17 +0300 Subject: [PATCH 103/168] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=BE=20=D0=B8=D1=81=D0=BA=D0=BB=D1=8E=D1=87=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=B2=20=D1=82=D0=B5=D1=81=D1=82=20=D0=BB?= =?UTF-8?q?=D0=B8=D1=86=D0=B5=D0=BD=D0=B7=D0=B8=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/source-licensing.os | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/source-licensing.os b/tests/source-licensing.os index 574a48727..b10accc39 100644 --- a/tests/source-licensing.os +++ b/tests/source-licensing.os @@ -63,7 +63,7 @@ ИсправитьФайл(Файл); КонецЕсли; - ИначеЕсли Файл.ЭтоКаталог() и Файл.Имя <> "obj" Тогда + ИначеЕсли Файл.ЭтоКаталог() и Файл.Имя <> "obj" и Файл.Имя <> "packages" Тогда ЕстьОшибкиСейчас = Не ПротестироватьИсходники(Файл.ПолноеИмя, ИсправлятьТутЖе); ЕстьОшибки = ЕстьОшибки ИЛИ ЕстьОшибкиСейчас; КонецЕсли; From 60d1c48cb5105cc37426fba08ad928616628d0ef Mon Sep 17 00:00:00 2001 From: Sergey Batanov Date: Thu, 22 Jun 2017 10:07:55 +0300 Subject: [PATCH 104/168] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=BE=20=D1=80=D0=B5=D1=88=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D0=B4=D0=BB=D1=8F=20Mono?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/1Script_Mono.sln | 1 + 1 file changed, 1 insertion(+) diff --git a/src/1Script_Mono.sln b/src/1Script_Mono.sln index 7f641bcf5..51ed2becf 100644 --- a/src/1Script_Mono.sln +++ b/src/1Script_Mono.sln @@ -13,6 +13,7 @@ EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StandaloneRunner", "StandaloneRunner\StandaloneRunner.csproj", "{795AA2F5-3074-4BC5-A30F-1B6354044D9B}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NUnitTests", "NUnitTests\NUnitTests.csproj", "{93ACC849-E7E1-4695-B59D-54B3737E48A6}" +EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Component", "Component\Component.csproj", "{B6C3C000-699B-4A2F-92D1-EEAEA9CFE2AB}" EndProject Global From f4407ce087430c1a37a01086605180623dbe7b29 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Thu, 22 Jun 2017 14:15:46 +0300 Subject: [PATCH 105/168] =?UTF-8?q?=D0=BE=D1=82=D1=81=D1=82=D1=83=D0=BF?= =?UTF-8?q?=D1=8B=20=D0=B2=20xml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BuildAll.csproj | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/BuildAll.csproj b/BuildAll.csproj index 50521c809..e89f85cb0 100644 --- a/BuildAll.csproj +++ b/BuildAll.csproj @@ -130,9 +130,9 @@ - - - + + + From 3678bea9d591cb871ba78dbf174a0a1c95811a9e Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Thu, 22 Jun 2017 14:17:11 +0300 Subject: [PATCH 106/168] =?UTF-8?q?=D0=A0=D0=B5=D1=84=D0=B0=D0=BA=D1=82?= =?UTF-8?q?=D0=BE=D1=80=D0=B8=D0=BD=D0=B3=20=D1=81=D0=B1=D0=BE=D1=80=D0=BA?= =?UTF-8?q?=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Jenkinsfile | 42 ++++++++++++++++++++++++++++++------------ 1 file changed, 30 insertions(+), 12 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index d5274083f..5e9b4fcaa 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -3,30 +3,48 @@ pipeline { agent none + environment { + releaseNumber = 17 + outputEnc = '65001' + } + stages { stage('01. Windows Build') { agent { label 'windows' } - environment { - releaseNumber = 17 - } - steps { git 'https://github.com/EvilBeaver/OneScript.git' bat 'git submodule update --init --recursive' - bat "chcp 65001 > nul\r\n\"${tool 'nuget'}\" restore src/1Script.sln" - bat "chcp 65001 > nul\r\n\"${tool 'MSBuild'}\" BuildAll.csproj /p:Configuration=Release /p:Platform=x86 /p:ReleaseNumber=$releaseNumber /t:Build" - bat "chcp 65001 > nul\r\n\"${tool 'MSBuild'}\" BuildAll.csproj /p:Configuration=Release /p:Platform=x86 /p:ReleaseNumber=$releaseNumber /t:xUnitTest" + bat "chcp $outputEnc > nul\r\n\"${tool 'nuget'}\" restore src/1Script.sln" + bat "chcp $outputEnc > nul\r\n\"${tool 'MSBuild'}\" BuildAll.csproj /p:Configuration=Release /p:Platform=x86 /p:ReleaseNumber=$releaseNumber /t:Build" + + stash includes: 'tests, install/build/**', name: 'buildResults' + } + + } + + stage('02. Windows testing') { + agent { label 'windows' } + + steps { + unstash 'buildResults' + bat "chcp $outputEnc > nul\r\n\"${tool 'MSBuild'}\" BuildAll.csproj /p:Configuration=Release /p:Platform=x86 /t:xUnitTest" junit 'tests/tests.xml' - - bat "chcp 65001 > nul\r\n\"${tool 'MSBuild'}\" BuildAll.csproj /p:Configuration=Release /p:Platform=x86 /p:ReleaseNumber=$releaseNumber /p:InnoSetupPath=\"${tool 'InnoSetup'}\" /t:CreateZip;CreateMSI;CreateNuget" - - archiveArtifacts artifacts: '**/dist/*.exe, **/dist/*.msi, **/dist/*.zip, **/dist/*.nupkg, **/tests/*.xml', fingerprint: true - } + } + } + + stage('03. Packaging') { + agent { label 'windows' } + steps { + unstash 'buildResults' + bat "chcp $outputEnc > nul\r\n\"${tool 'MSBuild'}\" BuildAll.csproj /p:Configuration=Release /p:Platform=x86 /p:ReleaseNumber=$releaseNumber /p:InnoSetupPath=\"${tool 'InnoSetup'}\" /t:CreateZip;CreateMSI;CreateNuget" + archiveArtifacts artifacts: '**/dist/*.exe, **/dist/*.msi, **/dist/*.zip, **/dist/*.nupkg, **/tests/*.xml', fingerprint: true + } } + } } \ No newline at end of file From da33e3a26d5859fb4dec197463b97e5f9484667f Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Thu, 22 Jun 2017 14:30:58 +0300 Subject: [PATCH 107/168] =?UTF-8?q?=D0=AF=D0=B2=D0=BD=D1=8B=D0=B5=20=D0=BE?= =?UTF-8?q?=D0=BF=D0=B5=D1=80=D0=B0=D1=86=D0=B8=D0=B8=20=D1=81=20=D0=B3?= =?UTF-8?q?=D0=B8=D1=82=D0=BE=D0=BC=20=D0=B8=D0=B7=D0=B1=D1=8B=D1=82=D0=BE?= =?UTF-8?q?=D1=87=D0=BD=D1=8B,=20=D1=8D=D1=82=D0=BE=20=D0=B4=D0=B5=D0=BB?= =?UTF-8?q?=D0=B0=D0=B5=D1=82=20=D0=B4=D0=B6=D0=B5=D0=BD=D0=BA=D0=B8=D0=BD?= =?UTF-8?q?=D1=81,=20=D0=BD=D0=B0=20=D0=BD=D1=83=D0=B6=D0=BD=D0=BE=D0=B9?= =?UTF-8?q?=20=D0=B2=D0=B5=D1=82=D0=BA=D0=B5=20=D1=81=D0=B0=D0=BC.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Jenkinsfile | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 5e9b4fcaa..9849c5c39 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -13,9 +13,7 @@ pipeline { agent { label 'windows' } steps { - git 'https://github.com/EvilBeaver/OneScript.git' - bat 'git submodule update --init --recursive' - + bat "chcp $outputEnc > nul\r\n\"${tool 'nuget'}\" restore src/1Script.sln" bat "chcp $outputEnc > nul\r\n\"${tool 'MSBuild'}\" BuildAll.csproj /p:Configuration=Release /p:Platform=x86 /p:ReleaseNumber=$releaseNumber /t:Build" From 209b41dc333779887f2b42fc60c8c5e9ec1f1760 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Thu, 22 Jun 2017 15:41:38 +0300 Subject: [PATCH 108/168] =?UTF-8?q?=D0=BA=D0=BE=D1=81=D1=82=D1=8B=D0=BB?= =?UTF-8?q?=D1=8C=20=D0=B4=D0=BB=D1=8F=20=D1=81=D0=B1=D0=BE=D1=80=D0=BE?= =?UTF-8?q?=D0=BA=20msbuild?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Jenkinsfile | 36 +++++++++++++++++++++++++++--------- 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 9849c5c39..50d214993 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -14,10 +14,22 @@ pipeline { steps { - bat "chcp $outputEnc > nul\r\n\"${tool 'nuget'}\" restore src/1Script.sln" - bat "chcp $outputEnc > nul\r\n\"${tool 'MSBuild'}\" BuildAll.csproj /p:Configuration=Release /p:Platform=x86 /p:ReleaseNumber=$releaseNumber /t:Build" + // в среде Multibranch Pipeline Jenkins первращает имена веток в папки + // а для веток Gitflow вида release/* экранирует в слэш в %2F + // При этом MSBuild, видя urlEncoding, разэкранирует его обратно, ломая путь (появляется слэш, где не надо) + // + // Поэтому, применяем костыль с кастомным workspace + // см. https://issues.jenkins-ci.org/browse/JENKINS-34564 - stash includes: 'tests, install/build/**', name: 'buildResults' + ws("$workspace".replaceAll("%", "_")) + { + checkout scm + + bat "chcp $outputEnc > nul\r\n\"${tool 'nuget'}\" restore src/1Script.sln" + bat "chcp $outputEnc > nul\r\n\"${tool 'MSBuild'}\" BuildAll.csproj /p:Configuration=Release /p:Platform=x86 /p:ReleaseNumber=$releaseNumber /t:Build" + + stash includes: 'tests, install/build/**', name: 'buildResults' + } } } @@ -26,10 +38,13 @@ pipeline { agent { label 'windows' } steps { - unstash 'buildResults' - bat "chcp $outputEnc > nul\r\n\"${tool 'MSBuild'}\" BuildAll.csproj /p:Configuration=Release /p:Platform=x86 /t:xUnitTest" + ws("$workspace".replaceAll("%", "_")) + { + unstash 'buildResults' + bat "chcp $outputEnc > nul\r\n\"${tool 'MSBuild'}\" BuildAll.csproj /p:Configuration=Release /p:Platform=x86 /t:xUnitTest" - junit 'tests/tests.xml' + junit 'tests/tests.xml' + } } } @@ -37,9 +52,12 @@ pipeline { agent { label 'windows' } steps { - unstash 'buildResults' - bat "chcp $outputEnc > nul\r\n\"${tool 'MSBuild'}\" BuildAll.csproj /p:Configuration=Release /p:Platform=x86 /p:ReleaseNumber=$releaseNumber /p:InnoSetupPath=\"${tool 'InnoSetup'}\" /t:CreateZip;CreateMSI;CreateNuget" - archiveArtifacts artifacts: '**/dist/*.exe, **/dist/*.msi, **/dist/*.zip, **/dist/*.nupkg, **/tests/*.xml', fingerprint: true + ws("$workspace".replaceAll("%", "_")) + { + unstash 'buildResults' + bat "chcp $outputEnc > nul\r\n\"${tool 'MSBuild'}\" BuildAll.csproj /p:Configuration=Release /p:Platform=x86 /p:ReleaseNumber=$releaseNumber /p:InnoSetupPath=\"${tool 'InnoSetup'}\" /t:CreateZip;CreateMSI;CreateNuget" + archiveArtifacts artifacts: '**/dist/*.exe, **/dist/*.msi, **/dist/*.zip, **/dist/*.nupkg, **/tests/*.xml', fingerprint: true + } } } From e7f8286bcd965b62a72b7f7af37e63051f1828fe Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Thu, 22 Jun 2017 15:57:27 +0300 Subject: [PATCH 109/168] =?UTF-8?q?=D0=92=D1=80=D0=B5=D0=BC=D0=B5=D0=BD?= =?UTF-8?q?=D0=BD=D0=BE=20=D0=BD=D0=B5=20=D1=81=D0=BE=D0=B1=D0=B8=D1=80?= =?UTF-8?q?=D0=B0=D0=B5=D0=BC=20MSI,=20=D1=82.=D0=BA.=20=D0=B0=D0=B3=D0=B5?= =?UTF-8?q?=D0=BD=D1=82=20=D0=BD=D0=B5=20=D0=BD=D0=B0=D1=81=D1=82=D1=80?= =?UTF-8?q?=D0=BE=D0=B5=D0=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 50d214993..1436e4cbd 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -55,7 +55,7 @@ pipeline { ws("$workspace".replaceAll("%", "_")) { unstash 'buildResults' - bat "chcp $outputEnc > nul\r\n\"${tool 'MSBuild'}\" BuildAll.csproj /p:Configuration=Release /p:Platform=x86 /p:ReleaseNumber=$releaseNumber /p:InnoSetupPath=\"${tool 'InnoSetup'}\" /t:CreateZip;CreateMSI;CreateNuget" + bat "chcp $outputEnc > nul\r\n\"${tool 'MSBuild'}\" BuildAll.csproj /p:Configuration=Release /p:Platform=x86 /p:ReleaseNumber=$releaseNumber /p:InnoSetupPath=\"${tool 'InnoSetup'}\" /t:CreateZip;CreateNuget" archiveArtifacts artifacts: '**/dist/*.exe, **/dist/*.msi, **/dist/*.zip, **/dist/*.nupkg, **/tests/*.xml', fingerprint: true } } From cd67d0ea1db541fab3887a2a17f83c78a6969e62 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Thu, 22 Jun 2017 17:32:02 +0300 Subject: [PATCH 110/168] =?UTF-8?q?=D0=92=D0=BE=D0=B7=D0=BC=D0=BE=D0=B6?= =?UTF-8?q?=D0=BD=D0=BE=D1=81=D1=82=D1=8C=20=D1=82=D0=B0=D0=B9=D0=BC=D0=B0?= =?UTF-8?q?=D1=83=D1=82=D0=B0=20=D0=BD=D0=B0=20=D0=BE=D0=B6=D0=B8=D0=B4?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D0=B8=20=D0=BF=D1=80=D0=BE=D1=86=D0=B5=D1=81?= =?UTF-8?q?=D1=81=D0=B0=20#462?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Library/ProcessContext.cs | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/ScriptEngine.HostedScript/Library/ProcessContext.cs b/src/ScriptEngine.HostedScript/Library/ProcessContext.cs index bac47d01e..8b68f28c6 100644 --- a/src/ScriptEngine.HostedScript/Library/ProcessContext.cs +++ b/src/ScriptEngine.HostedScript/Library/ProcessContext.cs @@ -159,14 +159,22 @@ public int ExitCode return _p.ExitCode; } } - + /// /// Приостановить выполнение скрипта и ожидать завершения процесса. /// + /// Число. Таймаут в миллисекундах. + /// Булево. Ложь, если таймаут истек. [ContextMethod("ОжидатьЗавершения", "WaitForExit")] - public void WaitForExit() + public bool WaitForExit(IValue timeout = null) { - _p.WaitForExit(); + if (timeout == null) + { + _p.WaitForExit(); + return true; + } + + return _p.WaitForExit((int) timeout.AsNumber()); } /// From 53db8a7965720ecc2703c43d6f934862f838e393 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Thu, 22 Jun 2017 17:38:47 +0300 Subject: [PATCH 111/168] =?UTF-8?q?=D0=9A=D0=B0=D0=BD=D0=BE=D0=BD=D0=B8?= =?UTF-8?q?=D1=87=D0=BD=D0=BE=D0=B5=20=D1=87=D1=82=D0=B5=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/showversion.os | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/tests/showversion.os b/tests/showversion.os index 5c920095f..fbca3c872 100644 --- a/tests/showversion.os +++ b/tests/showversion.os @@ -24,19 +24,14 @@ Процесс = СоздатьПроцесс(ПутьОСкрипт() + " -version", , Истина); Процесс.Запустить(); - Процесс.ОжидатьЗавершения(); - - Для Сч = 1 По 100 Цикл - // возникают ситуации, когда внутренние читатели процесса еще не сбросили данные в oscript - // надо копать синхронизацию. - Если Процесс.ПотокВывода.ЕстьДанные Тогда - Прервать; + + Пока Не Процесс.Завершен ИЛИ Процесс.ПотокВывода.ЕстьДанные Цикл + ДанныеВывода = Процесс.ПотокВывода.Прочитать(); + Если ДанныеВывода <> Неопределено Тогда + ДанныеВывода = СокрП(ДанныеВывода); КонецЕсли; КонецЦикла; - ДанныеВывода = Процесс.ПотокВывода.Прочитать(); - ДанныеВывода = СокрП(ДанныеВывода); - СистемнаяИнформация = Новый СистемнаяИнформация; юТест.ПроверитьРавенство(ДанныеВывода, СистемнаяИнформация.Версия, "Версия вывода не совпадает с системной информацией!"); From 963aa6cf0893bb6c8102d83dd65df4507b31a3c5 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Thu, 22 Jun 2017 22:24:28 +0300 Subject: [PATCH 112/168] =?UTF-8?q?Revert=20"=D0=98=D1=81=D0=BF=D1=80?= =?UTF-8?q?=D0=B0=D0=B2=D0=B8=D0=BB=20=D1=82=D0=B5=D1=81=D1=82=D1=8B=20?= =?UTF-8?q?=D0=BF=D0=BE=20=D0=BF=D1=80=D0=BE=D1=86=D0=B5=D1=81=D1=81=D0=B0?= =?UTF-8?q?=D0=BC."?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 7a5d15d574ea442bc4ddf51929d9074b9942e546. --- tests/process.os | 30 ++++-------------------------- 1 file changed, 4 insertions(+), 26 deletions(-) diff --git a/tests/process.os b/tests/process.os index 6cedb07d9..395317b7a 100644 --- a/tests/process.os +++ b/tests/process.os @@ -89,23 +89,13 @@ Процесс.ПотокВвода.Закрыть(); Консоль.КодировкаВходногоПотока = КодировкаПоУмолчанию; - - Вывод = ""; - Пока Не Процесс.Завершен ИЛИ Процесс.ПотокВывода.ЕстьДанные Цикл - СтрокаПотока = Процесс.ПотокВывода.ПрочитатьСтроку(); - Если СтрокаПотока = Неопределено Тогда - Приостановить(20); - Продолжить; - КонецЕсли; - Вывод = Вывод + СтрокаПотока + " - |"; - КонецЦикла; Процесс.ОжидатьЗавершения(); + Вывод = Процесс.ПотокВывода.Прочитать(); + Эталон = НормализоватьПереводыСтрок("1 |2 - |3 - |"); + |3"); юТест.ПроверитьРавенство(Эталон, НормализоватьПереводыСтрок(Вывод)); КонецПроцедуры @@ -202,9 +192,7 @@ Процесс = СоздатьПроцесс("""" + Путь + """",,Истина); Процесс.Запустить(); Процесс.ОжидатьЗавершения(); - - ДатьШансПотокамКЗакрытию(Процесс); - + Стр = Процесс.ПотокВывода.Прочитать(); юТест.ПроверитьРавенство(Тип("Строка"), ТипЗнч(Стр), "Сначала должен был прочитать строку"); юТест.ПроверитьЛожь(ПустаяСтрока(Стр), "Вывод не должен быть пустым"); @@ -215,16 +203,6 @@ КонецПроцедуры -Процедура ДатьШансПотокамКЗакрытию(Процесс) - Для Сч = 1 По 100 Цикл - // возникают ситуации, когда внутренние читатели процесса еще не сбросили данные в oscript - // надо копать синхронизацию. - Если Процесс.ПотокВывода.ЕстьДанные Тогда - Прервать; - КонецЕсли; - КонецЦикла; -КонецПроцедуры - Функция ЗаписатьТестовыйСкрипт() ТекстСкрипта = " From 6551836196e997ddf171f961a679c40c0b1247cd Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Thu, 22 Jun 2017 22:27:12 +0300 Subject: [PATCH 113/168] =?UTF-8?q?=D0=9F=D0=BE=D0=BF=D1=8B=D1=82=D0=BA?= =?UTF-8?q?=D0=B0=20=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=B8=D1=82=D1=8C?= =?UTF-8?q?=20=D0=BD=D0=B5=D1=81=D1=82=D0=B0=D0=B1=D0=B8=D0=BB=D1=8C=D0=BD?= =?UTF-8?q?=D1=83=D1=8E=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D1=83=20=D1=87?= =?UTF-8?q?=D1=82=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=BF=D0=BE=D1=82=D0=BE=D0=BA?= =?UTF-8?q?=D0=BE=D0=B2.=20=D0=9E=D1=82=D0=BA=D0=B0=D1=82=20=D0=BD=D0=B5?= =?UTF-8?q?=D0=B4=D0=B0=D0=B2=D0=BD=D0=B8=D1=85=20=D0=B8=D0=B7=D0=BC=D0=B5?= =?UTF-8?q?=D0=BD=D0=B5=D0=BD=D0=B8=D0=B9=20=D0=B2=20=D1=82=D0=B5=D1=81?= =?UTF-8?q?=D1=82=D0=B0=D1=85.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Library/ProcessOutputWrapper.cs | 90 +++++-------------- tests/showversion.os | 9 +- 2 files changed, 26 insertions(+), 73 deletions(-) diff --git a/src/ScriptEngine.HostedScript/Library/ProcessOutputWrapper.cs b/src/ScriptEngine.HostedScript/Library/ProcessOutputWrapper.cs index 4040d4033..9be6a5897 100644 --- a/src/ScriptEngine.HostedScript/Library/ProcessOutputWrapper.cs +++ b/src/ScriptEngine.HostedScript/Library/ProcessOutputWrapper.cs @@ -76,56 +76,39 @@ private void StopReading() private void StreamDataReceived(object sender, sys.DataReceivedEventArgs e) { - try + if (e.Data != null) { - if (e.Data != null) + lock(_buffer) { - _locker.EnterWriteLock(); if (_buffer.Length != 0) - _buffer.Append(System.Environment.NewLine); + _buffer.Append(System.Environment.NewLine); _buffer.Append(e.Data); } } - finally - { - if(_locker.IsWriteLockHeld) // При else бросит правильное исключение, из-за которого не захватил блокировку - _locker.ExitWriteLock(); - } } public override int Peek() { - try + lock (_buffer) { - EnterReadLock(); if (_bufferIndex >= _buffer.Length) return -1; // no data - return _buffer[_bufferIndex]; - } - finally - { - if (_locker.IsReadLockHeld) // При else бросит правильное исключение, из-за которого не захватил блокировку - _locker.ExitReadLock(); + return _buffer[_bufferIndex]; } - } public override int Read() { - try + lock (_buffer) { - EnterReadLock(); return ReadInternal(); } - finally - { - if (_locker.IsReadLockHeld) - _locker.ExitReadLock(); - } } + // неблокирующий доступ к буферу. + // должна вызываться ТОЛЬКО внутри вышестоящего блока lock. private int ReadInternal() { if (_bufferIndex < _buffer.Length) @@ -145,33 +128,27 @@ public override int Read(char[] destBuffer, int index, int count) if (destBuffer.Length - index < count) throw new ArgumentException("Invalid offset"); - try + + int n = 0; + lock (_buffer) { - EnterReadLock(); - int n = 0; do { int ch = ReadInternal(); if (ch == -1) break; - destBuffer[index + n++] = (char) ch; - } while (n < count); - - return n; - } - finally - { - if (_locker.IsReadLockHeld) - _locker.ExitReadLock(); + destBuffer[index + n++] = (char)ch; + } while (n < count); } + + return n; } public override string ReadLine() { - try + var sb = new StringBuilder(); + lock (_buffer) { - EnterReadLock(); - var sb = new StringBuilder(); while (true) { int ch = ReadInternal(); @@ -182,30 +159,21 @@ public override string ReadLine() return sb.ToString(); } sb.Append((char)ch); - } - if (sb.Length > 0) return sb.ToString(); - return null; - } - finally - { - if (_locker.IsReadLockHeld) - _locker.ExitReadLock(); + } } + if (sb.Length > 0) + return sb.ToString(); + + return null; } public override string ReadToEnd() { - try + lock (_buffer) { - EnterReadLock(); string data = base.ReadToEnd(); ResetBuffer(); - return data; - } - finally - { - if (_locker.IsReadLockHeld) - _locker.ExitReadLock(); + return data; } } @@ -215,16 +183,6 @@ private void ResetBuffer() _bufferIndex = 0; } - private void EnterReadLock() - { - if (_process.HasExited) - { - _process.WaitForExit(15000); // ожидание закрытия потоков - } - - _locker.EnterReadLock(); - } - protected override void Dispose(bool disposing) { if (disposing) diff --git a/tests/showversion.os b/tests/showversion.os index fbca3c872..523cff81f 100644 --- a/tests/showversion.os +++ b/tests/showversion.os @@ -24,14 +24,9 @@ Процесс = СоздатьПроцесс(ПутьОСкрипт() + " -version", , Истина); Процесс.Запустить(); + Процесс.ОжидатьЗавершения(); - Пока Не Процесс.Завершен ИЛИ Процесс.ПотокВывода.ЕстьДанные Цикл - ДанныеВывода = Процесс.ПотокВывода.Прочитать(); - Если ДанныеВывода <> Неопределено Тогда - ДанныеВывода = СокрП(ДанныеВывода); - КонецЕсли; - КонецЦикла; - + ДанныеВывода = Процесс.ПотокВывода.Прочитать(); СистемнаяИнформация = Новый СистемнаяИнформация; юТест.ПроверитьРавенство(ДанныеВывода, СистемнаяИнформация.Версия, "Версия вывода не совпадает с системной информацией!"); From 1989b9cfed9016d251eced2b77b4310ee1ebae22 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Thu, 22 Jun 2017 22:27:32 +0300 Subject: [PATCH 114/168] =?UTF-8?q?=D0=98=D0=B3=D0=BD=D0=BE=D1=80=20=D0=BF?= =?UTF-8?q?=D1=80=D0=B8=D0=BC=D0=B5=D1=80=D0=B0=20=D0=BA=D0=BE=D0=BC=D0=BF?= =?UTF-8?q?=D0=BE=D0=BD=D0=B5=D0=BD=D1=82=D1=8B=20=D0=B2=20=D1=82=D0=B5?= =?UTF-8?q?=D1=81=D1=82=D0=B0=D1=85.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 644076999..c0e2f997d 100644 --- a/.gitignore +++ b/.gitignore @@ -59,3 +59,4 @@ src/packages/ # Visual Studio OpenCover and Test result src/OpenCover TestResult.xml +tests/component/Component.dll From 9852b3a2e6492da163aebab18223e2d6c8b30f88 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Thu, 22 Jun 2017 22:45:07 +0300 Subject: [PATCH 115/168] =?UTF-8?q?=D0=92=D1=8B=D0=BD=D0=B5=D1=81=20=D0=B2?= =?UTF-8?q?=D0=BE=D1=81=D1=81=D1=82=D0=B0=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20nuget=20=D0=B2=D0=BD=D1=83=D1=82=D1=80?= =?UTF-8?q?=D1=8C=20msbuild.=20=D0=A3=D0=B1=D1=80=D0=B0=D0=BB=20=D1=8F?= =?UTF-8?q?=D0=B2=D0=BD=D1=83=D1=8E=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B4=D0=B0?= =?UTF-8?q?=D1=87=D1=83=20=D0=BF=D0=B0=D1=80=D0=B0=D0=BC=D0=B5=D1=82=D1=80?= =?UTF-8?q?=D0=BE=D0=B2=20=D0=B2=20msbuild,=20=D0=B2=D1=8B=D0=BD=D0=B5?= =?UTF-8?q?=D1=81=20=D0=B2=20env?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BuildAll.csproj | 6 +++++- Jenkinsfile | 10 ++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/BuildAll.csproj b/BuildAll.csproj index e89f85cb0..c3383cea5 100644 --- a/BuildAll.csproj +++ b/BuildAll.csproj @@ -90,12 +90,16 @@ - + + + + + diff --git a/Jenkinsfile b/Jenkinsfile index 1436e4cbd..f8d6241ef 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -4,7 +4,10 @@ pipeline { agent none environment { - releaseNumber = 17 + ReleaseNumber = 17 + NugetPath = tool 'nuget' + InnoSetupPath = tool 'InnoSetup' + outputEnc = '65001' } @@ -25,8 +28,7 @@ pipeline { { checkout scm - bat "chcp $outputEnc > nul\r\n\"${tool 'nuget'}\" restore src/1Script.sln" - bat "chcp $outputEnc > nul\r\n\"${tool 'MSBuild'}\" BuildAll.csproj /p:Configuration=Release /p:Platform=x86 /p:ReleaseNumber=$releaseNumber /t:Build" + bat "chcp $outputEnc > nul\r\n\"${tool 'MSBuild'}\" BuildAll.csproj /p:Configuration=Release /p:Platform=x86 /t:Build" stash includes: 'tests, install/build/**', name: 'buildResults' } @@ -55,7 +57,7 @@ pipeline { ws("$workspace".replaceAll("%", "_")) { unstash 'buildResults' - bat "chcp $outputEnc > nul\r\n\"${tool 'MSBuild'}\" BuildAll.csproj /p:Configuration=Release /p:Platform=x86 /p:ReleaseNumber=$releaseNumber /p:InnoSetupPath=\"${tool 'InnoSetup'}\" /t:CreateZip;CreateNuget" + bat "chcp $outputEnc > nul\r\n\"${tool 'MSBuild'}\" BuildAll.csproj /p:Configuration=Release /p:Platform=x86 /t:CreateZip;CreateNuget" archiveArtifacts artifacts: '**/dist/*.exe, **/dist/*.msi, **/dist/*.zip, **/dist/*.nupkg, **/tests/*.xml', fingerprint: true } } From 9358b52da915ff1f75d0a6f7be5aebe6dd77ff82 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Thu, 22 Jun 2017 22:55:17 +0300 Subject: [PATCH 116/168] =?UTF-8?q?=D0=9F=D1=83=D1=82=D0=B8=20=D0=BA=20?= =?UTF-8?q?=D0=B8=D0=BD=D1=81=D1=82=D1=80=D1=83=D0=BC=D0=B5=D0=BD=D1=82?= =?UTF-8?q?=D0=B0=D0=BC=20=D0=B8=D0=B7=D0=B2=D0=B5=D1=81=D1=82=D0=BD=D1=8B?= =?UTF-8?q?=20=D1=82=D0=BE=D0=BB=D1=8C=D0=BA=D0=BE=20=D0=B2=20=D1=80=D0=B0?= =?UTF-8?q?=D0=B7=D1=80=D0=B5=D0=B7=D0=B5=20=D0=BD=D0=BE=D0=B4.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Jenkinsfile | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index f8d6241ef..ea89afaa7 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -5,15 +5,18 @@ pipeline { environment { ReleaseNumber = 17 - NugetPath = tool 'nuget' - InnoSetupPath = tool 'InnoSetup' - outputEnc = '65001' } stages { stage('01. Windows Build') { - agent { label 'windows' } + agent { label 'windows' } + + // пути к инструментам доступны только когда + // нода уже определена + environment { + NugetPath = "${tool 'nuget}" + } steps { @@ -53,6 +56,10 @@ pipeline { stage('03. Packaging') { agent { label 'windows' } + environment { + InnoSetupPath = "${tool 'InnoSetup'}" + } + steps { ws("$workspace".replaceAll("%", "_")) { From 9cc40c7cf9aa678882f326bc91180faa87b22ecc Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Thu, 22 Jun 2017 22:57:46 +0300 Subject: [PATCH 117/168] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=BA=D0=B0=20=D0=BF=D0=BE=20=D0=B8=D0=BD=D1=81=D1=82?= =?UTF-8?q?=D1=80=D1=83=D0=BC=D0=B5=D0=BD=D1=82=D0=B0=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Jenkinsfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index ea89afaa7..b725b9a90 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -15,7 +15,7 @@ pipeline { // пути к инструментам доступны только когда // нода уже определена environment { - NugetPath = "${tool 'nuget}" + NugetPath = "${tool 'nuget'}" } steps { @@ -57,6 +57,7 @@ pipeline { agent { label 'windows' } environment { + NugetPath = "${tool 'nuget'}" InnoSetupPath = "${tool 'InnoSetup'}" } From bf4317aeb0c2912ea7ecdf3c0663d1509a9549a0 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Fri, 23 Jun 2017 00:14:45 +0300 Subject: [PATCH 118/168] =?UTF-8?q?=D0=A1=D0=BE=D1=85=D1=80=D0=B0=D0=BD?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BF=D0=BE=D0=BF=D1=8B=D1=82=D0=BA?= =?UTF-8?q?=D0=B8=20=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B8=20=D0=B1=D0=B0?= =?UTF-8?q?=D0=B3=D0=BE=D0=B2=20=D1=81=20=D1=87=D1=82=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=D0=BC=20=D0=BF=D0=BE=D1=82=D0=BE=D0=BA=D0=BE=D0=B2=20(?= =?UTF-8?q?=D0=BF=D0=B5=D1=80=D0=B5=D0=B4=20=D0=BD=D0=B0=D1=81=D1=82=D1=83?= =?UTF-8?q?=D0=BF=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=D0=BC=20=D0=BF=D0=BE=D0=BD?= =?UTF-8?q?=D0=B8=D0=BC=D0=B0=D0=BD=D0=B8=D1=8F)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Library/ProcessOutputWrapper.cs | 21 ++++++++++++++++++- .../Library/StdTextReadStream.cs | 6 ++++-- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/ScriptEngine.HostedScript/Library/ProcessOutputWrapper.cs b/src/ScriptEngine.HostedScript/Library/ProcessOutputWrapper.cs index 9be6a5897..a50ff5a82 100644 --- a/src/ScriptEngine.HostedScript/Library/ProcessOutputWrapper.cs +++ b/src/ScriptEngine.HostedScript/Library/ProcessOutputWrapper.cs @@ -81,7 +81,7 @@ private void StreamDataReceived(object sender, sys.DataReceivedEventArgs e) lock(_buffer) { if (_buffer.Length != 0) - _buffer.Append(System.Environment.NewLine); + _buffer.Append(System.Environment.NewLine); _buffer.Append(e.Data); } @@ -169,6 +169,25 @@ public override string ReadLine() public override string ReadToEnd() { + // ситуация: + // 1.Процесс.ОжидатьЗавершения() + // 2.Данные = Процесс.ПотокВывода.Прочитать(); // Ожидаем.Что(прочитается все что есть и больше данных не будет). + // + // В момент вызова 1, сразу после завершения процесса, фоновые читатели .NET (читают поток процесса) + // начинают досброс потоков в очередь, для последующей отдачи нам через StreamDataReceived. + // + // Мы ушли на вызов 2 и залочили буфер. Теперь досброс (вызов StreamDataReceived) будет ждать пока мы прочитаем. + // А нам читать нечего, мы вернули Неопределено и освободили буфер. + // 3. Происходит досброс. + // + // Именно это пытался я починить в коммите 65f0c46b25c4 и потом допивал в 2a80a9ce79b + // + + if (_process.HasExited) + _process.WaitForExit(); // здесь ничего не блокируем, ждем пока процесс нам все сбросит. + + // Оставлено в назидание самому себе (с) EvilBeaver + lock (_buffer) { string data = base.ReadToEnd(); diff --git a/src/ScriptEngine.HostedScript/Library/StdTextReadStream.cs b/src/ScriptEngine.HostedScript/Library/StdTextReadStream.cs index 519fdcf81..e4229f697 100644 --- a/src/ScriptEngine.HostedScript/Library/StdTextReadStream.cs +++ b/src/ScriptEngine.HostedScript/Library/StdTextReadStream.cs @@ -51,10 +51,12 @@ public bool HasData [ContextMethod("Прочитать", "Read")] public IValue Read() { - if (_reader.Peek() == -1) + var readResult = _reader.ReadToEnd(); + + if(readResult == String.Empty) return ValueFactory.Create(); - return ValueFactory.Create(_reader.ReadToEnd()); + return ValueFactory.Create(readResult); } /// From b0532fc3f634f108056c4bdeaf85ce9a2a2ae45e Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Fri, 23 Jun 2017 00:28:53 +0300 Subject: [PATCH 119/168] =?UTF-8?q?=D0=9D=D0=B0=D0=B9=D0=B4=D0=B5=D0=BD?= =?UTF-8?q?=D0=B0=20=D0=BF=D1=80=D0=B8=D1=87=D0=B8=D0=BD=D0=B0=20=D0=BD?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=D0=B4=D0=B5=D0=B6=D0=BD=D0=BE=D0=B3=D0=BE=20?= =?UTF-8?q?=D1=87=D1=82=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=BF=D0=BE=D1=82=D0=BE?= =?UTF-8?q?=D0=BA=D0=BE=D0=B2=20=D0=B2=D1=8B=D0=B2=D0=BE=D0=B4=D0=B0=20?= =?UTF-8?q?=D0=BF=D0=BE=D1=81=D0=BB=D0=B5=20=D0=B7=D0=B0=D0=B2=D0=B5=D1=80?= =?UTF-8?q?=D1=88=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=BF=D1=80=D0=BE=D1=86=D0=B5?= =?UTF-8?q?=D1=81=D1=81=D0=B0.=20see=20bf4317aeb0c?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Library/ProcessContext.cs | 29 ++++++++++--------- .../Library/ProcessOutputWrapper.cs | 19 ------------ 2 files changed, 15 insertions(+), 33 deletions(-) diff --git a/src/ScriptEngine.HostedScript/Library/ProcessContext.cs b/src/ScriptEngine.HostedScript/Library/ProcessContext.cs index 8b68f28c6..8f1a67624 100644 --- a/src/ScriptEngine.HostedScript/Library/ProcessContext.cs +++ b/src/ScriptEngine.HostedScript/Library/ProcessContext.cs @@ -38,6 +38,8 @@ public ProcessContext(System.Diagnostics.Process p):this(p, ValueFactory.Create( { } + private bool IsOutputRedirected => _p.StartInfo.RedirectStandardOutput && _p.StartInfo.RedirectStandardError; + /// /// Устанавливает кодировку в которой будут считываться стандартные потоки вывода и ошибок. /// @@ -59,13 +61,6 @@ public StdTextReadStream StdOut { get { - if (_stdOutContext == null) - { - var stream = new ProcessOutputWrapper(_p, ProcessOutputWrapper.OutputVariant.Stdout); - stream.StartReading(); - - _stdOutContext = new StdTextReadStream(stream); - } return _stdOutContext; } } @@ -79,13 +74,6 @@ public StdTextReadStream StdErr { get { - if (_stdErrContext == null) - { - var stream = new ProcessOutputWrapper(_p, ProcessOutputWrapper.OutputVariant.Stderr); - stream.StartReading(); - - _stdErrContext = new StdTextReadStream(stream); - } return _stdErrContext; } } @@ -112,6 +100,19 @@ public StdTextWriteStream StdIn public void Start() { _p.Start(); + + if (IsOutputRedirected) + { + var stream = new ProcessOutputWrapper(_p, ProcessOutputWrapper.OutputVariant.Stdout); + stream.StartReading(); + _stdOutContext = new StdTextReadStream(stream); + + stream = new ProcessOutputWrapper(_p, ProcessOutputWrapper.OutputVariant.Stderr); + stream.StartReading(); + + _stdErrContext = new StdTextReadStream(stream); + + } } /// diff --git a/src/ScriptEngine.HostedScript/Library/ProcessOutputWrapper.cs b/src/ScriptEngine.HostedScript/Library/ProcessOutputWrapper.cs index a50ff5a82..722354d83 100644 --- a/src/ScriptEngine.HostedScript/Library/ProcessOutputWrapper.cs +++ b/src/ScriptEngine.HostedScript/Library/ProcessOutputWrapper.cs @@ -169,25 +169,6 @@ public override string ReadLine() public override string ReadToEnd() { - // ситуация: - // 1.Процесс.ОжидатьЗавершения() - // 2.Данные = Процесс.ПотокВывода.Прочитать(); // Ожидаем.Что(прочитается все что есть и больше данных не будет). - // - // В момент вызова 1, сразу после завершения процесса, фоновые читатели .NET (читают поток процесса) - // начинают досброс потоков в очередь, для последующей отдачи нам через StreamDataReceived. - // - // Мы ушли на вызов 2 и залочили буфер. Теперь досброс (вызов StreamDataReceived) будет ждать пока мы прочитаем. - // А нам читать нечего, мы вернули Неопределено и освободили буфер. - // 3. Происходит досброс. - // - // Именно это пытался я починить в коммите 65f0c46b25c4 и потом допивал в 2a80a9ce79b - // - - if (_process.HasExited) - _process.WaitForExit(); // здесь ничего не блокируем, ждем пока процесс нам все сбросит. - - // Оставлено в назидание самому себе (с) EvilBeaver - lock (_buffer) { string data = base.ReadToEnd(); From 7defe64ede89bd74048d2ab56efb88209b72573b Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Fri, 23 Jun 2017 01:04:09 +0300 Subject: [PATCH 120/168] =?UTF-8?q?=D0=9E=D1=82=D1=81=D1=82=D1=83=D0=BF?= =?UTF-8?q?=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BuildAll.csproj | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/BuildAll.csproj b/BuildAll.csproj index c3383cea5..668b491ce 100644 --- a/BuildAll.csproj +++ b/BuildAll.csproj @@ -1,16 +1,16 @@ - Release - $(MSBuildProjectDirectory)\install\build\ - $(MSBuildProjectDirectory)\dist\ + Release + $(MSBuildProjectDirectory)\install\build\ + $(MSBuildProjectDirectory)\dist\ $(OutputPathForBuild)\bin\ $(OutputPathForBuild)\lib\ $(OutputPathForBuild)\doc\ $(MSBuildProjectDirectory)\mddoc\ $(OutputPathForBuild)\examples\ - $(MSBuildProjectDirectory)\src\1Script.sln - "$(InnoSetupPath)\iscc.exe" + $(MSBuildProjectDirectory)\src\1Script.sln + "$(InnoSetupPath)\iscc.exe" "$(NugetPath)\nuget.exe" 1 From a244400ff88763795a67f1c52cf67555bb4d58bd Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Fri, 23 Jun 2017 01:30:51 +0300 Subject: [PATCH 121/168] =?UTF-8?q?=D0=92=20=D0=B0=D1=80=D1=85=D0=B8=D0=B2?= =?UTF-8?q?=20=D0=BF=D0=BE=D0=BF=D0=B0=D0=B4=D0=B0=D1=8E=D1=82=20DLL=20?= =?UTF-8?q?=D0=B4=D0=BB=D1=8F=20codecoverage?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BuildAll.csproj | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/BuildAll.csproj b/BuildAll.csproj index 668b491ce..8e8241084 100644 --- a/BuildAll.csproj +++ b/BuildAll.csproj @@ -104,23 +104,37 @@ + + + + - - - - - - + + - + + + + + + + + + + + + + + + From 4b6f9bcdcdfc5fd4d53ffccc9425e186d3cc94b0 Mon Sep 17 00:00:00 2001 From: Sergey Batanov Date: Fri, 23 Jun 2017 12:22:07 +0300 Subject: [PATCH 122/168] =?UTF-8?q?=D0=A3=D0=B1=D1=80=D0=B0=D0=BD=20deprec?= =?UTF-8?q?ated=20=D0=B2=20=D1=82=D0=B5=D1=81=D1=82=D0=B0=D1=85.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit В тесте managed-com получение переменных среды переведено на новый лад. --- tests/managed-com.os | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/managed-com.os b/tests/managed-com.os index 91690ae98..cb3f24989 100644 --- a/tests/managed-com.os +++ b/tests/managed-com.os @@ -11,7 +11,7 @@ ВсеТесты = Новый Массив; СИ = Новый СистемнаяИнформация; - Если (Найти(СИ.ВерсияОС, "Windows") > 0) И Не (СИ.ПеременныеСреды().Получить("APPVEYOR") = "True") Тогда + Если (Найти(СИ.ВерсияОС, "Windows") > 0) И Не (ПеременныеСреды().Получить("APPVEYOR") = "True") Тогда ВсеТесты.Добавить("ТестДолжен_ПроверитьУстановкуЧисловыхСвойств"); ВсеТесты.Добавить("ТестДолжен_ПроверитьВызовСОпциональнымиПараметрами"); КонецЕсли; From 4de3c3564e73b7e05f90ae090e2b13346d5f4c22 Mon Sep 17 00:00:00 2001 From: Sergey Batanov Date: Fri, 23 Jun 2017 13:18:44 +0300 Subject: [PATCH 123/168] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=20=D1=82=D0=B5=D1=81=D1=82=20codestat?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/codestat.os | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/codestat.os b/tests/codestat.os index fdc2437f2..ed0e930ed 100644 --- a/tests/codestat.os +++ b/tests/codestat.os @@ -88,13 +88,12 @@ ИмяФайлаСистемногоСкриптаЗапуска = ПолучитьИмяВременногоФайла("sh"); ЗаписьТекста = Новый ЗаписьТекста(ИмяФайлаСистемногоСкриптаЗапуска,,,, Символы.ПС); - ЗаписьТекста.ЗаписатьСтроку("bash -s << /dev/null" ); - ЗаписьТекста.ЗаписатьСтроку("CALLEOF"); ЗаписьТекста.Закрыть(); СтрокаЗапуска = "bash " + ИмяФайлаСистемногоСкриптаЗапуска; From 0158a8f223aa0ce255093608028f08e35370a33c Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Fri, 23 Jun 2017 16:37:57 +0300 Subject: [PATCH 124/168] =?UTF-8?q?=D0=A8=D0=B0=D0=B3=D0=B8=20=D0=B4=D0=BB?= =?UTF-8?q?=D1=8F=20=D1=82=D0=B5=D1=81=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=B0?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20=D0=B8=20=D1=81=D0=B1=D0=BE=D1=80=D0=BA?= =?UTF-8?q?=D0=B8=20=D0=BF=D0=BE=D0=B4=20Linux?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Jenkinsfile | 98 +++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 95 insertions(+), 3 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index b725b9a90..19f988955 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -9,7 +9,7 @@ pipeline { } stages { - stage('01. Windows Build') { + stage('Windows Build') { agent { label 'windows' } // пути к инструментам доступны только когда @@ -39,7 +39,7 @@ pipeline { } - stage('02. Windows testing') { + stage('Windows testing') { agent { label 'windows' } steps { @@ -51,9 +51,35 @@ pipeline { junit 'tests/tests.xml' } } + } + + stage('Linux testing') { + + agent { label 'master' } + + steps { + unstash 'buildResults' + + sh '''\ + if [ ! -d lintests ]; then + mkdir lintests + fi + + rm lintests/*.xml -f + cd tests + mono ./install/build/bin/oscript.exe testrunner.os -runall . xddReportPath ../lintests + exit 0 + '''.stripIndent() + + junit 'lintests/*.xml' + archiveArtifacts artifacts: 'lintests/*.xml', fingerprint: true + } + + + } - stage('03. Packaging') { + stage('Packaging') { agent { label 'windows' } environment { @@ -71,6 +97,72 @@ pipeline { } } + stage ('Packaging DEB and RPM') { + agent { label 'master' } + + steps { + + checkout scm + unstash 'buildResults' + + echo 'Building DEB' + sh '''\ + chmod +x deb-build.sh + DISTPATH=`pwd`/install/build + TMPDIR=oscript-tmp + + if [ -d "$TMPDIR" ] ; then + rm -rf $TMPDIR + fi + + mkdir $TMPDIR + + cp -r $DISTPATH/* $TMPDIR + sh ./deb-build.sh $TMPDIR + + TARGET=`pwd`/output + + if [ ! -d "$TARGET" ] ; then + mkdir $TARGET + fi + + rm -f $TARGET/* + cp -v $TMPDIR/bin/*.deb $TARGET + rm -rf $TMPDIR + '''.stripIndent() + + echo 'Building RPM' + sh '''\ + chmod +x rpm-build.sh + DISTPATH=`pwd`/install/build + TMPDIR=oscript-tmp + + if [ -d "$TMPDIR" ] ; then + rm -rf $TMPDIR + fi + + mkdir $TMPDIR + + cp -r $DISTPATH/* $TMPDIR + ./rpm-build.sh $TMPDIR + + TARGET=`pwd`/output + + if [ ! -d "$TARGET" ] ; then + mkdir $TARGET + fi + + cp $TMPDIR/bin/*.rpm $TARGET + + rm -rf $TMPDIR + '''.stripIndent() + + archiveArtifacts artifacts: 'output/*', fingerprint: true + + } + + } + } } \ No newline at end of file From bd64da5638749d99a69b04c2cca216d1ca64e960 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Fri, 23 Jun 2017 17:39:34 +0300 Subject: [PATCH 125/168] =?UTF-8?q?=D0=9D=D0=B5=20=D0=B7=D0=B0=D0=B2=D0=B0?= =?UTF-8?q?=D0=BB=D0=B8=D0=B2=D0=B0=D1=82=D1=8C=20=D1=81=D0=B1=D0=BE=D1=80?= =?UTF-8?q?=D0=BA=D1=83,=20=D0=B5=D1=81=D0=BB=D0=B8=20=D1=82=D0=B5=D1=81?= =?UTF-8?q?=D1=82=20=D0=BD=D0=B0=20Lin=20=D0=BD=D0=B5=20=D0=BF=D1=80=D0=BE?= =?UTF-8?q?=D0=B9=D0=B4=D0=B5=D0=BD=20(UNSTABLE)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 19f988955..203ffa4cc 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -67,7 +67,7 @@ pipeline { rm lintests/*.xml -f cd tests - mono ./install/build/bin/oscript.exe testrunner.os -runall . xddReportPath ../lintests + mono ../install/build/bin/oscript.exe testrunner.os -runall . xddReportPath ../lintests || true exit 0 '''.stripIndent() From 0beb9f4226417241d17ea2961d5f9d5ec37290e4 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Fri, 23 Jun 2017 17:43:52 +0300 Subject: [PATCH 126/168] =?UTF-8?q?=D0=9D=D0=B5=D0=B2=D0=B5=D1=80=D0=BD?= =?UTF-8?q?=D1=8B=D0=B5=20=D0=BF=D1=83=D1=82=D0=B8=20=D0=BF=D1=80=D0=B8=20?= =?UTF-8?q?=D0=BF=D0=BE=D1=80=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D0=B8=20=D1=81=20TeamCity?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Jenkinsfile | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 203ffa4cc..2ccd5bdfd 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -107,8 +107,9 @@ pipeline { echo 'Building DEB' sh '''\ + cd install chmod +x deb-build.sh - DISTPATH=`pwd`/install/build + DISTPATH=`pwd`/build TMPDIR=oscript-tmp if [ -d "$TMPDIR" ] ; then @@ -120,7 +121,7 @@ pipeline { cp -r $DISTPATH/* $TMPDIR sh ./deb-build.sh $TMPDIR - TARGET=`pwd`/output + TARGET=$WORKSPACE/output if [ ! -d "$TARGET" ] ; then mkdir $TARGET @@ -133,8 +134,9 @@ pipeline { echo 'Building RPM' sh '''\ + cd install chmod +x rpm-build.sh - DISTPATH=`pwd`/install/build + DISTPATH=`pwd`/build TMPDIR=oscript-tmp if [ -d "$TMPDIR" ] ; then @@ -146,7 +148,7 @@ pipeline { cp -r $DISTPATH/* $TMPDIR ./rpm-build.sh $TMPDIR - TARGET=`pwd`/output + TARGET=$WORKSPACE/output if [ ! -d "$TARGET" ] ; then mkdir $TARGET From 1ceda3a8a7d26abfde8f9770b217f073fae3bf74 Mon Sep 17 00:00:00 2001 From: afanasko Date: Sat, 24 Jun 2017 11:25:57 +0300 Subject: [PATCH 127/168] =?UTF-8?q?=D0=92=D0=BD=D0=B5=D1=81=D0=B5=D0=BD?= =?UTF-8?q?=D1=8B=20=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD=D0=B8=D1=8F?= =?UTF-8?q?=20=D0=BF=D0=BE=20Issue-447:=20=D0=98=D0=BC=D1=8F=D0=92=D1=8B?= =?UTF-8?q?=D1=85=D0=BE=D0=B4=D0=BD=D0=BE=D0=B3=D0=BE=D0=A4=D0=B0=D0=B9?= =?UTF-8?q?=D0=BB=D0=B0=20=D0=BC=D0=BE=D0=B6=D0=B5=D1=82=20=D0=B1=D1=8B?= =?UTF-8?q?=D1=82=D1=8C=20=D0=BF=D1=83=D1=81=D1=82=D0=BE=D0=B9=20=D1=81?= =?UTF-8?q?=D1=82=D1=80=D0=BE=D0=BA=D0=BE=D0=B9.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Library/Http/HttpConnectionContext.cs | 814 +++++++++--------- .../Library/Http/HttpResponseBody.cs | 2 +- 2 files changed, 408 insertions(+), 408 deletions(-) diff --git a/src/ScriptEngine.HostedScript/Library/Http/HttpConnectionContext.cs b/src/ScriptEngine.HostedScript/Library/Http/HttpConnectionContext.cs index cd17508c3..c680213f8 100644 --- a/src/ScriptEngine.HostedScript/Library/Http/HttpConnectionContext.cs +++ b/src/ScriptEngine.HostedScript/Library/Http/HttpConnectionContext.cs @@ -1,415 +1,415 @@ -/*---------------------------------------------------------- -This Source Code Form is subject to the terms of the -Mozilla Public License, v.2.0. If a copy of the MPL -was not distributed with this file, You can obtain one -at http://mozilla.org/MPL/2.0/. -----------------------------------------------------------*/ -using ScriptEngine.Machine; -using ScriptEngine.Machine.Contexts; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Net; -using System.Text; - -namespace ScriptEngine.HostedScript.Library.Http -{ - /// - /// Объект доступа к протоколу HTTP/HTTPS. - /// Использует семантику методов, реализованных в платформе 1С:Предприятие 8.2.18 и старше. - /// Синтаксис методов, применявшийся в более младших версиях не поддерживается. - /// Средства работы с HTTP находятся в статусе experimental. - /// - [ContextClass("HTTPСоединение", "HTTPConnection")] - public class HttpConnectionContext : AutoContext - { - readonly InternetProxyContext _proxy; - - readonly Uri _hostUri; - - const string HTTP_SCHEME = "http"; - const string HTTPS_SCHEME = "https"; - - public HttpConnectionContext(string host, - int port = 0, - string user = null, - string password = null, - InternetProxyContext proxy = null, - int timeout = 0, - IValue ssl = null, - bool useOSAuth = false) - { - if (ssl != null && !(ssl.DataType == Machine.DataType.Undefined || ssl.DataType == Machine.DataType.NotAValidValue)) - throw new RuntimeException("Защищенное соединение по произвольным сертификатам не поддерживается. Если необходим доступ по https, просто укажите протокол https в адресе хоста."); - - var uriBuilder = new UriBuilder(host); - if (port != 0) - uriBuilder.Port = port; - - if (uriBuilder.Scheme != HTTP_SCHEME && uriBuilder.Scheme != HTTPS_SCHEME) - throw RuntimeException.InvalidArgumentValue(); - - _hostUri = uriBuilder.Uri; - - Host = _hostUri.Host; - Port = _hostUri.Port; - - User = user == null ? String.Empty : user; +/*---------------------------------------------------------- +This Source Code Form is subject to the terms of the +Mozilla Public License, v.2.0. If a copy of the MPL +was not distributed with this file, You can obtain one +at http://mozilla.org/MPL/2.0/. +----------------------------------------------------------*/ +using ScriptEngine.Machine; +using ScriptEngine.Machine.Contexts; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net; +using System.Text; + +namespace ScriptEngine.HostedScript.Library.Http +{ + /// + /// Объект доступа к протоколу HTTP/HTTPS. + /// Использует семантику методов, реализованных в платформе 1С:Предприятие 8.2.18 и старше. + /// Синтаксис методов, применявшийся в более младших версиях не поддерживается. + /// Средства работы с HTTP находятся в статусе experimental. + /// + [ContextClass("HTTPСоединение", "HTTPConnection")] + public class HttpConnectionContext : AutoContext + { + readonly InternetProxyContext _proxy; + + readonly Uri _hostUri; + + const string HTTP_SCHEME = "http"; + const string HTTPS_SCHEME = "https"; + + public HttpConnectionContext(string host, + int port = 0, + string user = null, + string password = null, + InternetProxyContext proxy = null, + int timeout = 0, + IValue ssl = null, + bool useOSAuth = false) + { + if (ssl != null && !(ssl.DataType == Machine.DataType.Undefined || ssl.DataType == Machine.DataType.NotAValidValue)) + throw new RuntimeException("Защищенное соединение по произвольным сертификатам не поддерживается. Если необходим доступ по https, просто укажите протокол https в адресе хоста."); + + var uriBuilder = new UriBuilder(host); + if (port != 0) + uriBuilder.Port = port; + + if (uriBuilder.Scheme != HTTP_SCHEME && uriBuilder.Scheme != HTTPS_SCHEME) + throw RuntimeException.InvalidArgumentValue(); + + _hostUri = uriBuilder.Uri; + + Host = _hostUri.Host; + Port = _hostUri.Port; + + User = user == null ? String.Empty : user; Password = password == null ? String.Empty : password; - Timeout = timeout; - _proxy = proxy; - UseOSAuthentication = useOSAuth; - - } - - [ContextProperty("ИспользоватьАутентификациюОС", "UseOSAuthentication", CanWrite=false)] - public bool UseOSAuthentication - { - get; - set; - } - - [ContextProperty("Пользователь","User")] - public string User - { - get; private set; - } - - [ContextProperty("Пароль", "Password")] - public string Password - { - get; private set; - - } - - [ContextProperty("Сервер", "Host")] - public string Host - { - get; private set; - } - - [ContextProperty("Порт", "Port")] - public int Port - { - get; private set; - } - - [ContextProperty("Прокси", "Proxy")] - public IValue Proxy - { - get - { - if (_proxy == null) - return ValueFactory.Create(); - - return _proxy; - } - } - - [ContextProperty("Таймаут", "Timeout")] - public int Timeout - { - get; private set; - } - - /// - /// Получить данные методом GET - /// - /// HTTPЗапрос. Данные и заголовки запроса http - /// Строка. Имя файла, в который нужно записать ответ. Необязательный параметр. - /// HTTPОтвет. Ответ сервера. - [ContextMethod("Получить", "Get")] - public HttpResponseContext Get(HttpRequestContext request, string output = null) - { - return GetResponse(request, "GET", output); - } - - /// - /// Передача данных методом PUT - /// - /// HTTPЗапрос. Данные и заголовки запроса http - /// HTTPОтвет. Ответ сервера. - [ContextMethod("Записать", "Put")] - public HttpResponseContext Put(HttpRequestContext request) - { - return GetResponse(request, "PUT"); - } - - /// - /// Передача данных методом POST - /// - /// HTTPЗапрос. Данные и заголовки запроса http - /// Строка. Имя файла, в который нужно записать ответ. Необязательный параметр. - /// HTTPОтвет. Ответ сервера. - [ContextMethod("ОтправитьДляОбработки", "Post")] - public HttpResponseContext Post(HttpRequestContext request, string output = null) - { - return GetResponse(request, "POST", output); - } - - /// - /// Удалить данные методом DELETE - /// - /// HTTPЗапрос. Данные и заголовки запроса http - /// HTTPОтвет. Ответ сервера. - [ContextMethod("Удалить", "Delete")] - public HttpResponseContext Delete(HttpRequestContext request) - { - return GetResponse(request, "DELETE"); - } - - /// - /// Изменяет данные на сервере при помощи PATCH-запроса - /// - /// HTTPЗапрос. Данные и заголовки запроса http - /// HTTPОтвет. Ответ сервера. - [ContextMethod("Изменить", "Patch")] - public HttpResponseContext Patch(HttpRequestContext request) - { - return GetResponse(request, "PATCH"); - } - - /// - /// Получает при помощи HEAD-запроса информацию о запрошиваемых данных, содержащуюся в заголовках, не получая сами данные. - /// - /// HTTPЗапрос. Данные и заголовки запроса http - /// HTTPОтвет. Ответ сервера. - [ContextMethod("ПолучитьЗаголовки", "Head")] - public HttpResponseContext Head(HttpRequestContext request) - { - return GetResponse(request, "HEAD"); - } - - /// - /// Вызвать произвольный HTTP-метод - /// - /// Строка. Имя метода HTTP - /// HTTPЗапрос. Данные и заголовки запроса http - /// Строка. Имя выходного файла - /// HTTPОтвет. Ответ сервера. - [ContextMethod("ВызватьHTTPМетод", "CallHTTPMethod")] - public HttpResponseContext Patch(string method, HttpRequestContext request, string output = null) - { - return GetResponse(request, method, output); - } - - private HttpWebRequest CreateRequest(string resource) - { - var uriBuilder = new UriBuilder(_hostUri); - if(Port != 0) - uriBuilder.Port = Port; - - var resourceUri = new Uri(uriBuilder.Uri, resource); - - var request = (HttpWebRequest)HttpWebRequest.Create(resourceUri); - if (User != "" || Password != "") - { - request.Credentials = new NetworkCredential(User, Password); - //request.PreAuthenticate = true; - // Авторизация на сервере 1С:Предприятие, например, не работает без явного указания заголовка. - // http://blog.kowalczyk.info/article/at3/Forcing-basic-http-authentication-for-HttpWebReq.html - string authInfo = User + ":" + Password; - // Для 1С работает только UTF-8, хотя стандарт требует ISO-8859-1 - var basicAuthEncoding = Encoding.GetEncoding("UTF-8"); - authInfo = Convert.ToBase64String(basicAuthEncoding.GetBytes(authInfo)); - request.Headers["Authorization"] = "Basic " + authInfo; - } - else if(UseOSAuthentication) - { - request.Credentials = CredentialCache.DefaultNetworkCredentials; - } - - if(_proxy != null) - request.Proxy = _proxy.GetProxy(uriBuilder.Scheme); - + Timeout = timeout; + _proxy = proxy; + UseOSAuthentication = useOSAuth; + + } + + [ContextProperty("ИспользоватьАутентификациюОС", "UseOSAuthentication", CanWrite=false)] + public bool UseOSAuthentication + { + get; + set; + } + + [ContextProperty("Пользователь","User")] + public string User + { + get; private set; + } + + [ContextProperty("Пароль", "Password")] + public string Password + { + get; private set; + + } + + [ContextProperty("Сервер", "Host")] + public string Host + { + get; private set; + } + + [ContextProperty("Порт", "Port")] + public int Port + { + get; private set; + } + + [ContextProperty("Прокси", "Proxy")] + public IValue Proxy + { + get + { + if (_proxy == null) + return ValueFactory.Create(); + + return _proxy; + } + } + + [ContextProperty("Таймаут", "Timeout")] + public int Timeout + { + get; private set; + } + + /// + /// Получить данные методом GET + /// + /// HTTPЗапрос. Данные и заголовки запроса http + /// Строка. Имя файла, в который нужно записать ответ. Необязательный параметр. + /// HTTPОтвет. Ответ сервера. + [ContextMethod("Получить", "Get")] + public HttpResponseContext Get(HttpRequestContext request, string output = null) + { + return GetResponse(request, "GET", output); + } + + /// + /// Передача данных методом PUT + /// + /// HTTPЗапрос. Данные и заголовки запроса http + /// HTTPОтвет. Ответ сервера. + [ContextMethod("Записать", "Put")] + public HttpResponseContext Put(HttpRequestContext request) + { + return GetResponse(request, "PUT"); + } + + /// + /// Передача данных методом POST + /// + /// HTTPЗапрос. Данные и заголовки запроса http + /// Строка. Имя файла, в который нужно записать ответ. Необязательный параметр. + /// HTTPОтвет. Ответ сервера. + [ContextMethod("ОтправитьДляОбработки", "Post")] + public HttpResponseContext Post(HttpRequestContext request, string output = null) + { + return GetResponse(request, "POST", output); + } + + /// + /// Удалить данные методом DELETE + /// + /// HTTPЗапрос. Данные и заголовки запроса http + /// HTTPОтвет. Ответ сервера. + [ContextMethod("Удалить", "Delete")] + public HttpResponseContext Delete(HttpRequestContext request) + { + return GetResponse(request, "DELETE"); + } + + /// + /// Изменяет данные на сервере при помощи PATCH-запроса + /// + /// HTTPЗапрос. Данные и заголовки запроса http + /// HTTPОтвет. Ответ сервера. + [ContextMethod("Изменить", "Patch")] + public HttpResponseContext Patch(HttpRequestContext request) + { + return GetResponse(request, "PATCH"); + } + + /// + /// Получает при помощи HEAD-запроса информацию о запрошиваемых данных, содержащуюся в заголовках, не получая сами данные. + /// + /// HTTPЗапрос. Данные и заголовки запроса http + /// HTTPОтвет. Ответ сервера. + [ContextMethod("ПолучитьЗаголовки", "Head")] + public HttpResponseContext Head(HttpRequestContext request) + { + return GetResponse(request, "HEAD"); + } + + /// + /// Вызвать произвольный HTTP-метод + /// + /// Строка. Имя метода HTTP + /// HTTPЗапрос. Данные и заголовки запроса http + /// Строка. Имя выходного файла + /// HTTPОтвет. Ответ сервера. + [ContextMethod("ВызватьHTTPМетод", "CallHTTPMethod")] + public HttpResponseContext Patch(string method, HttpRequestContext request, string output = null) + { + return GetResponse(request, method, output); + } + + private HttpWebRequest CreateRequest(string resource) + { + var uriBuilder = new UriBuilder(_hostUri); + if(Port != 0) + uriBuilder.Port = Port; + + var resourceUri = new Uri(uriBuilder.Uri, resource); + + var request = (HttpWebRequest)HttpWebRequest.Create(resourceUri); + if (User != "" || Password != "") + { + request.Credentials = new NetworkCredential(User, Password); + //request.PreAuthenticate = true; + // Авторизация на сервере 1С:Предприятие, например, не работает без явного указания заголовка. + // http://blog.kowalczyk.info/article/at3/Forcing-basic-http-authentication-for-HttpWebReq.html + string authInfo = User + ":" + Password; + // Для 1С работает только UTF-8, хотя стандарт требует ISO-8859-1 + var basicAuthEncoding = Encoding.GetEncoding("UTF-8"); + authInfo = Convert.ToBase64String(basicAuthEncoding.GetBytes(authInfo)); + request.Headers["Authorization"] = "Basic " + authInfo; + } + else if(UseOSAuthentication) + { + request.Credentials = CredentialCache.DefaultNetworkCredentials; + } + + if(_proxy != null) + request.Proxy = _proxy.GetProxy(uriBuilder.Scheme); + if (Timeout == 0) - { + { request.Timeout = System.Threading.Timeout.Infinite; } else { - request.Timeout = Timeout * 1000; - } - - return request; - - } - - private HttpResponseContext GetResponse(HttpRequestContext request, string method, string output = null) - { - var webRequest = CreateRequest(request.ResourceAddress); - webRequest.Method = method; - webRequest.KeepAlive = false; - SetRequestHeaders(request, webRequest); - SetRequestBody(request, webRequest); - - HttpWebResponse response; - - try - { - response = (HttpWebResponse)webRequest.GetResponse(); - } - catch (WebException ex) - { - if (ex.Status == WebExceptionStatus.ProtocolError && ex.Response != null) - response = (HttpWebResponse)ex.Response; - else - throw; - } - - var responseContext = new HttpResponseContext(response, output); - - return responseContext; - - } - - private static void SetRequestBody(HttpRequestContext request, HttpWebRequest webRequest) - { - var stream = request.Body; - if (stream == null) - { - return; // тело не установлено - } - - using(stream) - { - if (stream.CanSeek) - webRequest.ContentLength = stream.Length; - - using(var requestStream = webRequest.GetRequestStream()) - { - const int CHUNK_SIZE = 4096; - byte[] buf = new byte[CHUNK_SIZE]; - - while(true) - { - int bytesRead = stream.Read(buf, 0, CHUNK_SIZE); - if (bytesRead == 0) - break; - - requestStream.Write(buf, 0, bytesRead); - - } - } - } - } - - private static void SetRequestHeaders(HttpRequestContext request, HttpWebRequest webRequest) - { - foreach (var item in request.Headers.Select(x => x.GetRawValue() as KeyAndValueImpl)) - { - System.Diagnostics.Trace.Assert(item != null); - - var key = item.Key.AsString(); - var value = item.Value.AsString(); - - switch(key.ToUpperInvariant()) - { - case "CONTENT-TYPE": - webRequest.ContentType = value; - break; - case "CONTENT-LENGTH": - try - { - webRequest.ContentLength = Int32.Parse(value); - } - catch (FormatException) - { - throw new RuntimeException("Заголовок Content-Length задан неправильно"); - } - break; - case "ACCEPT": - webRequest.Accept = value; - break; - case "EXPECT": - webRequest.Expect = value; - break; - case "TRANSFER-ENCODING": - webRequest.TransferEncoding = value; - break; - case "CONNECTION": - webRequest.Connection = value; - break; - case "DATE": - try - { - webRequest.Date = DateTime.Parse(value); - } - catch (FormatException) - { - throw new RuntimeException("Заголовок Date задан неправильно"); - } - break; - case "HOST": - webRequest.Host = value; - break; - case "IF-MODIFIED-SINCE": - try - { - webRequest.IfModifiedSince = DateTime.Parse(value); - } - catch (FormatException) - { - throw new RuntimeException("Заголовок If-Modified-Since задан неправильно"); - } - break; - case "RANGE": - throw new NotImplementedException(); - case "REFERER": - webRequest.Referer = value; - break; - case "USER-AGENT": - webRequest.UserAgent = value; - break; - case "PROXY-CONNECTION": - throw new NotImplementedException(); - default: - webRequest.Headers.Set(key, value); - break; - - } - - - - } - } - - /// - /// Стандартный конструктор. Поддержка клиентских сертификатов HTTPS в текущей версии не реализована. - /// Для доступа к серверу по протоколу HTTPS указывайте схему https:// в URL. - /// - /// Адрес сервера (можно указать URL-схему http или https) - /// Порт сервера - /// Пользователь - /// Пароль - /// ИнтернетПрокси. Настройки прокси-сервера - /// Таймаут ожидания. - /// Объект ЗащищенноеСоединение. На данный момент данная механика работы с SSL не поддерживается. - /// Обращение к https возможно, если в адресе хоста указать протокол https. В этом случае будут использованы сертификаты из хранилища ОС. + request.Timeout = Timeout * 1000; + } + + return request; + + } + + private HttpResponseContext GetResponse(HttpRequestContext request, string method, string output = null) + { + var webRequest = CreateRequest(request.ResourceAddress); + webRequest.Method = method; + webRequest.KeepAlive = false; + SetRequestHeaders(request, webRequest); + SetRequestBody(request, webRequest); + + HttpWebResponse response; + + try + { + response = (HttpWebResponse)webRequest.GetResponse(); + } + catch (WebException ex) + { + if (ex.Status == WebExceptionStatus.ProtocolError && ex.Response != null) + response = (HttpWebResponse)ex.Response; + else + throw; + } + + var responseContext = new HttpResponseContext(response, output); + + return responseContext; + + } + + private static void SetRequestBody(HttpRequestContext request, HttpWebRequest webRequest) + { + var stream = request.Body; + if (stream == null) + { + return; // тело не установлено + } + + using(stream) + { + if (stream.CanSeek) + webRequest.ContentLength = stream.Length; + + using(var requestStream = webRequest.GetRequestStream()) + { + const int CHUNK_SIZE = 4096; + byte[] buf = new byte[CHUNK_SIZE]; + + while(true) + { + int bytesRead = stream.Read(buf, 0, CHUNK_SIZE); + if (bytesRead == 0) + break; + + requestStream.Write(buf, 0, bytesRead); + + } + } + } + } + + private static void SetRequestHeaders(HttpRequestContext request, HttpWebRequest webRequest) + { + foreach (var item in request.Headers.Select(x => x.GetRawValue() as KeyAndValueImpl)) + { + System.Diagnostics.Trace.Assert(item != null); + + var key = item.Key.AsString(); + var value = item.Value.AsString(); + + switch(key.ToUpperInvariant()) + { + case "CONTENT-TYPE": + webRequest.ContentType = value; + break; + case "CONTENT-LENGTH": + try + { + webRequest.ContentLength = Int32.Parse(value); + } + catch (FormatException) + { + throw new RuntimeException("Заголовок Content-Length задан неправильно"); + } + break; + case "ACCEPT": + webRequest.Accept = value; + break; + case "EXPECT": + webRequest.Expect = value; + break; + case "TRANSFER-ENCODING": + webRequest.TransferEncoding = value; + break; + case "CONNECTION": + webRequest.Connection = value; + break; + case "DATE": + try + { + webRequest.Date = DateTime.Parse(value); + } + catch (FormatException) + { + throw new RuntimeException("Заголовок Date задан неправильно"); + } + break; + case "HOST": + webRequest.Host = value; + break; + case "IF-MODIFIED-SINCE": + try + { + webRequest.IfModifiedSince = DateTime.Parse(value); + } + catch (FormatException) + { + throw new RuntimeException("Заголовок If-Modified-Since задан неправильно"); + } + break; + case "RANGE": + throw new NotImplementedException(); + case "REFERER": + webRequest.Referer = value; + break; + case "USER-AGENT": + webRequest.UserAgent = value; + break; + case "PROXY-CONNECTION": + throw new NotImplementedException(); + default: + webRequest.Headers.Set(key, value); + break; + + } + + + + } + } + + /// + /// Стандартный конструктор. Поддержка клиентских сертификатов HTTPS в текущей версии не реализована. + /// Для доступа к серверу по протоколу HTTPS указывайте схему https:// в URL. + /// + /// Адрес сервера (можно указать URL-схему http или https) + /// Порт сервера + /// Пользователь + /// Пароль + /// ИнтернетПрокси. Настройки прокси-сервера + /// Таймаут ожидания. + /// Объект ЗащищенноеСоединение. На данный момент данная механика работы с SSL не поддерживается. + /// Обращение к https возможно, если в адресе хоста указать протокол https. В этом случае будут использованы сертификаты из хранилища ОС. /// Указание произвольных клиентских и серверных сертификатов в текущей версии не поддерживается. - /// Использовать аутентификацию ОС. - /// - [ScriptConstructor] - public static HttpConnectionContext Constructor(IValue host, - IValue port = null, - IValue user = null, - IValue password = null, - IValue proxy = null, - IValue timeout = null, - IValue ssl = null, - IValue useOSAuthentication = null) - { - return new HttpConnectionContext(host.AsString(), - ContextValuesMarshaller.ConvertParam(port), - ContextValuesMarshaller.ConvertParam(user), - ContextValuesMarshaller.ConvertParam(password), - ContextValuesMarshaller.ConvertParam(proxy), - ContextValuesMarshaller.ConvertParam(timeout), - ContextValuesMarshaller.ConvertParam(ssl), - ContextValuesMarshaller.ConvertParam(useOSAuthentication) - ); - } - - } -} + /// Использовать аутентификацию ОС. + /// + [ScriptConstructor] + public static HttpConnectionContext Constructor(IValue host, + IValue port = null, + IValue user = null, + IValue password = null, + IValue proxy = null, + IValue timeout = null, + IValue ssl = null, + IValue useOSAuthentication = null) + { + return new HttpConnectionContext(host.AsString(), + ContextValuesMarshaller.ConvertParam(port), + ContextValuesMarshaller.ConvertParam(user), + ContextValuesMarshaller.ConvertParam(password), + ContextValuesMarshaller.ConvertParam(proxy), + ContextValuesMarshaller.ConvertParam(timeout), + ContextValuesMarshaller.ConvertParam(ssl), + ContextValuesMarshaller.ConvertParam(useOSAuthentication) + ); + } + + } +} diff --git a/src/ScriptEngine.HostedScript/Library/Http/HttpResponseBody.cs b/src/ScriptEngine.HostedScript/Library/Http/HttpResponseBody.cs index 9a0432880..c2e41fe75 100644 --- a/src/ScriptEngine.HostedScript/Library/Http/HttpResponseBody.cs +++ b/src/ScriptEngine.HostedScript/Library/Http/HttpResponseBody.cs @@ -25,7 +25,7 @@ class HttpResponseBody : IDisposable public HttpResponseBody(HttpWebResponse response, string dumpToFile) { - if (dumpToFile == null) + if (dumpToFile == null || dumpToFile == String.Empty) { InitInMemoryResponse(response); } From 4e56f48850873015d7c306c600042ec47450b302 Mon Sep 17 00:00:00 2001 From: afanasko Date: Sat, 24 Jun 2017 14:39:28 +0300 Subject: [PATCH 128/168] =?UTF-8?q?=D0=A0=D0=B5=D1=84=D0=B0=D0=BA=D1=82?= =?UTF-8?q?=D0=BE=D1=80=D0=B8=D0=BD=D0=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ScriptEngine.HostedScript/Library/Http/HttpResponseBody.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ScriptEngine.HostedScript/Library/Http/HttpResponseBody.cs b/src/ScriptEngine.HostedScript/Library/Http/HttpResponseBody.cs index c2e41fe75..1fb9e3255 100644 --- a/src/ScriptEngine.HostedScript/Library/Http/HttpResponseBody.cs +++ b/src/ScriptEngine.HostedScript/Library/Http/HttpResponseBody.cs @@ -25,7 +25,7 @@ class HttpResponseBody : IDisposable public HttpResponseBody(HttpWebResponse response, string dumpToFile) { - if (dumpToFile == null || dumpToFile == String.Empty) + if (String.IsNullOrEmpty(dumpToFile)) { InitInMemoryResponse(response); } From a2a92e538b05706dcc635d6d8a082062b81c6e95 Mon Sep 17 00:00:00 2001 From: Sergey Batanov Date: Tue, 27 Jun 2017 09:38:28 +0300 Subject: [PATCH 129/168] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=20Dockerfile=20=D1=81=D0=B1=D0=BE=D1=80?= =?UTF-8?q?=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- install/builders/deb/Dockerfile | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/install/builders/deb/Dockerfile b/install/builders/deb/Dockerfile index ef4fc13f1..be68c8a7b 100644 --- a/install/builders/deb/Dockerfile +++ b/install/builders/deb/Dockerfile @@ -3,10 +3,6 @@ FROM ubuntu:latest MAINTAINER sergey.batanov@dmpas.ru -# чтобы запустить тесты -RUN locale-gen --lang ru_RU.UTF-8 -ENV LANG ru_RU.UTF-8 - # Add mono repository RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF && \ echo "deb http://download.mono-project.com/repo/debian wheezy main" > /etc/apt/sources.list.d/mono-xamarin.list @@ -24,7 +20,12 @@ RUN apt-get update && apt-get install -y \ debhelper\ lintian\ md5deep\ - fakeroot + fakeroot \ + locales + +# чтобы запустить тесты +RUN locale-gen --lang ru_RU.UTF-8 +ENV LANG ru_RU.UTF-8 ADD ./build.sh /root/ ENTRYPOINT /root/build.sh From 7ee3858b89f017a441bf6507a5c81258141ee8ee Mon Sep 17 00:00:00 2001 From: ret-Phoenix Date: Tue, 27 Jun 2017 10:17:56 +0300 Subject: [PATCH 130/168] =?UTF-8?q?-=20=D0=94=D0=BE=D1=80=D0=B0=D0=B1?= =?UTF-8?q?=D0=BE=D1=82=D0=B0=D0=BB=20=D1=82=D0=B5=D1=81=D1=82=D1=8B=20?= =?UTF-8?q?=D0=98=D0=BD=D1=84=D0=BE=D1=80=D0=BC=D0=B0=D1=86=D0=B8=D1=8F?= =?UTF-8?q?=D0=9E=D0=94=D0=B8=D1=81=D0=BA=D0=B5,=20=D1=82=D0=B5=D0=BF?= =?UTF-8?q?=D0=B5=D1=80=D1=8C=20=D0=BD=D0=B0=D1=85=D0=BE=D0=B4=D0=B8=D1=82?= =?UTF-8?q?=20=D0=BF=D0=B5=D1=80=D0=B2=D1=8B=D0=B9=20=D0=93=D0=BE=D1=82?= =?UTF-8?q?=D0=BE=D0=B2=D1=8B=D0=B9=20=D0=B4=D0=B8=D1=81=D0=BA=20=D0=B8=20?= =?UTF-8?q?=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=D0=B5=D1=82=20=D1=81=20?= =?UTF-8?q?=D0=BD=D0=B8=D0=BC=20-=20=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=BB=20=D1=82=D0=B8=D0=BF=20=D0=B2=D0=BE=D0=B7=D0=B2=D1=80?= =?UTF-8?q?=D0=B0=D1=89=D0=B0=D0=B5=D0=BC=D0=BE=D0=B3=D0=BE=20=D0=B7=D0=BD?= =?UTF-8?q?=D0=B0=D1=87=D0=B5=D0=BD=D0=B8=D1=8F=20=D1=83=20=D0=92=D1=80?= =?UTF-8?q?=D0=B5=D0=BC=D1=8F=D0=A0=D0=B0=D0=B1=D0=BE=D1=82=D1=8B=D0=A1?= =?UTF-8?q?=D0=9C=D0=BE=D0=BC=D0=B5=D0=BD=D1=82=D0=B0=D0=97=D0=B0=D0=B3?= =?UTF-8?q?=D1=80=D1=83=D0=B7=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Library/SystemEnvironmentContext.cs | 2 +- tests/driveinfo.os | 34 ++++++++++++------- 2 files changed, 23 insertions(+), 13 deletions(-) diff --git a/src/ScriptEngine.HostedScript/Library/SystemEnvironmentContext.cs b/src/ScriptEngine.HostedScript/Library/SystemEnvironmentContext.cs index cdd618cf4..84971bb92 100644 --- a/src/ScriptEngine.HostedScript/Library/SystemEnvironmentContext.cs +++ b/src/ScriptEngine.HostedScript/Library/SystemEnvironmentContext.cs @@ -106,7 +106,7 @@ public int SystemPageSize /// Возвращает время, истекшее с момента загрузки системы (в миллисекундах). /// [ContextProperty("ВремяРаботыСМоментаЗагрузки")] - public int TickCount + public System.Int32 TickCount { get { return System.Environment.TickCount; } } diff --git a/tests/driveinfo.os b/tests/driveinfo.os index b4ea7941b..dfe4f39d7 100644 --- a/tests/driveinfo.os +++ b/tests/driveinfo.os @@ -1,7 +1,7 @@ #Использовать asserts Функция ПолучитьСписокТестов(Тестирование) Экспорт - + СписокТестов = Новый Массив; СписокТестов.Добавить("Тест_Должен_ВернутьДоступноеМесто"); СписокТестов.Добавить("Тест_Должен_ВернутьИмяФС"); @@ -14,58 +14,68 @@ СписокТестов.Добавить("Тест_Должен_ВернутьМеткаТома"); СписокТестов.Добавить("Тест_Должен_ВывестиЗначения"); - + Возврат СписокТестов; + +КонецФункции +Функция ПодключенныйДиск() + Диски = Новый СистемнаяИнформация().ИменаЛогическихДисков; + Для Каждого Диск из Диски Цикл + ИнформацияОДиске = Новый ИнформацияОДиске(Диск); + Если ИнформацияОДиске.Готов Тогда + Возврат ИнформацияОДиске; + КонецЕсли; + КонецЦикла; КонецФункции Процедура Тест_Должен_ВернутьДоступноеМесто() Экспорт - ИнформацияОДиске = Новый ИнформацияОДиске(Новый СистемнаяИнформация().ИменаЛогическихДисков[0]); + ИнформацияОДиске = ПодключенныйДиск(); Ожидаем.Что(ИнформацияОДиске.Доступно).Больше(0); КонецПроцедуры Процедура Тест_Должен_ВернутьИмяФС() Экспорт - ИнформацияОДиске = Новый ИнформацияОДиске(Новый СистемнаяИнформация().ИменаЛогическихДисков[0]); + ИнформацияОДиске = ПодключенныйДиск(); Ожидаем.Что(ИнформацияОДиске.ИмяФС).ЭтоНе().Равно(""); КонецПроцедуры Процедура Тест_Должен_ВернутьТипДиска() Экспорт - ИнформацияОДиске = Новый ИнформацияОДиске(Новый СистемнаяИнформация().ИменаЛогическихДисков[0]); + ИнформацияОДиске = ПодключенныйДиск(); Ожидаем.Что(ИнформацияОДиске.ТипДиска).ЭтоНе().Равно(""); КонецПроцедуры Процедура Тест_Должен_ВернутьГотов() Экспорт - ИнформацияОДиске = Новый ИнформацияОДиске(Новый СистемнаяИнформация().ИменаЛогическихДисков[0]); + ИнформацияОДиске = ПодключенныйДиск(); Ожидаем.Что(ИнформацияОДиске.Готов).ЭтоИстина(); КонецПроцедуры Процедура Тест_Должен_ВернутьИмя() Экспорт - ИнформацияОДиске = Новый ИнформацияОДиске(Новый СистемнаяИнформация().ИменаЛогическихДисков[0]); + ИнформацияОДиске = ПодключенныйДиск(); Ожидаем.Что(ИнформацияОДиске.Имя).ЭтоНе().Равно(""); КонецПроцедуры Процедура Тест_Должен_ВернутьКорневойКаталог() Экспорт - ИнформацияОДиске = Новый ИнформацияОДиске(Новый СистемнаяИнформация().ИменаЛогическихДисков[0]); + ИнформацияОДиске = ПодключенныйДиск(); Ожидаем.Что(ИнформацияОДиске.КорневойКаталог.Путь).ЭтоНе().Равно(""); КонецПроцедуры Процедура Тест_Должен_ВернутьОбщийОбъемСвободногоМеста() Экспорт - ИнформацияОДиске = Новый ИнформацияОДиске(Новый СистемнаяИнформация().ИменаЛогическихДисков[0]); + ИнформацияОДиске = ПодключенныйДиск(); Ожидаем.Что(ИнформацияОДиске.ОбщийОбъемСвободногоМеста).Больше(0); КонецПроцедуры Процедура Тест_Должен_ВернутьРазмерДиска() Экспорт - ИнформацияОДиске = Новый ИнформацияОДиске(Новый СистемнаяИнформация().ИменаЛогическихДисков[0]); + ИнформацияОДиске = ПодключенныйДиск(); Ожидаем.Что(ИнформацияОДиске.РазмерДиска).Больше(0); КонецПроцедуры Процедура Тест_Должен_ВернутьМеткаТома() Экспорт - ИнформацияОДиске = Новый ИнформацияОДиске(Новый СистемнаяИнформация().ИменаЛогическихДисков[0]); + ИнформацияОДиске = ПодключенныйДиск(); Ожидаем.Что(ИнформацияОДиске.МеткаТома).Существует(); КонецПроцедуры Процедура Тест_Должен_ВывестиЗначения() Экспорт - ИнформацияОДиске = Новый ИнформацияОДиске(Новый СистемнаяИнформация().ИменаЛогическихДисков[0]); + ИнформацияОДиске = ПодключенныйДиск(); Сообщить("Доступно: " + ИнформацияОДиске.Доступно); Сообщить("ИмяФС: " + ИнформацияОДиске.ИмяФС); Сообщить("ТипДиска: " + ИнформацияОДиске.ТипДиска); From 5a344399dbadae1c40506d5632de875ccb17b9dd Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Wed, 28 Jun 2017 12:23:07 +0300 Subject: [PATCH 131/168] =?UTF-8?q?=D0=9D=D0=B5=D0=BC=D0=BD=D0=BE=D0=B3?= =?UTF-8?q?=D0=BE=20=D0=B8=D0=BD=D1=84=D0=BE=D1=80=D0=BC=D0=B0=D1=86=D0=B8?= =?UTF-8?q?=D0=BE=D0=BD=D0=BD=D0=BE=D0=B3=D0=BE=20=D0=B2=D1=8B=D0=B2=D0=BE?= =?UTF-8?q?=D0=B4=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Jenkinsfile | 4 +++- install/deb-build.sh | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 2ccd5bdfd..737402ccc 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -112,13 +112,15 @@ pipeline { DISTPATH=`pwd`/build TMPDIR=oscript-tmp + echo "Dist path: ${DISTPATH}" + if [ -d "$TMPDIR" ] ; then rm -rf $TMPDIR fi mkdir $TMPDIR - cp -r $DISTPATH/* $TMPDIR + cp -rv $DISTPATH/* $TMPDIR sh ./deb-build.sh $TMPDIR TARGET=$WORKSPACE/output diff --git a/install/deb-build.sh b/install/deb-build.sh index 5e5c6590e..99c727520 100755 --- a/install/deb-build.sh +++ b/install/deb-build.sh @@ -20,7 +20,9 @@ if [ ! -f "$VERSIONFILE" ] ; then echo "No version file created" exit 1 fi - + +cat $VERSIONFILE + mkdir -p $DISTPATH/deb cp -r ${PWD}/builders/deb/* $DISTPATH/deb From b389f2eef56c4b2a518f85f4c19fd80a52005e27 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Wed, 28 Jun 2017 12:54:32 +0300 Subject: [PATCH 132/168] =?UTF-8?q?=D0=9D=D0=B5=20=D0=BC=D0=BE=D0=BD=D1=82?= =?UTF-8?q?=D0=B8=D1=80=D1=83=D0=B5=D1=82=D1=81=D1=8F=20=D0=B4=D0=B8=D1=80?= =?UTF-8?q?=D0=B5=D0=BA=D1=82=D0=BE=D1=80=D0=B8=D1=8F=20=D1=85=D0=BE=D1=81?= =?UTF-8?q?=D1=82=D0=B0=20=D0=B2=20/media?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- install/builders/deb/Dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/install/builders/deb/Dockerfile b/install/builders/deb/Dockerfile index be68c8a7b..5192020d9 100644 --- a/install/builders/deb/Dockerfile +++ b/install/builders/deb/Dockerfile @@ -28,5 +28,7 @@ RUN locale-gen --lang ru_RU.UTF-8 ENV LANG ru_RU.UTF-8 ADD ./build.sh /root/ +VOLUME /media + ENTRYPOINT /root/build.sh From 2ae0b4d5fb41a1555f31475361183dd067acd4bf Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Wed, 28 Jun 2017 12:54:54 +0300 Subject: [PATCH 133/168] =?UTF-8?q?=D0=95=D1=89=D0=B5=20=D0=BE=D1=82=D0=BB?= =?UTF-8?q?=D0=B0=D0=B4=D0=BE=D1=87=D0=BD=D1=8B=D0=B9=20=D0=B2=D1=8B=D0=B2?= =?UTF-8?q?=D0=BE=D0=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- install/builders/deb/build.sh | 2 ++ install/deb-build.sh | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/install/builders/deb/build.sh b/install/builders/deb/build.sh index 197b5cf3e..de26eb884 100755 --- a/install/builders/deb/build.sh +++ b/install/builders/deb/build.sh @@ -5,6 +5,8 @@ BINPATH=${SRCPATH}/bin/ DEBBUILDROOT=${SRCPATH}/bin/ BUILDERROOT=${SRCPATH}/deb/ +ls $SRCPATH + VERSION=$(cat ${BINPATH}VERSION) PAKNAME=onescript-engine DSTPATH=${DEBBUILDROOT}${PAKNAME} diff --git a/install/deb-build.sh b/install/deb-build.sh index 99c727520..47ba4e470 100755 --- a/install/deb-build.sh +++ b/install/deb-build.sh @@ -24,7 +24,7 @@ fi cat $VERSIONFILE mkdir -p $DISTPATH/deb -cp -r ${PWD}/builders/deb/* $DISTPATH/deb +cp -rv ${PWD}/builders/deb/* $DISTPATH/deb docker build -t onescript:deb ${PWD}/builders/deb/ docker run --rm -v ${DISTPATH}:/media onescript:deb From e25b6143e2621cf553cd080451923386ea55d85b Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Wed, 28 Jun 2017 14:49:49 +0300 Subject: [PATCH 134/168] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=B0=D1=80=D1=82=D0=B5=D1=84=D0=B0=D0=BA=D1=82?= =?UTF-8?q?=D0=BE=D0=B2=20NUnit?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BuildAll.csproj | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/BuildAll.csproj b/BuildAll.csproj index 8e8241084..659144a16 100644 --- a/BuildAll.csproj +++ b/BuildAll.csproj @@ -133,7 +133,10 @@ - + + + + From 004fdf711b815d87c29b4a790c9fa783a3943883 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Wed, 28 Jun 2017 15:14:51 +0300 Subject: [PATCH 135/168] =?UTF-8?q?=D0=97=D0=B0=D1=84=D0=B8=D0=BA=D1=81?= =?UTF-8?q?=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D1=82=D1=8C=20=D0=B2=D0=B5=D1=80?= =?UTF-8?q?=D1=81=D0=B8=D1=8E=20Ubuntu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- install/builders/deb/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/builders/deb/Dockerfile b/install/builders/deb/Dockerfile index 5192020d9..f36a5d846 100644 --- a/install/builders/deb/Dockerfile +++ b/install/builders/deb/Dockerfile @@ -1,4 +1,4 @@ -FROM ubuntu:latest +FROM ubuntu:16.04 MAINTAINER sergey.batanov@dmpas.ru From 9773eeb3e3f18e9c9c0ea47827093d4841fe3dfe Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Wed, 28 Jun 2017 15:35:45 +0300 Subject: [PATCH 136/168] =?UTF-8?q?=D1=83=D0=B1=D1=80=D0=B0=D0=BB=20volume?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- install/builders/deb/Dockerfile | 1 - 1 file changed, 1 deletion(-) diff --git a/install/builders/deb/Dockerfile b/install/builders/deb/Dockerfile index f36a5d846..a27cbad16 100644 --- a/install/builders/deb/Dockerfile +++ b/install/builders/deb/Dockerfile @@ -28,7 +28,6 @@ RUN locale-gen --lang ru_RU.UTF-8 ENV LANG ru_RU.UTF-8 ADD ./build.sh /root/ -VOLUME /media ENTRYPOINT /root/build.sh From 7c635a2489b01a6cb8d74878a47934f7a1a5f227 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Wed, 28 Jun 2017 17:01:51 +0300 Subject: [PATCH 137/168] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B5=D1=80=D0=B0?= =?UTF-8?q?=D0=B1=D0=BE=D1=82=D0=BA=D0=B0=20=D1=81=D0=B1=D0=BE=D1=80=D0=BA?= =?UTF-8?q?=D0=B8=20DEB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Jenkinsfile | 26 ++++---------------------- install/builders/deb/Dockerfile | 18 +++++++++--------- install/builders/deb/build.sh | 14 +++++++++----- install/deb-build.sh | 22 +--------------------- install/prepare-build.sh | 25 +++++++++++++++++++++++++ 5 files changed, 48 insertions(+), 57 deletions(-) create mode 100644 install/prepare-build.sh diff --git a/Jenkinsfile b/Jenkinsfile index 737402ccc..3f0b2c5f4 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -105,33 +105,15 @@ pipeline { checkout scm unstash 'buildResults' + sh 'prepare-build.sh' + echo 'Building DEB' sh '''\ cd install chmod +x deb-build.sh DISTPATH=`pwd`/build - TMPDIR=oscript-tmp - - echo "Dist path: ${DISTPATH}" - - if [ -d "$TMPDIR" ] ; then - rm -rf $TMPDIR - fi - - mkdir $TMPDIR - - cp -rv $DISTPATH/* $TMPDIR - sh ./deb-build.sh $TMPDIR - - TARGET=$WORKSPACE/output - - if [ ! -d "$TARGET" ] ; then - mkdir $TARGET - fi - - rm -f $TARGET/* - cp -v $TMPDIR/bin/*.deb $TARGET - rm -rf $TMPDIR + + sh ./deb-build.sh $DISTPATH '''.stripIndent() echo 'Building RPM' diff --git a/install/builders/deb/Dockerfile b/install/builders/deb/Dockerfile index a27cbad16..7cf14cde7 100644 --- a/install/builders/deb/Dockerfile +++ b/install/builders/deb/Dockerfile @@ -4,16 +4,16 @@ FROM ubuntu:16.04 MAINTAINER sergey.batanov@dmpas.ru # Add mono repository -RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF && \ - echo "deb http://download.mono-project.com/repo/debian wheezy main" > /etc/apt/sources.list.d/mono-xamarin.list +#RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF && \ +# echo "deb http://download.mono-project.com/repo/debian wheezy main" > /etc/apt/sources.list.d/mono-xamarin.list RUN apt-get update && apt-get install -y \ # runtime dependencies - mono-runtime \ - libmono-system-core4.0-cil \ - libmono-system4.0-cil \ - libmono-corlib4.0-cil \ - libmono-i18n4.0-all \ +# mono-runtime \ +# libmono-system-core4.0-cil \ +# libmono-system4.0-cil \ +# libmono-corlib4.0-cil \ +# libmono-i18n4.0-all \ # deb-package tools dpkg\ debconf\ @@ -27,7 +27,7 @@ RUN apt-get update && apt-get install -y \ RUN locale-gen --lang ru_RU.UTF-8 ENV LANG ru_RU.UTF-8 -ADD ./build.sh /root/ +COPY * /opt/deb -ENTRYPOINT /root/build.sh +ENTRYPOINT /opt/deb/build.sh diff --git a/install/builders/deb/build.sh b/install/builders/deb/build.sh index de26eb884..dd7b6b3f1 100755 --- a/install/builders/deb/build.sh +++ b/install/builders/deb/build.sh @@ -1,13 +1,17 @@ #!/bin/sh -SRCPATH=/media +DATAROOT=/media +SRCPATH=${DATAROOT}/src BINPATH=${SRCPATH}/bin/ -DEBBUILDROOT=${SRCPATH}/bin/ -BUILDERROOT=${SRCPATH}/deb/ +DEBBUILDROOT=${DATAROOT}/deb/ +BUILDERROOT=/opt/deb/ -ls $SRCPATH +if [ -d "$DEBBUILDROOT"]; then + rm -rf $DEBBUILDROOT + mkdir $DEBBUILDROOT +fi -VERSION=$(cat ${BINPATH}VERSION) +VERSION=$(cat ${DATAROOT}/VERSION) PAKNAME=onescript-engine DSTPATH=${DEBBUILDROOT}${PAKNAME} diff --git a/install/deb-build.sh b/install/deb-build.sh index 47ba4e470..0c3b09e4e 100755 --- a/install/deb-build.sh +++ b/install/deb-build.sh @@ -1,30 +1,10 @@ #!/bin/bash DISTPATH=$(cd $1; pwd) -BINPATH=$DISTPATH/bin cd `dirname $0` echo "Assets folder: $DISTPATH" echo "Current dir: {$PWD}" -VERSIONFILE=$BINPATH/VERSION -if [ -f "$VERSIONFILE" ] ; then - rm $VERSIONFILE -fi - -mono ${BINPATH}/oscript.exe -version | \ - grep -oE '([[:digit:]]+\.){2}[[:digit:]]+' \ - > ${BINPATH}/VERSION - -if [ ! -f "$VERSIONFILE" ] ; then - echo "No version file created" - exit 1 -fi - -cat $VERSIONFILE - -mkdir -p $DISTPATH/deb -cp -rv ${PWD}/builders/deb/* $DISTPATH/deb - docker build -t onescript:deb ${PWD}/builders/deb/ -docker run --rm -v ${DISTPATH}:/media onescript:deb +docker run --rm -v os_bld_output:/media onescript:deb diff --git a/install/prepare-build.sh b/install/prepare-build.sh new file mode 100644 index 000000000..8527b02d7 --- /dev/null +++ b/install/prepare-build.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +echo 'Preparing environment' + +docker volume create os_bld_output +docker run --name bldxchg -v os_bld_output:/bld busybox true + +VERSIONFILE=$BINPATH/VERSION +if [ -f "$VERSIONFILE" ] ; then + rm $VERSIONFILE +fi + +mono ${BINPATH}/oscript.exe -version | \ + grep -oE '([[:digit:]]+\.){2}[[:digit:]]+' \ + > ${BINPATH}/VERSION + +if [ ! -f "$VERSIONFILE" ] ; then + echo "No version file created" + exit 1 +fi + +tar -czvf sources.tar.gz build/* + +docker cp build/* bldxchg:/bld/src +docker cp $VERSIONFILE bldxchg:/bld \ No newline at end of file From 89d698e7f3f8c12279cf567e2d8ce36ad67367c7 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Wed, 28 Jun 2017 17:41:33 +0300 Subject: [PATCH 138/168] =?UTF-8?q?=D0=A3=D0=BF=D1=80=D0=BE=D1=89=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=B3=D0=BB=D0=B0=D0=B2=D0=BD=D0=BE=D0=B3?= =?UTF-8?q?=D0=BE=20=D1=81=D0=BA=D1=80=D0=B8=D0=BF=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Jenkinsfile | 40 ++++++++-------------------------------- install/prepare-build.sh | 15 +++++++++------ 2 files changed, 17 insertions(+), 38 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 3f0b2c5f4..2a1345c7c 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -105,44 +105,20 @@ pipeline { checkout scm unstash 'buildResults' - sh 'prepare-build.sh' - - echo 'Building DEB' - sh '''\ + sh ''' cd install + chmod +x prepare-build.sh chmod +x deb-build.sh - DISTPATH=`pwd`/build - - sh ./deb-build.sh $DISTPATH - '''.stripIndent() - - echo 'Building RPM' - sh '''\ - cd install chmod +x rpm-build.sh - DISTPATH=`pwd`/build - TMPDIR=oscript-tmp - - if [ -d "$TMPDIR" ] ; then - rm -rf $TMPDIR - fi - - mkdir $TMPDIR - - cp -r $DISTPATH/* $TMPDIR - ./rpm-build.sh $TMPDIR - - TARGET=$WORKSPACE/output - - if [ ! -d "$TARGET" ] ; then - mkdir $TARGET - fi - cp $TMPDIR/bin/*.rpm $TARGET + sh ./prepare-build.sh + + DISTPATH=`pwd`/build - rm -rf $TMPDIR + sh ./deb-build.sh $DISTPATH + sh ./rpm-build.sh $DISTPATH '''.stripIndent() - + archiveArtifacts artifacts: 'output/*', fingerprint: true } diff --git a/install/prepare-build.sh b/install/prepare-build.sh index 8527b02d7..134c0502b 100644 --- a/install/prepare-build.sh +++ b/install/prepare-build.sh @@ -2,24 +2,27 @@ echo 'Preparing environment' +DISTPATH=$(pwd)/build +BINPATH=${DISTPATH}/bin +cd `dirname $0` + docker volume create os_bld_output docker run --name bldxchg -v os_bld_output:/bld busybox true -VERSIONFILE=$BINPATH/VERSION +VERSIONFILE=$DISTPATH/VERSION if [ -f "$VERSIONFILE" ] ; then rm $VERSIONFILE fi mono ${BINPATH}/oscript.exe -version | \ grep -oE '([[:digit:]]+\.){2}[[:digit:]]+' \ - > ${BINPATH}/VERSION + > ${VERSIONFILE} if [ ! -f "$VERSIONFILE" ] ; then echo "No version file created" exit 1 fi -tar -czvf sources.tar.gz build/* - -docker cp build/* bldxchg:/bld/src -docker cp $VERSIONFILE bldxchg:/bld \ No newline at end of file +docker cp $VERSIONFILE bldxchg:/bld +rm $VERSIONFILE +docker cp build/* bldxchg:/bld/src \ No newline at end of file From 2f64c67cec83388ee5bd93e799ff653fe04122ee Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Wed, 28 Jun 2017 17:51:30 +0300 Subject: [PATCH 139/168] =?UTF-8?q?=D1=8D=D1=85=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- install/rpm-build.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/install/rpm-build.sh b/install/rpm-build.sh index 70f019e3f..58b7643bc 100755 --- a/install/rpm-build.sh +++ b/install/rpm-build.sh @@ -1,6 +1,8 @@ #!/bin/bash #set -exf +echo "Building RPM" + PROJECT=oscript echo "$0" echo "$1" From 2ce356d7517071fdcbc39a0a0330a1e155cef0f4 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Fri, 30 Jun 2017 09:41:00 +0300 Subject: [PATCH 140/168] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B2=D1=8B=D0=B9=20?= =?UTF-8?q?=D0=B7=D0=B0=D1=85=D0=BE=D0=B4=20=D0=BF=D0=BE=20=D1=81=D0=B1?= =?UTF-8?q?=D0=BE=D1=80=D0=BA=D0=B5=20RPM?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Jenkinsfile | 2 +- install/builders/rpm/Dockerfile | 2 ++ install/builders/rpm/oscript | 3 ++ install/builders/rpm/start.sh | 40 +++++++++++++++++++++----- install/deb-build.sh | 1 + install/prepare-build.sh | 8 +++++- install/rpm-build.sh | 51 +++++++++++++++++---------------- 7 files changed, 73 insertions(+), 34 deletions(-) create mode 100644 install/builders/rpm/oscript diff --git a/Jenkinsfile b/Jenkinsfile index 2a1345c7c..691e438a5 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -114,7 +114,7 @@ pipeline { sh ./prepare-build.sh DISTPATH=`pwd`/build - + sh ./deb-build.sh $DISTPATH sh ./rpm-build.sh $DISTPATH '''.stripIndent() diff --git a/install/builders/rpm/Dockerfile b/install/builders/rpm/Dockerfile index 50d3592ed..219730a68 100644 --- a/install/builders/rpm/Dockerfile +++ b/install/builders/rpm/Dockerfile @@ -13,6 +13,8 @@ RUN sed -i.bak -n -e '/^Defaults.*requiretty/ { s/^/# /;};/^%wheel.*ALL$/ { s/^/ # This is an optimisation for caching, since using the auto generated one will # make docker always run the builddep steps since new file ADD oscript.spec /tmp/ +ADD oscript /tmp/ + RUN dnf builddep -y --spec /tmp/oscript.spec ADD start.sh /start.sh diff --git a/install/builders/rpm/oscript b/install/builders/rpm/oscript new file mode 100644 index 000000000..65af38659 --- /dev/null +++ b/install/builders/rpm/oscript @@ -0,0 +1,3 @@ +#!/bin/sh +mono /usr/share/oscript/bin/oscript.exe "$@" + diff --git a/install/builders/rpm/start.sh b/install/builders/rpm/start.sh index bd8879792..a8fc7f4ed 100755 --- a/install/builders/rpm/start.sh +++ b/install/builders/rpm/start.sh @@ -1,5 +1,31 @@ #!/bin/bash # script run inside the container + + +#/media/src/bin;lib;examples;etc +#/media/VERSIONFILE +VERSIONFILE=/media/VERSION +DISTPATH=/media/src + +VERSION=$(cat ${VERSIONFILE}) +BLDTMP=/tmp +TMPDIR=${BLDTMP}/OneScript-$VERSION + +echo "Copying sources to tmpdir" +cp -r -v $DISTPATH/* $TMPDIR +cp -r -v ${BLDTMP}/oscript $TMPDIR/oscript + +pushd ${BLDTMP} +echo "Compressing OneScript-$VERSION to tar" +tar -czvf OneScript-$VERSION.tar.gz OneScript-$VERSION/ +popd + +BUILDDIR=/media/rpm +mkdir -p ${BUILDDIR} + +cp -ra $BUILDTMP/OneScript-$VERSION.tar.gz $BUILDDIR/ +cp -rf $BUILDTMP/oscript.spec $BUILDDIR/ + rpmdev-setuptree define="" if [ -z $VERSION ]; then @@ -15,16 +41,16 @@ else fi echo $define -sudo cp -arv /media/* rpmbuild/SOURCES/ -sudo cp -arv /media/*.spec rpmbuild/SPECS/ +sudo cp -arv $BUILDDIR/* rpmbuild/SOURCES/ +sudo cp -arv $BUILDDIR/*.spec rpmbuild/SPECS/ rpmbuild -ba \ --define "_version ${VERSION:-1.0.13}" \ rpmbuild/SPECS/oscript.spec || exit 1 -[[ -d /media ]] || exit 0 +[[ -d $BUILDDIR ]] || exit 0 -sudo mkdir -p /media/RPMS -sudo mkdir -p /media/SRPMS +sudo mkdir -p $BUILDDIR/RPMS +sudo mkdir -p $BUILDDIR/SRPMS -sudo cp -ar rpmbuild/RPMS/ /media/ -sudo cp -ar rpmbuild/SRPMS/ /media/ +sudo cp -ar rpmbuild/RPMS/ $BUILDDIR/ +sudo cp -ar rpmbuild/SRPMS/ $BUILDDIR/ diff --git a/install/deb-build.sh b/install/deb-build.sh index 0c3b09e4e..c7486145e 100755 --- a/install/deb-build.sh +++ b/install/deb-build.sh @@ -8,3 +8,4 @@ echo "Current dir: {$PWD}" docker build -t onescript:deb ${PWD}/builders/deb/ docker run --rm -v os_bld_output:/media onescript:deb +docker cp bldxchg:/bld/deb/*.deb ../output diff --git a/install/prepare-build.sh b/install/prepare-build.sh index 134c0502b..b389d07f3 100644 --- a/install/prepare-build.sh +++ b/install/prepare-build.sh @@ -25,4 +25,10 @@ fi docker cp $VERSIONFILE bldxchg:/bld rm $VERSIONFILE -docker cp build/* bldxchg:/bld/src \ No newline at end of file +docker cp build/* bldxchg:/bld/src + +OUTPUT="../output" +if [ -d "$OUTPUT" ]; then + rm -rf ${OUTPUT} +fi +mkdir ${OUTPUT} diff --git a/install/rpm-build.sh b/install/rpm-build.sh index 58b7643bc..f179298bd 100755 --- a/install/rpm-build.sh +++ b/install/rpm-build.sh @@ -13,38 +13,39 @@ cd `dirname $0` echo "Assets folder: $DISTPATH" echo "Current dir: {$PWD}" -if [ -z "$TMP" ] ; then - TMP=/tmp -fi -VERSION=`mono ${BINPATH}/oscript.exe -version | \ - grep -oE '([[:digit:]]+\.){2}[[:digit:]]+'` +# if [ -z "$TMP" ] ; then +# TMP=/tmp +# fi -echo "Version is $VERSION" +# VERSION=$(cat ${DISTPATH}/VERSION) +# echo "Version is $VERSION" -TMPDIR=$TMP/OneScript-$VERSION -mkdir $TMPDIR -echo "Created TMPDIR $TMPDIR" +# TMPDIR=$TMP/OneScript-$VERSION +# mkdir $TMPDIR +# echo "Created TMPDIR $TMPDIR" -echo "Copying sources to tmpdir" -cp -r -v $DISTPATH/* $TMPDIR -cp -r -v ../install/builders/deb/oscript $TMPDIR/oscript +# echo "Copying sources to tmpdir" +# cp -r -v $DISTPATH/* $TMPDIR +# cp -r -v ../install/builders/deb/oscript $TMPDIR/oscript -pushd $TMP -echo "Compressing OneScript-$VERSION to tar" -tar -czvf OneScript-$VERSION.tar.gz OneScript-$VERSION/ -popd +# pushd $TMP +# echo "Compressing OneScript-$VERSION to tar" +# tar -czvf OneScript-$VERSION.tar.gz OneScript-$VERSION/ +# popd -mkdir -p $TMP/$PROJECT-$VERSION-build -BUILDDIR=$TMP/$PROJECT-$VERSION-build -echo "Created build dir: $BUILDDIR" +# mkdir -p $TMP/$PROJECT-$VERSION-build +# BUILDDIR=$TMP/$PROJECT-$VERSION-build +# echo "Created build dir: $BUILDDIR" -cp -ra $TMP/OneScript-$VERSION.tar.gz $BUILDDIR/ -cp -rf ./builders/rpm/oscript.spec $BUILDDIR/ +# cp -ra $TMP/OneScript-$VERSION.tar.gz $BUILDDIR/ +# cp -rf ./builders/rpm/oscript.spec $BUILDDIR/ docker build -t onescript:rpm ${PWD}/builders/rpm/ -docker run --rm -e VERSION=$VERSION -v ${BUILDDIR}:/media onescript:rpm +docker run --rm -v os_bld_output:/media onescript:rpm +docker cp bldxchg:/bld/rpm/RPMS/noarch/*.rpm ../output +docker cp bldxchg:/bld/rpm/SRPMS/*.rpm ../output -cp $BUILDDIR/RPMS/noarch/*.rpm $BINPATH/ -cp $BUILDDIR/SRPMS/*.rpm $BINPATH/ -rm -rd $BUILDDIR +#cp $BUILDDIR/RPMS/noarch/*.rpm $BINPATH/ +#cp $BUILDDIR/SRPMS/*.rpm $BINPATH/ +#rm -rd $BUILDDIR From f518cb2c1d9e06efcaf72d1f95724a90b8625e6e Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Fri, 30 Jun 2017 09:50:05 +0300 Subject: [PATCH 141/168] =?UTF-8?q?=D0=9E=D0=B1=D1=8F=D0=B7=D0=B0=D1=82?= =?UTF-8?q?=D0=B5=D0=BB=D1=8C=D0=BD=D1=8B=D0=B9=20=D1=81=D0=BB=D1=8D=D1=88?= =?UTF-8?q?=20=D0=B2=20=D0=BA=D0=BE=D0=BC=D0=B0=D0=BD=D0=B4=D0=B5=20COPY?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- install/builders/deb/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/builders/deb/Dockerfile b/install/builders/deb/Dockerfile index 7cf14cde7..72184e144 100644 --- a/install/builders/deb/Dockerfile +++ b/install/builders/deb/Dockerfile @@ -27,7 +27,7 @@ RUN apt-get update && apt-get install -y \ RUN locale-gen --lang ru_RU.UTF-8 ENV LANG ru_RU.UTF-8 -COPY * /opt/deb +COPY * /opt/deb/ ENTRYPOINT /opt/deb/build.sh From efad55a2001267ad99f6ea3217650a4658e697cd Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Fri, 30 Jun 2017 12:32:04 +0300 Subject: [PATCH 142/168] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BE?= =?UTF-8?q?=D0=BA=20=D0=B2=20=D0=BA=D0=BE=D0=BD=D1=82=D0=B5=D0=B9=D0=BD?= =?UTF-8?q?=D0=B5=D1=80=D0=B0=D1=85=20=D1=81=D0=B1=D0=BE=D1=80=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- install/builders/deb/Dockerfile | 2 +- install/builders/deb/build.sh | 2 +- install/deb-build.sh | 8 +++++++- install/prepare-build.sh | 9 ++++++++- install/rpm-build.sh | 13 ++++++++----- 5 files changed, 25 insertions(+), 9 deletions(-) diff --git a/install/builders/deb/Dockerfile b/install/builders/deb/Dockerfile index 72184e144..250cffb20 100644 --- a/install/builders/deb/Dockerfile +++ b/install/builders/deb/Dockerfile @@ -27,7 +27,7 @@ RUN apt-get update && apt-get install -y \ RUN locale-gen --lang ru_RU.UTF-8 ENV LANG ru_RU.UTF-8 -COPY * /opt/deb/ +COPY ./ /opt/deb/ ENTRYPOINT /opt/deb/build.sh diff --git a/install/builders/deb/build.sh b/install/builders/deb/build.sh index dd7b6b3f1..7779c547f 100755 --- a/install/builders/deb/build.sh +++ b/install/builders/deb/build.sh @@ -6,7 +6,7 @@ BINPATH=${SRCPATH}/bin/ DEBBUILDROOT=${DATAROOT}/deb/ BUILDERROOT=/opt/deb/ -if [ -d "$DEBBUILDROOT"]; then +if [ -d "$DEBBUILDROOT" ]; then rm -rf $DEBBUILDROOT mkdir $DEBBUILDROOT fi diff --git a/install/deb-build.sh b/install/deb-build.sh index c7486145e..3ccee8ffc 100755 --- a/install/deb-build.sh +++ b/install/deb-build.sh @@ -8,4 +8,10 @@ echo "Current dir: {$PWD}" docker build -t onescript:deb ${PWD}/builders/deb/ docker run --rm -v os_bld_output:/media onescript:deb -docker cp bldxchg:/bld/deb/*.deb ../output + +TMPOUT=../output +rm -rf $TMPOUT/deb + +docker cp bldxchg:/bld/deb/ $TMPOUT +mv $TMPOUT/deb/*.deb $TMPOUT +rm -rf $TMPOUT/deb diff --git a/install/prepare-build.sh b/install/prepare-build.sh index b389d07f3..bf287a6de 100644 --- a/install/prepare-build.sh +++ b/install/prepare-build.sh @@ -7,7 +7,14 @@ BINPATH=${DISTPATH}/bin cd `dirname $0` docker volume create os_bld_output -docker run --name bldxchg -v os_bld_output:/bld busybox true + +if [ "$(docker ps -aq -f name=bldxchg)" ]; then + echo 'Exchange exist. Run it' + docker start bldxchg +else + echo 'Creating Exchange' + docker run --name bldxchg -v os_bld_output:/bld busybox rm -rf /bld/ +fi VERSIONFILE=$DISTPATH/VERSION if [ -f "$VERSIONFILE" ] ; then diff --git a/install/rpm-build.sh b/install/rpm-build.sh index f179298bd..c3194f009 100755 --- a/install/rpm-build.sh +++ b/install/rpm-build.sh @@ -43,9 +43,12 @@ echo "Current dir: {$PWD}" docker build -t onescript:rpm ${PWD}/builders/rpm/ docker run --rm -v os_bld_output:/media onescript:rpm -docker cp bldxchg:/bld/rpm/RPMS/noarch/*.rpm ../output -docker cp bldxchg:/bld/rpm/SRPMS/*.rpm ../output -#cp $BUILDDIR/RPMS/noarch/*.rpm $BINPATH/ -#cp $BUILDDIR/SRPMS/*.rpm $BINPATH/ -#rm -rd $BUILDDIR +TMPOUT=../output +rm -rf $TMPOUT/rpm + +docker cp bldxchg:/bld/rpm/ $TMPOUT + +mv $TMPOUT/RPMS/noarch/*.rpm $TMPOUT +mv $TMPOUT/SRPMS/*.rpm $TMPOUT +rm -rf $TMPOUT/rpm \ No newline at end of file From e77f3765e15016fb0a4776b10f2ffb7ca579f202 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Fri, 30 Jun 2017 13:05:22 +0300 Subject: [PATCH 143/168] =?UTF-8?q?=D0=9F=D1=80=D0=B0=D0=B2=D0=B0=20=D0=B2?= =?UTF-8?q?=20RPM=20=D1=81=D0=B1=D0=BE=D1=80=D0=BA=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- install/builders/rpm/start.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/install/builders/rpm/start.sh b/install/builders/rpm/start.sh index a8fc7f4ed..a1992ef5a 100755 --- a/install/builders/rpm/start.sh +++ b/install/builders/rpm/start.sh @@ -21,10 +21,10 @@ tar -czvf OneScript-$VERSION.tar.gz OneScript-$VERSION/ popd BUILDDIR=/media/rpm -mkdir -p ${BUILDDIR} +sudo mkdir -p ${BUILDDIR} -cp -ra $BUILDTMP/OneScript-$VERSION.tar.gz $BUILDDIR/ -cp -rf $BUILDTMP/oscript.spec $BUILDDIR/ +#cp -ra $BLDTMP/OneScript-$VERSION.tar.gz $BUILDDIR/ +#cp -rf $BLDTMP/oscript.spec $BUILDDIR/ rpmdev-setuptree define="" @@ -41,8 +41,8 @@ else fi echo $define -sudo cp -arv $BUILDDIR/* rpmbuild/SOURCES/ -sudo cp -arv $BUILDDIR/*.spec rpmbuild/SPECS/ +sudo cp -arv $BLDTMP/* rpmbuild/SOURCES/ +sudo cp -arv $BLDTMP/*.spec rpmbuild/SPECS/ rpmbuild -ba \ --define "_version ${VERSION:-1.0.13}" \ rpmbuild/SPECS/oscript.spec || exit 1 From 7ede5e35979284342f1efa2530c3d40252ba45c1 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Fri, 30 Jun 2017 16:51:17 +0300 Subject: [PATCH 144/168] =?UTF-8?q?=D0=9A=D0=BE=D0=BF=D0=B8=D1=80=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=B2=20=D0=BA=D0=BE=D0=BD?= =?UTF-8?q?=D1=82=D0=B5=D0=B9=D0=BD=D0=B5=D1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- install/prepare-build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/prepare-build.sh b/install/prepare-build.sh index bf287a6de..48ab9758d 100644 --- a/install/prepare-build.sh +++ b/install/prepare-build.sh @@ -32,7 +32,7 @@ fi docker cp $VERSIONFILE bldxchg:/bld rm $VERSIONFILE -docker cp build/* bldxchg:/bld/src +docker cp build/ bldxchg:/bld/src/ OUTPUT="../output" if [ -d "$OUTPUT" ]; then From 7ad8fde79355dd11820e74974ef64d72e89e5898 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Fri, 30 Jun 2017 16:59:48 +0300 Subject: [PATCH 145/168] =?UTF-8?q?=D0=A1=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=B4=D0=B8=D1=80=D0=B5=D0=BA=D1=82=D0=BE=D1=80?= =?UTF-8?q?=D0=B8=D0=B8=20=D0=BF=D0=BE=D0=B4=20RPM?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- install/builders/rpm/start.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/install/builders/rpm/start.sh b/install/builders/rpm/start.sh index a1992ef5a..08c89eed6 100755 --- a/install/builders/rpm/start.sh +++ b/install/builders/rpm/start.sh @@ -10,6 +10,7 @@ DISTPATH=/media/src VERSION=$(cat ${VERSIONFILE}) BLDTMP=/tmp TMPDIR=${BLDTMP}/OneScript-$VERSION +mkdir -p $TMPDIR echo "Copying sources to tmpdir" cp -r -v $DISTPATH/* $TMPDIR From 936d5a9dbf3d7601c5550e768ffa0b3363c01bbe Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Fri, 30 Jun 2017 17:19:47 +0300 Subject: [PATCH 146/168] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=BA=D0=BE=D0=BC=D0=BC=D0=B5=D0=BD=D1=82=D0=B0=D1=80=D0=B8?= =?UTF-8?q?=D0=B8,=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20=D0=BF?= =?UTF-8?q?=D0=B0=D0=B4=D0=B5=D0=BD=D0=B8=D0=B5,=20=D0=B5=D1=81=D0=BB?= =?UTF-8?q?=D0=B8=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D0=B0=20=D0=B2=20=D1=81?= =?UTF-8?q?=D0=B1=D0=BE=D1=80=D0=BA=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- install/rpm-build.sh | 31 +++---------------------------- 1 file changed, 3 insertions(+), 28 deletions(-) diff --git a/install/rpm-build.sh b/install/rpm-build.sh index c3194f009..ef554eefc 100755 --- a/install/rpm-build.sh +++ b/install/rpm-build.sh @@ -12,34 +12,6 @@ cd `dirname $0` echo "Assets folder: $DISTPATH" echo "Current dir: {$PWD}" - - -# if [ -z "$TMP" ] ; then -# TMP=/tmp -# fi - -# VERSION=$(cat ${DISTPATH}/VERSION) -# echo "Version is $VERSION" - -# TMPDIR=$TMP/OneScript-$VERSION -# mkdir $TMPDIR -# echo "Created TMPDIR $TMPDIR" - -# echo "Copying sources to tmpdir" -# cp -r -v $DISTPATH/* $TMPDIR -# cp -r -v ../install/builders/deb/oscript $TMPDIR/oscript - -# pushd $TMP -# echo "Compressing OneScript-$VERSION to tar" -# tar -czvf OneScript-$VERSION.tar.gz OneScript-$VERSION/ -# popd - -# mkdir -p $TMP/$PROJECT-$VERSION-build -# BUILDDIR=$TMP/$PROJECT-$VERSION-build -# echo "Created build dir: $BUILDDIR" - -# cp -ra $TMP/OneScript-$VERSION.tar.gz $BUILDDIR/ -# cp -rf ./builders/rpm/oscript.spec $BUILDDIR/ docker build -t onescript:rpm ${PWD}/builders/rpm/ docker run --rm -v os_bld_output:/media onescript:rpm @@ -48,6 +20,9 @@ TMPOUT=../output rm -rf $TMPOUT/rpm docker cp bldxchg:/bld/rpm/ $TMPOUT +if [ $? -ne 0 ]; then + exit 1 +fi mv $TMPOUT/RPMS/noarch/*.rpm $TMPOUT mv $TMPOUT/SRPMS/*.rpm $TMPOUT From 72d0ebe64dfe96cdee945855ad096a0a83985503 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Fri, 30 Jun 2017 17:38:03 +0300 Subject: [PATCH 147/168] =?UTF-8?q?=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D0=B0=20?= =?UTF-8?q?=D0=B2=20=D0=BF=D1=83=D1=82=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- install/rpm-build.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install/rpm-build.sh b/install/rpm-build.sh index ef554eefc..83dad9f8c 100755 --- a/install/rpm-build.sh +++ b/install/rpm-build.sh @@ -24,6 +24,6 @@ if [ $? -ne 0 ]; then exit 1 fi -mv $TMPOUT/RPMS/noarch/*.rpm $TMPOUT -mv $TMPOUT/SRPMS/*.rpm $TMPOUT +mv $TMPOUT/rpm/RPMS/noarch/*.rpm $TMPOUT +mv $TMPOUT/rpm/SRPMS/*.rpm $TMPOUT rm -rf $TMPOUT/rpm \ No newline at end of file From e7731b573db59f08f28670a625f75e01180991c8 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Fri, 30 Jun 2017 18:21:53 +0300 Subject: [PATCH 148/168] =?UTF-8?q?=D1=84=D0=B8=D0=BA=D1=81=20=D1=82=D0=B5?= =?UTF-8?q?=D1=81=D1=82=D0=B0=20=D0=BE=D1=82=D1=80=D0=B8=D1=86=D0=B0=D1=82?= =?UTF-8?q?=D0=B5=D0=BB=D1=8C=D0=BD=D0=BE=D0=B3=D0=BE=20=D0=B0=D0=BF=D1=82?= =?UTF-8?q?=D0=B0=D0=B9=D0=BC=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Library/SystemEnvironmentContext.cs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/ScriptEngine.HostedScript/Library/SystemEnvironmentContext.cs b/src/ScriptEngine.HostedScript/Library/SystemEnvironmentContext.cs index 84971bb92..a2adc079f 100644 --- a/src/ScriptEngine.HostedScript/Library/SystemEnvironmentContext.cs +++ b/src/ScriptEngine.HostedScript/Library/SystemEnvironmentContext.cs @@ -106,9 +106,13 @@ public int SystemPageSize /// Возвращает время, истекшее с момента загрузки системы (в миллисекундах). /// [ContextProperty("ВремяРаботыСМоментаЗагрузки")] - public System.Int32 TickCount + public long TickCount { - get { return System.Environment.TickCount; } + get + { + var unsig = (uint)System.Environment.TickCount; + return unsig; + } } /// From e06ec9c509bd6ed746de3bf0eeaf6a208a78d5db Mon Sep 17 00:00:00 2001 From: Dmitriy Korolev Date: Fri, 30 Jun 2017 21:43:44 +0600 Subject: [PATCH 149/168] =?UTF-8?q?=D0=A3=D0=B1=D1=80=D0=B0=D0=BD=D0=B0=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=B2=D0=B8=D1=81=D0=B8=D0=BC=D0=BE=D1=81=D1=82?= =?UTF-8?q?=D1=8C=20=D0=BE=D1=82=20newtonsoft=20json=20=D0=B2=20=D1=8F?= =?UTF-8?q?=D0=B4=D1=80=D0=B5=20=D1=81=D0=BA=D1=80=D0=B8=D0=BF=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../HostedScriptEngine.cs | 11 +- .../Machine/CodeStat/CodeStatData.cs | 21 ++++ .../CodeStat/CodeStatDataCollection.cs | 76 +++++++++++++ .../Machine/CodeStat/CodeStatProcessor.cs | 103 ++++++++++-------- src/oscript/CodeStatWriter.cs | 82 ++++++++++++++ src/oscript/ExecuteScriptBehavior.cs | 2 + src/oscript/ScriptFileHelper.cs | 12 +- 7 files changed, 255 insertions(+), 52 deletions(-) create mode 100644 src/ScriptEngine/Machine/CodeStat/CodeStatData.cs create mode 100644 src/ScriptEngine/Machine/CodeStat/CodeStatDataCollection.cs create mode 100644 src/oscript/CodeStatWriter.cs diff --git a/src/ScriptEngine.HostedScript/HostedScriptEngine.cs b/src/ScriptEngine.HostedScript/HostedScriptEngine.cs index 8847432c5..f676dc364 100644 --- a/src/ScriptEngine.HostedScript/HostedScriptEngine.cs +++ b/src/ScriptEngine.HostedScript/HostedScriptEngine.cs @@ -223,15 +223,20 @@ private Process InitProcess(IHostApplication host, ref LoadedModuleHandle module return process; } - public void EnableCodeStatistics(string outputFileName) + public void EnableCodeStatistics() { - _codeStat = new CodeStatProcessor(outputFileName); + _codeStat = new CodeStatProcessor(); _engine.SetCodeStatisticsCollector(_codeStat); } + public CodeStatDataCollection GetCodeStatData() + { + return _codeStat.GetStatData(); + } + public void Finalize() { - _codeStat?.OutputCodeStat(); + _codeStat?.EndCodeStat(); } } } diff --git a/src/ScriptEngine/Machine/CodeStat/CodeStatData.cs b/src/ScriptEngine/Machine/CodeStat/CodeStatData.cs new file mode 100644 index 000000000..5b98cbbf1 --- /dev/null +++ b/src/ScriptEngine/Machine/CodeStat/CodeStatData.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace ScriptEngine.Machine +{ + public struct CodeStatData + { + public readonly CodeStatEntry Entry; + public readonly long TimeElapsed; + public readonly int ExecutionCount; + + public CodeStatData(CodeStatEntry entry, long time, int count) + { + Entry = entry; + TimeElapsed = time; + ExecutionCount = count; + } + } +} diff --git a/src/ScriptEngine/Machine/CodeStat/CodeStatDataCollection.cs b/src/ScriptEngine/Machine/CodeStat/CodeStatDataCollection.cs new file mode 100644 index 000000000..9bb43f846 --- /dev/null +++ b/src/ScriptEngine/Machine/CodeStat/CodeStatDataCollection.cs @@ -0,0 +1,76 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace ScriptEngine.Machine +{ + public class CodeStatDataCollection : ICollection + { + private List entryList = new List(); + + public int Count + { + get + { + return entryList.Count(); + } + } + + public CodeStatData this[int index] + { + get + { + return entryList[index]; + } + set + { + entryList[index] = value; + } + } + + public bool IsReadOnly + { + get + { + return false; + } + } + + public void Add(CodeStatData item) + { + entryList.Add(item); + } + + public void Clear() + { + entryList.Clear(); + } + + public bool Contains(CodeStatData item) + { + return entryList.Contains(item); + } + + public void CopyTo(CodeStatData[] array, int arrayIndex) + { + entryList.CopyTo(array, arrayIndex); + } + + public bool Remove(CodeStatData item) + { + return entryList.Remove(item); + } + + IEnumerator IEnumerable.GetEnumerator() + { + return entryList.GetEnumerator(); + } + + public IEnumerator GetEnumerator() + { + return entryList.GetEnumerator(); + } + } +} diff --git a/src/ScriptEngine/Machine/CodeStat/CodeStatProcessor.cs b/src/ScriptEngine/Machine/CodeStat/CodeStatProcessor.cs index 5745e0f41..e8e76c739 100644 --- a/src/ScriptEngine/Machine/CodeStat/CodeStatProcessor.cs +++ b/src/ScriptEngine/Machine/CodeStat/CodeStatProcessor.cs @@ -10,7 +10,6 @@ This Source Code Form is subject to the terms of the using System.Diagnostics; using System.Linq; using System.Collections.Generic; -using Newtonsoft.Json; namespace ScriptEngine.Machine { @@ -19,12 +18,10 @@ public class CodeStatProcessor : ICodeStatCollector private Dictionary _codeStat = new Dictionary(); private Dictionary _watchers = new Dictionary(); private Stopwatch _activeStopwatch = null; - private readonly string _outputFileName; private HashSet _preparedScripts = new HashSet(); - public CodeStatProcessor(string fileName) + public CodeStatProcessor() { - _outputFileName = fileName; } public bool IsPrepared(string ScriptFileName) @@ -58,54 +55,64 @@ public void MarkPrepared(string ScriptFileName) _preparedScripts.Add(ScriptFileName); } - public void OutputCodeStat() + public CodeStatDataCollection GetStatData() { - _activeStopwatch?.Stop(); - - var w = new StreamWriter(_outputFileName); - var jwriter = new JsonTextWriter(w); - jwriter.Formatting = Formatting.Indented; - - jwriter.WriteStartObject(); - foreach (var source in _codeStat.GroupBy((arg) => arg.Key.ScriptFileName)) + CodeStatDataCollection data = new CodeStatDataCollection(); + foreach (var item in _codeStat) { - jwriter.WritePropertyName(source.Key, true); - jwriter.WriteStartObject(); - - jwriter.WritePropertyName("#path"); - jwriter.WriteValue(source.Key); - foreach (var method in source.GroupBy((arg) => arg.Key.SubName)) - { - jwriter.WritePropertyName(method.Key, true); - jwriter.WriteStartObject(); - - foreach (var entry in method.OrderBy((kv) => kv.Key.LineNumber)) - { - jwriter.WritePropertyName(entry.Key.LineNumber.ToString()); - jwriter.WriteStartObject(); - - jwriter.WritePropertyName("count"); - jwriter.WriteValue(entry.Value); - - if (_watchers.ContainsKey(entry.Key)) - { - var elapsed = _watchers[entry.Key].ElapsedMilliseconds; - - jwriter.WritePropertyName("time"); - jwriter.WriteValue(elapsed); - } - - jwriter.WriteEndObject(); - } - - jwriter.WriteEndObject(); - } - jwriter.WriteEndObject(); + data.Add(new CodeStatData(item.Key, _watchers[item.Key].ElapsedMilliseconds, item.Value)); } - jwriter.WriteEndObject(); - jwriter.Flush(); + + return data; + //var w = new StreamWriter(_outputFileName); + //var jwriter = new JsonTextWriter(w); + //jwriter.Formatting = Formatting.Indented; + + //jwriter.WriteStartObject(); + //foreach (var source in _codeStat.GroupBy((arg) => arg.Key.ScriptFileName)) + //{ + // jwriter.WritePropertyName(source.Key, true); + // jwriter.WriteStartObject(); + + // jwriter.WritePropertyName("#path"); + // jwriter.WriteValue(source.Key); + // foreach (var method in source.GroupBy((arg) => arg.Key.SubName)) + // { + // jwriter.WritePropertyName(method.Key, true); + // jwriter.WriteStartObject(); + + // foreach (var entry in method.OrderBy((kv) => kv.Key.LineNumber)) + // { + // jwriter.WritePropertyName(entry.Key.LineNumber.ToString()); + // jwriter.WriteStartObject(); + + // jwriter.WritePropertyName("count"); + // jwriter.WriteValue(entry.Value); + + // if (_watchers.ContainsKey(entry.Key)) + // { + // var elapsed = _watchers[entry.Key].ElapsedMilliseconds; + + // jwriter.WritePropertyName("time"); + // jwriter.WriteValue(elapsed); + // } + + // jwriter.WriteEndObject(); + // } + + // jwriter.WriteEndObject(); + // } + // jwriter.WriteEndObject(); + //} + //jwriter.WriteEndObject(); + //jwriter.Flush(); + + //_codeStat.Clear(); + } - _codeStat.Clear(); + public void EndCodeStat() + { + _activeStopwatch?.Stop(); } public void StopWatch(CodeStatEntry entry) diff --git a/src/oscript/CodeStatWriter.cs b/src/oscript/CodeStatWriter.cs new file mode 100644 index 000000000..34460d5b8 --- /dev/null +++ b/src/oscript/CodeStatWriter.cs @@ -0,0 +1,82 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using ScriptEngine.Machine; +using Newtonsoft.Json; + +namespace oscript +{ + public class CodeStatWriter + { + private readonly CodeStatWriterType _type; + private readonly string _outputFileName; + + public CodeStatWriter(string fileName, CodeStatWriterType type) + { + _outputFileName = fileName; + _type = type; + } + + public void Write(CodeStatDataCollection codeStatDataCollection) + { + if (_type == CodeStatWriterType.JSON) + { + writeToJson(codeStatDataCollection); + } + else + { + throw new ArgumentException("Unsupported type"); + } + } + + private void writeToJson(CodeStatDataCollection codeStatDataCollection) + { + using (var w = new StreamWriter(_outputFileName)) + { + var jwriter = new JsonTextWriter(w); + jwriter.Formatting = Formatting.Indented; + + jwriter.WriteStartObject(); + foreach (var source in codeStatDataCollection.GroupBy((arg) => arg.Entry.ScriptFileName)) + { + jwriter.WritePropertyName(source.Key, true); + jwriter.WriteStartObject(); + + jwriter.WritePropertyName("#path"); + jwriter.WriteValue(source.Key); + foreach (var method in source.GroupBy((arg) => arg.Entry.SubName)) + { + jwriter.WritePropertyName(method.Key, true); + jwriter.WriteStartObject(); + + foreach (var entry in method.OrderBy((kv) => kv.Entry.LineNumber)) + { + jwriter.WritePropertyName(entry.Entry.LineNumber.ToString()); + jwriter.WriteStartObject(); + + jwriter.WritePropertyName("count"); + jwriter.WriteValue(entry.ExecutionCount); + + jwriter.WritePropertyName("time"); + jwriter.WriteValue(entry.TimeElapsed); + + jwriter.WriteEndObject(); + } + + jwriter.WriteEndObject(); + } + jwriter.WriteEndObject(); + } + jwriter.WriteEndObject(); + jwriter.Flush(); + } + } + } + //TODO: Добавить другие форматы записи + public enum CodeStatWriterType + { + JSON + } +} diff --git a/src/oscript/ExecuteScriptBehavior.cs b/src/oscript/ExecuteScriptBehavior.cs index 8d09fd0d6..f060d4745 100644 --- a/src/oscript/ExecuteScriptBehavior.cs +++ b/src/oscript/ExecuteScriptBehavior.cs @@ -56,6 +56,8 @@ public override int Execute() var result = process.Start(); hostedScript.Finalize(); + ScriptFileHelper.OnAfterScriptExecute(hostedScript); + return result; } diff --git a/src/oscript/ScriptFileHelper.cs b/src/oscript/ScriptFileHelper.cs index 27b9d17ff..941b5a427 100644 --- a/src/oscript/ScriptFileHelper.cs +++ b/src/oscript/ScriptFileHelper.cs @@ -111,7 +111,17 @@ public static void OnBeforeScriptRead(HostedScriptEngine engine) } if (CodeStatisticsEnabled) - engine.EnableCodeStatistics(CodeStatisticsFileName); + engine.EnableCodeStatistics(); + } + + public static void OnAfterScriptExecute(HostedScriptEngine engine) + { + if (CodeStatisticsEnabled) + { + var codeStat = engine.GetCodeStatData(); + CodeStatWriter statsWriter = new CodeStatWriter(CodeStatisticsFileName, CodeStatWriterType.JSON); + statsWriter.Write(codeStat); + } } } } From 34dd4408e813f00b5243f26280a15ff6190edc23 Mon Sep 17 00:00:00 2001 From: Dmitriy Korolev Date: Fri, 30 Jun 2017 22:05:29 +0600 Subject: [PATCH 150/168] =?UTF-8?q?=D0=A3=D0=B1=D1=80=D0=B0=D0=BD=D1=8B=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=B1=D1=8B=D1=82=D1=8B=D0=B5=20=D0=BA=D0=BE=D0=BC?= =?UTF-8?q?=D0=BC=D0=B5=D0=BD=D1=82=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Machine/CodeStat/CodeStatProcessor.cs | 44 ------------------- 1 file changed, 44 deletions(-) diff --git a/src/ScriptEngine/Machine/CodeStat/CodeStatProcessor.cs b/src/ScriptEngine/Machine/CodeStat/CodeStatProcessor.cs index e8e76c739..4f4eeb42f 100644 --- a/src/ScriptEngine/Machine/CodeStat/CodeStatProcessor.cs +++ b/src/ScriptEngine/Machine/CodeStat/CodeStatProcessor.cs @@ -64,50 +64,6 @@ public CodeStatDataCollection GetStatData() } return data; - //var w = new StreamWriter(_outputFileName); - //var jwriter = new JsonTextWriter(w); - //jwriter.Formatting = Formatting.Indented; - - //jwriter.WriteStartObject(); - //foreach (var source in _codeStat.GroupBy((arg) => arg.Key.ScriptFileName)) - //{ - // jwriter.WritePropertyName(source.Key, true); - // jwriter.WriteStartObject(); - - // jwriter.WritePropertyName("#path"); - // jwriter.WriteValue(source.Key); - // foreach (var method in source.GroupBy((arg) => arg.Key.SubName)) - // { - // jwriter.WritePropertyName(method.Key, true); - // jwriter.WriteStartObject(); - - // foreach (var entry in method.OrderBy((kv) => kv.Key.LineNumber)) - // { - // jwriter.WritePropertyName(entry.Key.LineNumber.ToString()); - // jwriter.WriteStartObject(); - - // jwriter.WritePropertyName("count"); - // jwriter.WriteValue(entry.Value); - - // if (_watchers.ContainsKey(entry.Key)) - // { - // var elapsed = _watchers[entry.Key].ElapsedMilliseconds; - - // jwriter.WritePropertyName("time"); - // jwriter.WriteValue(elapsed); - // } - - // jwriter.WriteEndObject(); - // } - - // jwriter.WriteEndObject(); - // } - // jwriter.WriteEndObject(); - //} - //jwriter.WriteEndObject(); - //jwriter.Flush(); - - //_codeStat.Clear(); } public void EndCodeStat() From 1e2b519f154c249eb42bb184538170f039aeeccb Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Fri, 30 Jun 2017 19:54:41 +0300 Subject: [PATCH 151/168] =?UTF-8?q?=D0=92=D0=BA=D0=BB=D1=8E=D1=87=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=B3=D0=B5=D0=BD=D0=B5=D1=80=D0=B0=D1=82=D0=BE=D1=80?= =?UTF-8?q?=20=D0=B4=D0=BE=D0=BA=D1=83=D0=BC=D0=B5=D0=BD=D1=82=D0=B0=D1=86?= =?UTF-8?q?=D0=B8=D0=B8=20=D0=B8=20=D0=B8=D0=BD=D1=81=D1=82=D0=B0=D0=BB?= =?UTF-8?q?=D0=BB=D1=8F=D1=82=D0=BE=D1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Jenkinsfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 691e438a5..3b81ab6bf 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -16,6 +16,7 @@ pipeline { // нода уже определена environment { NugetPath = "${tool 'nuget'}" + OneScriptDocumenter = "${tool 'documenter'}" } steps { @@ -91,7 +92,7 @@ pipeline { ws("$workspace".replaceAll("%", "_")) { unstash 'buildResults' - bat "chcp $outputEnc > nul\r\n\"${tool 'MSBuild'}\" BuildAll.csproj /p:Configuration=Release /p:Platform=x86 /t:CreateZip;CreateNuget" + bat "chcp $outputEnc > nul\r\n\"${tool 'MSBuild'}\" BuildAll.csproj /p:Configuration=Release /p:Platform=x86 /t:CreateZip;CreateInstall;CreateNuget" archiveArtifacts artifacts: '**/dist/*.exe, **/dist/*.msi, **/dist/*.zip, **/dist/*.nupkg, **/tests/*.xml', fingerprint: true } } From a5099313563f1930b0d8edf7c9357ade4aa841d4 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Fri, 30 Jun 2017 22:46:38 +0300 Subject: [PATCH 152/168] =?UTF-8?q?=D0=94=D0=B8=D0=B0=D0=B3=D0=BD=D0=BE?= =?UTF-8?q?=D1=81=D1=82=D0=B8=D1=87=D0=B5=D1=81=D0=BA=D0=BE=D0=B5=20=D1=81?= =?UTF-8?q?=D0=BE=D0=BE=D0=B1=D1=89=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BF=D0=BE?= =?UTF-8?q?=20=D0=B4=D0=BE=D0=BA=D1=83=D0=BC=D0=B5=D0=BD=D1=82=D0=B5=D1=80?= =?UTF-8?q?=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BuildAll.csproj | 1 + 1 file changed, 1 insertion(+) diff --git a/BuildAll.csproj b/BuildAll.csproj index 659144a16..5d4670a51 100644 --- a/BuildAll.csproj +++ b/BuildAll.csproj @@ -103,6 +103,7 @@ + From c7a27c725bddcba8aafbe2ec2a89306cb6883d86 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Fri, 30 Jun 2017 22:49:04 +0300 Subject: [PATCH 153/168] =?UTF-8?q?=D0=90=D1=80=D1=85=D0=B8=D0=B2=D0=B0?= =?UTF-8?q?=D1=86=D0=B8=D1=8F=20=D0=B4=D0=BE=D0=BA=D1=83=D0=BC=D0=B5=D0=BD?= =?UTF-8?q?=D1=82=D0=B0=D1=86=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Jenkinsfile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 3b81ab6bf..57b80528c 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -35,6 +35,7 @@ pipeline { bat "chcp $outputEnc > nul\r\n\"${tool 'MSBuild'}\" BuildAll.csproj /p:Configuration=Release /p:Platform=x86 /t:Build" stash includes: 'tests, install/build/**', name: 'buildResults' + stash includes: 'mddoc', name: 'sitedoc' } } @@ -92,8 +93,9 @@ pipeline { ws("$workspace".replaceAll("%", "_")) { unstash 'buildResults' + unstash 'sitedoc' bat "chcp $outputEnc > nul\r\n\"${tool 'MSBuild'}\" BuildAll.csproj /p:Configuration=Release /p:Platform=x86 /t:CreateZip;CreateInstall;CreateNuget" - archiveArtifacts artifacts: '**/dist/*.exe, **/dist/*.msi, **/dist/*.zip, **/dist/*.nupkg, **/tests/*.xml', fingerprint: true + archiveArtifacts artifacts: '**/dist/*.exe, **/dist/*.msi, **/dist/*.zip, **/dist/*.nupkg, **/tests/*.xml, mddoc/**', fingerprint: true } } } From 6d031409414d65f737f047ebb4249f4b4b0ad32e Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Fri, 30 Jun 2017 23:01:08 +0300 Subject: [PATCH 154/168] =?UTF-8?q?=D0=9E=D1=82=D0=BB=D0=B0=D0=B4=D0=BE?= =?UTF-8?q?=D1=87=D0=BD=D1=8B=D0=B5=20=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BuildAll.csproj | 4 ++-- Jenkinsfile | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/BuildAll.csproj b/BuildAll.csproj index 5d4670a51..468dd1169 100644 --- a/BuildAll.csproj +++ b/BuildAll.csproj @@ -103,8 +103,8 @@ - - + + diff --git a/Jenkinsfile b/Jenkinsfile index 57b80528c..06084ada7 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -32,6 +32,7 @@ pipeline { { checkout scm + bat 'set' bat "chcp $outputEnc > nul\r\n\"${tool 'MSBuild'}\" BuildAll.csproj /p:Configuration=Release /p:Platform=x86 /t:Build" stash includes: 'tests, install/build/**', name: 'buildResults' From 4cfa5a7c958f95057dfe11f060e8e0a167cf20bf Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Mon, 3 Jul 2017 13:36:55 +0300 Subject: [PATCH 155/168] =?UTF-8?q?=D0=92=D0=B5=D1=80=D0=BD=D1=83=D0=BB=20?= =?UTF-8?q?=D1=83=D1=81=D0=BB=D0=BE=D0=B2=D0=B8=D0=B5.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BuildAll.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BuildAll.csproj b/BuildAll.csproj index 468dd1169..c0242b227 100644 --- a/BuildAll.csproj +++ b/BuildAll.csproj @@ -104,7 +104,7 @@ - + From be4c46d299b32359e7583c26cac66c8ec785c989 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Mon, 3 Jul 2017 13:46:22 +0300 Subject: [PATCH 156/168] =?UTF-8?q?=D0=9D=D0=BE=D0=B2=D1=8B=D0=B5=20=D1=84?= =?UTF-8?q?=D0=B0=D0=B9=D0=BB=D1=8B=20=D0=BF=D0=BE=20CodeStat=20=D0=BD?= =?UTF-8?q?=D0=B5=20=D0=BF=D0=BE=D0=BF=D0=B0=D0=BB=D0=B8=20=D0=B2=20=D0=BF?= =?UTF-8?q?=D1=80=D0=BE=D0=B5=D0=BA=D1=82.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ScriptEngine/ScriptEngine.csproj | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/ScriptEngine/ScriptEngine.csproj b/src/ScriptEngine/ScriptEngine.csproj index db5d4deef..2ae33b1c9 100644 --- a/src/ScriptEngine/ScriptEngine.csproj +++ b/src/ScriptEngine/ScriptEngine.csproj @@ -112,6 +112,8 @@ + + @@ -196,9 +198,7 @@ - - - + From 91dea07e63d8c969289ff0efc6799c09afc5994e Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Mon, 3 Jul 2017 13:47:13 +0300 Subject: [PATCH 157/168] =?UTF-8?q?=D0=9C=D0=B5=D0=BB=D0=BA=D0=B0=D1=8F=20?= =?UTF-8?q?=D0=BA=D0=BE=D1=81=D0=BC=D0=B5=D1=82=D0=B8=D0=BA=D0=B0=20=D0=BE?= =?UTF-8?q?=D1=82=20Resharper?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ScriptEngine/Machine/CodeStat/CodeStatProcessor.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ScriptEngine/Machine/CodeStat/CodeStatProcessor.cs b/src/ScriptEngine/Machine/CodeStat/CodeStatProcessor.cs index 4f4eeb42f..420c4324a 100644 --- a/src/ScriptEngine/Machine/CodeStat/CodeStatProcessor.cs +++ b/src/ScriptEngine/Machine/CodeStat/CodeStatProcessor.cs @@ -50,9 +50,9 @@ public void MarkEntryReached(CodeStatEntry entry, int count = 1) } } - public void MarkPrepared(string ScriptFileName) + public void MarkPrepared(string scriptFileName) { - _preparedScripts.Add(ScriptFileName); + _preparedScripts.Add(scriptFileName); } public CodeStatDataCollection GetStatData() From fd792817616c28a83d90e86237832e7cdf1b892d Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Mon, 3 Jul 2017 13:49:51 +0300 Subject: [PATCH 158/168] =?UTF-8?q?=D0=95=D1=89=D0=B5=20=D0=BF=D1=80=D0=BE?= =?UTF-8?q?=D0=BF=D1=83=D1=89=D0=B5=D0=BD=D1=8B=D0=B5=20=D1=84=D0=B0=D0=B9?= =?UTF-8?q?=D0=BB=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ScriptEngine/Machine/CodeStat/ICodeStatCollector.cs | 2 +- src/oscript/oscript.csproj | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/ScriptEngine/Machine/CodeStat/ICodeStatCollector.cs b/src/ScriptEngine/Machine/CodeStat/ICodeStatCollector.cs index 294f3bf0d..79e093d5a 100644 --- a/src/ScriptEngine/Machine/CodeStat/ICodeStatCollector.cs +++ b/src/ScriptEngine/Machine/CodeStat/ICodeStatCollector.cs @@ -11,7 +11,7 @@ public interface ICodeStatCollector { bool IsPrepared(string ScriptFileName); void MarkEntryReached(CodeStatEntry entry, int count = 1); - void MarkPrepared(string ScriptFileName); + void MarkPrepared(string scriptFileName); void StopWatch(CodeStatEntry entry); void ResumeWatch(CodeStatEntry entry); diff --git a/src/oscript/oscript.csproj b/src/oscript/oscript.csproj index 00fc51938..248fbca48 100644 --- a/src/oscript/oscript.csproj +++ b/src/oscript/oscript.csproj @@ -94,6 +94,7 @@ + From 9e5229c57a897dbf4d6e788a0344d0c63528ef1c Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Mon, 3 Jul 2017 13:53:24 +0300 Subject: [PATCH 159/168] =?UTF-8?q?=D0=A3=D0=B1=D1=80=D0=B0=D0=BD=D0=BE=20?= =?UTF-8?q?=D0=BE=D0=B1=D1=8A=D1=8F=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=B2=D0=B8=D1=81=D0=B8=D0=BC=D0=BE=D1=81=D1=82?= =?UTF-8?q?=D0=B8=20=D0=BE=D1=82=20Json.=20see=20#474?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ScriptEngine/ScriptEngine.csproj | 6 ------ src/ScriptEngine/packages.config | 4 ---- src/oscript/oscript.csproj | 7 +++++++ src/oscript/packages.config | 4 ++++ 4 files changed, 11 insertions(+), 10 deletions(-) delete mode 100644 src/ScriptEngine/packages.config create mode 100644 src/oscript/packages.config diff --git a/src/ScriptEngine/ScriptEngine.csproj b/src/ScriptEngine/ScriptEngine.csproj index 2ae33b1c9..468fa5e46 100644 --- a/src/ScriptEngine/ScriptEngine.csproj +++ b/src/ScriptEngine/ScriptEngine.csproj @@ -85,9 +85,6 @@ - - ..\packages\Newtonsoft.Json.9.0.1\lib\net40\Newtonsoft.Json.dll - @@ -199,9 +196,6 @@ - - - diff --git a/src/ScriptEngine/packages.config b/src/ScriptEngine/packages.config deleted file mode 100644 index 101fdf5c4..000000000 --- a/src/ScriptEngine/packages.config +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/src/oscript/oscript.csproj b/src/oscript/oscript.csproj index 248fbca48..30a32b939 100644 --- a/src/oscript/oscript.csproj +++ b/src/oscript/oscript.csproj @@ -77,6 +77,10 @@ MinimumRecommendedRules.ruleset + + ..\packages\Newtonsoft.Json.10.0.3\lib\net40\Newtonsoft.Json.dll + True + @@ -132,6 +136,9 @@ + + + diff --git a/src/oscript/packages.config b/src/oscript/packages.config new file mode 100644 index 000000000..03c709252 --- /dev/null +++ b/src/oscript/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file From 922709404a41771d740bd8e0ce2e3c9d21196348 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Mon, 3 Jul 2017 15:43:41 +0300 Subject: [PATCH 160/168] =?UTF-8?q?=D0=A1=D1=82=D1=80=D0=B0=D0=BD=D0=BD?= =?UTF-8?q?=D0=BE=D0=B5=20=D0=BE=D0=BA=D0=B0=D0=B2=D1=8B=D1=87=D0=B8=D0=B2?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D0=B5.=20=D0=A0=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=B0=D0=BB=D0=BE=20=D0=B6=D0=B5=20=D0=BA=D0=B0=D0=BA-=D1=82?= =?UTF-8?q?=D0=BE,=20=D0=BD=D0=BE=20=D0=BD=D0=B5=D1=8F=D1=81=D0=BD=D0=BE?= =?UTF-8?q?=20=D0=BA=D0=B0=D0=BA.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BuildAll.csproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/BuildAll.csproj b/BuildAll.csproj index c0242b227..b3ee1736a 100644 --- a/BuildAll.csproj +++ b/BuildAll.csproj @@ -7,7 +7,7 @@ $(OutputPathForBuild)\bin\ $(OutputPathForBuild)\lib\ $(OutputPathForBuild)\doc\ - $(MSBuildProjectDirectory)\mddoc\ + $(MSBuildProjectDirectory)\mddoc $(OutputPathForBuild)\examples\ $(MSBuildProjectDirectory)\src\1Script.sln "$(InnoSetupPath)\iscc.exe" @@ -154,7 +154,7 @@ - + From 89d2f8e9b27cd07e6cdde4933a3a0525597f5ab4 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Tue, 4 Jul 2017 15:29:41 +0300 Subject: [PATCH 161/168] =?UTF-8?q?=D0=A1=D0=BE=D0=B1=D0=B8=D1=80=D0=B0?= =?UTF-8?q?=D1=82=D1=8C=20=D0=B4=D0=BE=D0=BA=D1=83=D0=BC=D0=B5=D0=BD=D1=82?= =?UTF-8?q?=D0=B0=D1=86=D0=B8=D1=8E=20=D0=B2=D1=81=D0=B5=D0=B3=D0=B4=D0=B0?= =?UTF-8?q?.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BuildAll.csproj | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/BuildAll.csproj b/BuildAll.csproj index b3ee1736a..14dac5282 100644 --- a/BuildAll.csproj +++ b/BuildAll.csproj @@ -103,8 +103,7 @@ - - + From 94c5346592db84e6cd2a464efed11f3a8f357b39 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Tue, 4 Jul 2017 15:44:32 +0300 Subject: [PATCH 162/168] =?UTF-8?q?=D0=A3=D0=B1=D1=80=D0=B0=D0=BB=20=D0=B2?= =?UTF-8?q?=D1=80=D0=B5=D0=BC=D0=B5=D0=BD=D0=BD=D0=BE=20=D0=B4=D0=BE=D0=BA?= =?UTF-8?q?=D1=83=D0=BC=D0=B5=D0=BD=D1=82=D0=B0=D1=86=D0=B8=D1=8E=20=D0=B4?= =?UTF-8?q?=D0=BB=D1=8F=20=D1=81=D0=B0=D0=B9=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Jenkinsfile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 06084ada7..98ba2d5b8 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -36,7 +36,6 @@ pipeline { bat "chcp $outputEnc > nul\r\n\"${tool 'MSBuild'}\" BuildAll.csproj /p:Configuration=Release /p:Platform=x86 /t:Build" stash includes: 'tests, install/build/**', name: 'buildResults' - stash includes: 'mddoc', name: 'sitedoc' } } @@ -94,7 +93,7 @@ pipeline { ws("$workspace".replaceAll("%", "_")) { unstash 'buildResults' - unstash 'sitedoc' + //unstash 'sitedoc' bat "chcp $outputEnc > nul\r\n\"${tool 'MSBuild'}\" BuildAll.csproj /p:Configuration=Release /p:Platform=x86 /t:CreateZip;CreateInstall;CreateNuget" archiveArtifacts artifacts: '**/dist/*.exe, **/dist/*.msi, **/dist/*.zip, **/dist/*.nupkg, **/tests/*.xml, mddoc/**', fingerprint: true } From b4746de9104c53f3e051bcadcbdde951419711e6 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Tue, 4 Jul 2017 16:02:18 +0300 Subject: [PATCH 163/168] =?UTF-8?q?=D0=9F=D0=BE=D0=BF=D1=8B=D1=82=D0=BA?= =?UTF-8?q?=D0=B0=20=D0=BF=D0=BE=D1=87=D0=B8=D0=BD=D0=B8=D1=82=D1=8C=20mdd?= =?UTF-8?q?oc?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 98ba2d5b8..1bf435c65 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -35,7 +35,7 @@ pipeline { bat 'set' bat "chcp $outputEnc > nul\r\n\"${tool 'MSBuild'}\" BuildAll.csproj /p:Configuration=Release /p:Platform=x86 /t:Build" - stash includes: 'tests, install/build/**', name: 'buildResults' + stash includes: 'tests, install/build/**, mddoc/**', name: 'buildResults' } } From 62a8c5f7a260fcfee43f72ab368cbe45a98055b9 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Tue, 4 Jul 2017 16:03:33 +0300 Subject: [PATCH 164/168] =?UTF-8?q?=D0=9F=D0=BE=D1=87=D0=B8=D0=BD=D0=BA?= =?UTF-8?q?=D0=B0=20=D1=82=D0=B5=D1=81=D1=82=D0=B0=20=D1=81=20=D0=BB=D0=B8?= =?UTF-8?q?=D1=86=D0=B5=D0=BD=D0=B7=D0=B8=D0=B5=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ScriptEngine/Machine/CodeStat/CodeStatData.cs | 9 ++++++++- .../Machine/CodeStat/CodeStatDataCollection.cs | 9 ++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/ScriptEngine/Machine/CodeStat/CodeStatData.cs b/src/ScriptEngine/Machine/CodeStat/CodeStatData.cs index 5b98cbbf1..4be4cb8bf 100644 --- a/src/ScriptEngine/Machine/CodeStat/CodeStatData.cs +++ b/src/ScriptEngine/Machine/CodeStat/CodeStatData.cs @@ -1,4 +1,11 @@ -using System; +/*---------------------------------------------------------- +This Source Code Form is subject to the terms of the +Mozilla Public License, v.2.0. If a copy of the MPL +was not distributed with this file, You can obtain one +at http://mozilla.org/MPL/2.0/. +----------------------------------------------------------*/ + +using System; using System.Collections.Generic; using System.Linq; using System.Text; diff --git a/src/ScriptEngine/Machine/CodeStat/CodeStatDataCollection.cs b/src/ScriptEngine/Machine/CodeStat/CodeStatDataCollection.cs index 9bb43f846..34cfaa878 100644 --- a/src/ScriptEngine/Machine/CodeStat/CodeStatDataCollection.cs +++ b/src/ScriptEngine/Machine/CodeStat/CodeStatDataCollection.cs @@ -1,4 +1,11 @@ -using System; +/*---------------------------------------------------------- +This Source Code Form is subject to the terms of the +Mozilla Public License, v.2.0. If a copy of the MPL +was not distributed with this file, You can obtain one +at http://mozilla.org/MPL/2.0/. +----------------------------------------------------------*/ + +using System; using System.Collections; using System.Collections.Generic; using System.Linq; From 6ca8d2c4b95032898cc277397ccd599f15bfdbce Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Tue, 4 Jul 2017 16:08:03 +0300 Subject: [PATCH 165/168] =?UTF-8?q?=D0=9F=D1=80=D0=B8=D0=B2=D0=B5=D0=BB=20?= =?UTF-8?q?nuget=20=D0=BA=20=D0=B5=D0=B4=D0=B8=D0=BD=D0=BE=D0=B9=20=D0=B2?= =?UTF-8?q?=D0=B5=D1=80=D1=81=D0=B8=D0=B8=20=D0=BF=D0=BE=20=D0=B2=D1=81?= =?UTF-8?q?=D0=B5=D0=BC=20=D0=BA=D0=BE=D0=BC=D0=BF=D0=BE=D0=BD=D0=B5=D0=BD?= =?UTF-8?q?=D1=82=D0=B0=D0=BC.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ScriptEngine.HostedScript.csproj | 4 ++-- src/ScriptEngine.HostedScript/packages.config | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/ScriptEngine.HostedScript/ScriptEngine.HostedScript.csproj b/src/ScriptEngine.HostedScript/ScriptEngine.HostedScript.csproj index 1505309ed..0775e0f35 100644 --- a/src/ScriptEngine.HostedScript/ScriptEngine.HostedScript.csproj +++ b/src/ScriptEngine.HostedScript/ScriptEngine.HostedScript.csproj @@ -78,8 +78,8 @@ ..\packages\DotNetZip.1.9.3\lib\net20\Ionic.Zip.dll - - ..\packages\Newtonsoft.Json.9.0.1\lib\net40\Newtonsoft.Json.dll + + ..\packages\Newtonsoft.Json.10.0.3\lib\net40\Newtonsoft.Json.dll True diff --git a/src/ScriptEngine.HostedScript/packages.config b/src/ScriptEngine.HostedScript/packages.config index 4af8806b0..240e05d30 100644 --- a/src/ScriptEngine.HostedScript/packages.config +++ b/src/ScriptEngine.HostedScript/packages.config @@ -1,5 +1,5 @@  - + \ No newline at end of file From db7e489eb51be2532d46f31a0a8d84b0214b2ef6 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Tue, 4 Jul 2017 16:21:48 +0300 Subject: [PATCH 166/168] =?UTF-8?q?=D0=95=D1=89=D0=B5=20=D0=BE=D1=82=D1=81?= =?UTF-8?q?=D1=83=D1=82=D1=81=D1=82=D0=B2=D1=83=D1=8E=D1=89=D0=B0=D1=8F=20?= =?UTF-8?q?=D0=BB=D0=B8=D1=86=D0=B5=D0=BD=D0=B7=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/oscript/CodeStatWriter.cs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/oscript/CodeStatWriter.cs b/src/oscript/CodeStatWriter.cs index 34460d5b8..e99dd84d9 100644 --- a/src/oscript/CodeStatWriter.cs +++ b/src/oscript/CodeStatWriter.cs @@ -1,8 +1,13 @@ -using System; -using System.Collections.Generic; +/*---------------------------------------------------------- +This Source Code Form is subject to the terms of the +Mozilla Public License, v.2.0. If a copy of the MPL +was not distributed with this file, You can obtain one +at http://mozilla.org/MPL/2.0/. +----------------------------------------------------------*/ + +using System; using System.IO; using System.Linq; -using System.Text; using ScriptEngine.Machine; using Newtonsoft.Json; From 60d7aadaa89c48466a9dcf666896fc39d984019b Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Sun, 9 Jul 2017 16:33:54 +0300 Subject: [PATCH 167/168] =?UTF-8?q?=D0=90=D1=80=D1=85=D0=B8=D0=B2=D0=B0?= =?UTF-8?q?=D1=86=D0=B8=D1=8F=20mddoc=20=D0=B4=D0=BB=D1=8F=20=D1=81=D0=B0?= =?UTF-8?q?=D0=B9=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BuildAll.csproj | 1 + 1 file changed, 1 insertion(+) diff --git a/BuildAll.csproj b/BuildAll.csproj index 14dac5282..1df64f235 100644 --- a/BuildAll.csproj +++ b/BuildAll.csproj @@ -223,6 +223,7 @@ + From 7cacc657dcaab9ff84726aa8ee298c95dddf2698 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Sun, 9 Jul 2017 16:38:23 +0300 Subject: [PATCH 168/168] =?UTF-8?q?=D0=9E=D1=82=D0=BA=D0=BB=D1=8E=D1=87?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=B0=D1=80=D1=85=D0=B8=D0=B2=D0=B0=D1=86=D0=B8?= =?UTF-8?q?=D1=8E=20mddoc=20=D1=81=D1=80=D0=B5=D0=B4=D1=81=D1=82=D0=B2?= =?UTF-8?q?=D0=B0=D0=BC=D0=B8=20Jenkins?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 1bf435c65..5f33755c2 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -95,7 +95,7 @@ pipeline { unstash 'buildResults' //unstash 'sitedoc' bat "chcp $outputEnc > nul\r\n\"${tool 'MSBuild'}\" BuildAll.csproj /p:Configuration=Release /p:Platform=x86 /t:CreateZip;CreateInstall;CreateNuget" - archiveArtifacts artifacts: '**/dist/*.exe, **/dist/*.msi, **/dist/*.zip, **/dist/*.nupkg, **/tests/*.xml, mddoc/**', fingerprint: true + archiveArtifacts artifacts: '**/dist/*.exe, **/dist/*.msi, **/dist/*.zip, **/dist/*.nupkg, **/tests/*.xml', fingerprint: true } } }