[Libreoffice-commits] dev-tools.git: clang/.gitignore clang/Makefile clang/qa
Miklos Vajna
vmiklos at collabora.co.uk
Sun Jan 31 03:02:14 PST 2016
clang/.gitignore | 5
clang/Makefile | 13 +
clang/qa/data/rename-cxx-constructor-decl-class.cxx | 9 +
clang/qa/data/rename-cxx-constructor-decl-class.cxx.expected | 9 +
clang/qa/data/rename-cxx-constructor-decl.csv | 2
clang/qa/data/rename-cxx-constructor-decl.cxx | 16 +
clang/qa/data/rename-cxx-constructor-decl.cxx.expected | 16 +
clang/qa/data/rename-cxx-constructor-expr.cxx | 8
clang/qa/data/rename-cxx-constructor-expr.cxx.expected | 8
clang/qa/data/rename-cxx-method-decl.cxx | 15 +
clang/qa/data/rename-cxx-method-decl.cxx.expected | 15 +
clang/qa/data/rename-cxx-static-cast-expr.cxx | 12 +
clang/qa/data/rename-cxx-static-cast-expr.cxx.expected | 12 +
clang/qa/data/rename-decl-ref-expr.cxx | 17 +
clang/qa/data/rename-decl-ref-expr.cxx.expected | 17 +
clang/qa/data/rename-field-decl.csv | 1
clang/qa/data/rename-field-decl.csv-emptycol1 | 1
clang/qa/data/rename-field-decl.csv-emptycol2 | 1
clang/qa/data/rename-field-decl.cxx | 5
clang/qa/data/rename-field-decl.cxx.expected | 5
clang/qa/data/rename-member-expr.cxx | 19 ++
clang/qa/data/rename-member-expr.cxx.expected | 19 ++
clang/qa/data/rename-var-decl-class.cxx | 11 +
clang/qa/data/rename-var-decl-class.cxx.expected | 11 +
clang/qa/data/rename-var-decl.cxx | 5
clang/qa/data/rename-var-decl.cxx.expected | 5
clang/qa/llvm-gcov.sh | 2
clang/qa/test-rename.sh | 94 +++++++++++
28 files changed, 353 insertions(+)
New commits:
commit 820370ba69c395f22182cf33bc1557c824de0da1
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date: Sun Jan 31 12:00:11 2016 +0100
clang: add rename tests
Thanks
<http://logan.tw/posts/2015/04/28/check-code-coverage-with-clang-and-lcov/>
for the llvm-gcov wrapper script idea.
diff --git a/clang/.gitignore b/clang/.gitignore
new file mode 100644
index 0000000..fc5000d
--- /dev/null
+++ b/clang/.gitignore
@@ -0,0 +1,5 @@
+bin
+lib64
+clang.info
+coverage
+*.new-rename
diff --git a/clang/Makefile b/clang/Makefile
index 828ea71..b7d3eb7 100644
--- a/clang/Makefile
+++ b/clang/Makefile
@@ -1,3 +1,5 @@
+.PHONY : coverage
+
CLANGDEFS=-D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -fno-rtti
CLANGWARNS=-Werror -Wall -Wno-missing-braces -Wnon-virtual-dtor -Wendif-labels -Wextra -Wundef -Wunused-macros -Wshadow -Woverloaded-virtual
CLANGFLAGS = $(CLANGDEFS) $(CLANGWARNS) -g -std=c++11
@@ -17,4 +19,15 @@ bin/find-unprefixed-members: find-unprefixed-members.cxx Makefile
test: test.cxx test.hxx Makefile
clang++ -o test test.cxx
+check:
+ qa/test-rename.sh
+
+coverage:
+ rm -f bin/rename rename.cxx.gc{da,no}
+ $(MAKE) GCOV=y bin/rename
+ $(MAKE) check
+ lcov --directory $(PWD) --gcov-tool $(PWD)/qa/llvm-gcov.sh --capture --output-file clang.info
+ genhtml -o coverage clang.info
+ @echo "Now open <file://$(PWD)/coverage$(PWD)/rename.cxx.gcov.html>"
+
# vim: set noet sw=4 ts=4:
diff --git a/clang/qa/data/rename-cxx-constructor-decl-class.cxx b/clang/qa/data/rename-cxx-constructor-decl-class.cxx
new file mode 100644
index 0000000..66c0f02
--- /dev/null
+++ b/clang/qa/data/rename-cxx-constructor-decl-class.cxx
@@ -0,0 +1,9 @@
+class C
+{
+public:
+ C();
+};
+
+C::C()
+{
+}
diff --git a/clang/qa/data/rename-cxx-constructor-decl-class.cxx.expected b/clang/qa/data/rename-cxx-constructor-decl-class.cxx.expected
new file mode 100644
index 0000000..3d3d342
--- /dev/null
+++ b/clang/qa/data/rename-cxx-constructor-decl-class.cxx.expected
@@ -0,0 +1,9 @@
+class D
+{
+public:
+ D();
+};
+
+D::D()
+{
+}
diff --git a/clang/qa/data/rename-cxx-constructor-decl.csv b/clang/qa/data/rename-cxx-constructor-decl.csv
new file mode 100644
index 0000000..8747849
--- /dev/null
+++ b/clang/qa/data/rename-cxx-constructor-decl.csv
@@ -0,0 +1,2 @@
+C::nX,m_nX
+C::aA,m_aA
diff --git a/clang/qa/data/rename-cxx-constructor-decl.cxx b/clang/qa/data/rename-cxx-constructor-decl.cxx
new file mode 100644
index 0000000..ca32c02
--- /dev/null
+++ b/clang/qa/data/rename-cxx-constructor-decl.cxx
@@ -0,0 +1,16 @@
+class A
+{
+};
+
+class C
+{
+public:
+ C();
+ int nX;
+ A aA;
+};
+
+C::C()
+ : nX(0)
+{
+}
diff --git a/clang/qa/data/rename-cxx-constructor-decl.cxx.expected b/clang/qa/data/rename-cxx-constructor-decl.cxx.expected
new file mode 100644
index 0000000..a2930dc
--- /dev/null
+++ b/clang/qa/data/rename-cxx-constructor-decl.cxx.expected
@@ -0,0 +1,16 @@
+class A
+{
+};
+
+class C
+{
+public:
+ C();
+ int m_nX;
+ A m_aA;
+};
+
+C::C()
+ : m_nX(0)
+{
+}
diff --git a/clang/qa/data/rename-cxx-constructor-expr.cxx b/clang/qa/data/rename-cxx-constructor-expr.cxx
new file mode 100644
index 0000000..0b24a17
--- /dev/null
+++ b/clang/qa/data/rename-cxx-constructor-expr.cxx
@@ -0,0 +1,8 @@
+class C
+{
+};
+
+int main()
+{
+ C* pC = new C();
+}
diff --git a/clang/qa/data/rename-cxx-constructor-expr.cxx.expected b/clang/qa/data/rename-cxx-constructor-expr.cxx.expected
new file mode 100644
index 0000000..6ff6d26
--- /dev/null
+++ b/clang/qa/data/rename-cxx-constructor-expr.cxx.expected
@@ -0,0 +1,8 @@
+class D
+{
+};
+
+int main()
+{
+ D* pC = new D();
+}
diff --git a/clang/qa/data/rename-cxx-method-decl.cxx b/clang/qa/data/rename-cxx-method-decl.cxx
new file mode 100644
index 0000000..5066927
--- /dev/null
+++ b/clang/qa/data/rename-cxx-method-decl.cxx
@@ -0,0 +1,15 @@
+class C
+{
+public:
+ void foo();
+};
+
+void C::foo()
+{
+}
+
+int main()
+{
+ C aC;
+ aC.foo();
+}
diff --git a/clang/qa/data/rename-cxx-method-decl.cxx.expected b/clang/qa/data/rename-cxx-method-decl.cxx.expected
new file mode 100644
index 0000000..89f2499
--- /dev/null
+++ b/clang/qa/data/rename-cxx-method-decl.cxx.expected
@@ -0,0 +1,15 @@
+class C
+{
+public:
+ void bar();
+};
+
+void C::bar()
+{
+}
+
+int main()
+{
+ C aC;
+ aC.bar();
+}
diff --git a/clang/qa/data/rename-cxx-static-cast-expr.cxx b/clang/qa/data/rename-cxx-static-cast-expr.cxx
new file mode 100644
index 0000000..a9fd3bf
--- /dev/null
+++ b/clang/qa/data/rename-cxx-static-cast-expr.cxx
@@ -0,0 +1,12 @@
+class C
+{
+public:
+ int getValue() const { return 0; }
+};
+
+int main()
+{
+ C* pC = 0;
+ static_cast<const C&>(*pC).getValue();
+ static_cast<const C*>(0)->getValue();
+}
diff --git a/clang/qa/data/rename-cxx-static-cast-expr.cxx.expected b/clang/qa/data/rename-cxx-static-cast-expr.cxx.expected
new file mode 100644
index 0000000..fb78a02
--- /dev/null
+++ b/clang/qa/data/rename-cxx-static-cast-expr.cxx.expected
@@ -0,0 +1,12 @@
+class D
+{
+public:
+ int getValue() const { return 0; }
+};
+
+int main()
+{
+ D* pC = 0;
+ static_cast<const D&>(*pC).getValue();
+ static_cast<const D*>(0)->getValue();
+}
diff --git a/clang/qa/data/rename-decl-ref-expr.cxx b/clang/qa/data/rename-decl-ref-expr.cxx
new file mode 100644
index 0000000..20eaba3
--- /dev/null
+++ b/clang/qa/data/rename-decl-ref-expr.cxx
@@ -0,0 +1,17 @@
+class C
+{
+public:
+ static const int aS[];
+ static const int* getS() { return aS; }
+};
+
+int foo(const int* pS)
+{
+ return 0;
+}
+#define FOO(a) foo(a)
+
+int main()
+{
+ FOO(C::aS);
+}
diff --git a/clang/qa/data/rename-decl-ref-expr.cxx.expected b/clang/qa/data/rename-decl-ref-expr.cxx.expected
new file mode 100644
index 0000000..10e99f1
--- /dev/null
+++ b/clang/qa/data/rename-decl-ref-expr.cxx.expected
@@ -0,0 +1,17 @@
+class C
+{
+public:
+ static const int m_aS[];
+ static const int* getS() { return m_aS; }
+};
+
+int foo(const int* pS)
+{
+ return 0;
+}
+#define FOO(a) foo(a)
+
+int main()
+{
+ FOO(C::m_aS);
+}
diff --git a/clang/qa/data/rename-field-decl.csv b/clang/qa/data/rename-field-decl.csv
new file mode 100644
index 0000000..1c8e71d
--- /dev/null
+++ b/clang/qa/data/rename-field-decl.csv
@@ -0,0 +1 @@
+C::nX,m_nX
diff --git a/clang/qa/data/rename-field-decl.csv-emptycol1 b/clang/qa/data/rename-field-decl.csv-emptycol1
new file mode 100644
index 0000000..7edb2fa
--- /dev/null
+++ b/clang/qa/data/rename-field-decl.csv-emptycol1
@@ -0,0 +1 @@
+,
diff --git a/clang/qa/data/rename-field-decl.csv-emptycol2 b/clang/qa/data/rename-field-decl.csv-emptycol2
new file mode 100644
index 0000000..597638b
--- /dev/null
+++ b/clang/qa/data/rename-field-decl.csv-emptycol2
@@ -0,0 +1 @@
+x,
diff --git a/clang/qa/data/rename-field-decl.cxx b/clang/qa/data/rename-field-decl.cxx
new file mode 100644
index 0000000..86e8455
--- /dev/null
+++ b/clang/qa/data/rename-field-decl.cxx
@@ -0,0 +1,5 @@
+class C
+{
+public:
+ int nX;
+};
diff --git a/clang/qa/data/rename-field-decl.cxx.expected b/clang/qa/data/rename-field-decl.cxx.expected
new file mode 100644
index 0000000..1f214ba
--- /dev/null
+++ b/clang/qa/data/rename-field-decl.cxx.expected
@@ -0,0 +1,5 @@
+class C
+{
+public:
+ int m_nX;
+};
diff --git a/clang/qa/data/rename-member-expr.cxx b/clang/qa/data/rename-member-expr.cxx
new file mode 100644
index 0000000..377ef58
--- /dev/null
+++ b/clang/qa/data/rename-member-expr.cxx
@@ -0,0 +1,19 @@
+class C
+{
+public:
+ int nX;
+};
+
+int foo(int x)
+{
+ return 0;
+}
+#define FOO(a) foo(a)
+
+int main()
+{
+ C aC;
+ aC.nX = 1;
+ FOO(aC.nX);
+ int y = aC.nX;
+}
diff --git a/clang/qa/data/rename-member-expr.cxx.expected b/clang/qa/data/rename-member-expr.cxx.expected
new file mode 100644
index 0000000..59e51f4
--- /dev/null
+++ b/clang/qa/data/rename-member-expr.cxx.expected
@@ -0,0 +1,19 @@
+class C
+{
+public:
+ int m_nX;
+};
+
+int foo(int x)
+{
+ return 0;
+}
+#define FOO(a) foo(a)
+
+int main()
+{
+ C aC;
+ aC.m_nX = 1;
+ FOO(aC.m_nX);
+ int y = aC.m_nX;
+}
diff --git a/clang/qa/data/rename-var-decl-class.cxx b/clang/qa/data/rename-var-decl-class.cxx
new file mode 100644
index 0000000..9cf77e6
--- /dev/null
+++ b/clang/qa/data/rename-var-decl-class.cxx
@@ -0,0 +1,11 @@
+class C
+{
+public:
+ static const int aS[];
+};
+
+int main()
+{
+ C* pC = 0;
+ return 0;
+}
diff --git a/clang/qa/data/rename-var-decl-class.cxx.expected b/clang/qa/data/rename-var-decl-class.cxx.expected
new file mode 100644
index 0000000..d187c07
--- /dev/null
+++ b/clang/qa/data/rename-var-decl-class.cxx.expected
@@ -0,0 +1,11 @@
+class D
+{
+public:
+ static const int aS[];
+};
+
+int main()
+{
+ D* pC = 0;
+ return 0;
+}
diff --git a/clang/qa/data/rename-var-decl.cxx b/clang/qa/data/rename-var-decl.cxx
new file mode 100644
index 0000000..0838efb
--- /dev/null
+++ b/clang/qa/data/rename-var-decl.cxx
@@ -0,0 +1,5 @@
+class C
+{
+public:
+ static const int aS[];
+};
diff --git a/clang/qa/data/rename-var-decl.cxx.expected b/clang/qa/data/rename-var-decl.cxx.expected
new file mode 100644
index 0000000..bce936b
--- /dev/null
+++ b/clang/qa/data/rename-var-decl.cxx.expected
@@ -0,0 +1,5 @@
+class C
+{
+public:
+ static const int m_aS[];
+};
diff --git a/clang/qa/llvm-gcov.sh b/clang/qa/llvm-gcov.sh
new file mode 100755
index 0000000..4e320d8
--- /dev/null
+++ b/clang/qa/llvm-gcov.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+exec llvm-cov gcov "$@"
diff --git a/clang/qa/test-rename.sh b/clang/qa/test-rename.sh
new file mode 100755
index 0000000..bcbdec1
--- /dev/null
+++ b/clang/qa/test-rename.sh
@@ -0,0 +1,94 @@
+#!/usr/bin/env bash
+
+test_assert_fail()
+{
+ if "$@" 2>/dev/null; then
+ echo "Error: assertion failure in ${test_name}."
+ exit 1
+ fi
+}
+
+test_assert_equal()
+{
+ if ! diff -u $1 $2; then
+ echo "Error: assertion failure in ${test_name}."
+ exit 1
+ fi
+}
+
+declare_rename_test()
+{
+ test_name="Rename::${1}"
+ test_input="qa/data/${2}"
+ test_output="qa/data/${2}.new-rename"
+ test_expected="qa/data/${2}.expected"
+}
+
+declare_rename_test "testFieldDecl" "rename-field-decl.cxx"
+bin/rename -old-name=C::nX -new-name=m_nX $test_input --
+test_assert_equal $test_expected $test_output
+
+# Do the same as previously, but trigger the csv parser this time.
+declare_rename_test "testFieldDeclCsv" "rename-field-decl.cxx"
+bin/rename -csv=qa/data/rename-field-decl.csv $test_input --
+test_assert_equal $test_expected $test_output
+
+# Test that we fail on non-existing -csv parameter.
+declare_rename_test "testFieldDeclCsvFail" "rename-field-decl.cxx"
+test_assert_fail bin/rename -csv=qa/data/rename-field-decl.cvs $test_input --
+
+# Test that the first column can't be empty.
+declare_rename_test "testFieldDeclCsvFailCol1Empty" "rename-field-decl.cxx"
+test_assert_fail bin/rename -csv=qa/data/rename-field-decl.csv-emptycol1 $test_input --
+
+# Test that the second column can't be empty.
+declare_rename_test "testFieldDeclCsvFailCol2Empty" "rename-field-decl.cxx"
+test_assert_fail bin/rename -csv=qa/data/rename-field-decl.csv-emptycol2 $test_input --
+
+# Test that rename fails without options.
+declare_rename_test "testFieldDeclCsvFailNoopt" "rename-field-decl.cxx"
+test_assert_fail bin/rename qa/data/rename-field-decl.cxx --
+
+# Test that rename dump creates no output
+declare_rename_test "testFieldDeclDump" "rename-field-decl.cxx"
+rm -f qa/data/rename-field-decl.cxx.new-rename
+bin/rename -csv=qa/data/rename-field-decl.csv -dump qa/data/rename-field-decl.cxx -- 2>/dev/null
+test_assert_fail test -f qa/data/rename-field-decl.cxx.new-rename
+
+declare_rename_test "testVarDecl" "rename-var-decl.cxx"
+bin/rename -old-name=C::aS -new-name=m_aS $test_input --
+test_assert_equal $test_expected $test_output
+
+declare_rename_test "testVarDeclClass" "rename-var-decl-class.cxx"
+bin/rename -old-name=C -new-name=D $test_input --
+test_assert_equal $test_expected $test_output
+
+declare_rename_test "testCXXConstructorDecl" "rename-cxx-constructor-decl.cxx"
+bin/rename -csv=qa/data/rename-cxx-constructor-decl.csv $test_input --
+test_assert_equal $test_expected $test_output
+
+declare_rename_test "testCXXConstructorDeclClass" "rename-cxx-constructor-decl-class.cxx"
+bin/rename -old-name=C -new-name=D $test_input --
+test_assert_equal $test_expected $test_output
+
+declare_rename_test "testMemberExpr" "rename-member-expr.cxx"
+bin/rename -old-name=C::nX -new-name=m_nX $test_input --
+test_assert_equal $test_expected $test_output
+
+declare_rename_test "testDeclRefExpr" "rename-decl-ref-expr.cxx"
+bin/rename -old-name=C::aS -new-name=m_aS $test_input --
+test_assert_equal $test_expected $test_output
+
+declare_rename_test "testCXXMethodDecl" "rename-cxx-method-decl.cxx"
+bin/rename -old-name=C::foo -new-name=bar $test_input --
+test_assert_equal $test_expected $test_output
+
+declare_rename_test "testCXXConstructExpr" "rename-cxx-constructor-expr.cxx"
+bin/rename -old-name=C -new-name=D $test_input --
+test_assert_equal $test_expected $test_output
+
+declare_rename_test "testCXXStaticCastExpr" "rename-cxx-static-cast-expr.cxx"
+bin/rename -old-name=C -new-name=D $test_input --
+test_assert_equal $test_expected $test_output
+
+# vi:set shiftwidth=4 expandtab:
More information about the Libreoffice-commits
mailing list