Skip to content

Commit

Permalink
add new test cases
Browse files Browse the repository at this point in the history
  • Loading branch information
TUVIMEN committed Jan 12, 2025
1 parent e9a9a7b commit abb20f2
Show file tree
Hide file tree
Showing 10 changed files with 568 additions and 0 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,5 @@
/reliq
/reliq.h
test/advanced/boards-forums/*/
test/advanced/threads/*/
test/advanced/users/*/
2 changes: 2 additions & 0 deletions src/exprs_exec.c
Original file line number Diff line number Diff line change
Expand Up @@ -527,6 +527,8 @@ reliq_exec_file(reliq *rq, FILE *output, const reliq_expr *expr)
reliq_error *
reliq_exec_str(reliq *rq, char **str, size_t *strl, const reliq_expr *expr)
{
*str = NULL;
*strl = 0;
if (!expr)
return NULL;
SINK *output = sink_open(str,strl);
Expand Down
1 change: 1 addition & 0 deletions test/advanced.test
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@
% RELIQ_EDITING
@advanced/boards-forums.test
@advanced/users.test
@advanced/threads.test
Binary file modified test/advanced/advanced-cases.tar.xz.gpg
Binary file not shown.
1 change: 1 addition & 0 deletions test/advanced/boards-forums.test
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,4 @@
@boards-forums/xenforo2.test
@boards-forums/xmb.test
@boards-forums/stackexchange.test
@boards-forums/vbulletin.test
237 changes: 237 additions & 0 deletions test/advanced/boards-forums/vbulletin.reliq
Original file line number Diff line number Diff line change
@@ -0,0 +1,237 @@
.categories {
* #b>collapseobj_forumbit_ ||
* ( #E>forum[0-9]+ )( .subforum-list ) ||
* #E>f[0-9]+; * parent@ ||
li .forumRow
}; {
.header * self@ #b>collapseobj_forumbit_; {
[0] * spre@; * -#b>collapseobj_forumbit_ self@ ||
* parent@; [0] * spre@; * -#b>collapseobj_forumbit_ self@
}; {
.name {
[0] a -C@"[0] img"; [0] * c@[0] m@>[1:] | "%Di" ||
[0] a; * parent@ | "%Dt"
} / trim,
.link [0] a -C@"[0] img" | "%(href)v",
.description [0] * .smallfont c@[0] m@>[1:] | "%Di",
},
.header2 * self@ #E>forum[0-9]+; {
* .category-header self@ ||
[1] * ancestor@; * #E>cat[0-9]+ self@
}; {
.name {
a .category c@[0] | "%Di" ||
* .catTitle; [0] a; * c@[0] m@>[1:] | "%Di" ||
[0] * .forumhead; span .forumtitle; [0] a; * c@[0] m@>[1:] | "%Di"
} / trim,
.link {
a .category c@[0] | "%(href)v" ||
* .catTitle; [0] a | "%(href)v" ||
[0] * .forumhead; * .forumtitle; [0] a | "%(href)v"
},
.description [0] * .forumhead; * .subforumdescription; [0] * c@[0] m@>[1:] | "%Di"
},

.forums {
* self@ #b>collapseobj_forumbit_; * -thead child@ ||
* self@
}; {
.status {
[0] img ( #b>forum_statusicon_ )( .forumicon ) | "%(src)v" ||
[0] span .icon | "%(title)v"
},
{
* .forum-title ||
[0] v>span .forumtitle ||
[0] a c@[:1]
}; {
.title [0] * c@[0] m@>[1:] | "%Di" trim,
.link [0] a | "%(href)v"
},
.description {
[0] * ( .forum-desc )( .forumdescription )( .description ) | "%i" ||
div .smallfont; {
[0] * c@[0] m@b>[1:] self@ | "%i" ||
[0] * child@; v>strong * self@; * parent@ | "%i"
}
},
.viewing.u {
span .viewing | "%i" ||
[0] span c@[0] m@tb>"(" m@te>")" | "%i"
},

.childboards {
* .subforum-info ||
[0] * .subforums; * child@ ||
strong c@[0]; div .smallfont parent@
}; a; {
.link * self@ | "%(href)v",
.name [0] * c@[0] m@>[1:] | "%Di" / trim,
.icon [0] * spre@; {
img self@ | "%(src)v" ||
span self@ | "%(title)v"
},
[0] * ssub@; span c@[0] m@tb>"(" m@te>")"; {
.topics.u * self@ | "%i",
.posts.u * self@ | "%i" / sed "/\//!d; s#.*/##"
}
} | ,

