]> gitweb.factorcode.org Git - factor.git/commitdiff
python: Fix unit tests -- only test when library is loaded.
authorDoug Coleman <doug.coleman@gmail.com>
Mon, 19 Feb 2018 21:01:08 +0000 (15:01 -0600)
committerDoug Coleman <doug.coleman@gmail.com>
Mon, 19 Feb 2018 21:01:08 +0000 (15:01 -0600)
Also reformat some unit tests that have a quot as the stack output.

extra/python/python-tests.factor
extra/python/python.factor
extra/python/syntax/syntax-tests.factor

index 3ad05bb7171655458136025d10fa67f12e4132ec..bde08dff11d01073e42600a400b0e41c39e9a0c1 100644 (file)
@@ -4,7 +4,7 @@ python.ffi python.objects sequences strings tools.test ;
 IN: python
 
 : py-test ( result quot -- )
-    '[ _ with-destructors ] unit-test ; inline
+    '[ python-dll-loaded? [ _ [ _ with-destructors ] unit-test ] when ] call ; inline
 
 ! None testing
 { t } [
@@ -17,11 +17,12 @@ IN: python
         "sys" py-import "getrefcount" getattr
         <none> <1py-tuple> call-object py>
     ] with-destructors ;
+
 { t } [
     ! For some reason, the count increased by one the first time.
     count-none-refs drop
     count-none-refs count-none-refs =
-] unit-test
+] py-test
 
 { } [ { f f f } >py drop ] py-test
 
@@ -47,16 +48,16 @@ IN: python
 
 { } [ 123 <alien> unsteal-ref ] unit-test
 
-{ t } [ Py_GetVersion string? ] unit-test
+{ t } [ Py_GetVersion string? ] py-test
 
 [ "os" ] [ "os" py-import PyModule_GetName ] py-test
 
