{"action":"created","comment":{"url":"https://api.github.com/repos/dotnet/coreclr/pulls/comments/39796249","id":39796249,"diff_hunk":"@@ -38,16 +38,35 @@ PAL_TEST_LIST=$PWD/paltestlist.txt\n cd $OLDPWD\n echo The list of PAL tests to run will be read from $PAL_TEST_LIST\n \n-# Create path to a folder where PAL tests will store their output\n-# First check if the output folder was passed as a parameter to the script.\n-# It is supposed be the second parameter so check if we have more than 1 argument.\n+# Create the test output root directory\n+mkdir -p /tmp/PalTestOutput","path":"src/pal/tests/palsuite/runpaltests.sh","position":8,"original_position":8,"commit_id":"e0c013e2af50bace4004e856cba67fcbec01fc00","original_commit_id":"e0c013e2af50bace4004e856cba67fcbec01fc00","user":{"login":"kouvel","id":13499639,"avatar_url":"https://avatars.githubusercontent.com/u/13499639?v=3","gravatar_id":"","url":"https://api.github.com/users/kouvel","html_url":"https://github.com/kouvel","followers_url":"https://api.github.com/users/kouvel/followers","following_url":"https://api.github.com/users/kouvel/following{/other_user}","gists_url":"https://api.github.com/users/kouvel/gists{/gist_id}","starred_url":"https://api.github.com/users/kouvel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kouvel/subscriptions","organizations_url":"https://api.github.com/users/kouvel/orgs","repos_url":"https://api.github.com/users/kouvel/repos","events_url":"https://api.github.com/users/kouvel/events{/privacy}","received_events_url":"https://api.github.com/users/kouvel/received_events","type":"User","site_admin":false},"body":"This isn't the directory tests actually use as their working folder. It's just the root directory under which a unique temp directory is created below with mktemp. The PalTestOutput directory needs to exist for mktemp to succeed creating a directory under it. Otherwise, I was just preserving the previous behavior to delete PalTestOutput if it exists but is not a directory, which shouldn't happen more than once, and typically should never happen.","created_at":"2015-09-17T20:42:19Z","updated_at":"2015-09-17T20:42:19Z","html_url":"https://github.com/dotnet/coreclr/pull/1574#discussion_r39796249","pull_request_url":"https://api.github.com/repos/dotnet/coreclr/pulls/1574","_links":{"self":{"href":"https://api.github.com/repos/dotnet/coreclr/pulls/comments/39796249"},"html":{"href":"https://github.com/dotnet/coreclr/pull/1574#discussion_r39796249"},"pull_request":{"href":"https://api.github.com/repos/dotnet/coreclr/pulls/1574"}}},"pull_request":{"url":"https://api.github.com/repos/dotnet/coreclr/pulls/1574","id":45236151,"html_url":"https://github.com/dotnet/coreclr/pull/1574","diff_url":"https://github.com/dotnet/coreclr/pull/1574.diff","patch_url":"https://github.com/dotnet/coreclr/pull/1574.patch","issue_url":"https://api.github.com/repos/dotnet/coreclr/issues/1574","number":1574,"state":"open","locked":false,"title":"Fix some frequently failing PAL tests","user":{"login":"kouvel","id":13499639,"avatar_url":"https://avatars.githubusercontent.com/u/13499639?v=3","gravatar_id":"","url":"https://api.github.com/users/kouvel","html_url":"https://github.com/kouvel","followers_url":"https://api.github.com/users/kouvel/followers","following_url":"https://api.github.com/users/kouvel/following{/other_user}","gists_url":"https://api.github.com/users/kouvel/gists{/gist_id}","starred_url":"https://api.github.com/users/kouvel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kouvel/subscriptions","organizations_url":"https://api.github.com/users/kouvel/orgs","repos_url":"https://api.github.com/users/kouvel/repos","events_url":"https://api.github.com/users/kouvel/events{/privacy}","received_events_url":"https://api.github.com/users/kouvel/received_events","type":"User","site_admin":false},"body":"Fix some frequently failing PAL tests\r\n\r\nSome PAL tests are frequently failing in the CI. The specified output folder is currently used as the working folder for all PAL tests. The CI machine happened to have the output folder on a mount mounted as fuseblk instead of ext4. We don't know why this is happening. For the moment, I'm fixing the test runner to work around this issue.\r\n\r\nChanges:\r\n- Use /tmp/PalTestOutput/default as the output folder by default\r\n- If a specific folder is specified for the output, use a unique folder inside /tmp/PalTestOutput for output files, and copy them to the specified folder at the end. A unique folder is used to support parallel runs on the same machine in this mode.\r\n- Run each test in its own folder. Many PAL tests don't clean up after themselves, and create/use the same file/folder names in the current folder.\r\n- Add a few more checks to some tests to hopefully provide more information upon the next failure\r\n- Fix GetFileAttributes tests, which were crashing upon some failures due to mismatched number of placeholders and arguments to vprintf\r\n\r\nFixes #1561","created_at":"2015-09-16T23:22:23Z","updated_at":"2015-09-17T20:42:19Z","closed_at":null,"merged_at":null,"merge_commit_sha":"af7488c915840315d7a82d7c70fd8b14eed03e9b","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/dotnet/coreclr/pulls/1574/commits","review_comments_url":"https://api.github.com/repos/dotnet/coreclr/pulls/1574/comments","review_comment_url":"https://api.github.com/repos/dotnet/coreclr/pulls/comments{/number}","comments_url":"https://api.github.com/repos/dotnet/coreclr/issues/1574/comments","statuses_url":"https://api.github.com/repos/dotnet/coreclr/statuses/e0c013e2af50bace4004e856cba67fcbec01fc00","head":{"label":"kouvel:FixPalTests","ref":"FixPalTests","sha":"e0c013e2af50bace4004e856cba67fcbec01fc00","user":{"login":"kouvel","id":13499639,"avatar_url":"https://avatars.githubusercontent.com/u/13499639?v=3","gravatar_id":"","url":"https://api.github.com/users/kouvel","html_url":"https://github.com/kouvel","followers_url":"https://api.github.com/users/kouvel/followers","following_url":"https://api.github.com/users/kouvel/following{/other_user}","gists_url":"https://api.github.com/users/kouvel/gists{/gist_id}","starred_url":"https://api.github.com/users/kouvel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kouvel/subscriptions","organizations_url":"https://api.github.com/users/kouvel/orgs","repos_url":"https://api.github.com/users/kouvel/repos","events_url":"https://api.github.com/users/kouvel/events{/privacy}","received_events_url":"https://api.github.com/users/kouvel/received_events","type":"User","site_admin":false},"repo":{"id":39798798,"name":"coreclr","full_name":"kouvel/coreclr","owner":{"login":"kouvel","id":13499639,"avatar_url":"https://avatars.githubusercontent.com/u/13499639?v=3","gravatar_id":"","url":"https://api.github.com/users/kouvel","html_url":"https://github.com/kouvel","followers_url":"https://api.github.com/users/kouvel/followers","following_url":"https://api.github.com/users/kouvel/following{/other_user}","gists_url":"https://api.github.com/users/kouvel/gists{/gist_id}","starred_url":"https://api.github.com/users/kouvel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kouvel/subscriptions","organizations_url":"https://api.github.com/users/kouvel/orgs","repos_url":"https://api.github.com/users/kouvel/repos","events_url":"https://api.github.com/users/kouvel/events{/privacy}","received_events_url":"https://api.github.com/users/kouvel/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/kouvel/coreclr","description":"This repo contains the .NET Core runtime, called CoreCLR, and the base library, called mscorlib. It includes the garbage collector, JIT compiler, base .NET data types and many low-level classes.","fork":true,"url":"https://api.github.com/repos/kouvel/coreclr","forks_url":"https://api.github.com/repos/kouvel/coreclr/forks","keys_url":"https://api.github.com/repos/kouvel/coreclr/keys{/key_id}","collaborators_url":"https://api.github.com/repos/kouvel/coreclr/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/kouvel/coreclr/teams","hooks_url":"https://api.github.com/repos/kouvel/coreclr/hooks","issue_events_url":"https://api.github.com/repos/kouvel/coreclr/issues/events{/number}","events_url":"https://api.github.com/repos/kouvel/coreclr/events","assignees_url":"https://api.github.com/repos/kouvel/coreclr/assignees{/user}","branches_url":"https://api.github.com/repos/kouvel/coreclr/branches{/branch}","tags_url":"https://api.github.com/repos/kouvel/coreclr/tags","blobs_url":"https://api.github.com/repos/kouvel/coreclr/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/kouvel/coreclr/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/kouvel/coreclr/git/refs{/sha}","trees_url":"https://api.github.com/repos/kouvel/coreclr/git/trees{/sha}","statuses_url":"https://api.github.com/repos/kouvel/coreclr/statuses/{sha}","languages_url":"https://api.github.com/repos/kouvel/coreclr/languages","stargazers_url":"https://api.github.com/repos/kouvel/coreclr/stargazers","contributors_url":"https://api.github.com/repos/kouvel/coreclr/contributors","subscribers_url":"https://api.github.com/repos/kouvel/coreclr/subscribers","subscription_url":"https://api.github.com/repos/kouvel/coreclr/subscription","commits_url":"https://api.github.com/repos/kouvel/coreclr/commits{/sha}","git_commits_url":"https://api.github.com/repos/kouvel/coreclr/git/commits{/sha}","comments_url":"https://api.github.com/repos/kouvel/coreclr/comments{/number}","issue_comment_url":"https://api.github.com/repos/kouvel/coreclr/issues/comments{/number}","contents_url":"https://api.github.com/repos/kouvel/coreclr/contents/{+path}","compare_url":"https://api.github.com/repos/kouvel/coreclr/compare/{base}...{head}","merges_url":"https://api.github.com/repos/kouvel/coreclr/merges","archive_url":"https://api.github.com/repos/kouvel/coreclr/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/kouvel/coreclr/downloads","issues_url":"https://api.github.com/repos/kouvel/coreclr/issues{/number}","pulls_url":"https://api.github.com/repos/kouvel/coreclr/pulls{/number}","milestones_url":"https://api.github.com/repos/kouvel/coreclr/milestones{/number}","notifications_url":"https://api.github.com/repos/kouvel/coreclr/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/kouvel/coreclr/labels{/name}","releases_url":"https://api.github.com/repos/kouvel/coreclr/releases{/id}","created_at":"2015-07-27T21:28:07Z","updated_at":"2015-07-27T21:28:45Z","pushed_at":"2015-09-17T20:10:51Z","git_url":"git://github.com/kouvel/coreclr.git","ssh_url":"git@github.com:kouvel/coreclr.git","clone_url":"https://github.com/kouvel/coreclr.git","svn_url":"https://github.com/kouvel/coreclr","homepage":"http://dotnet.github.io/core/","size":37767,"stargazers_count":0,"watchers_count":0,"language":"C#","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"dotnet:master","ref":"master","sha":"d176041723f366c35fd71ee4b176253fefddfee1","user":{"login":"dotnet","id":9141961,"avatar_url":"https://avatars.githubusercontent.com/u/9141961?v=3","gravatar_id":"","url":"https://api.github.com/users/dotnet","html_url":"https://github.com/dotnet","followers_url":"https://api.github.com/users/dotnet/followers","following_url":"https://api.github.com/users/dotnet/following{/other_user}","gists_url":"https://api.github.com/users/dotnet/gists{/gist_id}","starred_url":"https://api.github.com/users/dotnet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dotnet/subscriptions","organizations_url":"https://api.github.com/users/dotnet/orgs","repos_url":"https://api.github.com/users/dotnet/repos","events_url":"https://api.github.com/users/dotnet/events{/privacy}","received_events_url":"https://api.github.com/users/dotnet/received_events","type":"Organization","site_admin":false},"repo":{"id":30092893,"name":"coreclr","full_name":"dotnet/coreclr","owner":{"login":"dotnet","id":9141961,"avatar_url":"https://avatars.githubusercontent.com/u/9141961?v=3","gravatar_id":"","url":"https://api.github.com/users/dotnet","html_url":"https://github.com/dotnet","followers_url":"https://api.github.com/users/dotnet/followers","following_url":"https://api.github.com/users/dotnet/following{/other_user}","gists_url":"https://api.github.com/users/dotnet/gists{/gist_id}","starred_url":"https://api.github.com/users/dotnet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dotnet/subscriptions","organizations_url":"https://api.github.com/users/dotnet/orgs","repos_url":"https://api.github.com/users/dotnet/repos","events_url":"https://api.github.com/users/dotnet/events{/privacy}","received_events_url":"https://api.github.com/users/dotnet/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/dotnet/coreclr","description":"This repo contains the .NET Core runtime, called CoreCLR, and the base library, called mscorlib. It includes the garbage collector, JIT compiler, base .NET data types and many low-level classes.","fork":false,"url":"https://api.github.com/repos/dotnet/coreclr","forks_url":"https://api.github.com/repos/dotnet/coreclr/forks","keys_url":"https://api.github.com/repos/dotnet/coreclr/keys{/key_id}","collaborators_url":"https://api.github.com/repos/dotnet/coreclr/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/dotnet/coreclr/teams","hooks_url":"https://api.github.com/repos/dotnet/coreclr/hooks","issue_events_url":"https://api.github.com/repos/dotnet/coreclr/issues/events{/number}","events_url":"https://api.github.com/repos/dotnet/coreclr/events","assignees_url":"https://api.github.com/repos/dotnet/coreclr/assignees{/user}","branches_url":"https://api.github.com/repos/dotnet/coreclr/branches{/branch}","tags_url":"https://api.github.com/repos/dotnet/coreclr/tags","blobs_url":"https://api.github.com/repos/dotnet/coreclr/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/dotnet/coreclr/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/dotnet/coreclr/git/refs{/sha}","trees_url":"https://api.github.com/repos/dotnet/coreclr/git/trees{/sha}","statuses_url":"https://api.github.com/repos/dotnet/coreclr/statuses/{sha}","languages_url":"https://api.github.com/repos/dotnet/coreclr/languages","stargazers_url":"https://api.github.com/repos/dotnet/coreclr/stargazers","contributors_url":"https://api.github.com/repos/dotnet/coreclr/contributors","subscribers_url":"https://api.github.com/repos/dotnet/coreclr/subscribers","subscription_url":"https://api.github.com/repos/dotnet/coreclr/subscription","commits_url":"https://api.github.com/repos/dotnet/coreclr/commits{/sha}","git_commits_url":"https://api.github.com/repos/dotnet/coreclr/git/commits{/sha}","comments_url":"https://api.github.com/repos/dotnet/coreclr/comments{/number}","issue_comment_url":"https://api.github.com/repos/dotnet/coreclr/issues/comments{/number}","contents_url":"https://api.github.com/repos/dotnet/coreclr/contents/{+path}","compare_url":"https://api.github.com/repos/dotnet/coreclr/compare/{base}...{head}","merges_url":"https://api.github.com/repos/dotnet/coreclr/merges","archive_url":"https://api.github.com/repos/dotnet/coreclr/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/dotnet/coreclr/downloads","issues_url":"https://api.github.com/repos/dotnet/coreclr/issues{/number}","pulls_url":"https://api.github.com/repos/dotnet/coreclr/pulls{/number}","milestones_url":"https://api.github.com/repos/dotnet/coreclr/milestones{/number}","notifications_url":"https://api.github.com/repos/dotnet/coreclr/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/dotnet/coreclr/labels{/name}","releases_url":"https://api.github.com/repos/dotnet/coreclr/releases{/id}","created_at":"2015-01-30T22:10:02Z","updated_at":"2015-09-17T18:29:05Z","pushed_at":"2015-09-17T19:09:22Z","git_url":"git://github.com/dotnet/coreclr.git","ssh_url":"git@github.com:dotnet/coreclr.git","clone_url":"https://github.com/dotnet/coreclr.git","svn_url":"https://github.com/dotnet/coreclr","homepage":"http://dotnet.github.io/core/","size":55891,"stargazers_count":5173,"watchers_count":5173,"language":"C#","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1040,"mirror_url":null,"open_issues_count":276,"forks":1040,"open_issues":276,"watchers":5173,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/dotnet/coreclr/pulls/1574"},"html":{"href":"https://github.com/dotnet/coreclr/pull/1574"},"issue":{"href":"https://api.github.com/repos/dotnet/coreclr/issues/1574"},"comments":{"href":"https://api.github.com/repos/dotnet/coreclr/issues/1574/comments"},"review_comments":{"href":"https://api.github.com/repos/dotnet/coreclr/pulls/1574/comments"},"review_comment":{"href":"https://api.github.com/repos/dotnet/coreclr/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/dotnet/coreclr/pulls/1574/commits"},"statuses":{"href":"https://api.github.com/repos/dotnet/coreclr/statuses/e0c013e2af50bace4004e856cba67fcbec01fc00"}}}}