Commit 92fb8491 authored by Lukasz Anforowicz's avatar Lukasz Anforowicz Committed by Commit Bot

Make raw-output-tests ignore changes in absolute path of Chromium repo.

Before this change, tests of raw output of the rewriter (i.e. tests run
without passing --apply-edits to tools/clang/scripts/test_tool.py) might
need to encode the full, absolute path in the test expectations.  This
meant that the tests wouldn't work on another developer's machine (where
Chromium repo might be in a different location).

After this change:
- tools/clang/rewrite_raw_ptr_fields/tests/gen-*-expected.txt
  expectation files use paths delative to the
  rewrite_raw_ptr_fields/tests/ directory (rather than hardcoding a
  value of
  .../lukasza/src/chromium4/src/tools/clang/rewrite_raw_ptr_fields/tests
- tools/clang/scripts/test_tool.py normalizes paths in the raw output
  (only if invoked without --apply-edits) to make the paths relative to
  the tests directory

Bug: 1069567
Change-Id: I03c54374bb861904e439e677a271b0dec1502b67
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2282888
Commit-Queue: Łukasz Anforowicz <lukasza@chromium.org>
Reviewed-by: default avatarDaniel Cheng <dcheng@chromium.org>
Reviewed-by: default avatarBartek Nowierski <bartekn@chromium.org>
Cr-Commit-Position: refs/heads/master@{#786330}
parent e71c171f
==== BEGIN EDITS ==== ==== BEGIN EDITS ====
include-user-header:::/usr/local/google/home/lukasza/src/chromium4/src/tools/clang/rewrite_raw_ptr_fields/tests/gen-char-actual.cc:::-1:::-1:::base/memory/checked_ptr.h include-user-header:::gen-char-actual.cc:::-1:::-1:::base/memory/checked_ptr.h
r:::/usr/local/google/home/lukasza/src/chromium4/src/tools/clang/rewrite_raw_ptr_fields/tests/gen-char-actual.cc:::1343:::6:::CheckedPtr<char> r:::gen-char-actual.cc:::1343:::6:::CheckedPtr<char>
r:::/usr/local/google/home/lukasza/src/chromium4/src/tools/clang/rewrite_raw_ptr_fields/tests/gen-char-actual.cc:::1361:::12:::CheckedPtr<const char> r:::gen-char-actual.cc:::1361:::12:::CheckedPtr<const char>
r:::/usr/local/google/home/lukasza/src/chromium4/src/tools/clang/rewrite_raw_ptr_fields/tests/gen-char-actual.cc:::1391:::9:::CheckedPtr<wchar_t> r:::gen-char-actual.cc:::1391:::9:::CheckedPtr<wchar_t>
r:::/usr/local/google/home/lukasza/src/chromium4/src/tools/clang/rewrite_raw_ptr_fields/tests/gen-char-actual.cc:::1417:::15:::CheckedPtr<const wchar_t> r:::gen-char-actual.cc:::1417:::15:::CheckedPtr<const wchar_t>
==== END EDITS ==== ==== END EDITS ====
==== BEGIN FIELD FILTERS ==== ==== BEGIN FIELD FILTERS ====
MyStruct::char_ptr # char MyStruct::char_ptr # char
......
==== BEGIN EDITS ==== ==== BEGIN EDITS ====
include-user-header:::/usr/local/google/home/lukasza/src/chromium4/src/tools/clang/rewrite_raw_ptr_fields/tests/gen-in-out-arg-actual.cc:::-1:::-1:::base/memory/checked_ptr.h include-user-header:::gen-in-out-arg-actual.cc:::-1:::-1:::base/memory/checked_ptr.h
r:::/usr/local/google/home/lukasza/src/chromium4/src/tools/clang/rewrite_raw_ptr_fields/tests/gen-in-out-arg-actual.cc:::1090:::3:::CheckedPtr<T> r:::gen-in-out-arg-actual.cc:::1090:::3:::CheckedPtr<T>
r:::/usr/local/google/home/lukasza/src/chromium4/src/tools/clang/rewrite_raw_ptr_fields/tests/gen-in-out-arg-actual.cc:::2875:::3:::CheckedPtr<T> r:::gen-in-out-arg-actual.cc:::2875:::3:::CheckedPtr<T>
r:::/usr/local/google/home/lukasza/src/chromium4/src/tools/clang/rewrite_raw_ptr_fields/tests/gen-in-out-arg-actual.cc:::789:::11:::CheckedPtr<SomeClass> r:::gen-in-out-arg-actual.cc:::789:::11:::CheckedPtr<SomeClass>
r:::/usr/local/google/home/lukasza/src/chromium4/src/tools/clang/rewrite_raw_ptr_fields/tests/gen-in-out-arg-actual.cc:::813:::11:::CheckedPtr<SomeClass> r:::gen-in-out-arg-actual.cc:::813:::11:::CheckedPtr<SomeClass>
r:::/usr/local/google/home/lukasza/src/chromium4/src/tools/clang/rewrite_raw_ptr_fields/tests/gen-in-out-arg-actual.cc:::842:::11:::CheckedPtr<SomeClass> r:::gen-in-out-arg-actual.cc:::842:::11:::CheckedPtr<SomeClass>
r:::/usr/local/google/home/lukasza/src/chromium4/src/tools/clang/rewrite_raw_ptr_fields/tests/gen-in-out-arg-actual.cc:::871:::11:::CheckedPtr<SomeClass> r:::gen-in-out-arg-actual.cc:::871:::11:::CheckedPtr<SomeClass>
r:::/usr/local/google/home/lukasza/src/chromium4/src/tools/clang/rewrite_raw_ptr_fields/tests/gen-in-out-arg-actual.cc:::907:::11:::CheckedPtr<SomeClass> r:::gen-in-out-arg-actual.cc:::907:::11:::CheckedPtr<SomeClass>
==== END EDITS ==== ==== END EDITS ====
==== BEGIN FIELD FILTERS ==== ==== BEGIN FIELD FILTERS ====
my_namespace::MyStruct::in_out_via_auto_reset # addr-of my_namespace::MyStruct::in_out_via_auto_reset # addr-of
......
==== BEGIN EDITS ==== ==== BEGIN EDITS ====
include-user-header:::/usr/local/google/home/lukasza/src/chromium4/src/tools/clang/rewrite_raw_ptr_fields/tests/gen-macros-actual.cc:::-1:::-1:::base/memory/checked_ptr.h include-user-header:::gen-macros-actual.cc:::-1:::-1:::base/memory/checked_ptr.h
r:::/usr/local/google/home/lukasza/src/chromium4/src/tools/clang/rewrite_raw_ptr_fields/tests/gen-macros-actual.cc:::1940:::13:::CheckedPtr<struct event> r:::gen-macros-actual.cc:::1940:::13:::CheckedPtr<struct event>
r:::/usr/local/google/home/lukasza/src/chromium4/src/tools/clang/rewrite_raw_ptr_fields/tests/gen-macros-actual.cc:::2009:::14:::CheckedPtr<struct event *> r:::gen-macros-actual.cc:::2009:::14:::CheckedPtr<struct event *>
==== END EDITS ==== ==== END EDITS ====
==== BEGIN FIELD FILTERS ==== ==== BEGIN FIELD FILTERS ====
MacroTest1::ptr_field # macro MacroTest1::ptr_field # macro
......
==== BEGIN EDITS ==== ==== BEGIN EDITS ====
include-user-header:::/usr/local/google/home/lukasza/src/chromium4/src/tools/clang/rewrite_raw_ptr_fields/tests/gen-overlapping-actual.cc:::-1:::-1:::base/memory/checked_ptr.h include-user-header:::gen-overlapping-actual.cc:::-1:::-1:::base/memory/checked_ptr.h
r:::/usr/local/google/home/lukasza/src/chromium4/src/tools/clang/rewrite_raw_ptr_fields/tests/gen-overlapping-actual.cc:::1095:::11:::CheckedPtr<SomeClass> r:::gen-overlapping-actual.cc:::1095:::11:::CheckedPtr<SomeClass>
r:::/usr/local/google/home/lukasza/src/chromium4/src/tools/clang/rewrite_raw_ptr_fields/tests/gen-overlapping-actual.cc:::1140:::27:::CheckedPtr<SomeClass> r:::gen-overlapping-actual.cc:::1140:::27:::CheckedPtr<SomeClass>
r:::/usr/local/google/home/lukasza/src/chromium4/src/tools/clang/rewrite_raw_ptr_fields/tests/gen-overlapping-actual.cc:::1385:::54:::CheckedPtr<struct NonFreeStandingStruct> r:::gen-overlapping-actual.cc:::1385:::54:::CheckedPtr<struct NonFreeStandingStruct>
r:::/usr/local/google/home/lukasza/src/chromium4/src/tools/clang/rewrite_raw_ptr_fields/tests/gen-overlapping-actual.cc:::1744:::64:::CheckedPtr<struct NonFreeStandingStruct2> r:::gen-overlapping-actual.cc:::1744:::64:::CheckedPtr<struct NonFreeStandingStruct2>
r:::/usr/local/google/home/lukasza/src/chromium4/src/tools/clang/rewrite_raw_ptr_fields/tests/gen-overlapping-actual.cc:::1780:::11:::CheckedPtr<SomeClass> r:::gen-overlapping-actual.cc:::1780:::11:::CheckedPtr<SomeClass>
r:::/usr/local/google/home/lukasza/src/chromium4/src/tools/clang/rewrite_raw_ptr_fields/tests/gen-overlapping-actual.cc:::941:::11:::CheckedPtr<SomeClass> r:::gen-overlapping-actual.cc:::941:::11:::CheckedPtr<SomeClass>
r:::/usr/local/google/home/lukasza/src/chromium4/src/tools/clang/rewrite_raw_ptr_fields/tests/gen-overlapping-actual.cc:::941:::28:::CheckedPtr<SomeClass> r:::gen-overlapping-actual.cc:::941:::28:::CheckedPtr<SomeClass>
==== END EDITS ==== ==== END EDITS ====
==== BEGIN FIELD FILTERS ==== ==== BEGIN FIELD FILTERS ====
my_namespace::MyStruct::overlapping_1a # overlapping my_namespace::MyStruct::overlapping_1a # overlapping
......
...@@ -13,6 +13,7 @@ import glob ...@@ -13,6 +13,7 @@ import glob
import json import json
import os import os
import os.path import os.path
import re
import shutil import shutil
import subprocess import subprocess
import sys import sys
...@@ -126,6 +127,28 @@ def _ApplyTool(tools_clang_scripts_directory, ...@@ -126,6 +127,28 @@ def _ApplyTool(tools_clang_scripts_directory,
_RunGit(args) _RunGit(args)
def _NormalizePathInRawOutput(path, test_dir):
if not os.path.isabs(path):
path = os.path.join(test_dir, path)
return os.path.relpath(path, test_dir)
def _NormalizeSingleRawOutputLine(output_line, test_dir):
if not re.match('^[^:]+(:::.*){4,4}$', output_line):
return output_line
edit_type, path, offset, length, replacement = output_line.split(':::', 4)
path = _NormalizePathInRawOutput(path, test_dir)
return "%s:::%s:::%s:::%s:::%s" % (edit_type, path, offset, length,
replacement)
def _NormalizeRawOutput(output_lines, test_dir):
return map(lambda line: _NormalizeSingleRawOutputLine(line, test_dir),
output_lines)
def main(argv): def main(argv):
parser = argparse.ArgumentParser() parser = argparse.ArgumentParser()
parser.add_argument( parser.add_argument(
...@@ -209,6 +232,11 @@ def main(argv): ...@@ -209,6 +232,11 @@ def main(argv):
expected_output = f.readlines() expected_output = f.readlines()
with open(actual, 'r') as f: with open(actual, 'r') as f:
actual_output = f.readlines() actual_output = f.readlines()
if not args.apply_edits:
actual_output = _NormalizeRawOutput(actual_output,
test_directory_for_tool)
expected_output = _NormalizeRawOutput(expected_output,
test_directory_for_tool)
if actual_output != expected_output: if actual_output != expected_output:
failed += 1 failed += 1
lines = difflib.unified_diff(expected_output, actual_output, lines = difflib.unified_diff(expected_output, actual_output,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment