/// Converts a test program name into a class-like name. /// /// \param test_program Test program from which to extract the name. /// /// \return A class-like representation of the test program's identifier. std::string drivers::junit_classname(const model::test_program& test_program) { std::string classname = test_program.relative_path().str(); std::replace(classname.begin(), classname.end(), '/', '.'); return classname; }
/// Puts a test program into the database. /// /// \pre The test program has not been put yet. /// \post The test program is stored into the database with a new identifier. /// /// \param test_program The test program to put. /// /// \return The identifier of the inserted test program. /// /// \throw error If there is any problem when talking to the database. int64_t store::write_transaction::put_test_program( const model::test_program& test_program) { try { const int64_t metadata_id = put_metadata( _pimpl->_db, test_program.get_metadata()); sqlite::statement stmt = _pimpl->_db.create_statement( "INSERT INTO test_programs (absolute_path, " " root, relative_path, test_suite_name, " " metadata_id, interface) " "VALUES (:absolute_path, :root, :relative_path, " " :test_suite_name, :metadata_id, :interface)"); stmt.bind(":absolute_path", test_program.absolute_path().str()); // TODO(jmmv): The root is not necessarily absolute. We need to ensure // that we can recover the absolute path of the test program. Maybe we // need to change the test_program to always ensure root is absolute? stmt.bind(":root", test_program.root().str()); stmt.bind(":relative_path", test_program.relative_path().str()); stmt.bind(":test_suite_name", test_program.test_suite_name()); stmt.bind(":metadata_id", metadata_id); stmt.bind(":interface", test_program.interface_name()); stmt.step_without_results(); return _pimpl->_db.last_insert_rowid(); } catch (const sqlite::error& e) { throw error(e.what()); } }