io.directories.search: fix traversal test case cross-platform issues.
on Linux and macOS mojave they entries might traverse (a,c,b) instead of (a,b.c) so we preserve the traversal method order but sort for cross-platform testing.windows-drag
							parent
							
								
									ada81e77f5
								
							
						
					
					
						commit
						b942caf3d7
					
				| 
						 | 
				
			
			@ -1,7 +1,7 @@
 | 
			
		|||
USING: combinators fry io.directories io.directories.hierarchy
 | 
			
		||||
io.directories.search io.files.unique io.pathnames kernel
 | 
			
		||||
namespaces sequences sorting splitting strings system
 | 
			
		||||
tools.test ;
 | 
			
		||||
io.directories.search io.files.unique io.pathnames kernel math
 | 
			
		||||
namespaces sequences sorting splitting splitting.monotonic
 | 
			
		||||
strings tools.test ;
 | 
			
		||||
 | 
			
		||||
{ t } [
 | 
			
		||||
    [
 | 
			
		||||
| 
						 | 
				
			
			@ -47,49 +47,42 @@ tools.test ;
 | 
			
		|||
    [ drop f ] find-up-to-root
 | 
			
		||||
] unit-test
 | 
			
		||||
 | 
			
		||||
os linux? [
 | 
			
		||||
[
 | 
			
		||||
    {
 | 
			
		||||
        V{ 1 2 3 2 3 1 2 3 2 3 1 2 3 2 3 }
 | 
			
		||||
        V{ 1 1 1 2 2 2 2 2 2 3 3 3 3 3 3 }
 | 
			
		||||
        "/a"
 | 
			
		||||
        "/a/a"
 | 
			
		||||
        "/a/a/a"
 | 
			
		||||
        "/a/b"
 | 
			
		||||
        "/a/b/a"
 | 
			
		||||
        "/b"
 | 
			
		||||
        "/b/a"
 | 
			
		||||
        "/b/a/a"
 | 
			
		||||
        "/b/b"
 | 
			
		||||
        "/b/b/a"
 | 
			
		||||
        "/c"
 | 
			
		||||
        "/c/a"
 | 
			
		||||
        "/c/a/a"
 | 
			
		||||
        "/c/b"
 | 
			
		||||
        "/c/b/a"
 | 
			
		||||
    }
 | 
			
		||||
    {
 | 
			
		||||
        "/a"
 | 
			
		||||
        "/b"
 | 
			
		||||
        "/c"
 | 
			
		||||
        "/a/a"
 | 
			
		||||
        "/a/b"
 | 
			
		||||
        "/b/a"
 | 
			
		||||
        "/b/b"
 | 
			
		||||
        "/c/a"
 | 
			
		||||
        "/c/b"
 | 
			
		||||
        "/a/a/a"
 | 
			
		||||
        "/a/b/a"
 | 
			
		||||
        "/b/a/a"
 | 
			
		||||
        "/b/b/a"
 | 
			
		||||
        "/c/a/a"
 | 
			
		||||
        "/c/b/a"
 | 
			
		||||
    }
 | 
			
		||||
] [
 | 
			
		||||
    {
 | 
			
		||||
        V{
 | 
			
		||||
            "/a"
 | 
			
		||||
            "/a/a"
 | 
			
		||||
            "/a/a/a"
 | 
			
		||||
            "/a/b"
 | 
			
		||||
            "/a/b/a"
 | 
			
		||||
            "/b"
 | 
			
		||||
            "/b/a"
 | 
			
		||||
            "/b/a/a"
 | 
			
		||||
            "/b/b"
 | 
			
		||||
            "/b/b/a"
 | 
			
		||||
            "/c"
 | 
			
		||||
            "/c/a"
 | 
			
		||||
            "/c/a/a"
 | 
			
		||||
            "/c/b"
 | 
			
		||||
            "/c/b/a"
 | 
			
		||||
        }
 | 
			
		||||
        V{
 | 
			
		||||
            "/a"
 | 
			
		||||
            "/b"
 | 
			
		||||
            "/c"
 | 
			
		||||
            "/a/a"
 | 
			
		||||
            "/a/b"
 | 
			
		||||
            "/b/a"
 | 
			
		||||
            "/b/b"
 | 
			
		||||
            "/c/a"
 | 
			
		||||
            "/c/b"
 | 
			
		||||
            "/a/a/a"
 | 
			
		||||
            "/a/b/a"
 | 
			
		||||
            "/b/a/a"
 | 
			
		||||
            "/b/b/a"
 | 
			
		||||
            "/c/a/a"
 | 
			
		||||
            "/c/b/a"
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
] if [
 | 
			
		||||
    [
 | 
			
		||||
        "a" make-directory
 | 
			
		||||
        "a/a" make-directory
 | 
			
		||||
| 
						 | 
				
			
			@ -110,16 +103,21 @@ os linux? [
 | 
			
		|||
        +depth-first+ traversal-method [
 | 
			
		||||
            "." recursive-directory-files
 | 
			
		||||
            current-directory get '[ _ ?head drop ] map
 | 
			
		||||
 | 
			
		||||
            ! preserve file traversal order, but sort
 | 
			
		||||
            ! alphabetically for cross-platform testing
 | 
			
		||||
            [ [ length ] bi@ < ] monotonic-split
 | 
			
		||||
            [ natural-sort ] map natural-sort concat
 | 
			
		||||
        ] with-variable
 | 
			
		||||
 | 
			
		||||
        +breadth-first+ traversal-method [
 | 
			
		||||
            "." recursive-directory-files
 | 
			
		||||
            current-directory get '[ _ ?head drop ] map
 | 
			
		||||
        ] with-variable
 | 
			
		||||
 | 
			
		||||
        ! Linux doesn't return alphabetic ordering
 | 
			
		||||
        os linux? [
 | 
			
		||||
            [ [ path-components length ] map ] bi@
 | 
			
		||||
        ] when
 | 
			
		||||
            ! preserve file traversal order, but sort
 | 
			
		||||
            ! alphabetically for cross-platform testing
 | 
			
		||||
            [ [ length ] bi@ = ] monotonic-split
 | 
			
		||||
            [ natural-sort ] map concat
 | 
			
		||||
        ] with-variable
 | 
			
		||||
    ] with-test-directory
 | 
			
		||||
] unit-test
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue