Skip to content

Commit

Permalink
Merge branch 'release/v1.0.21'
Browse files Browse the repository at this point in the history
  • Loading branch information
Andrei Ovsyankin committed Sep 24, 2018
2 parents e38b457 + e42937f commit 79c7f68
Show file tree
Hide file tree
Showing 86 changed files with 2,818 additions and 661 deletions.
23 changes: 23 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
---
name: Сообщение об ошибке
about: 1Script работает не так как ожидается

---

**Опишите ошибку**
Понятное описание того, что происходит

**Воспроизведение ошибки**
Steps to reproduce the behavior:
1. Запустить код ...
2. Подать на вход параметры ...
3. Увидеть ошибку

**Ожидаемое поведение**
Опишите, как должна вести себя система в указаных условиях. Ведет ли себя 1С в тех же условиях иным образом?

**Окружение**
- ОС:
- Версия:

**Дополнительная информация**
30 changes: 30 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
---
name: Предложение/Запрос на развитие
about: Предложить идею для проекта

---

<!---
## Уведомление от команды разработки
Проект 1Script разрабатывается командой на безвозмездной основе за счет личного времени.
За 4 года существования проекта, в него было подано более 800 задач и предложений. Все их отработать не представляется возможным. На каждой задаче, которую мы считаем посильной для реализации силами сообщества вешается зеленая плашка "help wanted". Это означает "Нужна помощь". За все время существования проекта, практически никто не взял и не сделал задачу с такой плашкой. Исключения единичны.
Подавая запрос на новую функциональность, учитывайте, пожалуйста, что скорее всего, Ваша задача сможет быть реализована только Вами самостоятельно.
Если вы не планируете реализовывать новую функциональность, то, возможно, и не стоит подавать запрос на нее?
С надеждой на понимание, EvilBeaver
-->

# Описание задачи

**Опишите вашу Цель, которую вы сможете достичь с помощью новой функциональности**
Какую задачу вы смогли бы решить, если бы в 1Script была предлагаемая Вами функциональность?

**Опишите решение**
Четкое и понятное описание того, что Вы хотите видеть в проекте и как именно?

**Дополнительная информация**
Любая дополнтельная информация
2 changes: 1 addition & 1 deletion Build.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@
<Target Name="GatherLibrary" DependsOnTargets="Make;PrepareArtifactsRoot">

