@ -4,6 +4,9 @@ extern crate wasm_pack;
use std ::fs ;
use crate ::utils ::{ self , fixture } ;
use assert_cmd ::prelude ::* ;
use predicates ::boolean ::PredicateBooleanExt ;
use wasm_pack ::manifest ::CrateData ;
use wasm_pack ::readme ;
#[ test ]
@ -11,8 +14,9 @@ fn it_copies_a_readme_default_path() {
let fixture = fixture ::js_hello_world ( ) ;
let out_dir = fixture . path . join ( "pkg" ) ;
fs ::create_dir ( & out_dir ) . expect ( "should create pkg directory OK" ) ;
let crate_data = CrateData ::new ( & fixture . path , None ) . unwrap ( ) ;
assert! ( readme ::copy_from_crate ( & fixture . path , & out_dir ) . is_ok ( ) ) ;
assert! ( readme ::copy_from_crate ( & crate_data , & fixture . path , & out_dir ) . is_ok ( ) ) ;
let crate_readme_path = fixture . path . join ( "README.md" ) ;
let pkg_readme_path = out_dir . join ( "README.md" ) ;
@ -32,12 +36,51 @@ fn it_copies_a_readme_default_path() {
#[ test ]
fn it_copies_a_readme_provided_path ( ) {
let fixture = fixture ::js_hello_world ( ) ;
let fixture = fixture ::Fixture ::new ( ) ;
fixture
. hello_world_src_lib ( )
. file (
"Cargo.toml" ,
r #"
[ package ]
authors = [ "The wasm-pack developers" ]
description = "so awesome rust+wasm package"
license = "WTFPL"
name = "js-hello-world"
readme = "docs/README.md"
repository = "https://github.com/rustwasm/wasm-pack.git"
version = "0.1.0"
[ lib ]
crate - type = [ "cdylib" ]
[ dependencies ]
# Note that this uses and ` = ` dependency because there are
# various tests which assert that the version of wasm
# bindgen downloaded is what we expect , and if ` = ` is
# removed then it will download whatever the newest version
# of wasm - bindgen is which may not be what ' s listed here .
wasm - bindgen = "=0.2.74"
[ dev - dependencies ]
wasm - bindgen - test = "0.3"
" #,
)
. file (
"docs/README.md" ,
r #"
# Fixture !
> an example rust -> wasm project
" #,
) ;
let crate_docs_dir = fixture . path . join ( "docs" ) ;
let out_dir = fixture . path . join ( "pkg" ) ;
fs ::create_dir ( & out_dir ) . expect ( "should create pkg directory OK" ) ;
let crate_data = CrateData ::new ( & fixture . path , None ) . unwrap ( ) ;
assert! ( readme ::copy_from_crate ( & fixture . path , & out_dir ) . is_ok ( ) ) ;
let crate_readme_path = fixture . path . join ( "README.md" ) ;
assert! ( readme ::copy_from_crate ( & crate_data , & fixture . path , & out_dir ) . is_ok ( ) ) ;
let crate_readme_path = crate_docs_dir . join ( "README.md" ) ;
let pkg_readme_path = out_dir . join ( "README.md" ) ;
println! (
"wasm-pack: should have copied README.md from '{}' to '{}'" ,
@ -51,3 +94,42 @@ fn it_copies_a_readme_provided_path() {
let pkg_readme = utils ::file ::read_file ( & pkg_readme_path ) . unwrap ( ) ;
assert_eq! ( crate_readme , pkg_readme ) ;
}
#[ test ]
fn it_ignores_a_disabled_readme ( ) {
let fixture = fixture ::Fixture ::new ( ) ;
fixture
. hello_world_src_lib ( )
. file (
"Cargo.toml" ,
r #"
[ package ]
authors = [ "The wasm-pack developers" ]
description = "so awesome rust+wasm package"
name = "js-hello-world"
readme = false
repository = "https://github.com/rustwasm/wasm-pack.git"
version = "0.1.0"
[ lib ]
crate - type = [ "cdylib" ]
[ dependencies ]
# Note that this uses and ` = ` dependency because there are
# various tests which assert that the version of wasm
# bindgen downloaded is what we expect , and if ` = ` is
# removed then it will download whatever the newest version
# of wasm - bindgen is which may not be what ' s listed here .
wasm - bindgen = "=0.2.74"
[ dev - dependencies ]
wasm - bindgen - test = "0.3"
" #,
)
. license ( )
. wasm_pack ( )
. arg ( "build" )
. assert ( )
. success ( )
. stderr ( predicates ::str ::contains ( "origin crate has no README" ) . not ( ) ) ;
}