aboutsummaryrefslogtreecommitdiffstats
path: root/tests/cpp-unit-tests/IcedTeaParsePropertiesTest.cc
diff options
context:
space:
mode:
authorJiri Vanek <[email protected]>2013-03-28 15:51:38 +0100
committerJiri Vanek <[email protected]>2013-03-28 15:51:38 +0100
commit8d2d31514295a2d0eff5971887246f6d4211fc6d (patch)
treed66ce4fb57c823a2aa8894bb6894b33bdbe162f6 /tests/cpp-unit-tests/IcedTeaParsePropertiesTest.cc
parent58b4d6e3dc3a95cfbc6f369287aca04763522e48 (diff)
Added code to parse properties and to find correct configuration files from c++ part of plugin.
Diffstat (limited to 'tests/cpp-unit-tests/IcedTeaParsePropertiesTest.cc')
-rw-r--r--tests/cpp-unit-tests/IcedTeaParsePropertiesTest.cc525
1 files changed, 525 insertions, 0 deletions
diff --git a/tests/cpp-unit-tests/IcedTeaParsePropertiesTest.cc b/tests/cpp-unit-tests/IcedTeaParsePropertiesTest.cc
new file mode 100644
index 0000000..321a359
--- /dev/null
+++ b/tests/cpp-unit-tests/IcedTeaParsePropertiesTest.cc
@@ -0,0 +1,525 @@
+/* Copyright (C) 2012 Red Hat
+
+ This file is part of IcedTea.
+
+ IcedTea is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ IcedTea is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with IcedTea; see the file COPYING. If not, write to the
+ Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+ Linking this library statically or dynamically with other modules is
+ making a combined work based on this library. Thus, the terms and
+ conditions of the GNU General Public License cover the whole
+ combination.
+
+ As a special exception, the copyright holders of this library give you
+ permission to link this library with independent modules to produce an
+ executable, regardless of the license terms of these independent
+ modules, and to copy and distribute the resulting executable under
+ terms of your choice, provided that you also meet, for each linked
+ independent module, the terms and conditions of the license of that
+ module. An independent module is a module which is not derived from
+ or based on this library. If you modify this library, you may extend
+ this exception to your version of the library, but you are not
+ obligated to do so. If you do not wish to do so, delete this
+ exception statement from your version. */
+
+#include <UnitTest++.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <pwd.h>
+#include <cstdio>
+#include <cstdlib>
+#include <string>
+#include <functional>
+#include <cctype>
+#include <locale>
+#include <iostream>
+#include <fstream>
+#include "IcedTeaParseProperties.h"
+
+using namespace std;
+
+//not exposed via IcedTeaParseProperties but needed
+extern void remove_all_spaces(string& str);
+extern bool get_property_value(string c, string& dest);
+extern bool starts_with(string c1, string c2);
+extern string user_properties_file();
+extern string main_properties_file();
+extern string default_java_properties_file();
+//for passing three dummy files
+bool find_system_config_file(string main_file, string custom_jre_file, bool usecustom_jre, string default_java_file, string& dest);
+bool find_property(string filename, string property, string& dest);
+//for passing two dummy files
+bool read_deploy_property_value(string user_file, string system_file, bool usesystem_file, string property, string& dest);
+//for passing two dummy files
+bool find_custom_jre(string user_file, string main_file,string& dest);
+//end of non-public IcedTeaParseProperties api
+
+/* Creates a temporary file with the specified contents */
+static string temporary_file(const string& contents) {
+ string path = tmpnam(NULL); /* POSIX function, fine for test suite */
+ ofstream myfile;
+ myfile.open (path.c_str());
+ myfile << contents;
+ myfile.close();
+ return path;
+}
+
+
+
+/*private api fundamental tests*/
+TEST(RemoveAllSpaces) {
+ string toBeTrimmed = string(" te st X ");
+ remove_all_spaces (toBeTrimmed);
+ CHECK_EQUAL("testX", toBeTrimmed);
+
+ string toBeTrimmed1 = string(" te st X ");
+ remove_all_spaces (toBeTrimmed1);
+ CHECK_EQUAL("testX", toBeTrimmed1);
+
+ string toBeTrimmed2 = string(" \t t e\nst\tX\n");
+ remove_all_spaces (toBeTrimmed2);
+ CHECK_EQUAL("testX", toBeTrimmed2);
+
+ string toBeTrimmed3 = string(" \t \n te \n stX\n");
+ remove_all_spaces (toBeTrimmed3);
+ CHECK_EQUAL("testX", toBeTrimmed3);
+
+}
+
+
+TEST(get_property_value) {
+ string dest = string("");
+ bool a = get_property_value("key.key=value+eulav ",dest);
+ CHECK_EQUAL("value+eulav", dest);
+ CHECK_EQUAL(a, true);
+
+ dest = string("");
+ a = get_property_value("horrible key = value/value",dest);
+ CHECK_EQUAL("value/value", dest);
+ CHECK_EQUAL(a, true);
+
+ dest = string("");
+ a = get_property_value("better.key = but very horrible value ",dest);
+ CHECK_EQUAL("but very horrible value", dest);
+ CHECK_EQUAL(a, true);
+
+ dest = string("");
+ a = get_property_value("better.key but errornous value ",dest);
+ CHECK_EQUAL("", dest);
+ CHECK_EQUAL(a, false);
+}
+
+TEST(starts_with) {
+ bool a = starts_with("aa bb cc","aa b");
+ CHECK_EQUAL(a, true);
+
+ a = starts_with("aa bb cc","aab");
+ CHECK_EQUAL(a, false);
+}
+
+
+TEST(user_properties_file) {
+ string f = user_properties_file();
+ CHECK_EQUAL(f.find(".icedtea") >= 0, true);
+ CHECK_EQUAL(f.find(default_file_ITW_deploy_props_name) >= 0, true);
+}
+
+TEST(main_properties_file) {
+ string f = main_properties_file();
+ CHECK_EQUAL(f.find(default_file_ITW_deploy_props_name) >= 0, true);
+ CHECK_EQUAL(f.find(".java") >= 0, true);
+}
+
+TEST(default_java_properties_file) {
+ string f = default_java_properties_file();
+ CHECK_EQUAL(f.find(default_file_ITW_deploy_props_name) >= 0, true);
+ CHECK_EQUAL(f.find("lib") >= 0, true);
+}
+
+
+TEST(find_system_config_file) {
+ string f1 = temporary_file("key1=value1");
+ string f2 = temporary_file("key2=value2");
+ string f3 = temporary_file("key3=value3");
+ string dest=string("");
+ find_system_config_file(f1, f2, true, f3, dest);
+ CHECK_EQUAL(f1, dest);
+ dest=string("");
+ find_system_config_file(f1, f2, false, f3, dest);
+ CHECK_EQUAL(f1, dest);
+
+ remove(f1.c_str());
+ dest=string("");
+ find_system_config_file(f1, f2, true, f3, dest);
+ CHECK_EQUAL(f2, dest);
+ dest=string("");
+ find_system_config_file(f1, f2, false, f3, dest);
+ CHECK_EQUAL(f3, dest);
+
+ remove(f2.c_str());
+ dest=string("");
+ find_system_config_file(f1, f2, true, f3, dest);
+ CHECK_EQUAL("", dest); //forcing not existing f2
+ dest=string("");
+ find_system_config_file(f1, f2, false, f3, dest);
+ CHECK_EQUAL(f3, dest);
+
+ remove(f3.c_str());
+ dest=string("");
+ find_system_config_file(f1, f2, true, f3, dest);
+ CHECK_EQUAL("", dest);
+ dest=string("");
+ find_system_config_file(f1, f2, true, f3, dest);
+ CHECK_EQUAL("", dest);
+}
+
+TEST(find_property) {
+ string f1 = temporary_file("key1=value1");
+ string dest=string("");
+ find_property(f1, "key1", dest);
+ CHECK_EQUAL("value1", dest);
+ dest=string("");
+ find_property(f1, "key2", dest);
+ CHECK_EQUAL("", dest);
+ dest=string("");
+ find_property(f1, "value1", dest);
+ CHECK_EQUAL("", dest);
+ remove(f1.c_str());
+
+ string f2 = temporary_file("key2 =value2 key3=value3\n key5 = value5");
+ dest=string("");
+ find_property(f2, "key2", dest);
+ CHECK_EQUAL("value2 key3=value3", dest);
+ dest=string("");
+ find_property(f2, "key1", dest);
+ CHECK_EQUAL("", dest);
+ dest=string("");
+ find_property(f2, "key3", dest);
+ CHECK_EQUAL("", dest);
+ dest=string("");
+ find_property(f2, "key5", dest);
+ CHECK_EQUAL("value5", dest);
+ remove(f2.c_str());
+
+ string f3 = temporary_file("ke.y3= value3\nkey4=value4");
+ dest=string("");
+ find_property(f3, "ke.y3", dest);
+ CHECK_EQUAL("value3", dest);
+ dest=string("");
+ find_property(f3, "key4", dest);
+ CHECK_EQUAL("value4", dest);
+ remove(f3.c_str());
+}
+
+TEST(read_deploy_property_value1) {
+ string f1 = temporary_file("key1=value11");
+ string f2 = temporary_file("key1=value12");
+ string f3 = temporary_file("key2=value23");
+ string dest=string("");
+ read_deploy_property_value(f1,f2,true, "key1", dest);
+ CHECK_EQUAL("value11", dest);
+ dest=string("");
+ read_deploy_property_value(f2,f1,true, "key1", dest);
+ CHECK_EQUAL("value12", dest);
+ dest=string("");
+ read_deploy_property_value(f1,f3,true, "key1", dest);
+ CHECK_EQUAL("value11", dest);
+ dest=string("");
+ read_deploy_property_value(f3,f1,true, "key1", dest);
+ CHECK_EQUAL("value11", dest);
+ read_deploy_property_value(f3,f2,true, "key1", dest);
+ CHECK_EQUAL("value12", dest);
+ dest=string("");
+ read_deploy_property_value(f2,f3,true, "key1", dest);
+ CHECK_EQUAL("value12", dest);
+
+ dest=string("");
+ read_deploy_property_value(f1,f2,true, "key2", dest);
+ CHECK_EQUAL("", dest);
+ dest=string("");
+ read_deploy_property_value(f2,f1,true, "key2", dest);
+ CHECK_EQUAL("", dest);
+ dest=string("");
+ read_deploy_property_value(f1,f3,true, "key2", dest);
+ CHECK_EQUAL("value23", dest);
+ dest=string("");
+ read_deploy_property_value(f3,f1,true, "key2", dest);
+ CHECK_EQUAL("value23", dest);
+ read_deploy_property_value(f3,f2,true, "key2", dest);
+ CHECK_EQUAL("value23", dest);
+ dest=string("");
+ read_deploy_property_value(f2,f3,true, "key2", dest);
+ CHECK_EQUAL("value23", dest);
+
+ remove(f1.c_str());/////////////////////////////////
+ dest=string("");
+ read_deploy_property_value(f1,f2,true, "key1", dest);
+ CHECK_EQUAL("value12", dest);
+ dest=string("");
+ read_deploy_property_value(f2,f1,true, "key1", dest);
+ CHECK_EQUAL("value12", dest);
+ dest=string("");
+ read_deploy_property_value(f1,f3,true, "key1", dest);
+ CHECK_EQUAL("", dest);
+ dest=string("");
+ read_deploy_property_value(f3,f1,true, "key1", dest);
+ CHECK_EQUAL("", dest);
+ read_deploy_property_value(f3,f2,true, "key1", dest);
+ CHECK_EQUAL("value12", dest);
+ dest=string("");
+ read_deploy_property_value(f2,f3,true, "key1", dest);
+ CHECK_EQUAL("value12", dest);
+
+ dest=string("");
+ read_deploy_property_value(f1,f2,true, "key2", dest);
+ CHECK_EQUAL("", dest);
+ dest=string("");
+ read_deploy_property_value(f2,f1,true, "key2", dest);
+ CHECK_EQUAL("", dest);
+ dest=string("");
+ read_deploy_property_value(f1,f3,true, "key2", dest);
+ CHECK_EQUAL("value23", dest);
+ dest=string("");
+ read_deploy_property_value(f3,f1,true, "key2", dest);
+ CHECK_EQUAL("value23", dest);
+ read_deploy_property_value(f3,f2,true, "key2", dest);
+ CHECK_EQUAL("value23", dest);
+ dest=string("");
+ read_deploy_property_value(f2,f3,true, "key2", dest);
+ CHECK_EQUAL("value23", dest);
+
+ remove(f3.c_str());/////////////////////////////////
+ dest=string("");
+ read_deploy_property_value(f1,f2,true, "key1", dest);
+ CHECK_EQUAL("value12", dest);
+ dest=string("");
+ read_deploy_property_value(f2,f1,true, "key1", dest);
+ CHECK_EQUAL("value12", dest);
+ dest=string("");
+ read_deploy_property_value(f1,f3,true, "key1", dest);
+ CHECK_EQUAL("", dest);
+ dest=string("");
+ read_deploy_property_value(f3,f1,true, "key1", dest);
+ CHECK_EQUAL("", dest);
+ read_deploy_property_value(f3,f2,true, "key1", dest);
+ CHECK_EQUAL("value12", dest);
+ dest=string("");
+ read_deploy_property_value(f2,f3,true, "key1", dest);
+ CHECK_EQUAL("value12", dest);
+
+ dest=string("");
+ read_deploy_property_value(f1,f2,true, "key2", dest);
+ CHECK_EQUAL("", dest);
+ dest=string("");
+ read_deploy_property_value(f2,f1,true, "key2", dest);
+ CHECK_EQUAL("", dest);
+ dest=string("");
+ read_deploy_property_value(f1,f3,true, "key2", dest);
+ CHECK_EQUAL("", dest);
+ dest=string("");
+ read_deploy_property_value(f3,f1,true, "key2", dest);
+ CHECK_EQUAL("", dest);
+ read_deploy_property_value(f3,f2,true, "key2", dest);
+ CHECK_EQUAL("", dest);
+ dest=string("");
+ read_deploy_property_value(f2,f3,true, "key2", dest);
+ CHECK_EQUAL("", dest);
+
+ remove(f2.c_str());/////////////////////////////////
+
+}
+
+
+
+TEST(read_deploy_property_value2) {
+ string f1 = temporary_file("key1=value11");
+ string f2 = temporary_file("key1=value12");
+ string f3 = temporary_file("key2=value23");
+ string dest=string("");
+ read_deploy_property_value(f1,f2,false, "key1", dest);
+ CHECK_EQUAL("value11", dest);
+ dest=string("");
+ read_deploy_property_value(f2,f1,false, "key1", dest);
+ CHECK_EQUAL("value12", dest);
+ dest=string("");
+ read_deploy_property_value(f1,f3,false, "key1", dest);
+ CHECK_EQUAL("value11", dest);
+ dest=string("");
+ read_deploy_property_value(f3,f1,false, "key1", dest);
+ CHECK_EQUAL("", dest);
+ read_deploy_property_value(f3,f2,false, "key1", dest);
+ CHECK_EQUAL("", dest);
+ dest=string("");
+ read_deploy_property_value(f2,f3,false, "key1", dest);
+ CHECK_EQUAL("value12", dest);
+
+ dest=string("");
+ read_deploy_property_value(f1,f2,false, "key2", dest);
+ CHECK_EQUAL("", dest);
+ dest=string("");
+ read_deploy_property_value(f2,f1,false, "key2", dest);
+ CHECK_EQUAL("", dest);
+ dest=string("");
+ read_deploy_property_value(f1,f3,false, "key2", dest);
+ CHECK_EQUAL("", dest);
+ dest=string("");
+ read_deploy_property_value(f3,f1,false, "key2", dest);
+ CHECK_EQUAL("value23", dest);
+ read_deploy_property_value(f3,f2,false, "key2", dest);
+ CHECK_EQUAL("value23", dest);
+ dest=string("");
+ read_deploy_property_value(f2,f3,false, "key2", dest);
+ CHECK_EQUAL("", dest);
+
+ remove(f1.c_str());/////////////////////////////////
+ dest=string("");
+ read_deploy_property_value(f1,f2,false, "key1", dest);
+ CHECK_EQUAL("", dest);
+ dest=string("");
+ read_deploy_property_value(f2,f1,false, "key1", dest);
+ CHECK_EQUAL("value12", dest);
+ dest=string("");
+ read_deploy_property_value(f1,f3,false, "key1", dest);
+ CHECK_EQUAL("", dest);
+ dest=string("");
+ read_deploy_property_value(f3,f1,false, "key1", dest);
+ CHECK_EQUAL("", dest);
+ read_deploy_property_value(f3,f2,false, "key1", dest);
+ CHECK_EQUAL("", dest);
+ dest=string("");
+ read_deploy_property_value(f2,f3,false, "key1", dest);
+ CHECK_EQUAL("value12", dest);
+
+ dest=string("");
+ read_deploy_property_value(f1,f2,false, "key2", dest);
+ CHECK_EQUAL("", dest);
+ dest=string("");
+ read_deploy_property_value(f2,f1,false, "key2", dest);
+ CHECK_EQUAL("", dest);
+ dest=string("");
+ read_deploy_property_value(f1,f3,false, "key2", dest);
+ CHECK_EQUAL("", dest);
+ dest=string("");
+ read_deploy_property_value(f3,f1,false, "key2", dest);
+ CHECK_EQUAL("value23", dest);
+ read_deploy_property_value(f3,f2,false, "key2", dest);
+ CHECK_EQUAL("value23", dest);
+ dest=string("");
+ read_deploy_property_value(f2,f3,false, "key2", dest);
+ CHECK_EQUAL("", dest);
+
+ remove(f3.c_str());/////////////////////////////////
+ dest=string("");
+ read_deploy_property_value(f1,f2,false, "key1", dest);
+ CHECK_EQUAL("", dest);
+ dest=string("");
+ read_deploy_property_value(f2,f1,false, "key1", dest);
+ CHECK_EQUAL("value12", dest);
+ dest=string("");
+ read_deploy_property_value(f1,f3,false, "key1", dest);
+ CHECK_EQUAL("", dest);
+ dest=string("");
+ read_deploy_property_value(f3,f1,false, "key1", dest);
+ CHECK_EQUAL("", dest);
+ read_deploy_property_value(f3,f2,false, "key1", dest);
+ CHECK_EQUAL("", dest);
+ dest=string("");
+ read_deploy_property_value(f2,f3,false, "key1", dest);
+ CHECK_EQUAL("value12", dest);
+
+ dest=string("");
+ read_deploy_property_value(f1,f2,false, "key2", dest);
+ CHECK_EQUAL("", dest);
+ dest=string("");
+ read_deploy_property_value(f2,f1,false, "key2", dest);
+ CHECK_EQUAL("", dest);
+ dest=string("");
+ read_deploy_property_value(f1,f3,false, "key2", dest);
+ CHECK_EQUAL("", dest);
+ dest=string("");
+ read_deploy_property_value(f3,f1,false, "key2", dest);
+ CHECK_EQUAL("", dest);
+ read_deploy_property_value(f3,f2,false, "key2", dest);
+ CHECK_EQUAL("", dest);
+ dest=string("");
+ read_deploy_property_value(f2,f3,false, "key2", dest);
+ CHECK_EQUAL("", dest);
+
+ remove(f2.c_str());/////////////////////////////////
+}
+
+
+TEST(find_custom_jre) {
+ string f1 = temporary_file(custom_jre_key+"=value11");
+ string f2 = temporary_file(custom_jre_key+"=value12");
+ string f3 = temporary_file("key2=value23");
+ string f4 = temporary_file("key2=value24");
+ string dest=string("");
+ find_custom_jre(f1,f2, dest);
+ CHECK_EQUAL("value11", dest);
+ dest=string("");
+ find_custom_jre(f2,f1, dest);
+ CHECK_EQUAL("value12", dest);
+ dest=string("");
+ find_custom_jre(f1,f3, dest);
+ CHECK_EQUAL("value11", dest);
+ dest=string("");
+ find_custom_jre(f3,f1, dest);
+ CHECK_EQUAL("value11", dest);
+ dest=string("");
+ find_custom_jre(f3,f4, dest);
+ CHECK_EQUAL("", dest);
+ remove(f1.c_str());/////////////////////////////////
+ dest=string("");
+ find_custom_jre(f1,f2, dest);
+ CHECK_EQUAL("value12", dest);
+ dest=string("");
+ find_custom_jre(f2,f1, dest);
+ CHECK_EQUAL("value12", dest);
+ dest=string("");
+ find_custom_jre(f1,f3, dest);
+ CHECK_EQUAL("", dest);
+ dest=string("");
+ find_custom_jre(f3,f1, dest);
+ CHECK_EQUAL("", dest);
+ remove(f3.c_str());/////////////////////////////////
+ dest=string("");
+ find_custom_jre(f1,f2, dest);
+ CHECK_EQUAL("value12", dest);
+ dest=string("");
+ find_custom_jre(f2,f1, dest);
+ CHECK_EQUAL("value12", dest);
+ dest=string("");
+ find_custom_jre(f1,f3, dest);
+ CHECK_EQUAL("", dest);
+ dest=string("");
+ find_custom_jre(f3,f1, dest);
+ CHECK_EQUAL("", dest);
+ remove(f2.c_str());/////////////////////////////////
+ dest=string("");
+ find_custom_jre(f1,f2, dest);
+ CHECK_EQUAL("", dest);
+ dest=string("");
+ find_custom_jre(f2,f1, dest);
+ CHECK_EQUAL("", dest);
+ dest=string("");
+ find_custom_jre(f1,f3, dest);
+ CHECK_EQUAL("", dest);
+ dest=string("");
+ find_custom_jre(f3,f1, dest);
+ CHECK_EQUAL("", dest);
+ remove(f4.c_str());/////////////////////////////////
+
+}