Browse Source

Merge pull request #232 from nuskey8/fix-sttf-time

Fix: Escape in `os.time` was not working
akeit0 3 days ago
parent
commit
4f821afb41

+ 4 - 0
src/Lua/Standard/Internal/DateTimeHelper.cs

@@ -118,6 +118,10 @@ static class DateTimeHelper
                     builder.Append('%');
                     builder.Append('%');
                     isEscapeSequence = false;
                     isEscapeSequence = false;
                 }
                 }
+                else
+                {
+                    isEscapeSequence = true;
+                }
 
 
                 continue;
                 continue;
             }
             }

+ 24 - 0
tests/Lua.Tests/DateTimeTests.cs

@@ -0,0 +1,24 @@
+using Lua.Platforms;
+using Lua.Standard;
+using Microsoft.Extensions.Time.Testing;
+
+namespace Lua.Tests;
+
+public class DateTimeTests
+{
+    [Test]
+    public async Task Test_LocalFunction_Nil_1()
+    {
+        var source = """
+                     return os.date("%d-%m-%Y %H:%M:%S");
+                     """;
+        var timeProvider = new FakeTimeProvider();
+        timeProvider.SetUtcNow(new DateTime(2000, 1, 2, 3, 4, 5, DateTimeKind.Utc));
+        var state = LuaState.Create(LuaPlatform.Default with { TimeProvider = timeProvider });
+        state.OpenOperatingSystemLibrary();
+        var result = await state.DoStringAsync(source);
+
+        Assert.That(result, Has.Length.EqualTo(1));
+        Assert.That(result[0], Is.EqualTo(new LuaValue("02-01-2000 03:04:05")));
+    }
+}

+ 1 - 0
tests/Lua.Tests/Lua.Tests.csproj

@@ -10,6 +10,7 @@
     </PropertyGroup>
     </PropertyGroup>
 
 
     <ItemGroup>
     <ItemGroup>
+        <PackageReference Include="Microsoft.Extensions.TimeProvider.Testing" Version="10.1.0" />
         <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.6.0"/>
         <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.6.0"/>
         <PackageReference Include="NUnit" Version="3.13.3"/>
         <PackageReference Include="NUnit" Version="3.13.3"/>
         <PackageReference Include="NUnit3TestAdapter" Version="4.2.1"/>
         <PackageReference Include="NUnit3TestAdapter" Version="4.2.1"/>