aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2013-08-30 11:21:48 -0700
committerAlon Zakai <alonzakai@gmail.com>2013-08-30 11:21:48 -0700
commitb5b49215d4a40566380a769f47a9c1cce74a28b0 (patch)
tree68308b6059798a81f24f6a8a1ac28a0091c5d066 /tests
parent1cc28b8e9e94267041bc71afebfbbe3059db4a3f (diff)
parentb895cdc7df2085d324003c9df582a3dcc1927697 (diff)
Merge branch 'incoming'
Diffstat (limited to 'tests')
-rw-r--r--tests/cases/callwithstructural64_ta2.ll29
-rw-r--r--tests/cases/callwithstructural64_ta2.txt1
-rw-r--r--tests/cases/callwithstructural_ta2.ll29
-rw-r--r--tests/cases/callwithstructural_ta2.txt1
-rw-r--r--tests/cases/structinparam.ll36
-rw-r--r--tests/cases/structinparam.txt2
-rw-r--r--tests/emscripten_get_now.cpp46
-rw-r--r--tests/file_db.cpp47
-rw-r--r--tests/filesystem/src.js7
-rw-r--r--tests/module/test_stdin.c57
-rw-r--r--tests/msvc10/glbook_10_MultiTexture.vcxproj4
-rw-r--r--tests/msvc10/glbook_11_Multisample.vcxproj4
-rw-r--r--tests/msvc10/glbook_11_Stencil_Test.vcxproj4
-rw-r--r--tests/msvc10/glbook_13_ParticleSystem.vcxproj4
-rw-r--r--tests/msvc10/glbook_15_Hello_Triangle_KD.vcxproj4
-rw-r--r--tests/msvc10/glbook_2_Hello_Triangle.vcxproj4
-rw-r--r--tests/msvc10/glbook_8_Simple_VertexShader.vcxproj4
-rw-r--r--tests/msvc10/glbook_9_MipMap2D.vcxproj4
-rw-r--r--tests/msvc10/glbook_9_Simple_Texture2D.vcxproj4
-rw-r--r--tests/msvc10/glbook_9_Simple_TextureCubemap.vcxproj4
-rw-r--r--tests/msvc10/glbook_9_TextureWrap.vcxproj4
-rw-r--r--tests/termios/test_tcgetattr.c61
-rw-r--r--tests/test_browser.py14
-rw-r--r--tests/test_core.py24
-rw-r--r--tests/test_other.py22
-rw-r--r--tests/unistd/curdir.js5
-rw-r--r--tests/unistd/io.c13
-rw-r--r--tests/unistd/io.js61
-rw-r--r--tests/unistd/io.out5
29 files changed, 447 insertions, 57 deletions
diff --git a/tests/cases/callwithstructural64_ta2.ll b/tests/cases/callwithstructural64_ta2.ll
new file mode 100644
index 00000000..d16b0e87
--- /dev/null
+++ b/tests/cases/callwithstructural64_ta2.ll
@@ -0,0 +1,29 @@
+; ModuleID = 'foo.bc'
+target datalayout = "e-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-p:32:32:32-v128:32:32"
+target triple = "le32-unknown-nacl"
+
+%ac = type { i8*, i64 }
+
+@0 = constant [9 x i8] c"func %s\0A\00"
+@1 = constant [4 x i8] c"foo\00"
+
+declare void @llvm.trap() noreturn nounwind
+
+define void @direct(%ac) {
+entry:
+ %str = alloca %ac
+ store %ac %0, %ac* %str
+ %1 = getelementptr inbounds %ac* %str, i32 0, i32 0
+ %2 = load i8** %1
+ call void (i8*, ...)* @printf(i8* getelementptr inbounds ([9 x i8]* @0, i32 0, i32 0), i8* %2)
+ ret void
+}
+
+declare void @printf(i8*, ...)
+
+define i32 @main() {
+entry:
+ call void @direct(%ac { i8* getelementptr inbounds ([4 x i8]* @1, i32 0, i32 0), i64 3 })
+ ret i32 0
+}
+
diff --git a/tests/cases/callwithstructural64_ta2.txt b/tests/cases/callwithstructural64_ta2.txt
new file mode 100644
index 00000000..51a6ac7c
--- /dev/null
+++ b/tests/cases/callwithstructural64_ta2.txt
@@ -0,0 +1 @@
+func foo
diff --git a/tests/cases/callwithstructural_ta2.ll b/tests/cases/callwithstructural_ta2.ll
new file mode 100644
index 00000000..bc6f852a
--- /dev/null
+++ b/tests/cases/callwithstructural_ta2.ll
@@ -0,0 +1,29 @@
+; ModuleID = 'foo.bc'
+target datalayout = "e-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-p:32:32:32-v128:32:32"
+target triple = "le32-unknown-nacl"
+
+%ac = type { i8*, i32 }
+
+@0 = constant [9 x i8] c"func %s\0A\00"
+@1 = constant [4 x i8] c"foo\00"
+
+declare void @llvm.trap() noreturn nounwind
+
+define void @direct(%ac) {
+entry:
+ %str = alloca %ac
+ store %ac %0, %ac* %str
+ %1 = getelementptr inbounds %ac* %str, i32 0, i32 0
+ %2 = load i8** %1
+ call void (i8*, ...)* @printf(i8* getelementptr inbounds ([9 x i8]* @0, i32 0, i32 0), i8* %2)
+ ret void
+}
+
+declare void @printf(i8*, ...)
+
+define i32 @main() {
+entry:
+ call void @direct(%ac { i8* getelementptr inbounds ([4 x i8]* @1, i32 0, i32 0), i32 3 })
+ ret i32 0
+}
+
diff --git a/tests/cases/callwithstructural_ta2.txt b/tests/cases/callwithstructural_ta2.txt
new file mode 100644
index 00000000..51a6ac7c
--- /dev/null
+++ b/tests/cases/callwithstructural_ta2.txt
@@ -0,0 +1 @@
+func foo
diff --git a/tests/cases/structinparam.ll b/tests/cases/structinparam.ll
new file mode 100644
index 00000000..d81f5e67
--- /dev/null
+++ b/tests/cases/structinparam.ll
@@ -0,0 +1,36 @@
+; ModuleID = 'min.bc'
+target datalayout = "e-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-p:32:32:32-v128:32:32"
+target triple = "le32-unknown-nacl"
+
+%ac = type { i8*, i32 }
+
+@0 = constant [9 x i8] c"func %s\0A\00"
+@1 = constant [4 x i8] c"foo\00"
+@2 = constant [9 x i8] c"main %s\0A\00"
+
+declare void @llvm.trap() noreturn nounwind
+
+define void @direct(%ac) {
+entry:
+ %str = alloca %ac
+ store %ac %0, %ac* %str
+ %1 = getelementptr inbounds %ac* %str, i32 0, i32 0
+ %2 = load i8** %1
+ call void (i8*, ...)* @printf(i8* getelementptr inbounds ([9 x i8]* @0, i32 0, i32 0), i8* %2)
+ ret void
+}
+
+declare void @printf(i8*, ...)
+
+define i32 @main() {
+entry:
+ %str = alloca %ac
+ store %ac { i8* getelementptr inbounds ([4 x i8]* @1, i32 0, i32 0), i32 3 }, %ac* %str
+ %0 = getelementptr inbounds %ac* %str, i32 0, i32 0
+ %1 = load i8** %0
+ call void (i8*, ...)* @printf(i8* getelementptr inbounds ([9 x i8]* @2, i32 0, i32 0), i8* %1)
+ %2 = load %ac* %str
+ call void @direct(%ac %2)
+ ret i32 0
+}
+
diff --git a/tests/cases/structinparam.txt b/tests/cases/structinparam.txt
new file mode 100644
index 00000000..785191e7
--- /dev/null
+++ b/tests/cases/structinparam.txt
@@ -0,0 +1,2 @@
+main foo
+func foo
diff --git a/tests/emscripten_get_now.cpp b/tests/emscripten_get_now.cpp
new file mode 100644
index 00000000..17aa7d32
--- /dev/null
+++ b/tests/emscripten_get_now.cpp
@@ -0,0 +1,46 @@
+#include <stdio.h>
+#include "emscripten.h"
+
+#ifndef REPORT_RESULT
+// To be able to run this test outside the browser harness in node.js/spidermonkey:
+#define REPORT_RESULT int dummy
+#endif
+
+int result = 0;
+
+int main() {
+ // This code tests three things:
+ // a) Calling emscripten_get_now(), time actually proceeds.
+ // b) Values returned by emscripten_get_now() are strictly nondecreasing.
+ // c) emscripten_get_now() is able to return sub-millisecond precision timer values.
+ bool detected_good_timer_precision = false;
+ float smallest_delta = 0.f;
+ for(int x = 0; x < 1000; ++x) { // Have several attempts to find a good small delta, i.e. give time to JS engine to warm up the code and so on.
+ float t = emscripten_get_now();
+ float t2 = emscripten_get_now();
+ for(int i = 0; i < 100 && t == t2; ++i) {
+ t2 = emscripten_get_now();
+ }
+
+ if (t2 < t && t2 - t < 1000.f) { // Timer must be monotonous.
+ printf("Timer is not monotonous!\\n");
+ smallest_delta = t2 - t;
+ break;
+ }
+ if (t2 > t && t2 - t < 0.7f) { // Must pass less than a millisecond between two calls.
+ detected_good_timer_precision = true;
+ smallest_delta = t2 - t;
+ break;
+ }
+ }
+
+ if (detected_good_timer_precision) {
+ printf("Timer resolution is good. (%f msecs)\\n", smallest_delta);
+ result = 1;
+ } else {
+ printf("Error: Bad timer precision: Smallest timer delta: %f msecs\\n", smallest_delta);
+ result = 0;
+ }
+ REPORT_RESULT();
+ return 0;
+}
diff --git a/tests/file_db.cpp b/tests/file_db.cpp
new file mode 100644
index 00000000..ebb3bb30
--- /dev/null
+++ b/tests/file_db.cpp
@@ -0,0 +1,47 @@
+#include <stdio.h>
+#include <emscripten.h>
+
+void later(void *) {}
+
+int main() {
+#if FIRST
+ FILE *f = fopen("waka.txt", "w");
+ fputc('a', f);
+ fputc('z', f);
+ fclose(f);
+
+ EM_ASM(
+ FS.saveFilesToDB(['waka.txt', 'moar.txt'], function() {
+ Module.print('save ok');
+ var xhr = new XMLHttpRequest();
+ xhr.open('GET', 'http://localhost:8888/report_result?1');
+ xhr.send();
+ setTimeout(function() { window.close() }, 1000);
+ }, function(e) {
+ abort('saving should succeed ' + e);
+ });
+ );
+#else
+ EM_ASM(
+ FS.loadFilesFromDB(['waka.txt', 'moar.txt'], function() {
+ function stringy(arr) {
+ return Array.prototype.map.call(arr, function(x) { return String.fromCharCode(x) }).join('');
+ }
+ assert(stringy(FS.analyzePath('waka.txt').object.contents) == 'az');
+ var secret = stringy(FS.analyzePath('moar.txt').object.contents);
+ Module.print('load: ' + secret);
+ var xhr = new XMLHttpRequest();
+ xhr.open('GET', 'http://localhost:8888/report_result?' + secret);
+ xhr.send();
+ setTimeout(function() { window.close() }, 1000);
+ }, function() {
+ abort('loading should succeed');
+ });
+ );
+#endif
+
+ emscripten_async_call(later, NULL, 100); // keep runtime alive
+
+ return 0;
+}
+
diff --git a/tests/filesystem/src.js b/tests/filesystem/src.js
index ceea348d..dbdd4bed 100644
--- a/tests/filesystem/src.js
+++ b/tests/filesystem/src.js
@@ -1,10 +1,13 @@
+var dummy_device = FS.makedev(64, 0);
+FS.registerDevice(dummy_device, {});
+
FS.createFolder('/', 'forbidden', false, false);
FS.createFolder('/forbidden', 'test', true, true);
FS.createPath('/', 'abc/123', true, true);
FS.createPath('/', 'abc/456', true, true);
FS.createPath('/', 'def/789', true, true);
-FS.createDevice('/abc', 'deviceA', function() {}, function() {});
-FS.createDevice('/def', 'deviceB', function() {}, function() {});
+FS.mkdev('/abc/deviceA', 0666, dummy_device);
+FS.mkdev('/def/deviceB', 0666, dummy_device);
FS.createLink('/abc', 'localLink', '123', true, true);
FS.createLink('/abc', 'rootLink', '/', true, true);
FS.createLink('/abc', 'relativeLink', '../def', true, true);
diff --git a/tests/module/test_stdin.c b/tests/module/test_stdin.c
new file mode 100644
index 00000000..4838d466
--- /dev/null
+++ b/tests/module/test_stdin.c
@@ -0,0 +1,57 @@
+#include <errno.h>
+#include <fcntl.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <unistd.h>
+#if EMSCRIPTEN
+#include <emscripten.h>
+#endif
+
+int line = 0;
+
+void main_loop(void *arg)
+{
+ char str[10] = {0};
+ int ret;
+
+ errno = 0;
+ while (errno != EAGAIN) {
+ if (line == 0) {
+ ret = fgetc(stdin);
+ if (ret != EOF) putc(ret, stdout);
+ if (ret == '\n') line++;
+ } else if (line > 0) {
+ ret = scanf("%10s", str);
+ if (ret > 0) puts(str);
+ }
+
+ if (ferror(stdin) && errno != EAGAIN) {
+ puts("error");
+ exit(EXIT_FAILURE);
+ }
+
+ if (feof(stdin)) {
+ puts("eof");
+ exit(EXIT_SUCCESS);
+ }
+
+ clearerr(stdin);
+ }
+}
+
+int main(int argc, char const *argv[])
+{
+ fcntl(STDIN_FILENO, F_SETFL, O_NONBLOCK);
+
+ // SM shell doesn't implement an event loop and therefor doesn't support
+ // emscripten_set_main_loop. However, its stdin reads are sync so it
+ // should exit out after calling main_loop once.
+ main_loop(NULL);
+
+#if EMSCRIPTEN
+ emscripten_set_main_loop(main_loop, 60, 0);
+#else
+ while (1) main_loop(NULL); sleep(1);
+#endif
+ return 0;
+} \ No newline at end of file
diff --git a/tests/msvc10/glbook_10_MultiTexture.vcxproj b/tests/msvc10/glbook_10_MultiTexture.vcxproj
index b59fda0a..a831f351 100644
--- a/tests/msvc10/glbook_10_MultiTexture.vcxproj
+++ b/tests/msvc10/glbook_10_MultiTexture.vcxproj
@@ -82,12 +82,12 @@
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Emscripten'">
<ClCompile>
- <AdditionalIncludeDirectories>$(SolutionDir)../glbook/Common</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>../glbook/Common</AdditionalIncludeDirectories>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Emscripten'">
<ClCompile>
- <AdditionalIncludeDirectories>$(SolutionDir)../glbook/Common</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>../glbook/Common</AdditionalIncludeDirectories>
</ClCompile>
</ItemDefinitionGroup>
<ItemGroup>
diff --git a/tests/msvc10/glbook_11_Multisample.vcxproj b/tests/msvc10/glbook_11_Multisample.vcxproj
index ae5170be..47d5fb4a 100644
--- a/tests/msvc10/glbook_11_Multisample.vcxproj
+++ b/tests/msvc10/glbook_11_Multisample.vcxproj
@@ -82,12 +82,12 @@
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Emscripten'">
<ClCompile>
- <AdditionalIncludeDirectories>$(SolutionDir)../glbook/Common</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>../glbook/Common</AdditionalIncludeDirectories>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Emscripten'">
<ClCompile>
- <AdditionalIncludeDirectories>$(SolutionDir)../glbook/Common</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>../glbook/Common</AdditionalIncludeDirectories>
</ClCompile>
</ItemDefinitionGroup>
<ItemGroup>
diff --git a/tests/msvc10/glbook_11_Stencil_Test.vcxproj b/tests/msvc10/glbook_11_Stencil_Test.vcxproj
index d72d7fa6..3a541128 100644
--- a/tests/msvc10/glbook_11_Stencil_Test.vcxproj
+++ b/tests/msvc10/glbook_11_Stencil_Test.vcxproj
@@ -82,12 +82,12 @@
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Emscripten'">
<ClCompile>
- <AdditionalIncludeDirectories>$(SolutionDir)../glbook/Common</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>../glbook/Common</AdditionalIncludeDirectories>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Emscripten'">
<ClCompile>
- <AdditionalIncludeDirectories>$(SolutionDir)../glbook/Common</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>../glbook/Common</AdditionalIncludeDirectories>
</ClCompile>
</ItemDefinitionGroup>
<ItemGroup>
diff --git a/tests/msvc10/glbook_13_ParticleSystem.vcxproj b/tests/msvc10/glbook_13_ParticleSystem.vcxproj
index 458d76fa..c18e17ff 100644
--- a/tests/msvc10/glbook_13_ParticleSystem.vcxproj
+++ b/tests/msvc10/glbook_13_ParticleSystem.vcxproj
@@ -82,12 +82,12 @@
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Emscripten'">
<ClCompile>
- <AdditionalIncludeDirectories>$(SolutionDir)../glbook/Common</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>../glbook/Common</AdditionalIncludeDirectories>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Emscripten'">
<ClCompile>
- <AdditionalIncludeDirectories>$(SolutionDir)../glbook/Common</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>../glbook/Common</AdditionalIncludeDirectories>
</ClCompile>
</ItemDefinitionGroup>
<ItemGroup>
diff --git a/tests/msvc10/glbook_15_Hello_Triangle_KD.vcxproj b/tests/msvc10/glbook_15_Hello_Triangle_KD.vcxproj
index 654164b3..489628f5 100644
--- a/tests/msvc10/glbook_15_Hello_Triangle_KD.vcxproj
+++ b/tests/msvc10/glbook_15_Hello_Triangle_KD.vcxproj
@@ -82,12 +82,12 @@
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Emscripten'">
<ClCompile>
- <AdditionalIncludeDirectories>$(SolutionDir)../glbook/Common</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>../glbook/Common</AdditionalIncludeDirectories>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Emscripten'">
<ClCompile>
- <AdditionalIncludeDirectories>$(SolutionDir)../glbook/Common</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>../glbook/Common</AdditionalIncludeDirectories>
</ClCompile>
</ItemDefinitionGroup>
<ItemGroup>
diff --git a/tests/msvc10/glbook_2_Hello_Triangle.vcxproj b/tests/msvc10/glbook_2_Hello_Triangle.vcxproj
index b992294d..34de0780 100644
--- a/tests/msvc10/glbook_2_Hello_Triangle.vcxproj
+++ b/tests/msvc10/glbook_2_Hello_Triangle.vcxproj
@@ -92,12 +92,12 @@
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Emscripten'">
<ClCompile>
- <AdditionalIncludeDirectories>$(SolutionDir)../glbook/Common</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>../glbook/Common</AdditionalIncludeDirectories>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Emscripten'">
<ClCompile>
- <AdditionalIncludeDirectories>$(SolutionDir)../glbook/Common</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>../glbook/Common</AdditionalIncludeDirectories>
</ClCompile>
</ItemDefinitionGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
diff --git a/tests/msvc10/glbook_8_Simple_VertexShader.vcxproj b/tests/msvc10/glbook_8_Simple_VertexShader.vcxproj
index fb01c1da..19442df9 100644
--- a/tests/msvc10/glbook_8_Simple_VertexShader.vcxproj
+++ b/tests/msvc10/glbook_8_Simple_VertexShader.vcxproj
@@ -82,12 +82,12 @@
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Emscripten'">
<ClCompile>
- <AdditionalIncludeDirectories>$(SolutionDir)../glbook/Common</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>../glbook/Common</AdditionalIncludeDirectories>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Emscripten'">
<ClCompile>
- <AdditionalIncludeDirectories>$(SolutionDir)../glbook/Common</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>../glbook/Common</AdditionalIncludeDirectories>
</ClCompile>
</ItemDefinitionGroup>
<ItemGroup>
diff --git a/tests/msvc10/glbook_9_MipMap2D.vcxproj b/tests/msvc10/glbook_9_MipMap2D.vcxproj
index 1d747d1d..af0e072b 100644
--- a/tests/msvc10/glbook_9_MipMap2D.vcxproj
+++ b/tests/msvc10/glbook_9_MipMap2D.vcxproj
@@ -82,12 +82,12 @@
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Emscripten'">
<ClCompile>
- <AdditionalIncludeDirectories>$(SolutionDir)../glbook/Common</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>../glbook/Common</AdditionalIncludeDirectories>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Emscripten'">
<ClCompile>
- <AdditionalIncludeDirectories>$(SolutionDir)../glbook/Common</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>../glbook/Common</AdditionalIncludeDirectories>
</ClCompile>
</ItemDefinitionGroup>
<ItemGroup>
diff --git a/tests/msvc10/glbook_9_Simple_Texture2D.vcxproj b/tests/msvc10/glbook_9_Simple_Texture2D.vcxproj
index d9232e5d..09ff3e1e 100644
--- a/tests/msvc10/glbook_9_Simple_Texture2D.vcxproj
+++ b/tests/msvc10/glbook_9_Simple_Texture2D.vcxproj
@@ -82,12 +82,12 @@
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Emscripten'">
<ClCompile>
- <AdditionalIncludeDirectories>$(SolutionDir)../glbook/Common</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>../glbook/Common</AdditionalIncludeDirectories>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Emscripten'">
<ClCompile>
- <AdditionalIncludeDirectories>$(SolutionDir)../glbook/Common</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>../glbook/Common</AdditionalIncludeDirectories>
</ClCompile>
</ItemDefinitionGroup>
<ItemGroup>
diff --git a/tests/msvc10/glbook_9_Simple_TextureCubemap.vcxproj b/tests/msvc10/glbook_9_Simple_TextureCubemap.vcxproj
index c5c6ee1b..d89da1c7 100644
--- a/tests/msvc10/glbook_9_Simple_TextureCubemap.vcxproj
+++ b/tests/msvc10/glbook_9_Simple_TextureCubemap.vcxproj
@@ -82,12 +82,12 @@
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Emscripten'">
<ClCompile>
- <AdditionalIncludeDirectories>$(SolutionDir)../glbook/Common</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>../glbook/Common</AdditionalIncludeDirectories>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Emscripten'">
<ClCompile>
- <AdditionalIncludeDirectories>$(SolutionDir)../glbook/Common</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>../glbook/Common</AdditionalIncludeDirectories>
</ClCompile>
</ItemDefinitionGroup>
<ItemGroup>
diff --git a/tests/msvc10/glbook_9_TextureWrap.vcxproj b/tests/msvc10/glbook_9_TextureWrap.vcxproj
index 6cfbb0c8..54f51e26 100644
--- a/tests/msvc10/glbook_9_TextureWrap.vcxproj
+++ b/tests/msvc10/glbook_9_TextureWrap.vcxproj
@@ -82,12 +82,12 @@
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Emscripten'">
<ClCompile>
- <AdditionalIncludeDirectories>$(SolutionDir)../glbook/Common</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>../glbook/Common</AdditionalIncludeDirectories>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Emscripten'">
<ClCompile>
- <AdditionalIncludeDirectories>$(SolutionDir)../glbook/Common</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>../glbook/Common</AdditionalIncludeDirectories>
</ClCompile>
</ItemDefinitionGroup>
<ItemGroup>
diff --git a/tests/termios/test_tcgetattr.c b/tests/termios/test_tcgetattr.c
new file mode 100644
index 00000000..2b3780ee
--- /dev/null
+++ b/tests/termios/test_tcgetattr.c
@@ -0,0 +1,61 @@
+#include <assert.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <termios.h>
+#include <unistd.h>
+
+static void create_file(const char *path, const char *buffer, int mode) {
+ int fd = open(path, O_WRONLY | O_CREAT | O_EXCL, mode);
+ assert(fd >= 0);
+
+ int err = write(fd, buffer, sizeof(char) * strlen(buffer));
+ assert(err == (sizeof(char) * strlen(buffer)));
+
+ close(fd);
+}
+
+void setup() {
+ create_file("test.txt", "abcdefg", 0666);
+}
+
+void cleanup() {
+ unlink("test.txt");
+}
+
+void test() {
+ struct termios tc;
+ int ret;
+ int fd;
+
+ fd = open("test.txt", O_RDONLY);
+
+ ret = tcgetattr(fd, &tc);
+ assert(ret == -1);
+ assert(errno = ENOTTY);
+
+ ret = tcgetattr(STDIN_FILENO, &tc);
+ assert(!ret);
+
+ ret = tcsetattr(fd, 0, &tc);
+ assert(ret == -1);
+ assert(errno = ENOTTY);
+
+ ret = tcsetattr(STDIN_FILENO, 0, &tc);
+ assert(!ret);
+
+ close(fd);
+
+ puts("success");
+}
+
+int main() {
+ atexit(cleanup);
+ signal(SIGABRT, cleanup);
+ setup();
+ test();
+ return EXIT_SUCCESS;
+}
diff --git a/tests/test_browser.py b/tests/test_browser.py
index 1c9cbfad..a0c4dceb 100644
--- a/tests/test_browser.py
+++ b/tests/test_browser.py
@@ -794,6 +794,20 @@ If manually bisecting:
def test_glut_touchevents(self):
self.btest('glut_touchevents.c', '1')
+ def test_emscripten_get_now(self):
+ self.btest('emscripten_get_now.cpp', '1')
+
+ def test_file_db(self):
+ secret = str(time.time())
+ open('moar.txt', 'w').write(secret)
+ self.btest('file_db.cpp', '1', args=['--preload-file', 'moar.txt', '-DFIRST'])
+ shutil.copyfile('test.html', 'first.html')
+ self.btest('file_db.cpp', secret)
+ shutil.copyfile('test.html', 'second.html')
+ open('moar.txt', 'w').write('aliantha')
+ self.btest('file_db.cpp', secret, args=['--preload-file', 'moar.txt']) # even with a file there, we load over it
+ shutil.move('test.html', 'third.html')
+
def test_sdl_pumpevents(self):
# key events should be detected using SDL_PumpEvents
open(os.path.join(self.get_dir(), 'pre.js'), 'w').write('''
diff --git a/tests/test_core.py b/tests/test_core.py
index 7c5b651f..6d15da1e 100644
--- a/tests/test_core.py
+++ b/tests/test_core.py
@@ -3734,6 +3734,13 @@ def process(filename):
Settings.EXPORT_ALL = 1
self.do_run(src, 'hello world!\n*100*\n*fivesix*\nmann\n', post_build=check)
+ def test_emscripten_get_now(self):
+ if Settings.USE_TYPED_ARRAYS != 2: return self.skip('requires ta2')
+
+ if self.run_name == 'o2':
+ self.emcc_args += ['--closure', '1'] # Use closure here for some additional coverage
+ self.do_run(open(path_from_root('tests', 'emscripten_get_now.cpp')).read(), 'Timer resolution is good.')
+
def test_inlinejs(self):
if Settings.ASM_JS: return self.skip('asm does not support random code, TODO: something that works in asm')
src = r'''
@@ -4670,6 +4677,10 @@ The current type of b is: 9
expected = open(path_from_root('tests', 'pthread', 'specific.c.txt'), 'r').read()
self.do_run(src, expected, force_c=True)
+ def test_tcgetattr(self):
+ src = open(path_from_root('tests', 'termios', 'test_tcgetattr.c'), 'r').read()
+ self.do_run(src, 'success', force_c=True)
+
def test_time(self):
# XXX Not sure what the right output is here. Looks like the test started failing with daylight savings changes. Modified it to pass again.
src = open(path_from_root('tests', 'time', 'src.c'), 'r').read()
@@ -6977,8 +6988,11 @@ def process(filename):
src = open(filename, 'r').read().replace(
'// {{PRE_RUN_ADDITIONS}}',
\'\'\'
+ var dummy_device = FS.makedev(64, 0);
+ FS.registerDevice(dummy_device, {});
+
FS.createDataFile('/', 'file', 'abcdef', true, true);
- FS.createDevice('/', 'device', function() {}, function() {});
+ FS.mkdev('/device', 0666, dummy_device);
\'\'\'
)
open(filename, 'w').write(src)
@@ -8594,7 +8608,7 @@ def process(filename):
do_test()
# some test coverage for EMCC_DEBUG 1 and 2
- if self.emcc_args and '-O2' in self.emcc_args and 'EMCC_DEBUG' not in os.environ:
+ if self.emcc_args and '-O2' in self.emcc_args and 'EMCC_DEBUG' not in os.environ and '-g' in self.emcc_args:
shutil.copyfile('src.c.o.js', 'release.js')
try:
os.environ['EMCC_DEBUG'] = '1'
@@ -8609,7 +8623,8 @@ def process(filename):
del os.environ['EMCC_DEBUG']
for debug in [1,2]:
def clean(text):
- return text.replace('\n\n', '\n').replace('\n\n', '\n').replace('\n\n', '\n').replace('\n\n', '\n').replace('\n\n', '\n').replace('{\n}', '{}')
+ text = text.replace('\n\n', '\n').replace('\n\n', '\n').replace('\n\n', '\n').replace('\n\n', '\n').replace('\n\n', '\n').replace('{\n}', '{}')
+ return '\n'.join(sorted(text.split('\n')))
self.assertIdentical(clean(open('release.js').read()), clean(open('debug%d.js' % debug).read())) # EMCC_DEBUG=1 mode must not generate different code!
print >> sys.stderr, 'debug check %d passed too' % debug
@@ -9681,7 +9696,8 @@ def process(filename):
# optimizer can deal with both types.
out_file = re.sub(' *//@.*$', '', out_file, flags=re.MULTILINE)
def clean(code):
- return code.replace('{\n}', '{}')
+ code = code.replace('{\n}', '{}')
+ return '\n'.join(sorted(code.split('\n')))
self.assertIdentical(clean(no_maps_file), clean(out_file))
map_filename = out_filename + '.map'