drying tests
This commit is contained in:
parent
1732cc7a40
commit
86db5c08fc
@ -95,3 +95,40 @@ pub fn register(reg: &mut rustc_plugin::Registry) {
|
|||||||
|
|
||||||
reg.register_attribute("ipc".to_owned(), AttributeType::Normal);
|
reg.register_attribute("ipc".to_owned(), AttributeType::Normal);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Debug)]
|
||||||
|
pub enum Error { InvalidFileName, ExpandFailure }
|
||||||
|
|
||||||
|
pub fn derive_ipc(src_path: &str) -> Result<(), Error> {
|
||||||
|
use std::env;
|
||||||
|
use std::path::{Path, PathBuf};
|
||||||
|
|
||||||
|
let out_dir = env::var_os("OUT_DIR").unwrap();
|
||||||
|
let file_name = try!(PathBuf::from(src_path).file_name().ok_or(Error::InvalidFileName).map(|val| val.to_str().unwrap().to_owned()));
|
||||||
|
|
||||||
|
let mut intermediate_file_name = file_name.clone();
|
||||||
|
intermediate_file_name.push_str("rpc.in");
|
||||||
|
|
||||||
|
let intermediate_path = Path::new(&out_dir).join(&intermediate_file_name);
|
||||||
|
let final_path = Path::new(&out_dir).join(&file_name);
|
||||||
|
|
||||||
|
{
|
||||||
|
let mut registry = syntex::Registry::new();
|
||||||
|
register(&mut registry);
|
||||||
|
if let Err(_) = registry.expand("", &Path::new(src_path), &intermediate_path) {
|
||||||
|
// will be reported by compiler
|
||||||
|
return Err(Error::ExpandFailure)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
let mut registry = syntex::Registry::new();
|
||||||
|
register(&mut registry);
|
||||||
|
if let Err(_) = registry.expand("", &intermediate_path, &final_path) {
|
||||||
|
// will be reported by compiler
|
||||||
|
return Err(Error::ExpandFailure)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
@ -16,4 +16,4 @@
|
|||||||
|
|
||||||
#![allow(dead_code, unused_assignments, unused_variables)] // codegen issues
|
#![allow(dead_code, unused_assignments, unused_variables)] // codegen issues
|
||||||
|
|
||||||
include!(concat!(env!("OUT_DIR"), "/binary.rs"));
|
include!(concat!(env!("OUT_DIR"), "/binary.rs.in"));
|
||||||
|
@ -14,76 +14,11 @@
|
|||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with Parity. If not, see <http://www.gnu.org/licenses/>.
|
// along with Parity. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
extern crate syntex;
|
|
||||||
extern crate ethcore_ipc_codegen as codegen;
|
extern crate ethcore_ipc_codegen as codegen;
|
||||||
|
|
||||||
use std::env;
|
|
||||||
use std::path::Path;
|
|
||||||
use std::process::exit;
|
|
||||||
|
|
||||||
pub fn main() {
|
pub fn main() {
|
||||||
let out_dir = env::var_os("OUT_DIR").unwrap();
|
codegen::derive_ipc("nested.rs.in").unwrap();
|
||||||
|
codegen::derive_ipc("service.rs.in").unwrap();
|
||||||
// rpc pass
|
codegen::derive_ipc("with_attrs.rs.in").unwrap();
|
||||||
if {
|
codegen::derive_ipc("binary.rs.in").unwrap();
|
||||||
let src = Path::new("nested.rs.in");
|
|
||||||
let dst = Path::new(&out_dir).join("nested_ipc.rs");
|
|
||||||
let mut registry = syntex::Registry::new();
|
|
||||||
codegen::register(&mut registry);
|
|
||||||
registry.expand("", &src, &dst).is_ok()
|
|
||||||
}
|
|
||||||
// serialization pass
|
|
||||||
{
|
|
||||||
let src = Path::new(&out_dir).join("nested_ipc.rs");
|
|
||||||
let dst = Path::new(&out_dir).join("nested_cg.rs");
|
|
||||||
let mut registry = syntex::Registry::new();
|
|
||||||
codegen::register(&mut registry);
|
|
||||||
registry.expand("", &src, &dst).unwrap();
|
|
||||||
}
|
|
||||||
|
|
||||||
// rpc pass
|
|
||||||
if {
|
|
||||||
let src = Path::new("service.rs.in");
|
|
||||||
let dst = Path::new(&out_dir).join("service_ipc.rs");
|
|
||||||
let mut registry = syntex::Registry::new();
|
|
||||||
codegen::register(&mut registry);
|
|
||||||
registry.expand("", &src, &dst).is_ok()
|
|
||||||
}
|
|
||||||
// serialization pass
|
|
||||||
{
|
|
||||||
let src = Path::new(&out_dir).join("service_ipc.rs");
|
|
||||||
let dst = Path::new(&out_dir).join("service_cg.rs");
|
|
||||||
let mut registry = syntex::Registry::new();
|
|
||||||
codegen::register(&mut registry);
|
|
||||||
registry.expand("", &src, &dst).unwrap();
|
|
||||||
}
|
|
||||||
|
|
||||||
// rpc pass
|
|
||||||
if {
|
|
||||||
let src = Path::new("with_attrs.rs.in");
|
|
||||||
let dst = Path::new(&out_dir).join("with_attrs_ipc.rs");
|
|
||||||
let mut registry = syntex::Registry::new();
|
|
||||||
codegen::register(&mut registry);
|
|
||||||
registry.expand("", &src, &dst).is_ok()
|
|
||||||
}
|
|
||||||
// serialization pass
|
|
||||||
{
|
|
||||||
let src = Path::new(&out_dir).join("with_attrs_ipc.rs");
|
|
||||||
let dst = Path::new(&out_dir).join("with_attrs_cg.rs");
|
|
||||||
let mut registry = syntex::Registry::new();
|
|
||||||
codegen::register(&mut registry);
|
|
||||||
registry.expand("", &src, &dst).unwrap();
|
|
||||||
}
|
|
||||||
|
|
||||||
// rpc pass
|
|
||||||
{
|
|
||||||
let src = Path::new("binary.rs.in");
|
|
||||||
let dst = Path::new(&out_dir).join("binary.rs");
|
|
||||||
let mut registry = syntex::Registry::new();
|
|
||||||
codegen::register(&mut registry);
|
|
||||||
if let Err(err_msg) = registry.expand("", &src, &dst) {
|
|
||||||
println!("error: {}", err_msg);
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -15,4 +15,4 @@
|
|||||||
// along with Parity. If not, see <http://www.gnu.org/licenses/>.
|
// along with Parity. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
#![allow(dead_code, unused_assignments, unused_variables)] // codegen issues
|
#![allow(dead_code, unused_assignments, unused_variables)] // codegen issues
|
||||||
include!(concat!(env!("OUT_DIR"), "/nested_cg.rs"));
|
include!(concat!(env!("OUT_DIR"), "/nested.rs.in"));
|
||||||
|
@ -15,4 +15,4 @@
|
|||||||
// along with Parity. If not, see <http://www.gnu.org/licenses/>.
|
// along with Parity. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
#![allow(dead_code, unused_assignments, unused_variables)] // codegen issues
|
#![allow(dead_code, unused_assignments, unused_variables)] // codegen issues
|
||||||
include!(concat!(env!("OUT_DIR"), "/service_cg.rs"));
|
include!(concat!(env!("OUT_DIR"), "/service.rs.in"));
|
||||||
|
@ -15,4 +15,4 @@
|
|||||||
// along with Parity. If not, see <http://www.gnu.org/licenses/>.
|
// along with Parity. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
#![allow(dead_code, unused_assignments, unused_variables)] // codegen issues
|
#![allow(dead_code, unused_assignments, unused_variables)] // codegen issues
|
||||||
include!(concat!(env!("OUT_DIR"), "/with_attrs_cg.rs"));
|
include!(concat!(env!("OUT_DIR"), "/with_attrs.rs.in"));
|
||||||
|
Loading…
Reference in New Issue
Block a user