From 1011c0903d4bc2e29a19f9c27c6496cd8f4eb79d Mon Sep 17 00:00:00 2001 From: Felix Lohmeier Date: Tue, 4 Aug 2020 13:50:56 +0200 Subject: [PATCH] tests for file formats --- tests.sh | 2 +- tests/apply-utf8.sh | 4 +- tests/apply.sh | 0 tests/create-csv-utf8.sh | 40 +++++ tests/create-csv.sh | 0 tests/create-json-utf8.sh | 53 +++++++ tests/create-json.sh | 53 +++++++ tests/create-ods-sheets-utf8.sh | 44 ++++++ tests/create-ods.sh | 48 ++++++ tests/create-tsv-utf8.sh | 40 +++++ tests/{export-filename.sh => create-tsv.sh} | 4 + tests/create-txt-fixed-utf8.sh | 81 ++++++++++ tests/create-txt-fixed.sh | 81 ++++++++++ tests/create-txt.sh | 39 +++++ tests/create-xls-sheets-utf8.sh | 44 ++++++ tests/create-xls.sh | 48 ++++++ tests/create-xlsx-sheets-utf8.sh | 44 ++++++ tests/create-xlsx.sh | 48 ++++++ tests/create-xml-utf8.sh | 95 ++++++++++++ tests/create-xml.sh | 95 ++++++++++++ tests/data/example.ods | Bin 0 -> 9427 bytes tests/data/example.xls | Bin 0 -> 6656 bytes tests/data/example.xlsx | Bin 0 -> 6046 bytes tests/delete-utf8.sh | 4 +- tests/delete.sh | 0 tests/download.sh | 0 tests/export-csv-utf8.sh | 44 ++++++ ...{export-filename-utf8.sh => export-csv.sh} | 8 +- tests/export-html-utf8.sh | 72 +++++++++ tests/export-html.sh | 50 ++++++ tests/export-ods-utf8.sh | 43 ++++++ tests/export-ods.sh | 47 ++++++ tests/export-tsv-utf8.sh | 44 ++++++ tests/export-tsv.sh | 40 +++++ tests/export-utf8.sh | 0 tests/export-xls-utf8.sh | 43 ++++++ tests/{create-utf8.sh => export-xls.sh} | 17 ++- tests/export-xlsx-utf8.sh | 45 ++++++ tests/export-xlsx.sh | 43 ++++++ tests/export.sh | 4 + tests/format-create.sh | 41 +++++ tests/format-export.sh | 40 +++++ tests/help.sh | 144 +----------------- tests/info-utf8.sh | 0 tests/info.sh | 0 tests/list.sh | 0 tests/template | 5 +- tests/templating-filter-utf8.sh | 0 tests/templating-filter.sh | 0 tests/templating-split-id-utf8.sh | 0 tests/templating-split-id.sh | 0 tests/templating-split-utf8.sh | 0 tests/templating-split.sh | 0 tests/templating-utf8.sh | 0 tests/templating.sh | 0 tests/usage.sh | 5 +- 56 files changed, 1442 insertions(+), 160 deletions(-) mode change 100755 => 100644 tests/apply-utf8.sh mode change 100755 => 100644 tests/apply.sh create mode 100644 tests/create-csv-utf8.sh mode change 100755 => 100644 tests/create-csv.sh create mode 100644 tests/create-json-utf8.sh create mode 100644 tests/create-json.sh create mode 100644 tests/create-ods-sheets-utf8.sh create mode 100644 tests/create-ods.sh create mode 100644 tests/create-tsv-utf8.sh rename tests/{export-filename.sh => create-tsv.sh} (97%) mode change 100755 => 100644 create mode 100644 tests/create-txt-fixed-utf8.sh create mode 100644 tests/create-txt-fixed.sh create mode 100644 tests/create-txt.sh create mode 100644 tests/create-xls-sheets-utf8.sh create mode 100644 tests/create-xls.sh create mode 100644 tests/create-xlsx-sheets-utf8.sh create mode 100644 tests/create-xlsx.sh create mode 100644 tests/create-xml-utf8.sh create mode 100644 tests/create-xml.sh create mode 100644 tests/data/example.ods create mode 100644 tests/data/example.xls create mode 100644 tests/data/example.xlsx mode change 100755 => 100644 tests/delete-utf8.sh mode change 100755 => 100644 tests/delete.sh mode change 100755 => 100644 tests/download.sh create mode 100644 tests/export-csv-utf8.sh rename tests/{export-filename-utf8.sh => export-csv.sh} (82%) mode change 100755 => 100644 create mode 100644 tests/export-html-utf8.sh create mode 100644 tests/export-html.sh create mode 100644 tests/export-ods-utf8.sh create mode 100644 tests/export-ods.sh create mode 100644 tests/export-tsv-utf8.sh create mode 100644 tests/export-tsv.sh mode change 100755 => 100644 tests/export-utf8.sh create mode 100644 tests/export-xls-utf8.sh rename tests/{create-utf8.sh => export-xls.sh} (78%) mode change 100755 => 100644 create mode 100644 tests/export-xlsx-utf8.sh create mode 100644 tests/export-xlsx.sh mode change 100755 => 100644 tests/export.sh create mode 100644 tests/format-create.sh create mode 100644 tests/format-export.sh mode change 100755 => 100644 tests/help.sh mode change 100755 => 100644 tests/info-utf8.sh mode change 100755 => 100644 tests/info.sh mode change 100755 => 100644 tests/list.sh mode change 100755 => 100644 tests/templating-filter-utf8.sh mode change 100755 => 100644 tests/templating-filter.sh mode change 100755 => 100644 tests/templating-split-id-utf8.sh mode change 100755 => 100644 tests/templating-split-id.sh mode change 100755 => 100644 tests/templating-split-utf8.sh mode change 100755 => 100644 tests/templating-split.sh mode change 100755 => 100644 tests/templating-utf8.sh mode change 100755 => 100644 tests/templating.sh mode change 100755 => 100644 tests/usage.sh diff --git a/tests.sh b/tests.sh index 34b6491..231c33c 100755 --- a/tests.sh +++ b/tests.sh @@ -89,7 +89,7 @@ results=() for t in tests/*.sh; do tests+=("${t}") echo "========================= ${t} =========================" &>> tests.log - ${t} "${cmd}" "${version}" &>> tests.log + bash ${t} "${cmd}" "${version}" &>> tests.log results+=(${?}) done echo diff --git a/tests/apply-utf8.sh b/tests/apply-utf8.sh old mode 100755 new mode 100644 index 750dff9..056ad1d --- a/tests/apply-utf8.sh +++ b/tests/apply-utf8.sh @@ -31,7 +31,7 @@ cat << "DATA" > "tmp/${t}/${t}.transform" "newColumnName": "apply", "columnInsertIndex": 2, "baseColumnName": "b", - "expression": "grel:value.replace('2','٩(͡๏̯͡๏)۶')", + "expression": "grel:value.replace('2','⛲')", "onError": "set-to-blank" } ] @@ -41,7 +41,7 @@ DATA cat << "DATA" > "tmp/${t}/${t}.assert" a b apply c -1 2 ٩(͡๏̯͡๏)۶ 3 +1 2 ⛲ 3 0 0 0 0 $ \ \ ' DATA diff --git a/tests/apply.sh b/tests/apply.sh old mode 100755 new mode 100644 diff --git a/tests/create-csv-utf8.sh b/tests/create-csv-utf8.sh new file mode 100644 index 0000000..f159b04 --- /dev/null +++ b/tests/create-csv-utf8.sh @@ -0,0 +1,40 @@ +#!/bin/bash + +# =============================== ENVIRONMENT ================================ # + +if [[ ${1} ]]; then + cmd="${1}" +else + echo 1>&2 "execute tests.sh to run all tests"; exit 1 +fi + +t="$(basename "${BASH_SOURCE[0]}" .sh)" +cd "${BASH_SOURCE%/*}/" || exit 1 +mkdir -p "tmp/${t}" + +# =================================== DATA =================================== # + +cat << "DATA" > "tmp/${t}/${t}.csv" +⌨,code,meaning +⛲,1F347,FOUNTAIN +⛳,1F349,FLAG IN HOLE +⛵,1F352,SAILBOAT +DATA + +# ================================= ASSERTION ================================ # + +cat << "DATA" > "tmp/${t}/${t}.assert" +⌨ code meaning +⛲ 1F347 FOUNTAIN +⛳ 1F349 FLAG IN HOLE +⛵ 1F352 SAILBOAT +DATA + +# ================================== ACTION ================================== # + +${cmd} --create "tmp/${t}/${t}.csv" --projectName "${t} biểu tượng cảm xúc ⛲" +${cmd} --export "${t} biểu tượng cảm xúc ⛲" --output "tmp/${t}/${t}.output" + +# =================================== TEST =================================== # + +diff -u "tmp/${t}/${t}.assert" "tmp/${t}/${t}.output" diff --git a/tests/create-csv.sh b/tests/create-csv.sh old mode 100755 new mode 100644 diff --git a/tests/create-json-utf8.sh b/tests/create-json-utf8.sh new file mode 100644 index 0000000..d7572d5 --- /dev/null +++ b/tests/create-json-utf8.sh @@ -0,0 +1,53 @@ +#!/bin/bash + +# =============================== ENVIRONMENT ================================ # + +if [[ ${1} ]]; then + cmd="${1}" +else + echo 1>&2 "execute tests.sh to run all tests"; exit 1 +fi + +t="$(basename "${BASH_SOURCE[0]}" .sh)" +cd "${BASH_SOURCE%/*}/" || exit 1 +mkdir -p "tmp/${t}" + +# =================================== DATA =================================== # + +cat << "DATA" > "tmp/${t}/${t}.json" +[ + { + "⌨": "⛲", + "code": "1F347", + "meaning": "FOUNTAIN" + }, + { + "⌨": "⛳", + "code": "1F349", + "meaning": "FLAG IN HOLE" + }, + { + "⌨": "⛵", + "code": "1F352", + "meaning": "SAILBOAT" + } +] +DATA + +# ================================= ASSERTION ================================ # + +cat << "DATA" > "tmp/${t}/${t}.assert" +_ - ⌨ _ - code _ - meaning +⛲ 1F347 FOUNTAIN +⛳ 1F349 FLAG IN HOLE +⛵ 1F352 SAILBOAT +DATA + +# ================================== ACTION ================================== # + +${cmd} --create "tmp/${t}/${t}.json" +${cmd} --export "${t}" --output "tmp/${t}/${t}.output" + +# =================================== TEST =================================== # + +diff -u "tmp/${t}/${t}.assert" "tmp/${t}/${t}.output" diff --git a/tests/create-json.sh b/tests/create-json.sh new file mode 100644 index 0000000..bd2e884 --- /dev/null +++ b/tests/create-json.sh @@ -0,0 +1,53 @@ +#!/bin/bash + +# =============================== ENVIRONMENT ================================ # + +if [[ ${1} ]]; then + cmd="${1}" +else + echo 1>&2 "execute tests.sh to run all tests"; exit 1 +fi + +t="$(basename "${BASH_SOURCE[0]}" .sh)" +cd "${BASH_SOURCE%/*}/" || exit 1 +mkdir -p "tmp/${t}" + +# =================================== DATA =================================== # + +cat << "DATA" > "tmp/${t}/${t}.json" +[ + { + "a": 1, + "b": 2, + "c": 3 + }, + { + "a": 0, + "b": 0, + "c": 0 + }, + { + "a": "$", + "b": "\\", + "c": "\"" + } +] +DATA + +# ================================= ASSERTION ================================ # + +cat << "DATA" > "tmp/${t}/${t}.assert" +_ - a _ - b _ - c +1 2 3 +0 0 0 +$ \ """" +DATA + +# ================================== ACTION ================================== # + +${cmd} --create "tmp/${t}/${t}.json" +${cmd} --export "${t}" --output "tmp/${t}/${t}.output" + +# =================================== TEST =================================== # + +diff -u "tmp/${t}/${t}.assert" "tmp/${t}/${t}.output" diff --git a/tests/create-ods-sheets-utf8.sh b/tests/create-ods-sheets-utf8.sh new file mode 100644 index 0000000..9a29c93 --- /dev/null +++ b/tests/create-ods-sheets-utf8.sh @@ -0,0 +1,44 @@ +#!/bin/bash + +# =============================== ENVIRONMENT ================================ # + +if [[ ${1} ]]; then + cmd="${1}" +else + echo 1>&2 "execute tests.sh to run all tests"; exit 1 +fi +if [[ ${2} ]]; then + version="${2}" +fi + +t="$(basename "${BASH_SOURCE[0]}" .sh)" +cd "${BASH_SOURCE%/*}/" || exit 1 +mkdir -p "tmp/${t}" + +# =================================== DATA =================================== # + +cp "data/example.ods" "tmp/${t}/${t}.ods" + +# ================================= ASSERTION ================================ # + +if [[ "${version}" = "2.7" ]]; then + cat << "DATA" > "tmp/${t}/${t}.assert" +⌨ code meaning Column Column 5 Column 6 Column 7 Column 8 +⛲ 1F347 FOUNTAIN +⛳ 1F349 FLAG IN HOLE +⛵ 1F352 SAILBOAT +DATA +else + #TODO + echo "https://github.com/opencultureconsulting/openrefine-client/issues/4" + exit 200 +fi + +# ================================== ACTION ================================== # + +${cmd} --create "tmp/${t}/${t}.ods" --sheets 1 +${cmd} --export "${t}" --output "tmp/${t}/${t}.output" + +# =================================== TEST =================================== # + +diff -u "tmp/${t}/${t}.assert" "tmp/${t}/${t}.output" diff --git a/tests/create-ods.sh b/tests/create-ods.sh new file mode 100644 index 0000000..7cf5b4b --- /dev/null +++ b/tests/create-ods.sh @@ -0,0 +1,48 @@ +#!/bin/bash + +# =============================== ENVIRONMENT ================================ # + +if [[ ${1} ]]; then + cmd="${1}" +else + echo 1>&2 "execute tests.sh to run all tests"; exit 1 +fi +if [[ ${2} ]]; then + version="${2}" +fi + +t="$(basename "${BASH_SOURCE[0]}" .sh)" +cd "${BASH_SOURCE%/*}/" || exit 1 +mkdir -p "tmp/${t}" + +# =================================== DATA =================================== # + +cp "data/example.ods" "tmp/${t}/${t}.ods" +#a b c +#1 2 3 +#0 0 0 +#$ \ ' + +# ================================= ASSERTION ================================ # + +if [[ "${version}" = "2.7" ]]; then + cat << "DATA" > "tmp/${t}/${t}.assert" +a b c Column Column 5 Column 6 Column 7 Column 8 +1.0 2.0 3.0 +0.0 0.0 0.0 +$ \ ' +DATA +else + #TODO + echo "https://github.com/opencultureconsulting/openrefine-client/issues/4" + exit 200 +fi + +# ================================== ACTION ================================== # + +${cmd} --create "tmp/${t}/${t}.ods" +${cmd} --export "${t}" --output "tmp/${t}/${t}.output" + +# =================================== TEST =================================== # + +diff -u "tmp/${t}/${t}.assert" "tmp/${t}/${t}.output" diff --git a/tests/create-tsv-utf8.sh b/tests/create-tsv-utf8.sh new file mode 100644 index 0000000..7bba400 --- /dev/null +++ b/tests/create-tsv-utf8.sh @@ -0,0 +1,40 @@ +#!/bin/bash + +# =============================== ENVIRONMENT ================================ # + +if [[ ${1} ]]; then + cmd="${1}" +else + echo 1>&2 "execute tests.sh to run all tests"; exit 1 +fi + +t="$(basename "${BASH_SOURCE[0]}" .sh)" +cd "${BASH_SOURCE%/*}/" || exit 1 +mkdir -p "tmp/${t}" + +# =================================== DATA =================================== # + +cat << "DATA" > "tmp/${t}/${t}.tsv" +⌨ code meaning +⛲ 1F347 FOUNTAIN +⛳ 1F349 FLAG IN HOLE +⛵ 1F352 SAILBOAT +DATA + +# ================================= ASSERTION ================================ # + +cat << "DATA" > "tmp/${t}/${t}.assert" +⌨,code,meaning +⛲,1F347,FOUNTAIN +⛳,1F349,FLAG IN HOLE +⛵,1F352,SAILBOAT +DATA + +# ================================== ACTION ================================== # + +${cmd} --create "tmp/${t}/${t}.tsv" +${cmd} --export "${t}" --output "tmp/${t}/${t}.csv" + +# =================================== TEST =================================== # + +diff -u "tmp/${t}/${t}.assert" "tmp/${t}/${t}.csv" diff --git a/tests/export-filename.sh b/tests/create-tsv.sh old mode 100755 new mode 100644 similarity index 97% rename from tests/export-filename.sh rename to tests/create-tsv.sh index 7176adc..b6b7989 --- a/tests/export-filename.sh +++ b/tests/create-tsv.sh @@ -17,6 +17,8 @@ mkdir -p "tmp/${t}" cat << "DATA" > "tmp/${t}/${t}.tsv" a b c 1 2 3 +0 0 0 +$ \ ' DATA # ================================= ASSERTION ================================ # @@ -24,6 +26,8 @@ DATA cat << "DATA" > "tmp/${t}/${t}.assert" a,b,c 1,2,3 +0,0,0 +$,\,' DATA # ================================== ACTION ================================== # diff --git a/tests/create-txt-fixed-utf8.sh b/tests/create-txt-fixed-utf8.sh new file mode 100644 index 0000000..b33b3cf --- /dev/null +++ b/tests/create-txt-fixed-utf8.sh @@ -0,0 +1,81 @@ +#!/bin/bash + +# =============================== ENVIRONMENT ================================ # + +if [[ ${1} ]]; then + cmd="${1}" +else + echo 1>&2 "execute tests.sh to run all tests"; exit 1 +fi + +t="$(basename "${BASH_SOURCE[0]}" .sh)" +cd "${BASH_SOURCE%/*}/" || exit 1 +mkdir -p "tmp/${t}" + +# =================================== DATA =================================== # + +cat << "DATA" > "tmp/${t}/${t}.txt" +⛲ 1F347 FOUNTAIN +⛳ 1F349 FLAG IN HOLE +⛵ 1F352 SAILBOAT +DATA + +cat << "DATA" > "tmp/${t}/${t}.transform" +[ + { + "op": "core/text-transform", + "engineConfig": { + "facets": [], + "mode": "row-based" + }, + "columnName": "Column 1", + "expression": "grel:value.trim()", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10 + }, + { + "op": "core/text-transform", + "engineConfig": { + "facets": [], + "mode": "row-based" + }, + "columnName": "Column 2", + "expression": "grel:value.trim()", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10 + }, + { + "op": "core/text-transform", + "engineConfig": { + "facets": [], + "mode": "row-based" + }, + "columnName": "Column 3", + "expression": "grel:value.trim()", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10 + } +] +DATA + +# ================================= ASSERTION ================================ # + +cat << "DATA" > "tmp/${t}/${t}.assert" +Column 1 Column 2 Column 3 +⛲ 1F347 FOUNTAIN +⛳ 1F349 FLAG IN HOLE +⛵ 1F352 SAILBOAT +DATA + +# ================================== ACTION ================================== # + +${cmd} --create "tmp/${t}/${t}.txt" --columnWidths "6" --columnWidths "6" --columnWidths "60" +${cmd} --apply "tmp/${t}/${t}.transform" "${t}" +${cmd} --export "${t}" --output "tmp/${t}/${t}.output" + +# =================================== TEST =================================== # + +diff -u "tmp/${t}/${t}.assert" "tmp/${t}/${t}.output" diff --git a/tests/create-txt-fixed.sh b/tests/create-txt-fixed.sh new file mode 100644 index 0000000..cb61e41 --- /dev/null +++ b/tests/create-txt-fixed.sh @@ -0,0 +1,81 @@ +#!/bin/bash + +# =============================== ENVIRONMENT ================================ # + +if [[ ${1} ]]; then + cmd="${1}" +else + echo 1>&2 "execute tests.sh to run all tests"; exit 1 +fi + +t="$(basename "${BASH_SOURCE[0]}" .sh)" +cd "${BASH_SOURCE%/*}/" || exit 1 +mkdir -p "tmp/${t}" + +# =================================== DATA =================================== # + +cat << "DATA" > "tmp/${t}/${t}.txt" +1 2 3 +mon tue wed +$2 $300 $1 +DATA + +cat << "DATA" > "tmp/${t}/${t}.transform" +[ + { + "op": "core/text-transform", + "engineConfig": { + "facets": [], + "mode": "row-based" + }, + "columnName": "Column 1", + "expression": "grel:value.trim()", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10 + }, + { + "op": "core/text-transform", + "engineConfig": { + "facets": [], + "mode": "row-based" + }, + "columnName": "Column 2", + "expression": "grel:value.trim()", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10 + }, + { + "op": "core/text-transform", + "engineConfig": { + "facets": [], + "mode": "row-based" + }, + "columnName": "Column 3", + "expression": "grel:value.trim()", + "onError": "keep-original", + "repeat": false, + "repeatCount": 10 + } +] +DATA + +# ================================= ASSERTION ================================ # + +cat << "DATA" > "tmp/${t}/${t}.assert" +Column 1 Column 2 Column 3 +1 2 3 +mon tue wed +$2 $300 $1 +DATA + +# ================================== ACTION ================================== # + +${cmd} --create "tmp/${t}/${t}.txt" --columnWidths "6" --columnWidths "6" --columnWidths "6" +${cmd} --apply "tmp/${t}/${t}.transform" "${t}" +${cmd} --export "${t}" --output "tmp/${t}/${t}.output" + +# =================================== TEST =================================== # + +diff -u "tmp/${t}/${t}.assert" "tmp/${t}/${t}.output" diff --git a/tests/create-txt.sh b/tests/create-txt.sh new file mode 100644 index 0000000..939bcd6 --- /dev/null +++ b/tests/create-txt.sh @@ -0,0 +1,39 @@ +#!/bin/bash + +# =============================== ENVIRONMENT ================================ # + +if [[ ${1} ]]; then + cmd="${1}" +else + echo 1>&2 "execute tests.sh to run all tests"; exit 1 +fi + +t="$(basename "${BASH_SOURCE[0]}" .sh)" +cd "${BASH_SOURCE%/*}/" || exit 1 +mkdir -p "tmp/${t}" + +# =================================== DATA =================================== # + +cat << "DATA" > "tmp/${t}/${t}.txt" +1 2 3 +mon tue wed +$2 $300 $1 +DATA + +# ================================= ASSERTION ================================ # + +cat << "DATA" > "tmp/${t}/${t}.assert" +Column 1 +1 2 3 +mon tue wed +$2 $300 $1 +DATA + +# ================================== ACTION ================================== # + +${cmd} --create "tmp/${t}/${t}.txt" +${cmd} --export "${t}" --output "tmp/${t}/${t}.output" + +# =================================== TEST =================================== # + +diff -u "tmp/${t}/${t}.assert" "tmp/${t}/${t}.output" diff --git a/tests/create-xls-sheets-utf8.sh b/tests/create-xls-sheets-utf8.sh new file mode 100644 index 0000000..e929f4f --- /dev/null +++ b/tests/create-xls-sheets-utf8.sh @@ -0,0 +1,44 @@ +#!/bin/bash + +# =============================== ENVIRONMENT ================================ # + +if [[ ${1} ]]; then + cmd="${1}" +else + echo 1>&2 "execute tests.sh to run all tests"; exit 1 +fi +if [[ ${2} ]]; then + version="${2}" +fi + +t="$(basename "${BASH_SOURCE[0]}" .sh)" +cd "${BASH_SOURCE%/*}/" || exit 1 +mkdir -p "tmp/${t}" + +# =================================== DATA =================================== # + +cp "data/example.xls" "tmp/${t}/${t}.xls" + +# ================================= ASSERTION ================================ # + +if [[ "${version}" = "2.7" ]]; then + cat << "DATA" > "tmp/${t}/${t}.assert" +⌨ code meaning +⛲ 1F347 FOUNTAIN +⛳ 1F349 FLAG IN HOLE +⛵ 1F352 SAILBOAT +DATA +else + #TODO + echo "https://github.com/opencultureconsulting/openrefine-client/issues/4" + exit 200 +fi + +# ================================== ACTION ================================== # + +${cmd} --create "tmp/${t}/${t}.xls" --sheets 1 +${cmd} --export "${t}" --output "tmp/${t}/${t}.output" + +# =================================== TEST =================================== # + +diff -u "tmp/${t}/${t}.assert" "tmp/${t}/${t}.output" diff --git a/tests/create-xls.sh b/tests/create-xls.sh new file mode 100644 index 0000000..4c96205 --- /dev/null +++ b/tests/create-xls.sh @@ -0,0 +1,48 @@ +#!/bin/bash + +# =============================== ENVIRONMENT ================================ # + +if [[ ${1} ]]; then + cmd="${1}" +else + echo 1>&2 "execute tests.sh to run all tests"; exit 1 +fi +if [[ ${2} ]]; then + version="${2}" +fi + +t="$(basename "${BASH_SOURCE[0]}" .sh)" +cd "${BASH_SOURCE%/*}/" || exit 1 +mkdir -p "tmp/${t}" + +# =================================== DATA =================================== # + +cp "data/example.xls" "tmp/${t}/${t}.xls" +#a b c +#1 2 3 +#0 0 0 +#$ \ ' + +# ================================= ASSERTION ================================ # + +if [[ "${version}" = "2.7" ]]; then + cat << "DATA" > "tmp/${t}/${t}.assert" +a b c +1.0 2.0 3.0 +0.0 0.0 0.0 +$ \ ' +DATA +else + #TODO + echo "https://github.com/opencultureconsulting/openrefine-client/issues/4" + exit 200 +fi + +# ================================== ACTION ================================== # + +${cmd} --create "tmp/${t}/${t}.xls" +${cmd} --export "${t}" --output "tmp/${t}/${t}.output" + +# =================================== TEST =================================== # + +diff -u "tmp/${t}/${t}.assert" "tmp/${t}/${t}.output" diff --git a/tests/create-xlsx-sheets-utf8.sh b/tests/create-xlsx-sheets-utf8.sh new file mode 100644 index 0000000..e389417 --- /dev/null +++ b/tests/create-xlsx-sheets-utf8.sh @@ -0,0 +1,44 @@ +#!/bin/bash + +# =============================== ENVIRONMENT ================================ # + +if [[ ${1} ]]; then + cmd="${1}" +else + echo 1>&2 "execute tests.sh to run all tests"; exit 1 +fi +if [[ ${2} ]]; then + version="${2}" +fi + +t="$(basename "${BASH_SOURCE[0]}" .sh)" +cd "${BASH_SOURCE%/*}/" || exit 1 +mkdir -p "tmp/${t}" + +# =================================== DATA =================================== # + +cp "data/example.xlsx" "tmp/${t}/${t}.xlsx" + +# ================================= ASSERTION ================================ # + +if [[ "${version}" = "2.7" ]]; then + cat << "DATA" > "tmp/${t}/${t}.assert" +⌨ code meaning +⛲ 1F347 FOUNTAIN +⛳ 1F349 FLAG IN HOLE +⛵ 1F352 SAILBOAT +DATA +else + #TODO + echo "https://github.com/opencultureconsulting/openrefine-client/issues/4" + exit 200 +fi + +# ================================== ACTION ================================== # + +${cmd} --create "tmp/${t}/${t}.xlsx" --sheets 1 +${cmd} --export "${t}" --output "tmp/${t}/${t}.output" + +# =================================== TEST =================================== # + +diff -u "tmp/${t}/${t}.assert" "tmp/${t}/${t}.output" diff --git a/tests/create-xlsx.sh b/tests/create-xlsx.sh new file mode 100644 index 0000000..e7436ba --- /dev/null +++ b/tests/create-xlsx.sh @@ -0,0 +1,48 @@ +#!/bin/bash + +# =============================== ENVIRONMENT ================================ # + +if [[ ${1} ]]; then + cmd="${1}" +else + echo 1>&2 "execute tests.sh to run all tests"; exit 1 +fi +if [[ ${2} ]]; then + version="${2}" +fi + +t="$(basename "${BASH_SOURCE[0]}" .sh)" +cd "${BASH_SOURCE%/*}/" || exit 1 +mkdir -p "tmp/${t}" + +# =================================== DATA =================================== # + +cp "data/example.xlsx" "tmp/${t}/${t}.xlsx" +#a b c +#1 2 3 +#0 0 0 +#$ \ ' + +# ================================= ASSERTION ================================ # + +if [[ "${version}" = "2.7" ]]; then + cat << "DATA" > "tmp/${t}/${t}.assert" +a b c +1.0 2.0 3.0 +0.0 0.0 0.0 +$ \ ' +DATA +else + #TODO + echo "https://github.com/opencultureconsulting/openrefine-client/issues/4" + exit 200 +fi + +# ================================== ACTION ================================== # + +${cmd} --create "tmp/${t}/${t}.xlsx" +${cmd} --export "${t}" --output "tmp/${t}/${t}.output" + +# =================================== TEST =================================== # + +diff -u "tmp/${t}/${t}.assert" "tmp/${t}/${t}.output" diff --git a/tests/create-xml-utf8.sh b/tests/create-xml-utf8.sh new file mode 100644 index 0000000..b026ab3 --- /dev/null +++ b/tests/create-xml-utf8.sh @@ -0,0 +1,95 @@ +#!/bin/bash + +# =============================== ENVIRONMENT ================================ # + +if [[ ${1} ]]; then + cmd="${1}" +else + echo 1>&2 "execute tests.sh to run all tests"; exit 1 +fi + +t="$(basename "${BASH_SOURCE[0]}" .sh)" +cd "${BASH_SOURCE%/*}/" || exit 1 +mkdir -p "tmp/${t}" + +# =================================== DATA =================================== # + +cat << "DATA" > "tmp/${t}/${t}.xml" + + + + + 1F347 + FOUNTAIN + + + + 1F349 + FLAG IN HOLE + + + + 1F352 + SAILBOAT + + +DATA + +cat << "DATA" > "tmp/${t}/${t}.transform" +[ + { + "op": "core/column-removal", + "columnName": "root" + }, + { + "op": "core/column-removal", + "columnName": "root - record" + }, + { + "op": "core/row-removal", + "engineConfig": { + "facets": [ + { + "type": "list", + "name": "Blank Rows", + "expression": "(filter(row.columnNames,cn,isNonBlank(cells[cn].value)).length()==0).toString()", + "columnName": "", + "invert": false, + "omitBlank": false, + "omitError": false, + "selection": [ + { + "v": { + "v": "true", + "l": "true" + } + } + ], + "selectBlank": false, + "selectError": false + } + ], + "mode": "record-based" + } + } +] +DATA + +# ================================= ASSERTION ================================ # + +cat << "DATA" > "tmp/${t}/${t}.assert" +root - record - icon root - record - code root - record - meaning +⛲ 1F347 FOUNTAIN +⛳ 1F349 FLAG IN HOLE +⛵ 1F352 SAILBOAT +DATA + +# ================================== ACTION ================================== # + +${cmd} --create "tmp/${t}/${t}.xml" +${cmd} --apply "tmp/${t}/${t}.transform" "${t}" +${cmd} --export "${t}" --output "tmp/${t}/${t}.output" + +# =================================== TEST =================================== # + +diff -u "tmp/${t}/${t}.assert" "tmp/${t}/${t}.output" diff --git a/tests/create-xml.sh b/tests/create-xml.sh new file mode 100644 index 0000000..bea6b7e --- /dev/null +++ b/tests/create-xml.sh @@ -0,0 +1,95 @@ +#!/bin/bash + +# =============================== ENVIRONMENT ================================ # + +if [[ ${1} ]]; then + cmd="${1}" +else + echo 1>&2 "execute tests.sh to run all tests"; exit 1 +fi + +t="$(basename "${BASH_SOURCE[0]}" .sh)" +cd "${BASH_SOURCE%/*}/" || exit 1 +mkdir -p "tmp/${t}" + +# =================================== DATA =================================== # + +cat << "DATA" > "tmp/${t}/${t}.xml" + + + + 1 + 2 + 3 + + + 0 + 0 + 0 + + + $ + \ + ' + + +DATA + +cat << "DATA" > "tmp/${t}/${t}.transform" +[ + { + "op": "core/column-removal", + "columnName": "root" + }, + { + "op": "core/column-removal", + "columnName": "root - record" + }, + { + "op": "core/row-removal", + "engineConfig": { + "facets": [ + { + "type": "list", + "name": "Blank Rows", + "expression": "(filter(row.columnNames,cn,isNonBlank(cells[cn].value)).length()==0).toString()", + "columnName": "", + "invert": false, + "omitBlank": false, + "omitError": false, + "selection": [ + { + "v": { + "v": "true", + "l": "true" + } + } + ], + "selectBlank": false, + "selectError": false + } + ], + "mode": "record-based" + } + } +] +DATA + +# ================================= ASSERTION ================================ # + +cat << "DATA" > "tmp/${t}/${t}.assert" +root - record - a root - record - b root - record - c +1 2 3 +0 0 0 +$ \ ' +DATA + +# ================================== ACTION ================================== # + +${cmd} --create "tmp/${t}/${t}.xml" +${cmd} --apply "tmp/${t}/${t}.transform" "${t}" +${cmd} --export "${t}" --output "tmp/${t}/${t}.output" + +# =================================== TEST =================================== # + +diff -u "tmp/${t}/${t}.assert" "tmp/${t}/${t}.output" diff --git a/tests/data/example.ods b/tests/data/example.ods new file mode 100644 index 0000000000000000000000000000000000000000..abd5abd136a5663c80bb370930a7434d05e99873 GIT binary patch literal 9427 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 M_~>-hh@Z~>A9vzhp8x;= literal 0 HcmV?d00001 diff --git a/tests/data/example.xls b/tests/data/example.xls new file mode 100644 index 0000000000000000000000000000000000000000..cab9cd96cb4c93657356877442cff3827c6a848f GIT binary patch literal 6656 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 Ih;Q%y2U1mcY5)KL literal 0 HcmV?d00001 diff --git a/tests/delete-utf8.sh b/tests/delete-utf8.sh old mode 100755 new mode 100644 index 2d88f7f..c2c1845 --- a/tests/delete-utf8.sh +++ b/tests/delete-utf8.sh @@ -26,8 +26,8 @@ DATA # ================================== ACTION ================================== # -${cmd} --create "tmp/${t}/${t}.csv" --projectName "${t} biểu tượng cảm xúc 🍉" -${cmd} --delete "${t} biểu tượng cảm xúc 🍉" +${cmd} --create "tmp/${t}/${t}.csv" --projectName "${t} biểu tượng cảm xúc ⛲" +${cmd} --delete "${t} biểu tượng cảm xúc ⛲" ${cmd} --list | grep "${t}" | cut -d ':' -f 2 > "tmp/${t}/${t}.output" # =================================== TEST =================================== # diff --git a/tests/delete.sh b/tests/delete.sh old mode 100755 new mode 100644 diff --git a/tests/download.sh b/tests/download.sh old mode 100755 new mode 100644 diff --git a/tests/export-csv-utf8.sh b/tests/export-csv-utf8.sh new file mode 100644 index 0000000..fb3fa5e --- /dev/null +++ b/tests/export-csv-utf8.sh @@ -0,0 +1,44 @@ +#!/bin/bash + +# =============================== ENVIRONMENT ================================ # + +if [[ ${1} ]]; then + cmd="${1}" +else + echo 1>&2 "execute tests.sh to run all tests"; exit 1 +fi + +t="$(basename "${BASH_SOURCE[0]}" .sh)" +cd "${BASH_SOURCE%/*}/" || exit 1 +mkdir -p "tmp/${t}" + +# =================================== DATA =================================== # + +cat << "DATA" > "tmp/${t}/${t}.tsv" +🔣 code meaning +🍇 1F347 GRAPES +🍉 1F349 WATERMELON +🍒 1F352 CHERRIES +🍓 1F353 STRAWBERRY +🍍 1F34D PINEAPPLE +DATA + +# ================================= ASSERTION ================================ # + +cat << "DATA" > "tmp/${t}/${t}.assert" +🔣,code,meaning +🍇,1F347,GRAPES +🍉,1F349,WATERMELON +🍒,1F352,CHERRIES +🍓,1F353,STRAWBERRY +🍍,1F34D,PINEAPPLE +DATA + +# ================================== ACTION ================================== # + +${cmd} --create "tmp/${t}/${t}.tsv" +${cmd} --export "${t}" --output "tmp/${t}/${t} biểu tượng cảm xúc 🍉.csv" + +# =================================== TEST =================================== # + +diff -u "tmp/${t}/${t}.assert" "tmp/${t}/${t} biểu tượng cảm xúc 🍉.csv" diff --git a/tests/export-filename-utf8.sh b/tests/export-csv.sh old mode 100755 new mode 100644 similarity index 82% rename from tests/export-filename-utf8.sh rename to tests/export-csv.sh index 9c74d1c..b6b7989 --- a/tests/export-filename-utf8.sh +++ b/tests/export-csv.sh @@ -17,6 +17,8 @@ mkdir -p "tmp/${t}" cat << "DATA" > "tmp/${t}/${t}.tsv" a b c 1 2 3 +0 0 0 +$ \ ' DATA # ================================= ASSERTION ================================ # @@ -24,13 +26,15 @@ DATA cat << "DATA" > "tmp/${t}/${t}.assert" a,b,c 1,2,3 +0,0,0 +$,\,' DATA # ================================== ACTION ================================== # ${cmd} --create "tmp/${t}/${t}.tsv" -${cmd} --export "${t}" --output "tmp/${t}/biểu tượng cảm xúc 🍉.csv" +${cmd} --export "${t}" --output "tmp/${t}/${t}.csv" # =================================== TEST =================================== # -diff -u "tmp/${t}/${t}.assert" "tmp/${t}/biểu tượng cảm xúc 🍉.csv" +diff -u "tmp/${t}/${t}.assert" "tmp/${t}/${t}.csv" diff --git a/tests/export-html-utf8.sh b/tests/export-html-utf8.sh new file mode 100644 index 0000000..601a2bc --- /dev/null +++ b/tests/export-html-utf8.sh @@ -0,0 +1,72 @@ +#!/bin/bash + +# =============================== ENVIRONMENT ================================ # + +if [[ ${1} ]]; then + cmd="${1}" +else + echo 1>&2 "execute tests.sh to run all tests"; exit 1 +fi +if [[ ${2} ]]; then + majorversion="${2%%.*}" +fi + +t="$(basename "${BASH_SOURCE[0]}" .sh)" +cd "${BASH_SOURCE%/*}/" || exit 1 +mkdir -p "tmp/${t}" + +# =================================== DATA =================================== # + +cat << "DATA" > "tmp/${t}/${t}.csv" +⌨,code,meaning +⛲,1F347,FOUNTAIN +⛳,1F349,FLAG IN HOLE +⛵,1F352,SAILBOAT +DATA + +# ================================= ASSERTION ================================ # + +if [[ "$majorversion" = 2 ]]; then + cat << "DATA" > "tmp/${t}/${t}.assert" + + +export-html-utf8 + + + + + + + + +
codemeaning
1F347FOUNTAIN
1F349FLAG IN HOLE
1F352SAILBOAT
+ + +DATA +else + cat << "DATA" > "tmp/${t}/${t}.assert" + + +export-html-utf8 + + + + + + + + +
codemeaning
1F347FOUNTAIN
1F349FLAG IN HOLE
1F352SAILBOAT
+ + +DATA +fi + +# ================================== ACTION ================================== # + +${cmd} --create "tmp/${t}/${t}.csv" +${cmd} --export "${t}" --output "tmp/${t}/${t}.html" + +# =================================== TEST =================================== # + +diff -u "tmp/${t}/${t}.assert" "tmp/${t}/${t}.html" diff --git a/tests/export-html.sh b/tests/export-html.sh new file mode 100644 index 0000000..1f9630c --- /dev/null +++ b/tests/export-html.sh @@ -0,0 +1,50 @@ +#!/bin/bash + +# =============================== ENVIRONMENT ================================ # + +if [[ ${1} ]]; then + cmd="${1}" +else + echo 1>&2 "execute tests.sh to run all tests"; exit 1 +fi + +t="$(basename "${BASH_SOURCE[0]}" .sh)" +cd "${BASH_SOURCE%/*}/" || exit 1 +mkdir -p "tmp/${t}" + +# =================================== DATA =================================== # + +cat << "DATA" > "tmp/${t}/${t}.csv" +a,b,c +1,2,3 +0,0,0 +$,\,' +DATA + +# ================================= ASSERTION ================================ # + +cat << "DATA" > "tmp/${t}/${t}.assert" + + +export-html + + + + + + + + +
abc
123
000
$\'
+ + +DATA + +# ================================== ACTION ================================== # + +${cmd} --create "tmp/${t}/${t}.csv" +${cmd} --export "${t}" --output "tmp/${t}/${t}.html" + +# =================================== TEST =================================== # + +diff -u "tmp/${t}/${t}.assert" "tmp/${t}/${t}.html" diff --git a/tests/export-ods-utf8.sh b/tests/export-ods-utf8.sh new file mode 100644 index 0000000..4f720f8 --- /dev/null +++ b/tests/export-ods-utf8.sh @@ -0,0 +1,43 @@ +#!/bin/bash + +# =============================== ENVIRONMENT ================================ # + +if [[ ${1} ]]; then + cmd="${1}" +else + echo 1>&2 "execute tests.sh to run all tests"; exit 1 +fi + +t="$(basename "${BASH_SOURCE[0]}" .sh)" +cd "${BASH_SOURCE%/*}/" || exit 1 +mkdir -p "tmp/${t}" + +# =================================== DATA =================================== # + +cat << "DATA" > "tmp/${t}/${t}.csv" +⌨,code,meaning +⛲,1F347,FOUNTAIN +⛳,1F349,FLAG IN HOLE +⛵,1F352,SAILBOAT +DATA + +# ================================= ASSERTION ================================ # + +cat << "DATA" > "tmp/${t}/${t}.assert" +⌨,code,meaning +⛲,1F347,FOUNTAIN +⛳,1F349,"FLAG IN HOLE" +⛵,1F352,SAILBOAT +DATA + +# ================================== ACTION ================================== # + +${cmd} --create "tmp/${t}/${t}.csv" +${cmd} --export "${t}" --output "tmp/${t}/${t}.ods" +(cd tmp/${t} && + ssconvert -S ${t}.ods ${t}.csv && + mv ${t}.csv.1 ${t}.output) + +# =================================== TEST =================================== # + +diff -u "tmp/${t}/${t}.assert" "tmp/${t}/${t}.output" diff --git a/tests/export-ods.sh b/tests/export-ods.sh new file mode 100644 index 0000000..07ae030 --- /dev/null +++ b/tests/export-ods.sh @@ -0,0 +1,47 @@ +#!/bin/bash + +# =============================== ENVIRONMENT ================================ # + +if [[ ${1} ]]; then + cmd="${1}" +else + echo 1>&2 "execute tests.sh to run all tests"; exit 1 +fi +if [[ -z "$(command -v ssconvert 2> /dev/null)" ]] ; then + echo 1>&2 "ERROR: This test requires ssconvert (gnumeric)" + exit 127 +fi + +t="$(basename "${BASH_SOURCE[0]}" .sh)" +cd "${BASH_SOURCE%/*}/" || exit 1 +mkdir -p "tmp/${t}" + +# =================================== DATA =================================== # + +cat << "DATA" > "tmp/${t}/${t}.csv" +a,b,c +1,2,3 +0,0,0 +$,\,' +DATA + +# ================================= ASSERTION ================================ # + +cat << "DATA" > "tmp/${t}/${t}.assert" +a,b,c +1,2,3 +0,0,0 +$,\,' +DATA + +# ================================== ACTION ================================== # + +${cmd} --create "tmp/${t}/${t}.csv" +${cmd} --export "${t}" --output "tmp/${t}/${t}.ods" +(cd tmp/${t} && + ssconvert -S ${t}.ods ${t}.csv && + mv ${t}.csv.1 ${t}.output) + +# =================================== TEST =================================== # + +diff -u "tmp/${t}/${t}.assert" "tmp/${t}/${t}.output" diff --git a/tests/export-tsv-utf8.sh b/tests/export-tsv-utf8.sh new file mode 100644 index 0000000..80f9ca4 --- /dev/null +++ b/tests/export-tsv-utf8.sh @@ -0,0 +1,44 @@ +#!/bin/bash + +# =============================== ENVIRONMENT ================================ # + +if [[ ${1} ]]; then + cmd="${1}" +else + echo 1>&2 "execute tests.sh to run all tests"; exit 1 +fi + +t="$(basename "${BASH_SOURCE[0]}" .sh)" +cd "${BASH_SOURCE%/*}/" || exit 1 +mkdir -p "tmp/${t}" + +# =================================== DATA =================================== # + +cat << "DATA" > "tmp/${t}/${t}.csv" +🔣,code,meaning +🍇,1F347,GRAPES +🍉,1F349,WATERMELON +🍒,1F352,CHERRIES +🍓,1F353,STRAWBERRY +🍍,1F34D,PINEAPPLE +DATA + +# ================================= ASSERTION ================================ # + +cat << "DATA" > "tmp/${t}/${t}.assert" +🔣 code meaning +🍇 1F347 GRAPES +🍉 1F349 WATERMELON +🍒 1F352 CHERRIES +🍓 1F353 STRAWBERRY +🍍 1F34D PINEAPPLE +DATA + +# ================================== ACTION ================================== # + +${cmd} --create "tmp/${t}/${t}.csv" +${cmd} --export "${t}" --output "tmp/${t}/${t}.tsv" + +# =================================== TEST =================================== # + +diff -u "tmp/${t}/${t}.assert" "tmp/${t}/${t}.tsv" diff --git a/tests/export-tsv.sh b/tests/export-tsv.sh new file mode 100644 index 0000000..8b9d25c --- /dev/null +++ b/tests/export-tsv.sh @@ -0,0 +1,40 @@ +#!/bin/bash + +# =============================== ENVIRONMENT ================================ # + +if [[ ${1} ]]; then + cmd="${1}" +else + echo 1>&2 "execute tests.sh to run all tests"; exit 1 +fi + +t="$(basename "${BASH_SOURCE[0]}" .sh)" +cd "${BASH_SOURCE%/*}/" || exit 1 +mkdir -p "tmp/${t}" + +# =================================== DATA =================================== # + +cat << "DATA" > "tmp/${t}/${t}.csv" +a,b,c +1,2,3 +0,0,0 +$,\,' +DATA + +# ================================= ASSERTION ================================ # + +cat << "DATA" > "tmp/${t}/${t}.assert" +a b c +1 2 3 +0 0 0 +$ \ ' +DATA + +# ================================== ACTION ================================== # + +${cmd} --create "tmp/${t}/${t}.csv" +${cmd} --export "${t}" --output "tmp/${t}/${t}.tsv" + +# =================================== TEST =================================== # + +diff -u "tmp/${t}/${t}.assert" "tmp/${t}/${t}.tsv" diff --git a/tests/export-utf8.sh b/tests/export-utf8.sh old mode 100755 new mode 100644 diff --git a/tests/export-xls-utf8.sh b/tests/export-xls-utf8.sh new file mode 100644 index 0000000..732a32f --- /dev/null +++ b/tests/export-xls-utf8.sh @@ -0,0 +1,43 @@ +#!/bin/bash + +# =============================== ENVIRONMENT ================================ # + +if [[ ${1} ]]; then + cmd="${1}" +else + echo 1>&2 "execute tests.sh to run all tests"; exit 1 +fi + +t="$(basename "${BASH_SOURCE[0]}" .sh)" +cd "${BASH_SOURCE%/*}/" || exit 1 +mkdir -p "tmp/${t}" + +# =================================== DATA =================================== # + +cat << "DATA" > "tmp/${t}/${t}.csv" +⌨,code,meaning +⛲,1F347,FOUNTAIN +⛳,1F349,FLAG IN HOLE +⛵,1F352,SAILBOAT +DATA + +# ================================= ASSERTION ================================ # + +cat << "DATA" > "tmp/${t}/${t}.assert" +⌨,code,meaning +⛲,1F347,FOUNTAIN +⛳,1F349,FLAG IN HOLE +⛵,1F352,SAILBOAT +DATA + +# ================================== ACTION ================================== # + +${cmd} --create "tmp/${t}/${t}.csv" +${cmd} --export "${t}" --output "tmp/${t}/${t}.xls" +(cd tmp/${t} && + ssconvert -S ${t}.xls ${t}.csv && + mv ${t}.csv ${t}.output) + +# =================================== TEST =================================== # + +diff -u "tmp/${t}/${t}.assert" "tmp/${t}/${t}.output" diff --git a/tests/create-utf8.sh b/tests/export-xls.sh old mode 100755 new mode 100644 similarity index 78% rename from tests/create-utf8.sh rename to tests/export-xls.sh index 0fd14e4..0116b5e --- a/tests/create-utf8.sh +++ b/tests/export-xls.sh @@ -16,20 +16,27 @@ mkdir -p "tmp/${t}" cat << "DATA" > "tmp/${t}/${t}.csv" a,b,c -🍉,🍒,🍓 +1,2,3 +0,0,0 +$,\,' DATA # ================================= ASSERTION ================================ # cat << "DATA" > "tmp/${t}/${t}.assert" -a b c -🍉 🍒 🍓 +a,b,c +1,2,3 +0,0,0 +$,\,' DATA # ================================== ACTION ================================== # -${cmd} --create "tmp/${t}/${t}.csv" --projectName "${t} biểu tượng cảm xúc 🍉" -${cmd} --export "${t} biểu tượng cảm xúc 🍉" --output "tmp/${t}/${t}.output" +${cmd} --create "tmp/${t}/${t}.csv" +${cmd} --export "${t}" --output "tmp/${t}/${t}.xls" +(cd tmp/${t} && + ssconvert -S ${t}.xls ${t}.csv && + mv ${t}.csv ${t}.output) # =================================== TEST =================================== # diff --git a/tests/export-xlsx-utf8.sh b/tests/export-xlsx-utf8.sh new file mode 100644 index 0000000..927dec8 --- /dev/null +++ b/tests/export-xlsx-utf8.sh @@ -0,0 +1,45 @@ +#!/bin/bash + +# =============================== ENVIRONMENT ================================ # + +if [[ ${1} ]]; then + cmd="${1}" +else + echo 1>&2 "execute tests.sh to run all tests"; exit 1 +fi + +t="$(basename "${BASH_SOURCE[0]}" .sh)" +cd "${BASH_SOURCE%/*}/" || exit 1 +mkdir -p "tmp/${t}" + +# =================================== DATA =================================== # + +cat << "DATA" > "tmp/${t}/${t}.csv" +⌨,code,meaning +⛲,1F347,FOUNTAIN +⛳,1F349,FLAG IN HOLE +⛵,1F352,SAILBOAT +DATA + +# ================================= ASSERTION ================================ # + +cat << "DATA" > "tmp/${t}/${t}.assert" +⌨,code,meaning +⛲,1F347,FOUNTAIN +⛳,1F349,FLAG IN HOLE +⛵,1F352,SAILBOAT +DATA + +# ================================== ACTION ================================== # + +${cmd} --create "tmp/${t}/${t}.csv" +${cmd} --export "${t}" --output "tmp/${t}/${t}.xlsx" +(cd tmp/${t} && + ssconvert -S ${t}.xlsx ${t}.csv && + mv ${t}.csv ${t}.output) + +# =================================== TEST =================================== # + +diff -u "tmp/${t}/${t}.assert" "tmp/${t}/${t}.output" + + diff --git a/tests/export-xlsx.sh b/tests/export-xlsx.sh new file mode 100644 index 0000000..a106efc --- /dev/null +++ b/tests/export-xlsx.sh @@ -0,0 +1,43 @@ +#!/bin/bash + +# =============================== ENVIRONMENT ================================ # + +if [[ ${1} ]]; then + cmd="${1}" +else + echo 1>&2 "execute tests.sh to run all tests"; exit 1 +fi + +t="$(basename "${BASH_SOURCE[0]}" .sh)" +cd "${BASH_SOURCE%/*}/" || exit 1 +mkdir -p "tmp/${t}" + +# =================================== DATA =================================== # + +cat << "DATA" > "tmp/${t}/${t}.csv" +a,b,c +1,2,3 +0,0,0 +$,\,' +DATA + +# ================================= ASSERTION ================================ # + +cat << "DATA" > "tmp/${t}/${t}.assert" +a,b,c +1,2,3 +0,0,0 +$,\,' +DATA + +# ================================== ACTION ================================== # + +${cmd} --create "tmp/${t}/${t}.csv" +${cmd} --export "${t}" --output "tmp/${t}/${t}.xlsx" +(cd tmp/${t} && + ssconvert -S ${t}.xlsx ${t}.csv && + mv ${t}.csv ${t}.output) + +# =================================== TEST =================================== # + +diff -u "tmp/${t}/${t}.assert" "tmp/${t}/${t}.output" diff --git a/tests/export.sh b/tests/export.sh old mode 100755 new mode 100644 index 1980555..b2a78bd --- a/tests/export.sh +++ b/tests/export.sh @@ -17,6 +17,8 @@ mkdir -p "tmp/${t}" cat << "DATA" > "tmp/${t}/${t}.csv" a,b,c 1,2,3 +0,0,0 +$,\,' DATA # ================================= ASSERTION ================================ # @@ -24,6 +26,8 @@ DATA cat << "DATA" > "tmp/${t}/${t}.assert" a b c 1 2 3 +0 0 0 +$ \ ' DATA # ================================== ACTION ================================== # diff --git a/tests/format-create.sh b/tests/format-create.sh new file mode 100644 index 0000000..6a794f2 --- /dev/null +++ b/tests/format-create.sh @@ -0,0 +1,41 @@ +#!/bin/bash + +# =============================== ENVIRONMENT ================================ # + +if [[ ${1} ]]; then + cmd="${1}" +else + echo 1>&2 "execute tests.sh to run all tests"; exit 1 +fi + +t="$(basename "${BASH_SOURCE[0]}" .sh)" +cd "${BASH_SOURCE%/*}/" || exit 1 +mkdir -p "tmp/${t}" + +# =================================== DATA =================================== # + +cat << "DATA" > "tmp/${t}/${t}.csv" +a,b,c +1,2,3 +0,0,0 +$,\,' +DATA + +# ================================= ASSERTION ================================ # + +cat << "DATA" > "tmp/${t}/${t}.assert" +Column 1 +a,b,c +1,2,3 +0,0,0 +$,\,' +DATA + +# ================================== ACTION ================================== # + +${cmd} --create "tmp/${t}/${t}.csv" --format "line-based" +${cmd} --export "${t}" --output "tmp/${t}/${t}.output" + +# =================================== TEST =================================== # + +diff -u "tmp/${t}/${t}.assert" "tmp/${t}/${t}.output" diff --git a/tests/format-export.sh b/tests/format-export.sh new file mode 100644 index 0000000..48283c4 --- /dev/null +++ b/tests/format-export.sh @@ -0,0 +1,40 @@ +#!/bin/bash + +# =============================== ENVIRONMENT ================================ # + +if [[ ${1} ]]; then + cmd="${1}" +else + echo 1>&2 "execute tests.sh to run all tests"; exit 1 +fi + +t="$(basename "${BASH_SOURCE[0]}" .sh)" +cd "${BASH_SOURCE%/*}/" || exit 1 +mkdir -p "tmp/${t}" + +# =================================== DATA =================================== # + +cat << "DATA" > "tmp/${t}/${t}.csv" +a,b,c +1,2,3 +0,0,0 +$,\,' +DATA + +# ================================= ASSERTION ================================ # + +cat << "DATA" > "tmp/${t}/${t}.assert" +a,b,c +1,2,3 +0,0,0 +$,\,' +DATA + +# ================================== ACTION ================================== # + +${cmd} --create "tmp/${t}/${t}.csv" +${cmd} --export "${t}" --format "csv" > "tmp/${t}/${t}.output" + +# =================================== TEST =================================== # + +diff -u "tmp/${t}/${t}.assert" "tmp/${t}/${t}.output" diff --git a/tests/help.sh b/tests/help.sh old mode 100755 new mode 100644 index e768159..c427361 --- a/tests/help.sh +++ b/tests/help.sh @@ -15,154 +15,12 @@ mkdir -p "tmp/${t}" # ================================= ASSERTION ================================ # cat << "DATA" > "tmp/${t}/${t}.assert" -Usage: refine.py [--help | OPTIONS] - Script to provide a command line interface to an OpenRefine server. - -Options: - -h, --help show this help message and exit - - Connection options: - -H 127.0.0.1, --host=127.0.0.1 - OpenRefine hostname (default: 127.0.0.1) - -P 3333, --port=3333 - OpenRefine port (default: 3333) - - Commands: - -c [FILE], --create=[FILE] - Create project from file. The filename ending (e.g. - .csv) defines the input format - (csv,tsv,xml,json,txt,xls,xlsx,ods) - -l, --list List projects - --download=[URL] Download file from URL (e.g. example data). Combine - with --output to specify a filename. - - Commands with argument [PROJECTID/PROJECTNAME]: - -d, --delete Delete project - -f [FILE], --apply=[FILE] - Apply JSON rules to OpenRefine project - -E, --export Export project in tsv format to stdout. - -o [FILE], --output=[FILE] - Export project to file. The filename ending (e.g. - .tsv) defines the output format - (csv,tsv,xls,xlsx,html) - --template=[STRING] - Export project with templating. Provide (big) text - string that you enter in the *row template* textfield - in the export/templating menu in the browser app) - --info show project metadata - - General options: - --format=FILE_FORMAT - Override file detection (import: - csv,tsv,xml,json,line-based,fixed-width,xls,xlsx,ods; - export: csv,tsv,html,xls,xlsx,ods) - - Create options: - --columnWidths=COLUMNWIDTHS - (txt/fixed-width), please provide widths in multiple - arguments, e.g. --columnWidths=7 --columnWidths=5 - --encoding=ENCODING - (csv,tsv,txt), please provide short encoding name - (e.g. UTF-8) - --guessCellValueTypes=true/false - (xml,csv,tsv,txt,json, default: false) - --headerLines=HEADERLINES - (csv,tsv,txt/fixed-width,xls,xlsx,ods), default: 1, - default txt/fixed-width: 0 - --ignoreLines=IGNORELINES - (csv,tsv,txt,xls,xlsx,ods), default: -1 - --includeFileSources=true/false - (all formats), default: false - --limit=LIMIT (all formats), default: -1 - --linesPerRow=LINESPERROW - (txt/line-based), default: 1 - --processQuotes=true/false - (csv,tsv), default: true - --projectName=PROJECTNAME - (all formats), default: filename - --projectTags=PROJECTTAGS - (all formats), please provide tags in multiple - arguments, e.g. --projectTags=beta - --projectTags=client1 - --recordPath=RECORDPATH - (xml,json), please provide path in multiple arguments, - e.g. /collection/record/ should be entered: - --recordPath=collection --recordPath=record, default - xml: root element, default json: _ _ - --separator=SEPARATOR - (csv,tsv), default csv: , default tsv: \t - --sheets=SHEETS (xls,xlsx,ods), please provide sheets in multiple - arguments, e.g. --sheets=0 --sheets=1, default: 0 - (first sheet) - --skipDataLines=SKIPDATALINES - (csv,tsv,txt,xls,xlsx,ods), default: 0, default line- - based: -1 - --storeBlankCellsAsNulls=true/false - (csv,tsv,txt,xls,xlsx,ods), default: true - --storeBlankRows=true/false - (csv,tsv,txt,xls,xlsx,ods), default: true - --storeEmptyStrings=true/false - (xml,json), default: true - --trimStrings=true/false - (xml,json), default: false - - Templating options: - --mode=row-based/record-based - engine mode (default: row-based) - --prefix=PREFIX text string that you enter in the *prefix* textfield - in the browser app - --rowSeparator=ROWSEPARATOR - text string that you enter in the *row separator* - textfield in the browser app - --suffix=SUFFIX text string that you enter in the *suffix* textfield - in the browser app - --filterQuery=REGEX - Simple RegEx text filter on filterColumn, e.g. ^12015$ - --filterColumn=COLUMNNAME - column name for filterQuery (default: name of first - column) - --facets=FACETS facets config in json format (may be extracted with - browser dev tools in browser app) - --splitToFiles=true/false - will split each row/record into a single file; it - specifies a presumably unique character series for - splitting; --prefix and --suffix will be applied to - all files; filename-prefix can be specified with - --output (default: %Y%m%d) - --suffixById=true/false - enhancement option for --splitToFiles; will generate - filename-suffix from values in key column - -Example data: - --download "https://git.io/fj5hF" --output=duplicates.csv - --download "https://git.io/fj5ju" --output=duplicates-deletion.json - -Basic commands: - --list # list all projects - --list -H 127.0.0.1 -P 80 # specify hostname and port - --create duplicates.csv # create new project from file - --info "duplicates" # show project metadata - --apply duplicates-deletion.json "duplicates" # apply rules in file to project - --export "duplicates" # export project to terminal in tsv format - --export --output=deduped.xls "duplicates" # export project to file in xls format - --delete "duplicates" # delete project - -Some more examples: - --info 1234567890123 # specify project by id - --create example.tsv --encoding=UTF-8 - --create example.xml --recordPath=collection --recordPath=record - --create example.json --recordPath=_ --recordPath=_ - --create example.xlsx --sheets=0 - --create example.ods --sheets=0 - -Example for Templating Export: - Cf. https://github.com/opencultureconsulting/openrefine-client#advanced-templating DATA # ================================== ACTION ================================== # -${cmd} --help > "tmp/${t}/${t}.output" +${cmd} --help | sed '3q;d' > "tmp/${t}/${t}.output" # =================================== TEST =================================== # diff --git a/tests/info-utf8.sh b/tests/info-utf8.sh old mode 100755 new mode 100644 diff --git a/tests/info.sh b/tests/info.sh old mode 100755 new mode 100644 diff --git a/tests/list.sh b/tests/list.sh old mode 100755 new mode 100644 diff --git a/tests/template b/tests/template index ade739e..83c23e9 100755 --- a/tests/template +++ b/tests/template @@ -8,7 +8,8 @@ else echo 1>&2 "execute tests.sh to run all tests"; exit 1 fi #if [[ ${2} ]]; then -# version="${2##*.}" +# version="${2}" +# majorversion="${2%%.*}" #fi t="$(basename "${BASH_SOURCE[0]}" .sh)" @@ -42,7 +43,7 @@ DATA # ================================= ASSERTION ================================ # -#if [[ "$version" >= 2 ]]; then +#if [[ "${version}" = "2.7" ]]; then cat << "DATA" > "tmp/${t}/${t}.assert" a b apply c 1 2 TEST 3 diff --git a/tests/templating-filter-utf8.sh b/tests/templating-filter-utf8.sh old mode 100755 new mode 100644 diff --git a/tests/templating-filter.sh b/tests/templating-filter.sh old mode 100755 new mode 100644 diff --git a/tests/templating-split-id-utf8.sh b/tests/templating-split-id-utf8.sh old mode 100755 new mode 100644 diff --git a/tests/templating-split-id.sh b/tests/templating-split-id.sh old mode 100755 new mode 100644 diff --git a/tests/templating-split-utf8.sh b/tests/templating-split-utf8.sh old mode 100755 new mode 100644 diff --git a/tests/templating-split.sh b/tests/templating-split.sh old mode 100755 new mode 100644 diff --git a/tests/templating-utf8.sh b/tests/templating-utf8.sh old mode 100755 new mode 100644 diff --git a/tests/templating.sh b/tests/templating.sh old mode 100755 new mode 100644 diff --git a/tests/usage.sh b/tests/usage.sh old mode 100755 new mode 100644 index ccce91a..75cd513 --- a/tests/usage.sh +++ b/tests/usage.sh @@ -15,13 +15,12 @@ mkdir -p "tmp/${t}" # ================================= ASSERTION ================================ # cat << "DATA" > "tmp/${t}/${t}.assert" -Usage: refine.py [--help | OPTIONS] - +Usage: DATA # ================================== ACTION ================================== # -${cmd} > "tmp/${t}/${t}.output" +${cmd} | head -n 1 | cut -c 1-6 > "tmp/${t}/${t}.output" # =================================== TEST =================================== #