#compiler-plugin #integration #chrome #integration-tests #google #ppapi

nightly ppapi-tester

Compiler plugin to run integration tests in Google Chrome, where Pepper is available

1 unstable release

Uses old Rust 2015

0.0.1 Jan 24, 2015
0.0.0 Jan 24, 2015

#52 in #compiler-plugin

MPL-2.0 license

13KB
244 lines

Rusted Pepper

Rust idiomatic bindings to the Pepper API. This API is experimental. Expect it to change somewhat.

Documentation

Build

You'll need to build and install the PNaCl/NaCl Rust fork first. Then run:

export NACL_SDK_ROOT=path/to/pepper_39

Lastly, run:

cargo build --target le32-unknown-nacl

And profit!

Don't run build.sh. It is used to update FFI bindings.

Getting Started

Taken from pnacl-hello-world:

#![crate_name = "pnacl-hello-world"]
#![crate_type = "bin"]
#![no_main]

extern crate ppapi;

use std::collections::HashMap;

#[no_mangle]
#[cfg(target_os = "nacl")]
// Called when an instance is created.
// This is called from a new task. It is perfectly "safe" to panic!() here, or in
// any callback (though it will result in instance termination).
pub extern fn ppapi_instance_created(_instance: ppapi::Instance,
                                     _args: HashMap<String, String>) {
    println!("Hello, world!");
}

#[no_mangle]
pub extern fn ppapi_instance_destroyed() {
}

Pepper.js

Unsupported due to rust-ppapi's use of threads.


lib.rs:

Provides the pnacl_test! {} macro. Usage:

#[ppapi_test]
fn test_name(instance: ppapi::Instance, args: HashMap<String, String>) {
   // Put the test here.
}

In the future I plan allowing #[ppapi_test] on modules so callbacks can be tested as well.

No runtime deps