From a798e0c0a1313a058e16cc246f2cc475096e99ac Mon Sep 17 00:00:00 2001 From: Veloman Yunkan Date: Sun, 29 Nov 2020 20:24:30 +0400 Subject: [PATCH] Made the java wrapper unit test run & pass The kiwixlib java wrapper unit test can be run manually via the src/wrapper/java/org/kiwix/testing/compile_test.sh script. The test ZIM files in src/wrapper/java/org/kiwix/testing were created using the create_test_zimfiles. They must be updated/re-generated and committed in git whenever their source data or the create_test_zimfiles script changes. Note: small.zim.embedded is not used at this point, it was created for testing the enhancement coming in a few commits. --- .../java/org/kiwix/testing/catalog.xml | 19 ++++++++++++ .../java/org/kiwix/testing/compile_test.sh | 27 ++++++++++++----- .../org/kiwix/testing/create_test_zimfiles | 28 ++++++++++++++++++ src/wrapper/java/org/kiwix/testing/small.zim | Bin 0 -> 46144 bytes .../java/org/kiwix/testing/small.zim.embedded | Bin 0 -> 46158 bytes .../testing/small_zimfile_data/favicon.png | Bin 0 -> 3201 bytes .../testing/small_zimfile_data/main.html | 11 +++++++ src/wrapper/java/org/kiwix/testing/test.java | 14 ++++----- 8 files changed, 84 insertions(+), 15 deletions(-) create mode 100644 src/wrapper/java/org/kiwix/testing/catalog.xml create mode 100755 src/wrapper/java/org/kiwix/testing/create_test_zimfiles create mode 100644 src/wrapper/java/org/kiwix/testing/small.zim create mode 100644 src/wrapper/java/org/kiwix/testing/small.zim.embedded create mode 100644 src/wrapper/java/org/kiwix/testing/small_zimfile_data/favicon.png create mode 100644 src/wrapper/java/org/kiwix/testing/small_zimfile_data/main.html diff --git a/src/wrapper/java/org/kiwix/testing/catalog.xml b/src/wrapper/java/org/kiwix/testing/catalog.xml new file mode 100644 index 000000000..3e2f6ac20 --- /dev/null +++ b/src/wrapper/java/org/kiwix/testing/catalog.xml @@ -0,0 +1,19 @@ + + 00000000-0000-0000-0000-000000000000 + + Test ZIM file + urn:uuid:86c91e51-55bf-8882-464e-072aca37a3e8 + /meta?name=favicon&content=small + 2020-11-27:00::00:Z + en + This is a ZIM file used in libzim unit-tests + unit;test + + + Kiwix + + + + + + diff --git a/src/wrapper/java/org/kiwix/testing/compile_test.sh b/src/wrapper/java/org/kiwix/testing/compile_test.sh index a98569935..41899afaa 100755 --- a/src/wrapper/java/org/kiwix/testing/compile_test.sh +++ b/src/wrapper/java/org/kiwix/testing/compile_test.sh @@ -1,26 +1,37 @@ #!/usr/bin/bash -# This script compile the unit test to test the java wrapper. +# This script compiles and runs the unit test to test the java wrapper. # This is not integrated in meson because ... this is not so easy. +die() +{ + echo >&2 "!!! ERROR: $*" + exit 1 +} + KIWIX_LIB_JAR=$1 if [ -z $KIWIX_LIB_JAR ] then - echo "You must give the path to the kiwixlib.jar as first argument" - exit 1 + die "You must give the path to the kiwixlib.jar as first argument" fi KIWIX_LIB_DIR=$2 if [ -z $KIWIX_LIB_DIR ] then - echo "You must give the path to directory containing libkiwix.so as second argument" - exit 1 + die "You must give the path to directory containing libkiwix.so as second argument" fi -TEST_SOURCE_DIR=$(dirname $(readlink -f $0)) +KIWIX_LIB_JAR=$(readlink -f "$KIWIX_LIB_JAR") +KIWIX_LIB_DIR=$(readlink -f "$KIWIX_LIB_DIR") +TEST_SOURCE_DIR=$(dirname "$(readlink -f $0)") -javac -g -d . -s . -cp $TEST_SOURCE_DIR/junit-4.13.jar:$KIWIX_LIB_JAR $TEST_SOURCE_DIR/test.java +cd "$TEST_SOURCE_DIR" -java -Djava.library.path=$KIWIX_LIB_DIR -cp $TEST_SOURCE_DIR/junit-4.13.jar:$TEST_SOURCE_DIR/hamcrest-core-1.3.jar:$KIWIX_LIB_JAR:. org.junit.runner.JUnitCore test +javac -g -d . -s . -cp "junit-4.13.jar:$KIWIX_LIB_JAR" test.java \ + || die "Compilation failed" +java -Djava.library.path="$KIWIX_LIB_DIR" \ + -cp "junit-4.13.jar:hamcrest-core-1.3.jar:$KIWIX_LIB_JAR:." \ + org.junit.runner.JUnitCore test \ + || die "Unit test failed" diff --git a/src/wrapper/java/org/kiwix/testing/create_test_zimfiles b/src/wrapper/java/org/kiwix/testing/create_test_zimfiles new file mode 100755 index 000000000..4610b7da2 --- /dev/null +++ b/src/wrapper/java/org/kiwix/testing/create_test_zimfiles @@ -0,0 +1,28 @@ +#!/usr/bin/env bash + +die() +{ + echo >&2 "!!! ERROR: $*" + exit 1 +} + +cd "$(dirname "$0")" +rm -f small.zim +zimwriterfs --withoutFTIndex \ + -w main.html \ + -f favicon.png \ + -l en \ + -t "Test ZIM file" \ + -d "N/A" \ + -c "N/A" \ + -p "N/A" \ + small_zimfile_data \ + small.zim \ +&& echo 'small.zim was successfully created' \ +|| die 'Failed to create small.zim' + +printf "BEGINZIM" > small.zim.embedded \ +&& cat small.zim >> small.zim.embedded \ +&& printf "ENDZIM" >> small.zim.embedded \ +&& echo 'small.zim.embedded was successfully created' \ +|| die 'Failed to create small.zim.embedded' diff --git a/src/wrapper/java/org/kiwix/testing/small.zim b/src/wrapper/java/org/kiwix/testing/small.zim new file mode 100644 index 0000000000000000000000000000000000000000..bce4fc57aafff42fa0e571603454fed51ec3f801 GIT binary patch literal 46144 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 D$!J79 literal 0 HcmV?d00001 diff --git a/src/wrapper/java/org/kiwix/testing/small_zimfile_data/favicon.png b/src/wrapper/java/org/kiwix/testing/small_zimfile_data/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..809454352935ccdc7bcbd91aacc89e0e48eb82a6 GIT binary patch literal 3201 zcmV-{41V*8P)7KMqsB60Twx465zySuv+Lq8HBx{kz?b&IXViMt|khnc~-|D3L_E;7rou*$1C zH9a%kug|^jTzStT7ms{EZJ;=it4DsIGcXJIpjfeDXLUN=b6lqYOL8;u%7AyieEHs1 zuU`Faixw@ChYlSojT$u){GJ5#&W)rkf%d@n<;#~h_U_#~Y5e%{GGxdQnK5IA)URKk zUVi~N=0@^0fKwGKR*dW0w{QBeVZ)?Wty)s5R4ExfdbHH7TQ>p!Uj=M)8}U5Af+9tV z7<%>Um8KG>Or&7Jf(rRMb?PMI`!_(r>`Z9q;->q%NtOXx0#ktLz%ZZ-& zxN+me+1XhvEiFl2L914+#KXgb*RTI5+u+%Jja*&FJG!}VwR3fw`FD_Z0rmjz^5@TQ zgnr+4?b1z6x*wL16A_ol`B>nsMmp*;^2m)Ck zF~!L4-MiC(NYj@&cz9HGbo02@zH=9YpP!!$A2CuKT-^;-o&ou?Lp~50 zM89s`Iz=WcR;*Bn&zdzWQ{vEjmc%Kg&Ye3;&z?QS$Hzx1RH$H7178_^1`Js5=CcM=-ed*UVmrj>e@-oK&OD#z%M}0KO(;ZrCq;m+cw#>X_G>H_UzdT@u^d% zYQ(8=Q{n>#3{d1^O1xvoj*9l%v}vOlyd3hdwzf7FC{SR&-~YTf4;?uowRMM%=`&`` z6gSAn-qkJAzH#FUD*4*LBOnhj4%m|w`Kibh2FisnB|c%o1XJSFxkemv(}*{2+*r}O zySuwIZQ4{xpJ*MVS+iz}5epYCkcErqr-g=pnh+ZsD}4tIN`u$a?Oa>~aBtoW`F}0o ztzJ6=k><#EMMGs^1_=rZ(uhxh~f*d}am&Rjyn)AuKG68Ac<{l8?-iC2@M4(m-L$l05sL1qIWI`w;J;FjrqjZo?nm~mFETE$A4X)Y&mW)>1>DkSkvojTF; zTA?zB1`X=Vx(#a}nO`J2I$A=*K9jZUSBtxc8#5bM=7kvp3IoT1Sl|lq8t7zt-wEh4 z4bsV!I8tIp;#y|u(4m90ZQGWf%~CRb`}GlI8hHrGT)uo+0)zf1^B2sO(xsK>l=;h* zE623jz>E==KvlpE$ZPt4c|h_0f&~k*mCH%IUAuNlN~~0=l3DU3xM0ydO)^K19+3^+ z>!ff0J~T|b&&|zE&_8iAvk1uXSOo1SvOU1g$b`80T+Wn;M$Wus8mf{(mZ4Us z8P7GVl#2fK*I&!YlPBfJBS$16Vz)GH)=Ybr4ysnI8q;Hry3M6%ZQ{-0iIIri;Svz!Czq~V z620Ca@$q_j7Z)#Y-^O9iw{rW=U70;+u4Vv>Tf>G8<8a+0Ck7lQX?B<@ae9IQ3JCD`}N0#n|9?&S7n1EjxDYl-S2l*;-scxD=BkkRvY_V!Y?td+7&^!4>s0^Y&FL8?}*ir>pBa^fmdUi%My zj@65idk>@K&iyF4dFO#dUc8FJ)i_fFAVWHX*WYE=fZFIf<7fbg(|UTrbZJq2`^(*X z59m#J^{G6Jek2nnPT+|Gy2*tk|6b$911e@QD=RD6d*Gma_rnpy(zkN*^f|e5?WSD2 zbyxfXg5f0F_uf;YLnqtcpaZ=2cJ11=N`RUcB%UI8u3aY&qGI927`cmhxOn-R zY~2wed-v_8!7M;5d}tFIaFw)Y(Ty?%GcBg$`vc%8a2@+;L)Wg|3>8<@+N?keZ_fvVDt$Y~3th zefzx(9X^7^D~{C3^^TnMNXZ+B4@w(Q6g*Ck}0wP!|{pd$azz|?L5DuKfuHo4{OUuMl2*8)vxW{3_D^^y?-`Q9{o8{y* z#^P@t@b-2%FOB(guDw+-s+qnbBQF(5O=I60+*xc(eh=pP!8$uVTGG&SIr)4n-#=CDAr%5y`-QxU}g zo)sZMB*TdJPxSWe*^>vmC7+-`-=qL+Hln6XmRq*A36VP8{j(Mpbu9k5(F4_2PlA*U z33DaT38c~p8bcW&KGI5;F0E(60r}VXe8>}VZ5Esk1Y^f!c>46I?Ay0Tf)T7|iWc4X zn}tQ8e~^435P8PKF?PXh)0sjk83gWaq|^(DjZ}Qz2kA|0`_0aTvzeq@w{FUT1N+l` z{k`-b4IP9B{_!!ANANs%g0>a!V@u1Hni+1I)~jV_Kt3OM`K(X!3-CGP<>lGH;$Il> zau_>cdYz|z&^QB_ndUM6u9V{mMa0tLUmPGBOO2B_WRnh!Q{P(g%Jl=f8m?cjZ+BSeIkM8ORnU$qWQZqzqsMSgXBBd9@d+2vi2D0992~BQkvF zf0cNz`b;^XjXGCZptSmq5~^d0WMY&q3j;K77f>H8!ih2=Z^M_H5GTRvKn^`*#st + + + Test ZIM file + + + + + Test ZIM file + + diff --git a/src/wrapper/java/org/kiwix/testing/test.java b/src/wrapper/java/org/kiwix/testing/test.java index 671b0b46e..502d8c85d 100644 --- a/src/wrapper/java/org/kiwix/testing/test.java +++ b/src/wrapper/java/org/kiwix/testing/test.java @@ -31,15 +31,15 @@ throws IOException Library lib = new Library(); Manager manager = new Manager(lib); String content = getCatalogContent(); - manager.readOpds(content, "https://library.kiwix.org"); - assertEquals(lib.getBookCount(true, true), 10); + manager.readOpds(content, "http://localhost"); + assertEquals(lib.getBookCount(true, true), 1); String[] bookIds = lib.getBooksIds(); - assertEquals(bookIds.length, 10); + assertEquals(bookIds.length, 1); Book book = lib.getBookById(bookIds[0]); - assertEquals(book.getTitle(), "Wikisource"); - assertEquals(book.getTags(), "wikisource;_category:wikisource;_pictures:no;_videos:no;_details:yes;_ftindex:yes"); - assertEquals(book.getFaviconUrl(), "https://library.kiwix.org/meta?name=favicon&content=wikisource_fr_all_nopic_2020-01"); - assertEquals(book.getUrl(), "http://download.kiwix.org/zim/wikisource/wikisource_fr_all_nopic_2020-01.zim.meta4"); + assertEquals(book.getTitle(), "Test ZIM file"); + assertEquals(book.getTags(), "unit;test"); + assertEquals(book.getFaviconUrl(), "http://localhost/meta?name=favicon&content=small"); + assertEquals(book.getUrl(), "http://localhost/small.zim"); } static