(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_description) op: Equal rhs: {(SQ <'Clone repositories and store files in Mock LFS'>)} spids: [4] ) ] spids: [4] ) (C {(.)} {(./lib-git-p4.sh)}) (FuncDef name: test_file_is_not_in_mock_lfs body: (BraceGroup children: [ (AndOr children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FILE) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [23] ) ] spids: [23] ) (AndOr children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:CONTENT) op: Equal rhs: {(DQ ($ VSub_Number '$2'))} spids: [31] ) ] spids: [31] ) (AndOr children: [ (SimpleCommand words: [{(echo)} {(DQ ($ VSub_Name '$CONTENT'))}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(expect_content)} spids: [45] ) ] ) (AndOr children: [ (C {(test_path_is_file)} {(DQ ($ VSub_Name '$FILE'))}) (C {(test_cmp)} {(expect_content)} {(DQ ($ VSub_Name '$FILE'))}) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] spids: [20] ) spids: [15 19] ) (FuncDef name: test_file_is_in_mock_lfs body: (BraceGroup children: [ (AndOr children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FILE) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [79] ) ] spids: [79] ) (AndOr children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:CONTENT) op: Equal rhs: {(DQ ($ VSub_Number '$2'))} spids: [87] ) ] spids: [87] ) (AndOr children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:LOCAL_STORAGE) op: Equal rhs: {(DQ (.git/mock-storage/local/) ($ VSub_Name '$CONTENT'))} spids: [95] ) ] spids: [95] ) (AndOr children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:SERVER_STORAGE) op: Equal rhs: {(DQ (.git/mock-storage/remote/) ($ VSub_Name '$CONTENT'))} spids: [104] ) ] spids: [104] ) (AndOr children: [ (SimpleCommand words: [{(echo)} {(DQ (pointer-) ($ VSub_Name '$CONTENT'))}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(expect_pointer)} spids: [120] ) ] ) (AndOr children: [ (SimpleCommand words: [{(echo)} {(DQ ($ VSub_Name '$CONTENT'))}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(expect_content)} spids: [132] ) ] ) (AndOr children: [ (C {(test_path_is_file)} {(DQ ($ VSub_Name '$FILE'))}) (AndOr children: [ (C {(test_path_is_file)} {(DQ ($ VSub_Name '$LOCAL_STORAGE'))} ) (AndOr children: [ (C {(test_path_is_file)} {(DQ ($ VSub_Name '$SERVER_STORAGE'))} ) (AndOr children: [ (C {(test_cmp)} {(expect_pointer)} {(DQ ($ VSub_Name '$FILE'))} ) (AndOr children: [ (C {(test_cmp)} {(expect_content)} {(DQ ($ VSub_Name '$LOCAL_STORAGE'))} ) (C {(test_cmp)} {(expect_content)} {(DQ ($ VSub_Name '$SERVER_STORAGE'))} ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] spids: [76] ) spids: [71 75] ) (FuncDef name: test_file_is_deleted_in_mock_lfs body: (BraceGroup children: [ (AndOr children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FILE) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [206] ) ] spids: [206] ) (AndOr children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:CONTENT) op: Equal rhs: {(DQ ($ VSub_Number '$2'))} spids: [214] ) ] spids: [214] ) (AndOr children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:LOCAL_STORAGE) op: Equal rhs: {(DQ (.git/mock-storage/local/) ($ VSub_Name '$CONTENT'))} spids: [222] ) ] spids: [222] ) (AndOr children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:SERVER_STORAGE) op: Equal rhs: {(DQ (.git/mock-storage/remote/) ($ VSub_Name '$CONTENT'))} spids: [231] ) ] spids: [231] ) (AndOr children: [ (SimpleCommand words: [{(echo)} {(DQ (pointer-) ($ VSub_Name '$CONTENT'))}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(expect_pointer)} spids: [247] ) ] ) (AndOr children: [ (SimpleCommand words: [{(echo)} {(DQ ($ VSub_Name '$CONTENT'))}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(expect_content)} spids: [259] ) ] ) (AndOr children: [ (C {(test_path_is_missing)} {(DQ ($ VSub_Name '$FILE'))}) (AndOr children: [ (C {(test_path_is_file)} {(DQ ($ VSub_Name '$LOCAL_STORAGE'))} ) (AndOr children: [ (C {(test_path_is_file)} {(DQ ($ VSub_Name '$SERVER_STORAGE'))} ) (AndOr children: [ (C {(test_cmp)} {(expect_content)} {(DQ ($ VSub_Name '$LOCAL_STORAGE'))} ) (C {(test_cmp)} {(expect_content)} {(DQ ($ VSub_Name '$SERVER_STORAGE'))} ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] spids: [203] ) spids: [198 202] ) (FuncDef name: test_file_count_in_dir body: (BraceGroup children: [ (AndOr children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:DIR) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [322] ) ] spids: [322] ) (AndOr children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:EXPECTED_COUNT) op: Equal rhs: {(DQ ($ VSub_Number '$2'))} spids: [330] ) ] spids: [330] ) (AndOr children: [ (SimpleCommand words: [{(find)} {(DQ ($ VSub_Name '$DIR'))} {(-type)} {(f)}] redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(actual)} spids:[348])] ) (C {(test_line_count)} {(Lit_Other '=')} {($ VSub_Name '$EXPECTED_COUNT')} {(actual)} ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] spids: [319] ) spids: [314 318] ) (C {(test_expect_success)} {(SQ <'start p4d'>)} {(SQ <'\n'> <'\tstart_p4d\n'>)}) (C {(test_expect_success)} {(SQ <'Create repo with binary files'>)} { (SQ <'\n'> <'\tclient_view "//depot/... //client/..." &&\n'> <'\t(\n'> <'\t\tcd "$cli" &&\n'> <'\n'> <'\t\techo "content 1 txt 23 bytes" >file1.txt &&\n'> <'\t\tp4 add file1.txt &&\n'> <'\t\techo "content 2-3 bin 25 bytes" >file2.dat &&\n'> <'\t\tp4 add file2.dat &&\n'> <'\t\tp4 submit -d "Add text and binary file" &&\n'> <'\n'> <'\t\tmkdir "path with spaces" &&\n'> <'\t\techo "content 2-3 bin 25 bytes" >"path with spaces/file3.bin" &&\n'> <'\t\tp4 add "path with spaces/file3.bin" &&\n'> <'\t\tp4 submit -d "Add another binary file with same content and spaces in path" &&\n'> <'\n'> <'\t\techo "content 4 bin 26 bytes XX" >file4.bin &&\n'> <'\t\tp4 add file4.bin &&\n'> <'\t\tp4 submit -d "Add another binary file with different content"\n'> <'\t)\n'> ) } ) (C {(test_expect_success)} {(SQ <'Store files in Mock LFS based on size (>24 bytes)'>)} { (SQ <'\n'> <'\tclient_view "//depot/... //client/..." &&\n'> <'\ttest_when_finished cleanup_git &&\n'> <'\t(\n'> <'\t\tcd "$git" &&\n'> <'\t\tgit init . &&\n'> <'\t\tgit config git-p4.useClientSpec true &&\n'> <'\t\tgit config git-p4.largeFileSystem MockLFS &&\n'> <'\t\tgit config git-p4.largeFileThreshold 24 &&\n'> <'\t\tgit config git-p4.largeFilePush True &&\n'> <'\t\tgit p4 clone --destination="$git" //depot@all &&\n'> <'\n'> <'\t\ttest_file_is_not_in_mock_lfs file1.txt "content 1 txt 23 bytes" &&\n'> <'\t\ttest_file_is_in_mock_lfs file2.dat "content 2-3 bin 25 bytes" &&\n'> <'\t\ttest_file_is_in_mock_lfs "path with spaces/file3.bin" "content 2-3 bin 25 bytes" &&\n'> <'\t\ttest_file_is_in_mock_lfs file4.bin "content 4 bin 26 bytes XX" &&\n'> <'\n'> <'\t\ttest_file_count_in_dir ".git/mock-storage/local" 2 &&\n'> <'\t\ttest_file_count_in_dir ".git/mock-storage/remote" 2\n'> <'\t)\n'> ) } ) (C {(test_expect_success)} {(SQ <'Store files in Mock LFS based on extension (dat)'>)} { (SQ <'\n'> <'\tclient_view "//depot/... //client/..." &&\n'> <'\ttest_when_finished cleanup_git &&\n'> <'\t(\n'> <'\t\tcd "$git" &&\n'> <'\t\tgit init . &&\n'> <'\t\tgit config git-p4.useClientSpec true &&\n'> <'\t\tgit config git-p4.largeFileSystem MockLFS &&\n'> <'\t\tgit config git-p4.largeFileExtensions dat &&\n'> <'\t\tgit config git-p4.largeFilePush True &&\n'> <'\t\tgit p4 clone --destination="$git" //depot@all &&\n'> <'\n'> <'\t\ttest_file_is_not_in_mock_lfs file1.txt "content 1 txt 23 bytes" &&\n'> <'\t\ttest_file_is_in_mock_lfs file2.dat "content 2-3 bin 25 bytes" &&\n'> <'\t\ttest_file_is_not_in_mock_lfs "path with spaces/file3.bin" "content 2-3 bin 25 bytes" &&\n'> <'\t\ttest_file_is_not_in_mock_lfs file4.bin "content 4 bin 26 bytes XX" &&\n'> <'\n'> <'\t\ttest_file_count_in_dir ".git/mock-storage/local" 1 &&\n'> <'\t\ttest_file_count_in_dir ".git/mock-storage/remote" 1\n'> <'\t)\n'> ) } ) (C {(test_expect_success)} { (SQ < 'Store files in Mock LFS based on extension (dat) and use git p4 sync and no client spec' > ) } { (SQ <'\n'> <'\ttest_when_finished cleanup_git &&\n'> <'\t(\n'> <'\t\tcd "$git" &&\n'> <'\t\tgit init &&\n'> <'\t\tgit config git-p4.useClientSpec true &&\n'> <'\t\tgit config git-p4.largeFileSystem MockLFS &&\n'> <'\t\tgit config git-p4.largeFileExtensions dat &&\n'> <'\t\tgit config git-p4.largeFilePush True &&\n'> <'\t\tgit p4 sync //depot &&\n'> <'\t\tgit checkout p4/master &&\n'> <'\n'> <'\t\ttest_file_is_not_in_mock_lfs file1.txt "content 1 txt 23 bytes" &&\n'> <'\t\ttest_file_is_in_mock_lfs file2.dat "content 2-3 bin 25 bytes" &&\n'> < '\t\ttest_file_is_not_in_mock_lfs "path with spaces/file3.bin" "content 2-3 bin 25 bytes" &&\n' > <'\t\ttest_file_is_not_in_mock_lfs file4.bin "content 4 bin 26 bytes XX" &&\n'> <'\n'> <'\t\ttest_file_count_in_dir ".git/mock-storage/local" 1 &&\n'> <'\t\ttest_file_count_in_dir ".git/mock-storage/remote" 1\n'> <'\t)\n'> ) } ) (C {(test_expect_success)} {(SQ <'Remove file from repo and store files in Mock LFS based on size (>24 bytes)'>)} { (SQ <'\n'> <'\tclient_view "//depot/... //client/..." &&\n'> <'\t(\n'> <'\t\tcd "$cli" &&\n'> <'\t\tp4 delete file4.bin &&\n'> <'\t\tp4 submit -d "Remove file"\n'> <'\t) &&\n'> <'\n'> <'\tclient_view "//depot/... //client/..." &&\n'> <'\ttest_when_finished cleanup_git &&\n'> <'\t(\n'> <'\t\tcd "$git" &&\n'> <'\t\tgit init . &&\n'> <'\t\tgit config git-p4.useClientSpec true &&\n'> <'\t\tgit config git-p4.largeFileSystem MockLFS &&\n'> <'\t\tgit config git-p4.largeFileThreshold 24 &&\n'> <'\t\tgit config git-p4.largeFilePush True &&\n'> <'\t\tgit p4 clone --destination="$git" //depot@all &&\n'> <'\n'> <'\t\ttest_file_is_not_in_mock_lfs file1.txt "content 1 txt 23 bytes" &&\n'> <'\t\ttest_file_is_in_mock_lfs file2.dat "content 2-3 bin 25 bytes" &&\n'> <'\t\ttest_file_is_in_mock_lfs "path with spaces/file3.bin" "content 2-3 bin 25 bytes" &&\n'> <'\t\ttest_file_is_deleted_in_mock_lfs file4.bin "content 4 bin 26 bytes XX" &&\n'> <'\n'> <'\t\ttest_file_count_in_dir ".git/mock-storage/local" 2 &&\n'> <'\t\ttest_file_count_in_dir ".git/mock-storage/remote" 2\n'> <'\t)\n'> ) } ) (C {(test_expect_success)} {(SQ <'Run git p4 submit in repo configured with large file system'>)} { (SQ <'\n'> <'\tclient_view "//depot/... //client/..." &&\n'> <'\ttest_when_finished cleanup_git &&\n'> <'\t(\n'> <'\t\tcd "$git" &&\n'> <'\t\tgit init . &&\n'> <'\t\tgit config git-p4.useClientSpec true &&\n'> <'\t\tgit config git-p4.largeFileSystem MockLFS &&\n'> <'\t\tgit config git-p4.largeFileThreshold 24 &&\n'> <'\t\tgit config git-p4.largeFilePush True &&\n'> <'\t\tgit p4 clone --destination="$git" //depot@all &&\n'> <'\n'> <'\t\ttest_must_fail git p4 submit\n'> <'\t)\n'> ) } ) (C {(test_expect_success)} {(SQ <'kill p4d'>)} {(SQ <'\n'> <'\tkill_p4d\n'>)}) (C {(test_done)}) ] )