-[ t ] [
+{ t } [
     "os" py-import "getpid" getattr
     { } >py call-object py> 0 >
 ] py-test
 
-[ t ] [ Py_IsInitialized ] py-test
+{ t } [ Py_IsInitialized ] py-test
 
 ! py-importing
 [ { "ImportError" "No module named kolobi" f } ] [
@@ -66,22 +67,22 @@ IN: python
 ] py-test
 
 ! setattr
-[ 73 ] [
+{ 73 } [
     "sys" py-import "testit" [ 73 >py setattr ] [ getattr py> ] 2bi
 ] py-test
 
 ! Tuples
-[ 2 ] [ 2 <py-tuple> py-tuple-size ] py-test
+{ 2 } [ 2 <py-tuple> py-tuple-size ] py-test
 
 : py-datepy> ( py-obj -- timestamp )
     { "year" "month" "day" } [ getattr py> ] with map
     first3 0 0 0 instant <timestamp> ;
 
 ! Lists
-[ t ] [ V{ 4 8 15 16 23 42 } dup >py py> = ] py-test
+{ t } [ V{ 4 8 15 16 23 42 } dup >py py> = ] py-test
 
 ! ! Datetimes
-[ t ] [
+{ t } [
     [ py-datepy> ] "date" py-type-dispatch get set-at
     "datetime" py-import "date" getattr "today" getattr
     { } >py call-object py>
@@ -89,38 +90,38 @@ IN: python
 ] py-test
 
 ! Unicode
-[ "غثههح" ] [
+{ "غثههح" } [
     "os.path" py-import "basename" getattr { "غثههح" } >py call-object py>
 ] py-test
 
 ! Instance variables
-[ 7 ] [
+{ 7 } [
     "datetime" py-import "timedelta" getattr
     { 7 } >py call-object "days" getattr py>
 ] py-test
 
 ! Create a dictonary
-[ 0 ] [ <py-dict> py-dict-size ] py-test
+{ 0 } [ <py-dict> py-dict-size ] py-test
 
 ! Dictionary with object keys
-[ 1 ] [
+{ 1 } [
     <py-dict> dup 0 >py 33 >py py-dict-set-item py-dict-size
 ] py-test
 
 ! Dictionary with string keys
-[ 1 ] [
+{ 1 } [
     <py-dict> [ "foo" 33 >py py-dict-set-item-string ] [ py-dict-size ] bi
 ] py-test
 
 ! Get dictionary items
-[ 33 ] [
+{ 33 } [
     <py-dict> "tjaba"
     [ 33 >py  py-dict-set-item-string ]
     [ py-dict-get-item-string py> ] 2bi
 ] py-test
 
 ! Nest dicts
-[ 0 ] [
+{ 0 } [
     <py-dict> "foo"
     [ <py-dict> py-dict-set-item-string ]
     [ py-dict-get-item-string ] 2bi
@@ -128,20 +129,21 @@ IN: python
 ] py-test
 
 ! Nested tuples
-[ 3 ] [
+{ 3 } [
     1 <py-tuple> dup 0 3 <py-tuple> py-tuple-set-item
     0 py-tuple-get-item py-tuple-size
 ] py-test
 
 ! Round tripping!
-[ { "foo" { 99 77 } } ] [ { "foo" { 99 77 } } >py py> ] py-test
+{ { "foo" { 99 77 } } }
+[ { "foo" { 99 77 } } >py py> ] py-test
 
-[ H{ { "foo" "bar" } { 3 4 } } ] [
+{ H{ { "foo" "bar" } { 3 4 } } } [
     H{ { "foo" "bar" } { 3 4 } } >py py>
 ] py-test
 
 ! Kwargs
-[ 2014 10 22 ] [
+{ 2014 10 22 } [
     "datetime" py-import "date" getattr
     { } >py H{ { "year" 2014 } { "month" 10 } { "day" 22 } } >py
     call-object-full py>
@@ -149,7 +151,7 @@ IN: python
 ] py-test
 
 ! Modules
-[ t ] [
+{ t } [
     "os" py-import PyModule_GetDict dup Py_IncRef &Py_DecRef py-dict-size 100 >
 ] py-test
 
index 68e3b4f77607bd858f5b1a7ac96f4a4b95a38af6..6afacde05bba7f66352bab0e90fcfda025981e13 100644 (file)
@@ -116,5 +116,8 @@ ERROR: missing-type type ;
 : with-quot>py-cfunction ( alien quot -- )
     '[ <py-cfunction> @ ] with-callback ; inline
 
-[ "PyIsInitialized" "python2.7" library-dll dlsym? [ py-initialize ] when ] "python" add-startup-hook
-[ py-finalize ] "python" add-shutdown-hook
+: python-dll-loaded? ( -- ? )
+    "PyIsInitialized" "python2.7" library-dll dlsym? ;
+
+[ python-dll-loaded? [ py-initialize ] when ] "python" add-startup-hook
+[ python-dll-loaded? [ py-finalize ] when ] "python" add-shutdown-hook
index 2350b941da5fc26cd628e521c0795690116f8041..69f07e02c07b95984b7e78db09e951a580f77660 100644 (file)
@@ -8,7 +8,10 @@ QUALIFIED-WITH: sequences s
 IN: python.syntax.tests
 
 : py-test ( result quot -- )
-    '[ _ with-destructors ] unit-test ; inline
+    '[ python-dll-loaded? [ _ [ _ with-destructors ] unit-test ] when ] call ; inline
+
+: long-py-test ( result quot -- )
+    '[ python-dll-loaded? [ _ [ _ with-destructors ] long-unit-test ] when ] call ; inline
 
 { t } [ getpid py> integer? ] py-test
 
@@ -22,22 +25,22 @@ IN: python.syntax.tests
 [ ] [ 0 >py sleep ] py-test
 
 ! Module variables are bound as zero-arg functions
-[ t ] [ $path py> s:sequence? ] py-test
+{ t } [ $path py> s:sequence? ] py-test
 
-[ t ] [ $path len int py> 5 > ] py-test
+{ t } [ $path len int py> 5 > ] py-test
 
 [ 10 ] [ 10 >py range len py> ] py-test
 
 ! Callables
-[ t ] [
+{ t } [
     "os" py-import "getpid" getattr
     [ callable ] [ PyCallable_Check 1 = ] bi and
 ] py-test
 
 ! Reference counting
-[ 1 ] [ 3 <py-tuple> getrefcount py> ] py-test
+{ 1 } [ 3 <py-tuple> getrefcount py> ] py-test
 
-[ -1 ] [
+{ -1 } [
     H{ { "foo" 33 } { "bar" 44 } } >py
     [ "foo" py-dict-get-item-string getrefcount py> ]
     [
@@ -48,7 +51,7 @@ IN: python.syntax.tests
     [ "foo" py-dict-get-item-string getrefcount py> ] tri -
 ] py-test
 
-[ -1 ] [
+{ -1 } [
     "abcd" >py <1py-tuple>
     [ 0 py-tuple-get-item getrefcount py> ]
     [
@@ -63,14 +66,14 @@ IN: python.syntax.tests
     [ always-destructors get [ alien>> = ] with s:count ] bi =
 ] py-test
 
-[ t ] [
+{ t } [
     "python-file" temp-file >py "wb" >py open
     [ tell ] [ fileno ] [ close ] tri
     [ py> integer? ] both?
 ] py-test
 
 ! Method chaining
-[ t ] [
+{ t } [
     "hello there" >py title 20 >py zfill "00" >py startswith py>
 ] py-test
 
@@ -85,10 +88,10 @@ PY-METHODS: func =>
 PY-METHODS: code =>
     co_argcount ( code -- n ) ;
 
-[ 1 ] [ $splitext $func_code $co_argcount py> ] py-test
+{ 1 } [ $splitext $func_code $co_argcount py> ] py-test
 
 ! Change sys.path
-[ t ] [
+{ t } [
     $path "test" >py [ append ] [ drop py> ] [ remove ] 2tri
     "test" swap in?
 ] py-test
@@ -99,7 +102,7 @@ PY-METHODS: code =>
 ] py-test
 
 ! Kwargs in methods
-[ t ] [
+{ t } [
     [
         ArgumentParser dup
         "--foo" >py H{ { "help" "badger" } } >py add_argument
@@ -118,14 +121,14 @@ PY-METHODS: code =>
     100000 [
         [ [ 987 >py basename drop ] ignore-errors ] with-destructors
     ] times
-] long-unit-test
+] long-py-test
 
 ! Another leaky test
 { } [
     1000000 [
         [ { 9 8 7 6 5 4 3 2 1 } >py ] with-destructors drop
     ] times
-] long-unit-test
+] long-py-test
 
 ! Working with types
 PY-QUALIFIED-FROM: types => UnicodeType ( -- ) ;