.topics.u {
[0] * ( .topics-count )( .threadcount ) c@[0] | "%i" ||
* ( .forumstats )( .forumstats_2 ); [0] * c@[0] child@ | "%i" ||
[0] * c@[0] m@tEf>"(([0-9]+,)+)?[0-9]+" | "%i" ||
[0] * c@[0] m@tEf>"(([0-9]+,)+)?[0-9]+ */ *(([0-9]+,)+)?[0-9]+" | "%i"
} / tr ",.",
.posts.u {
[0] * ( .posts-count )( .postcount ) c@[0] | "%i" ||
* ( .forumstats )( .forumstats_2 ); [1] * c@[0] child@ | "%i" ||
[1] * c@[0] m@tEf>"(([0-9]+,)+)?[0-9]+" | "%i" ||
[0] * c@[0] m@tEf>"(([0-9]+,)+)?[0-9]+ */ *(([0-9]+,)+)?[0-9]+" | "%i" / sed "s/.*\///"
} / tr ",.",

.lastpost {
[0] * ( .i>lastpost )( .i>forumlastpost ) ||
strong c@[0] m@>[1:]; a parent@; div [0] l@[0:5] .smallfont ancestor@; [-] * self@
}; {
{
[0] * ( .lastpost-title )( .lastposttitle )( .title ) ||
[0] strong c@[0]; * parent@
}; {
.title [0] * c@[0] m@>[1:] | "%Di" / trim,
.link [0] a | "%(href)v",
},
.icon {
* .lastposttitle; [0] img | "%(src)v" ||
[0] img .inlineimg | "%(src)v"
},
.date {
[0] * ( .lastpost-date )( .lastpostdate )( .time ) | "%DT" trim,
[-] div; * self@ c@[:5] | "%DT" trim
},
.user {
* ( .lastpost-by )( .lastpostby ); [0] a ||
* .title ||
[-1] div; * c@[:1] self@
}; [0] * c@[0] m@>[1:] | "%Di" trim,
.user_link {
* ( .lastpost-by )( .lastpostby ) ||
[-1] div; * c@[1] self@
}; [0] a; * self@ | "%(href)v",
.avatar a .avatar; [0] img | "%(src)v"
}
} |
} | ,