<MakeDir Directories="$(LibFolder)" />
<Exec Command="&quot;$(BinFolder)/oscript.exe&quot; &quot;$(MSBuildProjectDirectory)\install\unicode-zipper.os&quot; unpack &quot;$(MSBuildProjectDirectory)\install\opm-0.13.0.ospx&quot; &quot;$(LibFolder)\tmp&quot;"/>
<Exec Command="&quot;$(BinFolder)/oscript.exe&quot; &quot;$(MSBuildProjectDirectory)\install\unicode-zipper.os&quot; unpack &quot;$(MSBuildProjectDirectory)\install\opm-0.14.4.ospx&quot; &quot;$(LibFolder)\tmp&quot;"/>
<Exec Command="&quot;$(BinFolder)/oscript.exe&quot; &quot;$(MSBuildProjectDirectory)\install\unicode-zipper.os&quot; unpack &quot;$(LibFolder)\tmp\content.zip&quot; &quot;$(LibFolder)/opm&quot;"/>
<Copy SourceFiles="$(MSBuildProjectDirectory)\install\package-loader.os" DestinationFolder="$(LibFolder)"/>
<DeleteTree Directories="$(LibFolder)\tmp"/>
Expand Down
8 changes: 4 additions & 4 deletions Jenkinsfile
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ pipeline {
agent none

environment {
ReleaseNumber = 20
ReleaseNumber = 21
outputEnc = '65001'
}

Expand Down Expand Up @@ -42,9 +42,9 @@ pipeline {
withSonarQubeEnv('silverbulleters') {
script {
def sqScannerMsBuildHome = tool 'sonar-scanner for msbuild';
sqScannerMsBuildHome = sqScannerMsBuildHome + "\\SonarQube.Scanner.MSBuild.exe";
def sonarcommandStart = "@" + sqScannerMsBuildHome + " begin /k:1script /n:OneScript /v:\"1.0.${env.ReleaseNumber}\"";
def makeAnalyzis = true
sqScannerMsBuildHome = sqScannerMsBuildHome + "\\SonarScanner.MSBuild.exe";
def sonarcommandStart = "@" + sqScannerMsBuildHome + " begin /k:1script /n:OneScript /v:\"1.0.${env.ReleaseNumber}\" /d:sonar.verbose=true /d:sonar.exclusions=src/ASPNETHandler/**/*,tests/**/*";
def makeAnalyzis = false
if (env.BRANCH_NAME == "develop") {
echo 'Analysing develop branch'
} else if (env.BRANCH_NAME.startsWith("PR-")) {
Expand Down
8 changes: 4 additions & 4 deletions dist.cmd
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
@echo Full distr and tests
@echo add MSBuild 12 to your path
@echo add MSBuild 15 to your path

MSBuild.exe ./BuildAll.csproj
MSBuild.exe ./BuildAll.csproj /t:CreateZipForUpdateDll
MSBuild.exe ./BuildAll.csproj /t:xUnitTest
MSBuild.exe ./Build.csproj
MSBuild.exe ./Build.csproj /t:CreateZipForUpdateDll
MSBuild.exe ./Build.csproj /t:xUnitTest
2 changes: 1 addition & 1 deletion install/builders/deb/oscript-opm
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#!/bin/sh
OSPATH=/usr/share/oscript
mono $OSPATH/bin/oscript.exe $OSPATH/lib/opm/src/opm.os "$@"
mono $OSPATH/bin/oscript.exe $OSPATH/lib/opm/src/cmd/opm.os "$@"

2 changes: 1 addition & 1 deletion install/builders/deb/settings/control
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,4 @@ Depends: mono-runtime,
libmono-corlib4.0-cil | libmono-corlib4.5-cil,
libmono-i18n4.0-all | libmono-i18n4.5-all
Recommends: mono-complete
Origin: https://bitbucket.org/EvilBeaver/1script/
Origin: https://github.com/EvilBeaver/OneScript/
4 changes: 2 additions & 2 deletions install/builders/rpm/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
FROM fedora
FROM fedora:26
MAINTAINER Chmouel Boudjnah <[email protected]>


# Install various packages to get compile environment
RUN dnf update -y && dnf -y group install 'Development Tools'

# Install git command to access GitHub repository
RUN dnf -y install sudo git rpmdevtools rpm-build yum-utils dnf-plugins-core dnf-plugins-extras
RUN dnf -y install sudo git rpmdevtools rpm-build yum-utils dnf-plugins-core

RUN sed -i.bak -n -e '/^Defaults.*requiretty/ { s/^/# /;};/^%wheel.*ALL$/ { s/^/# / ;} ;/^#.*wheel.*NOPASSWD/ { s/^#[ ]*//;};p' /etc/sudoers

Expand Down
Binary file removed install/opm-0.13.0.ospx
Binary file not shown.
Binary file added install/opm-0.14.4.ospx
Binary file not shown.
4 changes: 2 additions & 2 deletions install/opm.bat
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@
setlocal

set lib="%~dp0..\lib"
set opm=%lib%\opm\src\opm.os
set opm=%lib%\opm\src\cmd\opm.os

oscript.exe %opm% %*
oscript.exe %opm% %*
2 changes: 1 addition & 1 deletion src/DebugServer/DebugServer.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
<ItemGroup>
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.ServiceModel" />
<PackageReference Include="Newtonsoft.Json" Version="10.0.3" />
<PackageReference Include="Newtonsoft.Json" Version="11.0.2" />
</ItemGroup>
<ItemGroup>
<None Include="package.json">
Expand Down
6 changes: 6 additions & 0 deletions src/NUnitTests/TestRunnerTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,12 @@ public void Test_Zip()
{
RunSpecificTest(@"zip.os");
}

[Test]
public void Test_XmlWrite()
{
RunSpecificTest(@"xmlwrite.os");
}

[Test]
[Ignore("Внутри валится очень много тестов, надо чинить механизм.")]
Expand Down
50 changes: 49 additions & 1 deletion src/NUnitTests/TypeReflectionTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ public void CheckIfTypeHasReflectedWithName()

var reflected = CreateDummyType(script);
Assert.AreEqual("Dummy", reflected.Name);
Assert.AreEqual("ScriptEngine.Machine.Contexts.dyn.Dummy", reflected.FullName);
Assert.AreEqual("ScriptEngine.Machine.Reflection.dyn.Dummy", reflected.FullName);

}

Expand Down Expand Up @@ -200,5 +200,53 @@ public void ClassCanExposeNativeMethodDirectly()

Assert.IsNotNull(type.GetMethod("AddProperty"));
}

[Test]
public void CheckMethodBodyIsNotReflected()
{
string script = "Процедура Внутренняя()\n" +
"КонецПроцедуры\n\n" +
"Процедура Внешняя() Экспорт\n" +
"КонецПроцедуры\n" +
"ТелоМодуля = 2;";

var reflected = CreateDummyType(script);

var defaultGet = reflected.GetMethods(BindingFlags.Public | BindingFlags.NonPublic);
Assert.AreEqual(2, defaultGet.Length);
}

[Test]
public void CheckMethodAnnotationsReflected()
{
string script = "&Аннотация\n" +
"&ДругаяАннотация\n" +
"Процедура Внешняя() Экспорт\n" +
"КонецПроцедуры";

var reflected = CreateDummyType(script);
var method = reflected.GetMethod("Внешняя");
Assert.NotNull(method);
Assert.AreEqual(3, method.GetCustomAttributes(false).Length);
Assert.AreEqual(2, method.GetCustomAttributes(typeof(UserAnnotationAttribute), false).Length);

var first = (UserAnnotationAttribute)method.GetCustomAttributes(typeof(UserAnnotationAttribute), false)[0];
Assert.AreEqual("Аннотация", first.Annotation.Name);
}

[Test]
public void CheckParametersAnnotationsReflected()
{
string script = "Процедура Внешняя(&Аннотация Параметр, ПараметрБезАннотации) Экспорт\n" +
"КонецПроцедуры";

var reflected = CreateDummyType(script);
var method = reflected.GetMethod("Внешняя");
Assert.NotNull(method);
var param = method.GetParameters()[0];

var first = (UserAnnotationAttribute)param.GetCustomAttributes(typeof(UserAnnotationAttribute), false)[0];
Assert.AreEqual("Аннотация", first.Annotation.Name);
}
}
}
38 changes: 24 additions & 14 deletions src/ScriptEngine.HostedScript/Library/Binary/BinaryDataBuffer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,19 @@ private void CopyBytes(int position, byte[] bytes)
}
}

