diff options
| author | chrysn <chrysn@fsfe.org> | 2013-06-28 09:47:17 (GMT) | 
|---|---|---|
| committer | chrysn <chrysn@fsfe.org> | 2013-06-28 09:47:17 (GMT) | 
| commit | 4d18db65e3d1f31057012bd53c57ce51ad6417dd (patch) | |
| tree | 7fd420bccad4235f881ded0ee35081a7481b066f /tests | |
| parent | 28e420d8712a73e66db328cdb80a8b09f6f9a0b4 (diff) | |
python validation for cgal stl sanity test
this drops another static binary and replaces it with a very small
shell^Wpython script (again, python used to avoid sed / grep
implementation differences)
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/.gitignore | 1 | ||||
| -rw-r--r-- | tests/CMakeLists.txt | 9 | ||||
| -rwxr-xr-x | tests/cgalstlsanitytest | 16 | ||||
| -rw-r--r-- | tests/cgalstlsanitytest.cc | 146 | 
4 files changed, 17 insertions, 155 deletions
| diff --git a/tests/.gitignore b/tests/.gitignore index 8860ee7..a0bddd4 100644 --- a/tests/.gitignore +++ b/tests/.gitignore @@ -13,7 +13,6 @@ out.png  /parser_yacc.c  /csgtexttest  /throwntogethertest -/cgalstlsanitytest  /cgalcachetest  /modulecachetest  /test_pretty_print diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 5a44b8a..714465d 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -534,13 +534,6 @@ add_executable(csgtexttest csgtexttest.cc CSGTextRenderer.cc CSGTextCache.cc)  target_link_libraries(csgtexttest tests-nocgal ${TESTS-NOCGAL-LIBRARIES})  # -# cgalstlsanitytest -# -add_executable(cgalstlsanitytest cgalstlsanitytest.cc) -set_target_properties(cgalstlsanitytest PROPERTIES COMPILE_FLAGS "-DENABLE_CGAL ${CGAL_CXX_FLAGS_INIT}") -target_link_libraries(cgalstlsanitytest tests-cgal ${TESTS-CGAL-LIBRARIES}) - -#  # cgalcachetest  #  add_executable(cgalcachetest cgalcachetest.cc) @@ -895,7 +888,7 @@ add_cmdline_test(opencsgtest EXE ${GUI_BINPATH} ARGS -o SUFFIX png FILES ${OPENC  add_cmdline_test(throwntogethertest SUFFIX png FILES ${THROWNTOGETHERTEST_FILES})  # FIXME: We don't actually need to compare the output of cgalstlsanitytest  # with anything. It's self-contained and returns != 0 on error -add_cmdline_test(cgalstlsanitytest SUFFIX txt FILES ${CGALSTLSANITYTEST_FILES}) +add_cmdline_test(cgalstlsanitytest SUFFIX txt ARGS ${GUI_BINPATH} FILES ${CGALSTLSANITYTEST_FILES})  # Tests using the actual OpenSCAD binary diff --git a/tests/cgalstlsanitytest b/tests/cgalstlsanitytest new file mode 100755 index 0000000..0ec9ef4 --- /dev/null +++ b/tests/cgalstlsanitytest @@ -0,0 +1,16 @@ +#!/usr/bin/env python + +import re, sys, subprocess, os + +stlfile = sys.argv[3] + '.stl' + +subprocess.check_call([sys.argv[2], sys.argv[1], '-o', stlfile]) + +result = open(stlfile).read() + +os.unlink(stlfile) + +if 'nan' in result or 'inf' in result: +    sys.exit(1) + +open(sys.argv[3], 'w').write('') # this check only works on return values diff --git a/tests/cgalstlsanitytest.cc b/tests/cgalstlsanitytest.cc deleted file mode 100644 index 4be7767..0000000 --- a/tests/cgalstlsanitytest.cc +++ /dev/null @@ -1,146 +0,0 @@ -/* - *  OpenSCAD (www.openscad.org) - *  Copyright (C) 2009-2011 Clifford Wolf <clifford@clifford.at> and - *                          Marius Kintel <marius@kintel.net> - * - *  This program 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 of the License, or - *  (at your option) any later version. - * - *  As a special exception, you have permission to link this program - *  with the CGAL library and distribute executables, as long as you - *  follow the requirements of the GNU GPL in regard to all of the - *  software in the executable aside from CGAL. - * - *  This program 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 this program; if not, write to the Free Software - *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA - * - */ - -#include "tests-common.h" -#include "openscad.h" -#include "parsersettings.h" -#include "node.h" -#include "module.h" -#include "modcontext.h" -#include "value.h" -#include "export.h" -#include "builtin.h" -#include "Tree.h" -#include "CGAL_Nef_polyhedron.h" -#include "CGALEvaluator.h" -#include "PolySetCGALEvaluator.h" - -#ifndef _MSC_VER -#include <getopt.h> -#endif -#include <iostream> -#include <assert.h> -#include <sstream> - -#include <boost/filesystem.hpp> -namespace fs = boost::filesystem; -#include "boosty.h" - -std::string commandline_commands; -std::string currentdir; - -using std::string; - -void cgalTree(Tree &tree) -{ -	assert(tree.root()); - -	CGALEvaluator evaluator(tree); -	Traverser evaluate(evaluator, *tree.root(), Traverser::PRE_AND_POSTFIX); -	evaluate.execute(); -} - -int main(int argc, char **argv) -{ -	int retval = 0; - -	if (argc != 3) { -		fprintf(stderr, "Usage: %s <file.scad> <output.txt>\n", argv[0]); -		exit(1); -	} - -	const char *filename = argv[1]; -	const char *outfilename = argv[2]; - -	Builtins::instance()->initialize(); - -	fs::path original_path = fs::current_path(); - -	currentdir = boosty::stringy( fs::current_path() ); - -	parser_init(boosty::stringy(fs::path(argv[0]).branch_path())); -	add_librarydir(boosty::stringy(fs::path(argv[0]).branch_path() / "../libraries")); - -	ModuleContext top_ctx; -	top_ctx.registerBuiltin(); - -	FileModule *root_module; -	ModuleInstantiation root_inst("group"); - -	root_module = parsefile(filename); -	if (!root_module) { -		exit(1); -	} - -	if (fs::path(filename).has_parent_path()) { -		fs::current_path(fs::path(filename).parent_path()); -	} - -	AbstractNode::resetIndexCounter(); -	AbstractNode *absolute_root_node = root_module->instantiate(&top_ctx, &root_inst); -	AbstractNode *root_node; -	// Do we have an explicit root node (! modifier)? -	if (!(root_node = find_root_tag(absolute_root_node))) root_node = absolute_root_node; - -	Tree tree(root_node); - -	CGALEvaluator cgalevaluator(tree); - 	PolySetCGALEvaluator psevaluator(cgalevaluator); - -	CGAL_Nef_polyhedron N = cgalevaluator.evaluateCGALMesh(*root_node); - -	current_path(original_path); -	if (!N.isNull()) { -		std::ofstream outfile; -		outfile.open(outfilename); -			 -		if (N.dim != 3) { -			outfile << "Error: Current top level object is not a 3D object.\n"; -			retval = 2; -		} -		else if (!N.p3->is_simple()) { -			outfile << "Error: Object isn't a valid 2-manifold! Modify your design.\n"; -			retval = 2; -		} -		else { -			std::stringstream out; -			export_stl(&N, out); -			if (out.str().find("nan") != string::npos) { -				outfile << "Error: nan found\n"; -				retval = 2; -			} -			if (out.str().find("inf") != string::npos) { -				outfile << "Error: inf found\n"; -				retval = 2; -			} -		} -		outfile.close(); -	} - -	Builtins::instance(true); - -	return retval; -} | 