.threads {
li #b>thread_ ||
* .topic-item ||
* #b>threadbits_forum_; * child@ ||
* #threadslist; * child@
}; {
.avatar a .avatar; [0] img | "%(src)v",
.icons.a {
[0] * .threadtitle; img child@ | "%(src)v\n" ||
img .js-post-icon | "%(src)v\n" ||
{
img #b>thread_statusicon_ | "%(src)v\n",
div c@[1]; img -id | "%(src)v\n",
* #b>td_threadtitle_; img | "%(src)v\n"
}
},
.prefix {
[0] * ( .topic-prefix )( .js-topic-prefix )( .prefix )( #b>thread_prefix_ ) | "%DT" trim ||
span c@[0] m@et>":" | "%Di"
},
{
[0] * ( .topic-title )( #b>thread_title_ ) ||
[0] * #b>thread_title_
}; [0] a; {
.link * self@ | "%(href)v",
.title * c@[0] m@>[1:] | "%Di" / trim
},
{
div .topic-info ||
div .threadmeta ||
* #b>td_threadtitle_; [-] div .smallfont
}; {
.user {
div .smallfont c@[:4] self@ | "%DT" trim ||
span style=b>cursor:; [0] * c@[0] m@>[1:] | "%Di" trim ||
[0] a; [0] * c@[0] m@>[1:] | "%Di" trim ||
},
.user_link {
[0] span onclick | "%(onclick)v" / sed "s/,.*//;s/.*'([^']+)'/\1/" "E" ||
[0] a | "%(href)v"
},
.date {
[0] span ( .date )( .time ) | "%Di" trim ||
span style=b>cursor:; [0] * ssub@; span self@; [0] * c@[0] m@>[1:] | "%Di" trim ||
div .author; [0] span c@[0] child@ m@E>" [0-9]{4}" | "%Di" trim ||
[0] a; * parent@ | "%Dt" / sed "s/.*,//; s/ //g" trim
} / sed "s/^on //"
},
.detailicons.a {
* .threaddetailicons; img | "%(src)v\n" ||
* .cell-icons; span | "%(title)v\n"
},
.posts.u {
{
div .posts-count ||
* .threadstats; {
[0] li -.hidden; [0] * c@[0] m@>[1:] ||
* self@
}
}; * self@ | "%i" ||
* c@[4:] title=aE>"[0-9]+.*,.*[0-9]+" | "%(title)v" / sed "s/, .*//"
} / tr ",.",
.views.u {
div .views-count | "%i" ||
* .threadstats; {
[1] li -.hidden; [0] * c@[0] m@>[1:] | "%i" ||
* self@ | "%i" / sed "s/.*>//"
} ||
* c@[4:] title=aE>"[0-9]+.*,.*[0-9]+" | "%(title)v" / sed "s/.*, //"
} / tr ",.",
.reactions.u div .votes-count | "%i" tr ",.",
.rating.u {
[0] * .E>rating[0-9] | "%(class)v" ||
[0] img src=eE>"/rating_?[0-9]+.gif" | "%(src)v" / sed "s#.*/##"
},
.lastpage.u {
* #b>pagination_threadbit_; [-] a | "%i" ||
[0] * m@tb>"(" m@te>")" c@[1:]; [-] a; * self@ | "%(href)v" / sed "s#/$##; s#.*/##; s/.*;page=//" ||
* #b>td_threadtitle_; [-] a m@Eft>"[0-9]+" | "%i"
},

.lastpost [0] * ( .cell-lastpost )( .threadlastpost ); {
.avatar [0] a .avatar; [0] img src | "%(src)v",
{
* .lastpost-by; [0] a ||
[0] a .username
}; {
.user_link * self@ | "%(href)v",
.user * c@[0] m@>[1:] | "%Di"
},
.date {
span .post-date | "%Di" ||
* .time; * parent@ | "%Dt" trim ||
[0] * c@[0] m@E>"[0-9]{4}" | "%Di" / sed "s/ //g" trim
},
.link [0] a ( .go-to-last-post )( .lastpostdate ) | "%(href)v"
},
.lastpost_link [0] a .lastpostdate | "%(href)v",
.lastpost2 * c@[3:] title=aE>"[0-9]+.*,.*[0-9]+"; div .smallfont child@; {
.avatar nothing | "",
.user_link [0] a c@[0] | "%(href)v",
.user {
[0] a c@[0] | "%Di" trim ||
* self@ | "%Di" / tr "\n" sed "s/.*<br ?\/?>//" "E" trim
},
.date * self@ | "%i" / tr "\n" sed "
s/<br ?\/?>.*//
s/<[^>]*>//g
" "E" trim,
.link img; [-] a parent@ | "%(href)v"
}
} |
104 changes: 104 additions & 0 deletions test/advanced/boards-forums/vbulletin.test
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
^ -f vbulletin.reliq

< vbulletin/b01
c892a534fb84bbe4304bbb1e54aef10c,
< vbulletin/b02
dff211e03ad8ce3c32280b45a767f65f,
< vbulletin/b03
238a35177bc7cb7151db6b1b8263b898,
< vbulletin/b04
5b3be4940fbf599bf0a405caa9ab4448,
< vbulletin/b05
d3573d67544f6aa9f6e14816361f5c46,
< vbulletin/b06
75ff683c7ae8db03d4756b7f3a7f33ff,
< vbulletin/b07
6071b5484ce278594f4d11d7beb12c22,
< vbulletin/b08
d31c0162e3d6a789aa7253a870782587,
< vbulletin/b09
49d3b10f47fd4bac43805e037d1761cb,
< vbulletin/b10
7542e3351964102b88a07c2af540682b,
< vbulletin/b11
6def32011c7b42bf97c90b416974ff1d,
< vbulletin/b12
ab34f8b1b11e1744b729f89eb33c83d4,
< vbulletin/b13
d585f022322e72e3eef401149056dbab,
< vbulletin/b14
3c783b3338ce1dace6f9ad16645e3fa6,
< vbulletin/b15
fca348ebebad2b64d08f69194089f0d3,
< vbulletin/b16
52a48f4ef32dca045e668ede41669b0d,
< vbulletin/b17
4b6ffbf3b6317015076d19009a326816,
< vbulletin/b18
50bc4cc4a022bf983831753be8cb23fb,
< vbulletin/b19
4b4d27640937573293c51ebb6df43557,
< vbulletin/b20
b3f8e11407e5731eb316b96673f95131,
< vbulletin/b21
a0c6c28441349d41bf6bdaeb06e5edf6,
< vbulletin/b22
e33f54300fefb2c9c974f27b4b19ab62,
< vbulletin/b23
81d097a31790733a236784abaae46645,
< vbulletin/b24
9a12c82b18be71fdfccf40fc98f0a9b4,
< vbulletin/f01
fb6a4163789466f69847e56a7eb780e5,
< vbulletin/f02
44358206402aad69c81003b71c5279b3,
< vbulletin/f03
a298c07bbc600fa2b05f5d26c6207b93,
< vbulletin/f04
68b465b39718c3ea1d023bd9ed744750,
< vbulletin/f05
7f985060c0318019dcdbed44bbd5f777,
< vbulletin/f06
becf645b69e7f5ef0b579a8f784bb582,
< vbulletin/f07
1c2af59f9600e8b5de56c5b5997452be,
< vbulletin/f08
f7a69c35f130c63e50e46f6e7ac05455,
< vbulletin/f09
93df2503669307313eed015860011d5c,
< vbulletin/f10
858273c406d09b0a53e9721f7fb4818b,
< vbulletin/f11
f7054e7bfcedd9efc8490abd5c2e77ab,
< vbulletin/f12
539602062065c716572d72e7bc075fd0,
< vbulletin/f13
550aa7f15330d77f6def344d090334da,
< vbulletin/f14
2a6dfe44154f61f7825e0592c6fa2d65,
< vbulletin/f15
c291098fd8f4cda104695dfe0fceed11,
< vbulletin/f16
0fc9ca2879ae0219c6ec400c422dd0cb,
< vbulletin/f17
94233dea9dced43e8068ae7141004aa8,
< vbulletin/f18
d6a82eab53f516b164af2e25b04af90e,
< vbulletin/f19
f72a69d34cf31cf94c8b475fb7e48137,
< vbulletin/f20
288c856e100d96c8b31c346c165ae823,
< vbulletin/f21
2bdce50ce043e42f838d53cfb33c91e6,
< vbulletin/f22
c9db9dc7a0e697cd77bb9f8209a73cee,
< vbulletin/f23
9f78ac89144b4c9bc89a712241b6da99,
< vbulletin/f24
8acf505ba6652ded78f8487df741db49,
< vbulletin/f25
411054c7edebca33bd544ec949f0f8e0,
< vbulletin/f26
3e8d339efc037acb0997bc4dbb1da1a2,
< vbulletin/f27
edd1b05f71611a30bc9a29d767f3d03c,
1 change: 1 addition & 0 deletions test/advanced/threads.test
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
@threads/vbulletin.test
Loading

0 comments on commit abb20f2

Please sign in to comment.