private static ulong AsUnsignedLong( IValue value, ulong maxValue=ulong.MaxValue )
{
if (value.DataType != DataType.Number)
throw RuntimeException.InvalidArgumentType(2,nameof(value));

var number = value.AsNumber();
if ( number < 0 || number > maxValue || number != (ulong)number )
throw RuntimeException.InvalidArgumentValue(number);

return (ulong)number;
}


/// <summary>
///
/// Записать целое 16-битное положительное число в заданную позицию.
Expand All @@ -175,14 +188,12 @@ private void CopyBytes(int position, byte[] bytes)
///
///
[ContextMethod("ЗаписатьЦелое16", "WriteInt16")]
public void WriteInt16(int position, int value, IValue byteOrder = null)
public void WriteInt16(int position, IValue value, IValue byteOrder = null)
{
ThrowIfReadonly();

if (value < short.MinValue || value > short.MaxValue)
throw RuntimeException.InvalidArgumentValue();

var bytes = GetBytes(value, BitConversionFacility.LittleEndian.GetBytes, BitConversionFacility.BigEndian.GetBytes, byteOrder);
var number = AsUnsignedLong(value,ushort.MaxValue);
var bytes = GetBytes( (ushort)number, BitConversionFacility.LittleEndian.GetBytes, BitConversionFacility.BigEndian.GetBytes, byteOrder);
CopyBytes(position, bytes);
}

