I've been running into the same issue for a while now. Using the Default Policy set to Subscribers for Files works well when adding files to Phriction pages and Maniphest tickets. However, when adding binary files as part of a Diff the creator of that Diff needs to change each files permissions by hand before a reviewer can download the Diff. Moreover, this needs to be repeated for every new version of that Diff.
- Queries
- All Stories
- Search
- Advanced Search
- Transactions
- Transaction Logs
Advanced Search
Feb 7 2018
Feb 4 2018
Feb 2 2018
We have also found legitimate users who have valid email addresses (Irish users) that are not accepted.
For those visiting from the future via search, I have decided to publish an unofficial bug patch in a github repo, as it breaks once in awhile due to upstream changes.
Thanks @mcorteel, I'll take a look.
Feb 1 2018
This report doesn't include working reproduction instructions so we can't move forward.
@cmmata here is my diff. It can probably be improved, but it works for me:
1 | diff --git a/src/unit/engine/PhpunitTestEngine.php b/src/unit/engine/PhpunitTestEngine.php |
---|---|
2 | index 8206b787..ef01fda4 100644 |
3 | --- a/src/unit/engine/PhpunitTestEngine.php |
4 | +++ b/src/unit/engine/PhpunitTestEngine.php |
5 | @@ -52,7 +52,7 @@ final class PhpunitTestEngine extends ArcanistUnitTestEngine { |
6 | if (!Filesystem::pathExists($test_path)) { |
7 | continue; |
8 | } |
9 | - $json_tmp = new TempFile(); |
10 | + $xml_tmp = new TempFile(); |
11 | $clover_tmp = null; |
12 | $clover = null; |
13 | if ($this->getEnableCoverage() !== false) { |
14 | @@ -64,10 +64,10 @@ final class PhpunitTestEngine extends ArcanistUnitTestEngine { |
15 | |
16 | $stderr = '-d display_errors=stderr'; |
17 | |
18 | - $futures[$test_path] = new ExecFuture('%C %C %C --log-json %s %C %s', |
19 | - $this->phpunitBinary, $config, $stderr, $json_tmp, $clover, $test_path); |
20 | + $futures[$test_path] = new ExecFuture('%C %C %C --log-junit %s %C %s', |
21 | + $this->phpunitBinary, $config, $stderr, $xml_tmp, $clover, $test_path); |
22 | $tmpfiles[$test_path] = array( |
23 | - 'json' => $json_tmp, |
24 | + 'xml' => $xml_tmp, |
25 | 'clover' => $clover_tmp, |
26 | ); |
27 | } |
28 | @@ -81,7 +81,7 @@ final class PhpunitTestEngine extends ArcanistUnitTestEngine { |
29 | |
30 | $results[] = $this->parseTestResults( |
31 | $test, |
32 | - $tmpfiles[$test]['json'], |
33 | + $tmpfiles[$test]['xml'], |
34 | $tmpfiles[$test]['clover'], |
35 | $stderr); |
36 | } |
37 | @@ -90,17 +90,17 @@ final class PhpunitTestEngine extends ArcanistUnitTestEngine { |
38 | } |
39 | |
40 | /** |
41 | - * Parse test results from phpunit json report. |
42 | + * Parse test results from phpunit XML report. |
43 | * |
44 | * @param string $path Path to test |
45 | - * @param string $json_tmp Path to phpunit json report |
46 | + * @param string $xml_tmp Path to phpunit XML report |
47 | * @param string $clover_tmp Path to phpunit clover report |
48 | * @param string $stderr Data written to stderr |
49 | * |
50 | * @return array |
51 | */ |
52 | - private function parseTestResults($path, $json_tmp, $clover_tmp, $stderr) { |
53 | - $test_results = Filesystem::readFile($json_tmp); |
54 | + private function parseTestResults($path, $xml_tmp, $clover_tmp, $stderr) { |
55 | + $test_results = Filesystem::readFile($xml_tmp); |
56 | return id(new ArcanistPhpunitTestResultParser()) |
57 | ->setEnableCoverage($this->getEnableCoverage()) |
58 | ->setProjectRoot($this->projectRoot) |
59 | diff --git a/src/unit/parser/ArcanistPhpunitTestResultParser.php b/src/unit/parser/ArcanistPhpunitTestResultParser.php |
60 | index 5ccff970..3d7fcd77 100644 |
61 | --- a/src/unit/parser/ArcanistPhpunitTestResultParser.php |
62 | +++ b/src/unit/parser/ArcanistPhpunitTestResultParser.php |
63 | @@ -9,10 +9,10 @@ |
64 | final class ArcanistPhpunitTestResultParser extends ArcanistTestResultParser { |
65 | |
66 | /** |
67 | - * Parse test results from phpunit json report |
68 | + * Parse test results from phpunit XML report |
69 | * |
70 | * @param string $path Path to test |
71 | - * @param string $test_results String containing phpunit json report |
72 | + * @param string $test_results String containing phpunit XML report |
73 | * |
74 | * @return array |
75 | */ |
76 | @@ -25,7 +25,7 @@ final class ArcanistPhpunitTestResultParser extends ArcanistTestResultParser { |
77 | return array($result); |
78 | } |
79 | |
80 | - $report = $this->getJsonReport($test_results); |
81 | + $report = simplexml_load_string($test_results); |
82 | |
83 | // coverage is for all testcases in the executed $path |
84 | $coverage = array(); |
85 | @@ -36,56 +36,36 @@ final class ArcanistPhpunitTestResultParser extends ArcanistTestResultParser { |
86 | $last_test_finished = true; |
87 | |
88 | $results = array(); |
89 | - foreach ($report as $event) { |
90 | - switch (idx($event, 'event')) { |
91 | - case 'test': |
92 | - break; |
93 | - case 'testStart': |
94 | - $last_test_finished = false; |
95 | - // fall through |
96 | - default: |
97 | - continue 2; // switch + loop |
98 | - } |
99 | - |
100 | + foreach ($report->testsuite as $test_suite) { |
101 | $status = ArcanistUnitTestResult::RESULT_PASS; |
102 | $user_data = ''; |
103 | |
104 | - if ('fail' == idx($event, 'status')) { |
105 | + if ((int)$test_suite['failures'] > 0) { |
106 | $status = ArcanistUnitTestResult::RESULT_FAIL; |
107 | - $user_data .= idx($event, 'message')."\n"; |
108 | - foreach (idx($event, 'trace') as $trace) { |
109 | - $user_data .= sprintf( |
110 | - "\n%s:%s", |
111 | - idx($trace, 'file'), |
112 | - idx($trace, 'line')); |
113 | + foreach ($test_suite->testcase as $test_case) { |
114 | + foreach ($test_case->failure as $failure) { |
115 | + $user_data .= sprintf( |
116 | + "\n%s", |
117 | + (string)$failure); |
118 | + } |
119 | } |
120 | - } else if ('error' == idx($event, 'status')) { |
121 | - if (strpos(idx($event, 'message'), 'Skipped Test') !== false) { |
122 | - $status = ArcanistUnitTestResult::RESULT_SKIP; |
123 | - $user_data .= idx($event, 'message'); |
124 | - } else if (strpos( |
125 | - idx($event, 'message'), |
126 | - 'Incomplete Test') !== false) { |
127 | - $status = ArcanistUnitTestResult::RESULT_SKIP; |
128 | - $user_data .= idx($event, 'message'); |
129 | - } else { |
130 | - $status = ArcanistUnitTestResult::RESULT_BROKEN; |
131 | - $user_data .= idx($event, 'message'); |
132 | - foreach (idx($event, 'trace') as $trace) { |
133 | - $user_data .= sprintf( |
134 | - "\n%s:%s", |
135 | - idx($trace, 'file'), |
136 | - idx($trace, 'line')); |
137 | + } else if ($test_suite['errors'] > 0) { |
138 | + $status = ArcanistUnitTestResult::RESULT_BROKEN; |
139 | + foreach ($test_suite->testcase as $test_case) { |
140 | + foreach ($test_case->error as $error) { |
141 | + $user_data .= sprintf( |
142 | + "\n%s", |
143 | + (string)$error); |
144 | } |
145 | } |
146 | } |
147 | |
148 | - $name = preg_replace('/ \(.*\)/s', '', idx($event, 'test')); |
149 | + $name = preg_replace('/ \(.*\)/s', '', $test_suite['name']); |
150 | |
151 | $result = new ArcanistUnitTestResult(); |
152 | $result->setName($name); |
153 | $result->setResult($status); |
154 | - $result->setDuration(idx($event, 'time')); |
155 | + $result->setDuration((float)$test_suite['time']); |
156 | $result->setCoverage($coverage); |
157 | $result->setUserData($user_data); |
158 | |
159 | @@ -95,7 +75,7 @@ final class ArcanistPhpunitTestResultParser extends ArcanistTestResultParser { |
160 | |
161 | if (!$last_test_finished) { |
162 | $results[] = id(new ArcanistUnitTestResult()) |
163 | - ->setName(idx($event, 'test')) // use last event |
164 | + ->setName($test_suite['name']) // use last event |
165 | ->setUserData($this->stderr) |
166 | ->setResult(ArcanistUnitTestResult::RESULT_BROKEN); |
167 | } |
168 | @@ -161,28 +141,4 @@ final class ArcanistPhpunitTestResultParser extends ArcanistTestResultParser { |
169 | return $reports; |
170 | } |
171 | |
172 | - /** |
173 | - * We need this non-sense to make json generated by phpunit |
174 | - * valid. |
175 | - * |
176 | - * @param string $json String containing JSON report |
177 | - * @return array JSON decoded array |
178 | - */ |
179 | - private function getJsonReport($json) { |
180 | - |
181 | - if (empty($json)) { |
182 | - throw new Exception( |
183 | - pht( |
184 | - 'JSON report file is empty, it probably means that phpunit '. |
185 | - 'failed to run tests. Try running %s with %s option and then run '. |
186 | - 'generated phpunit command yourself, you might get the answer.', |
187 | - 'arc unit', |
188 | - '--trace')); |
189 | - } |
190 | - |
191 | - $json = preg_replace('/}{\s*"/', '},{"', $json); |
192 | - $json = '['.$json.']'; |
193 | - return phutil_json_decode($json); |
194 | - } |
195 | - |
196 | } |
@mcorteel I have the same problem, arc unit only works with phpunit 5.7. If I use 6.5, it fails. Do you have that patch anywhere with public access so we can use it while it's not published?
Jan 27 2018
Jan 26 2018
This is quite old and I have no idea how to reproduce it and thus no idea how to fix it. Locally, I tried a few things and wasn't able to identify a case where the Herald field value differed from my actual project list.
Jan 24 2018
Jan 21 2018
From https://bugzilla.mindrot.org/show_bug.cgi?id=2496, this is apparently fixed in the OpenSSH upstream (https://github.com/openssh/openssh-portable/commit/ddd3d34e5c7979ca6f4a3a98a7d219a4ed3d98c2). Since this is a bug in OpenSSH, an upstream fix is available, and the impact is fairly narrow, I don't plan to work around it in Phabricator.
Jan 19 2018
I've marked D18867 as fixing this. It isn't a perfect fix, but it's closer to the realm of reasonable (you have a sensible amount of area to work with and a readable font):
Jan 5 2018
Jan 4 2018
Actually, this is less crazy than I thought.
This appears to date back to the introduction of the feature in D5738, where I suggested we use ancestors() without a legitimate reason (or maybe very old Mercurial had weird behavior).
Dec 26 2017
Dec 22 2017
Dec 13 2017
Dec 12 2017
Dec 9 2017
Support for Ubuntu 15.10 ended on 2016-07-28.
Did this problem also happen with any later, still supported Ubuntu version (like 16.04) or can this task be closed as obsolete?
Nov 30 2017
This should be fixed by changes in T13024.
This should be fixed by changes in T13024.
Nov 29 2017
In PHI231, a more experienced user went through this workflow:
Nov 28 2017
@epriestley what do you think of creating another column in the calendar_eventinvitee table, something like a bool futureStatus so that when we get a list of invitees back, we can check for that flag. I think this would mean a lot of date comparisons (seems inefficient), and I'm not quite sure when to populate event stubs. For example, if the futureStatus flag is set to true for instance 10, and there are stubs for instances 15 and 20, when would 15 and 20 get converted to have the updated status?
Nov 23 2017
In T12098#233396, @sshannin wrote:
Obviously not a particularly important issue, but this now will populate a link in the favorites menu which leads to an exception:
Nov 21 2017
Hi Epriestley,
@epriestley I tried submitting a patch, but I get a Permission denied (publickey) which results in Unable to push changes to the staging area..
I added my public key and created a config rule to use it for requests to secure.phabricator.com, I'm not sure what else to do.
So, to recap:
- PhpunitTestEngine::run must be updated to use --log-junit which will output XML instead of JSON
- ArcanistPhpunitTestResultParser::parseTestResults must be updated to parse this XML file.
This seems simple enough, I will try to make it work.
Nov 1 2017
Pretty sure T7704 is the same as this.
Oct 31 2017
Ah, thanks. I think your guess is right. I'll make a note in T2543, should be a one-line fix I think.
From https://discourse.phabricator-community.org/t/644 - it appears that HM now triggers a build on revisions when they are closed via landing, which fails because the build expects a Staging ref. I don't have the setup to test any of it, but the latest revision landed here doesn't show the behavior, so either f7f3dd5b2084 hasn't rolled in here yet, or that user is doing something funny.
Oct 27 2017
Oct 24 2017
Oct 16 2017
I'm getting the same #1048: Column 'filename' cannot be null running just regular "arc diff". It used to work and then at some point after updates started failing.
Oct 7 2017
We should probably update the documentation to recommend --output and --compress, since the error behavior (e.g., in the event of a full disk) is better.
Thanks for the fix on that. I have my nightly backups running again, however I had to switch from
./bin/storage dump | gzip > file.sql.gz
to
phab/bin/storage dump --output file.sql.gz --compress
Thanks for the quick response. I'll try the workaround in the morning.
Oct 5 2017
On the bin/files download side of things, we currently buffer the whole file into a string and then hit this:
For consistency, I gave the content Cloudfront distribution a 60-second timeout as well.
Pulling stuff from admin.phacility.com via Cloudfront, I get this instead:
In the log above, this download should have worked:
i encountered same problem , but it happened on libphutil/src/xsprintf/xsprintf.php. I resolved this problem by setting max_nesting_level on php xdebug .
Oct 2 2017
Sorry to leave this hanging, but the issue was with our server configuration. We did not have the correct sudo rights confgured
Sep 25 2017
This is now in stable, and deployed here and to the Phacility production cluster.
Sep 15 2017
This is now deployed on this server, we'll see how it holds up. It won't promote to stable until next week, and I'd discourage anyone from picking it up right away.
Sep 14 2017
In Mercurial, can a branch have some open heads and some closed heads?
Sep 13 2017
See also PHI68.
Oh, yes, sorry, looked at the wrong tab.
Do you mean "follow up in PHI55"?
Sep 12 2017
This is resolved by the Ferret engine, which can execute all parts of the query logic in MySQL.
Sep 6 2017
Sep 1 2017
Aug 28 2017
Aug 24 2017
I'm not sure it's a bug. The error message was surprising; HTTP/1.0 500 Error 1: sudo: a password is required. I see a matching error message in Q261. The solution there seems to be allowing the webserver process owner to have sudo rights. I now found there are docs on the subject diffusion_hosting#configuring-sudo.
Aug 23 2017
If you believe you've found a bug in Phabricator, please follow the instructions in Contributing Bug Reports to file a report.
This might be useful debugging information:
>> export GIT_CURL_VERBOSE=1 >> git clone http://phabricator.internal/diffusion/TRACTORAPI/tractor-api.git Cloning into 'tractor-api'... * Couldn't find host phabricator.internal in the .netrc file; using defaults * About to connect() to phabricator.internal port 80 (#0) * Trying 10.11.45.21... * Connected to phabricator.internal (10.11.45.21) port 80 (#0) > GET /diffusion/TRACTORAPI/tractor-api.git/info/refs?service=git-upload-pack HTTP/1.1 User-Agent: git/2.14.1 Host: phabricator.internal Accept: */* Accept-Encoding: gzip Accept-Language: en-US, *;q=0.9 Pragma: no-cache
This doesn't work again.
Aug 22 2017
Somewhat related, if you have a disabled "Home" as your top item, we still show that regardless of the active dashboard below it.
Aug 17 2017
Aug 16 2017
It works great now with Windows + Chrome + German keyboard layout!
Aug 15 2017
Closing this for lack of feedback, feel free to resurrect it if you get back to it.
This isn't a bug; they aren't subscribers, and aren't listed in "Subscribers" in the right-hand column or in "Subscribers" in "Edit Task".