[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