Expand All @@ -200,11 +211,12 @@ public void WriteInt16(int position, int value, IValue byteOrder = null)
/// Порядок байтов, который будет использован для кодировки числа при записи в буфер. Если не установлен, то будет использован порядок байтов, заданный для текущего экземпляра БуферДвоичныхДанных.
/// Значение по умолчанию: Неопределено. </param>
[ContextMethod("ЗаписатьЦелое32", "WriteInt32")]
public void WriteInt32(int position, int value, IValue byteOrder = null)
public void WriteInt32(int position, IValue value, IValue byteOrder = null)
{
ThrowIfReadonly();

var bytes = GetBytes(value, BitConversionFacility.LittleEndian.GetBytes, BitConversionFacility.BigEndian.GetBytes, byteOrder);
var number = AsUnsignedLong(value, uint.MaxValue);
var bytes = GetBytes((uint)number, BitConversionFacility.LittleEndian.GetBytes, BitConversionFacility.BigEndian.GetBytes, byteOrder);
CopyBytes(position, bytes);
}

Expand All @@ -227,11 +239,12 @@ public void WriteInt32(int position, int value, IValue byteOrder = null)

///
[ContextMethod("ЗаписатьЦелое64", "WriteInt64")]
public void WriteInt64(int position, long value, IValue byteOrder = null)
public void WriteInt64(int position, IValue value, IValue byteOrder = null)
{
ThrowIfReadonly();

var bytes = GetBytes(value, BitConversionFacility.LittleEndian.GetBytes, BitConversionFacility.BigEndian.GetBytes, byteOrder);
var number = AsUnsignedLong(value);
var bytes = GetBytes( number, BitConversionFacility.LittleEndian.GetBytes, BitConversionFacility.BigEndian.GetBytes, byteOrder);
CopyBytes(position, bytes);
}

Expand Down Expand Up @@ -480,14 +493,11 @@ public BinaryDataBuffer Concat(BinaryDataBuffer buffer)
/// Значение, которое требуется установить в заданную позицию буфера.
/// Если значение больше 255 или меньше 0, будет выдана ошибка о неверном значении параметра. </param>
[ContextMethod("Установить", "Set")]
public void Set(int position, int value)
public void Set(int position, IValue value)
{
ThrowIfReadonly();

if (value < byte.MinValue || value > byte.MaxValue)
throw RuntimeException.InvalidArgumentValue();

_buffer[position] = (byte)value;
_buffer[position] = (byte)AsUnsignedLong(value, byte.MaxValue);
}


Expand Down
15 changes: 15 additions & 0 deletions src/ScriptEngine.HostedScript/Library/Binary/BinaryDataContext.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ This Source Code Form is subject to the terms of the

using System;
using System.IO;
using System.Text;

using ScriptEngine.Machine;
using ScriptEngine.Machine.Contexts;
Expand Down Expand Up @@ -61,6 +62,20 @@ public byte[] Buffer
}
}

public override string AsString()
{
const int LIMIT = 50;
StringBuilder hex = new StringBuilder(LIMIT);
for (int i = 0; i < LIMIT; i++)
{
hex.AppendFormat("{0:X2} ", _buffer[i]);
}

hex.Append("…");

return hex.ToString();
}

/// <summary>
///
/// Открывает поток для чтения двоичных данных.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -235,6 +235,7 @@ private HttpWebRequest CreateRequest(string resource)
if (uriBuilder.Scheme == HTTPS_SCHEME)
{
request.ServerCertificateValidationCallback = delegate { return true; };
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12 | SecurityProtocolType.Ssl3;
}

return request;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ namespace ScriptEngine.HostedScript.Library.Http
/// Данные и заголоки HTTP запроса.
/// </summary>
[ContextClass("HTTPЗапрос", "HTTPRequest")]
public class HttpRequestContext : AutoContext<HttpRequestContext>
public class HttpRequestContext : AutoContext<HttpRequestContext>, IDisposable
{

IHttpRequestBody _body;
Expand Down Expand Up @@ -113,7 +113,7 @@ public IValue GetBodyAsString()
return _body.GetAsString();
}

[ContextMethod("ПолучитьТелоКакПоток", "GetBodyAsString")]
[ContextMethod("ПолучитьТелоКакПоток", "GetBodyAsStream")]
public GenericStream GetBodyAsStream()
{
return new GenericStream(_body.GetDataStream());
Expand Down Expand Up @@ -142,5 +142,9 @@ public static HttpRequestContext Constructor(IValue resource, IValue headers = n
return ctx;
}

public void Dispose()
{
_body?.Dispose();
}
}
}
Loading

0 comments on commit 79c7f68

Please sign in to comment.