Running the Blink Layout Tests on Fedora Linux
I use Fedora instead of the recommended Ubuntu distribution. My main motivation is that Fedora generally ships newer packages than Ubuntu, so I get to try out newer versions of software earlier than most people. In the context of Chromium and Blink development, this means I'm more likely to catch bugs like this one.
This is a list of the steps I did to be able to run Blink's layout tests on Fedora Linux. Layout tests are currently main method of testing in Blink, so being able to run them is a pretty hard prerequisite to working on patches.
Build Prerequisites
The Fedora Setup section of the Linux build prerequisites in the Chromium wiki has two commands that can be conveniently copy-pasted to get most of the packages needed for building Chromium. The optional packages are needed for running Blink's layout tests, so make sure you run both commands.
The comments section also has a list of packages that should be installed, and somewhat makes up for the fact that the Chromium codebase evolves much faster than the Wiki page.
After installing all the packages, you should be able to build the
blink_tests
target, which contains the Content Shell and all the tools used
to run the layout tests.
Fonts for the Layout Tests
The layout tests refuse to run without the fonts used by the pixel tests. The
font list and lookup details are in
src/content/shell/app/webkit_test_platform_support_linux.cc
.
If the path above changes, try
searching the codebase for kochi-gothic.ttf.
The easiest method for obtaining the needed fonts is:
Use VirtualBox (or your favorite alternative) to set up an Ubuntu VM.
Open up the Ubuntu Setup section in a browser in the VM.
Install the font-related packages (look for font or ttf in the package name) in the VM.
Copy the entire
/usr/share/fonts/truetype
directory to your Fedora installation.mkdir ~/Downloads/ChromiumFonts scp -r you@vmname.local:/usr/share/fonts/truetype ~/Downloads/ChromiumFonts sudo cp -r ~/Downloads/Chromiumfonts/truetype /usr/share/fonts
Check that the layout tests are happy with your font setup.
cd ~/chromium/src out/Debug/content_shell --dump-render-tree ~/chromium/src/third_party/WebKit/LayoutTests/fast/js/array-indexof.html
Stash the fonts in your Dropbox or Google Drive, so you won't have to do this again.
Power off and remove the Ubuntu VM.
For whatever it's worth, the Microsoft fonts can be easily obtained by
installing the RPM from the
mscorefonts2 project. However,
a reasonably thorough search for koichi-gothic.ttf
led to no results, so the
Ubuntu VM method is the fastest method I know for getting all the fonts.
Story: Debugging a Crash in the Layout Tests Crash
On one occasion, all the layout tests that I ran resulted in crashes. The steps I took might be helpful for shedding light on a similar situation.
First, I first found an "easy" test that really shouldn't crash the renderer,
so I wouldn't have to worry about whether the crash was introduced by a recent
change. My test was
fast/js/array-indexof.html
,
but other tests in that directory might be equally suitable.
Running the test with the extra --driver-logging
option revealed the issue.
(I was missing fonts.)
Had that not worked, I would have ran the test in the Content Shell directly.
Note that unlike the full Chromium build, the Content Shell can't convert
relative paths into URLs, so I'm giving it a full path. I'm relying on bash to
expand ~
to my home directory.
In my case, this command worked, and showed me that the problem was somewhere
in the testing infrastructure, so I ran the test with the --dump-render-tree
flag.