mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-05-24 06:12:27 +00:00
Fix bugs and make improvements to redbean
- Abort if .init.lua fails - Refactor redbean to use new append library - Use first certificate if SNI routing fails - Use function/data sections when building Lua - Don't use self-signed auto-generated cert for client - Add -D staging dirs to redbean lua module default path
This commit is contained in:
parent
55a15c204e
commit
aeeb851422
26 changed files with 703 additions and 513 deletions
|
@ -22,14 +22,17 @@
|
|||
|
||||
TEST(vappendf, test) {
|
||||
char *b = 0;
|
||||
appendf(&b, "hello ");
|
||||
ASSERT_NE(-1, appendf(&b, "hello "));
|
||||
EXPECT_EQ(6, appendz(b).i);
|
||||
EXPECT_EQ(0, b[appendz(b).i]);
|
||||
EXPECT_EQ(6, strlen(b)); // guarantees nul terminator
|
||||
appendf(&b, " world\n");
|
||||
ASSERT_NE(-1, appendf(&b, " world\n"));
|
||||
EXPECT_EQ(13, appendz(b).i);
|
||||
EXPECT_EQ(0, b[appendz(b).i]);
|
||||
EXPECT_EQ(13, strlen(b));
|
||||
appendd(&b, "\0", 1); // supports binary
|
||||
ASSERT_NE(-1, appendd(&b, "\0", 1)); // supports binary
|
||||
EXPECT_EQ(14, appendz(b).i);
|
||||
EXPECT_EQ(0, b[appendz(b).i]);
|
||||
EXPECT_EQ(13, strlen(b));
|
||||
EXPECT_EQ(0, b[13]);
|
||||
EXPECT_EQ(0, b[14]);
|
||||
|
@ -37,12 +40,17 @@ TEST(vappendf, test) {
|
|||
free(b);
|
||||
}
|
||||
|
||||
TEST(vappends, test) {
|
||||
TEST(appends, test) {
|
||||
char *b = 0;
|
||||
appends(&b, "hello ");
|
||||
ASSERT_NE(-1, appends(&b, ""));
|
||||
EXPECT_NE(0, b);
|
||||
EXPECT_EQ(0, appendz(b).i);
|
||||
EXPECT_EQ(0, b[appendz(b).i]);
|
||||
ASSERT_NE(-1, appends(&b, "hello "));
|
||||
EXPECT_EQ(6, appendz(b).i);
|
||||
EXPECT_EQ(0, b[appendz(b).i]);
|
||||
EXPECT_EQ(6, strlen(b)); // guarantees nul terminator
|
||||
appends(&b, " world\n");
|
||||
ASSERT_NE(-1, appends(&b, " world\n"));
|
||||
EXPECT_EQ(13, appendz(b).i);
|
||||
EXPECT_EQ(13, strlen(b));
|
||||
EXPECT_EQ(0, b[13]);
|
||||
|
@ -50,6 +58,69 @@ TEST(vappends, test) {
|
|||
free(b);
|
||||
}
|
||||
|
||||
TEST(appendd, test) {
|
||||
char *b = 0;
|
||||
ASSERT_NE(-1, appendd(&b, 0, 0));
|
||||
EXPECT_NE(0, b);
|
||||
EXPECT_EQ(0, appendz(b).i);
|
||||
EXPECT_EQ(0, b[appendz(b).i]);
|
||||
ASSERT_NE(-1, appendd(&b, "hello ", 6));
|
||||
EXPECT_EQ(6, appendz(b).i);
|
||||
EXPECT_EQ(0, b[appendz(b).i]);
|
||||
EXPECT_EQ(6, strlen(b)); // guarantees nul terminator
|
||||
ASSERT_NE(-1, appendd(&b, " world\n", 7));
|
||||
EXPECT_EQ(13, appendz(b).i);
|
||||
EXPECT_EQ(13, strlen(b));
|
||||
EXPECT_EQ(0, b[13]);
|
||||
EXPECT_STREQ("hello world\n", b);
|
||||
free(b);
|
||||
}
|
||||
|
||||
TEST(appendw, test) {
|
||||
char *b = 0;
|
||||
ASSERT_NE(-1, appendw(&b, 0));
|
||||
EXPECT_EQ(1, appendz(b).i);
|
||||
EXPECT_EQ(0, b[0]);
|
||||
EXPECT_EQ(0, b[1]);
|
||||
ASSERT_NE(-1, appendw(&b, 'h'));
|
||||
EXPECT_EQ(2, appendz(b).i);
|
||||
EXPECT_EQ(0, b[0]);
|
||||
EXPECT_EQ('h', b[1]);
|
||||
EXPECT_EQ(0, b[2]);
|
||||
ASSERT_NE(-1, appendw(&b, 'e' | 'l' << 8 | 'l' << 16 | 'o' << 24 |
|
||||
(uint64_t)'!' << 32));
|
||||
EXPECT_EQ(7, appendz(b).i);
|
||||
EXPECT_EQ(0, b[0]);
|
||||
EXPECT_EQ('h', b[1]);
|
||||
EXPECT_EQ('e', b[2]);
|
||||
EXPECT_EQ('l', b[3]);
|
||||
EXPECT_EQ('l', b[4]);
|
||||
EXPECT_EQ('o', b[5]);
|
||||
EXPECT_EQ('!', b[6]);
|
||||
EXPECT_EQ(0, b[7]);
|
||||
free(b);
|
||||
}
|
||||
|
||||
TEST(appendr, test) {
|
||||
char *b = 0;
|
||||
ASSERT_NE(-1, appends(&b, "hello"));
|
||||
EXPECT_EQ(5, appendz(b).i);
|
||||
ASSERT_NE(-1, appendr(&b, 1));
|
||||
EXPECT_EQ(0, strcmp(b, "h"));
|
||||
EXPECT_EQ(1, appendz(b).i);
|
||||
ASSERT_NE(-1, appendr(&b, 0));
|
||||
EXPECT_EQ(0, appendz(b).i);
|
||||
EXPECT_EQ(0, strcmp(b, ""));
|
||||
ASSERT_NE(-1, appendr(&b, 5));
|
||||
EXPECT_EQ(0, b[0]);
|
||||
EXPECT_EQ(0, b[1]);
|
||||
EXPECT_EQ(0, b[2]);
|
||||
EXPECT_EQ(0, b[3]);
|
||||
EXPECT_EQ(0, b[4]);
|
||||
EXPECT_EQ(0, b[5]);
|
||||
free(b);
|
||||
}
|
||||
|
||||
BENCH(vappendf, bench) {
|
||||
const char t[] = {0};
|
||||
char *b = 0;
|
||||
|
@ -57,6 +128,8 @@ BENCH(vappendf, bench) {
|
|||
free(b), b = 0;
|
||||
EZBENCH2("appends", donothing, appends(&b, "1"));
|
||||
free(b), b = 0;
|
||||
EZBENCH2("appendw", donothing, appendw(&b, 'B'));
|
||||
free(b), b = 0;
|
||||
EZBENCH2("appendd", donothing, appendd(&b, t, 1));
|
||||
free(b);
|
||||
free(b), b = 0;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue