From 51b629c4e1d5ca32be4bb08e80c6f07063a482c5 Mon Sep 17 00:00:00 2001 From: Ronan Abhamon Date: Wed, 9 Nov 2016 14:29:09 +0100 Subject: [PATCH] feat(Utils/uri-tools): add spec file to test uris --- tests/tools/test_qml | 32 +++----- tests/ui/scripts/Utils/uri-tools.js | 2 +- tests/ui/scripts/Utils/uri-tools.spec.qml | 95 +++++++++++++++++++++++ 3 files changed, 107 insertions(+), 22 deletions(-) create mode 100644 tests/ui/scripts/Utils/uri-tools.spec.qml diff --git a/tests/tools/test_qml b/tests/tools/test_qml index c26134f0f..7e050a2c2 100644 --- a/tests/tools/test_qml +++ b/tests/tools/test_qml @@ -20,38 +20,28 @@ NC='\e[0m' SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" cd $SCRIPT_DIR/.. -# Check JS lib. -printf "${BLUE}Testing scripts lib...${NC}\n" +# ==================================================================== so_far_so_good=0 -$TEST_RUNNER -import $MODULES_PATH -input './ui/scripts/Utils/utils.spec.qml' -if [[ $? == 0 ]]; then - printf "${GREEN}Done. No error found in scripts lib.\n" -else - printf "${RED}One or more errors were found. Please to fix them.\n" - so_far_so_good=1 -fi -printf "${NC}\n" - -# Check all `*.spec.qml` files +# Check all `*.spec.qml` files. while read line do - qml_file=$( + source_file=$( printf "$line" | - sed -n 's/^\s*<\s*file\s*>\s*\(.*\.qml\)\s*<\s*\/\s*file\s*>\s*$/\1/p' + sed -n 's/^\s*<\s*file\s*>\s*\(.*\.\(qml\|js\)\)\s*<\s*\/\s*file\s*>\s*$/\1/p' ) - if [[ ! -z $qml_file ]]; then - spec_qml_file="${qml_file%.*}.${TEST_FILE_EXTENSION}" + if [[ ! -z $source_file ]]; then + spec_file="${source_file%.*}.${TEST_FILE_EXTENSION}" - if [ -f $spec_qml_file ]; then - printf "${BLUE}Running unit qml tests of '${qml_file}'...${NC}\n" - $TEST_RUNNER -import $MODULES_PATH -import $SCRIPTS_PATH -input "$spec_qml_file" + if [ -f $spec_file ]; then + printf "${BLUE}Running unit qml tests of '${source_file}'...${NC}\n" + $TEST_RUNNER -import $MODULES_PATH -import $SCRIPTS_PATH -input "$spec_file" if [[ $? == 0 ]]; then - printf "${GREEN}All unit tests have succeeded for '${spec_qml_file}'.\n" + printf "${GREEN}All unit tests have succeeded for '${spec_file}'.\n" else - printf "${RED}Unit tests have failed for '${spec_qml_file}'.\n" + printf "${RED}Unit tests have failed for '${spec_file}'.\n" so_far_so_good=1 fi printf "${NC}\n" diff --git a/tests/ui/scripts/Utils/uri-tools.js b/tests/ui/scripts/Utils/uri-tools.js index b26f5220d..0e5367ed3 100644 --- a/tests/ui/scripts/Utils/uri-tools.js +++ b/tests/ui/scripts/Utils/uri-tools.js @@ -13,7 +13,7 @@ var SUPPORTS_URL = true // Level 0. ---------------------------------------------------------- var URI_PCT_ENCODED = '%[A-Fa-f\\d]{2}' -var URI_PORT = '\d*' +var URI_PORT = '\\d*' var URI_SCHEME = '[a-zA-Z][\\w+\-\.]*' var URI_SUB_DELIMS = '[!$&\'()*+,;=]' var URI_UNRESERVED = '[\\w\-\._~]' diff --git a/tests/ui/scripts/Utils/uri-tools.spec.qml b/tests/ui/scripts/Utils/uri-tools.spec.qml new file mode 100644 index 000000000..53630c724 --- /dev/null +++ b/tests/ui/scripts/Utils/uri-tools.spec.qml @@ -0,0 +1,95 @@ +import QtTest 1.1 + +import './uri-tools.js' as UriTools + +// =================================================================== + +TestCase { + function test_regexExists () { + compare( + UriTools.URI_REGEX instanceof RegExp, + true, + '`URI_REGEX` is not a `RegExp` or is undefined.' + ) + } + + function test_urlSupport () { + compare( + typeof UriTools.SUPPORTS_URL, + 'boolean', + '`SUPPORTS_URL` is not a `Boolean` or is undefined.' + ) + } + + function test_matchUri_data () { + return [ + { + input: 'http://www.LaRmInA.com/', + output: [ 'http://www.LaRmInA.com/' ] + }, { + input: 'http://foob%3Dbar@baz.fr', + output: [ 'http://foob%3Dbar@baz.fr' ] + }, { + input: 'file://a/b/c/;d', + output: [ 'file://a/b/c/;d' ] + }, { + input: 'ftp://0/', + output: [ 'ftp://0/' ] + }, { + input: 'mailto://valentin.cognito@domain.unknown', + output: [ 'mailto://valentin.cognito@domain.unknown' ] + }, { + input: 'mailto://sLimAne@egypt', + output: [ 'mailto://sLimAne@egypt' ] + }, { + input: 'file://beetlejuice-beetlejuice-beetlejui...', + output: [ 'file://beetlejuice-beetlejuice-beetlejui...' ] + }, { + input: 'https://gitlab@localhost', + output: [ 'https://gitlab@localhost' ] + }, { + input: 'xmpp:von.zimmel@reich.org', + output: [ 'xmpp:von.zimmel@reich.org' ] + }, { + input: 'dot.dot://dot.dot.dot@dot.dot.dot', + output: [ 'dot.dot://dot.dot.dot@dot.dot.dot' ] + }, { + input: 'A:B', + output: [ 'A:B' ] + }, { + input: 'foo://a=B.7z*+9aZb;$.!,!,!_(~_~)_-&\':', + output: [ 'foo://a=B.7z*+9aZb;$.!,!,!_(~_~)_-&\':' ] + }, { + input: 'foo+bar+baz://hey:1800/it-s-me?a&b=12', + output: [ 'foo+bar+baz://hey:1800/it-s-me?a&b=12' ] + }, { + input: 'nsa://localhost:666', + output: [ 'nsa://localhost:666' ] + }, { + input: 'protocol://U$3r:p@sswd/WwW.L33t.sp3', + output: [ 'protocol://U$3r:p@sswd/WwW.L33t.sp3' ] + }, { + input: 'http://a/B/c?a&b&c', + output: [ 'http://a/B/c?a&b&c' ] + }, { + input: '1http://www.linphone.org', + output: [ 'http://www.linphone.org' ] + }, { + input: '://www.linphone.org', + output: UriTools.SUPPORTS_URL + ? [ 'www.linphone.org' ] + : null + }, { + input: 'http', + output: null + }, { + input: '/path/', + output: null + } + ] + } + + function test_matchUri (data) { + compare(data.input.match(UriTools.URI_REGEX), data.output) + } +}