diff mbox series

[RFC,1/1] testing/infra: add test for code style

Message ID 20171002011757.8245-1-ricardo.martincoski@gmail.com
State Superseded
Headers show
Series [RFC,1/1] testing/infra: add test for code style | expand

Commit Message

Ricardo Martincoski Oct. 2, 2017, 1:17 a.m. UTC
Cc: Arnout Vandecappelle <arnout@mind.be>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Cc: Yann E. MORIN <yann.morin.1998@free.fr>
Signed-off-by: Ricardo Martincoski <ricardo.martincoski@gmail.com>
---
NOTICE: this would require to install flake8 to the docker image
buildroot/base.

The configs could be fine-tuned by either adding options to the call,
such as:
 "--max-line-length=132",
or pointing to the config file:
 "--config={}".format(infra.filepath("conf/unittest.cfg")),
and adding to support/testing/conf/unittest.cfg something like this:
 [flake8]
 max-line-length=132
as pointed out by Yann E. MORIN in the review of
http://patchwork.ozlabs.org/patch/819800/

Flake8 will also test files pointed by symlinks.
---
 .gitlab-ci.yml                           |  1 +
 support/testing/infra/test_code_style.py | 27 +++++++++++++++++++++++++++
 2 files changed, 28 insertions(+)
 create mode 100644 support/testing/infra/test_code_style.py

Comments

Yann E. MORIN Oct. 2, 2017, 6:27 a.m. UTC | #1
Ricardo, all,

On 2017-10-01 22:17 -0300, Ricardo Martincoski spake thusly:
> Cc: Arnout Vandecappelle <arnout@mind.be>
> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> Cc: Yann E. MORIN <yann.morin.1998@free.fr>
> Signed-off-by: Ricardo Martincoski <ricardo.martincoski@gmail.com>
> ---
> NOTICE: this would require to install flake8 to the docker image
> buildroot/base.
> 
> The configs could be fine-tuned by either adding options to the call,
> such as:
>  "--max-line-length=132",
> or pointing to the config file:
>  "--config={}".format(infra.filepath("conf/unittest.cfg")),
> and adding to support/testing/conf/unittest.cfg something like this:
>  [flake8]
>  max-line-length=132
> as pointed out by Yann E. MORIN in the review of
> http://patchwork.ozlabs.org/patch/819800/

Note that if the file is support/testing/setup.cfg, then flake8 will
automatically find it, without the need for passing the --config option.

It can also be named support/testing/.flake8, but I don't like
dot-files, as they are hard to find.

If we wanted to sharea  single file for nose2 and flake8, then we could
move support/testing/conf/unittest.cfg to support/testing/setup.cfg.
But why would we want to share a single file for the two different
tools?

Regards,
Yann E. MORIN.

> Flake8 will also test files pointed by symlinks.
> ---
>  .gitlab-ci.yml                           |  1 +
>  support/testing/infra/test_code_style.py | 27 +++++++++++++++++++++++++++
>  2 files changed, 28 insertions(+)
>  create mode 100644 support/testing/infra/test_code_style.py
> 
> diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
> index 0e0773fc74..9e33217bd8 100644
> --- a/.gitlab-ci.yml
> +++ b/.gitlab-ci.yml
> @@ -218,6 +218,7 @@ zynq_microzed_defconfig: *defconfig
>  zynq_zc706_defconfig: *defconfig
>  zynq_zed_defconfig: *defconfig
>  zynq_zybo_defconfig: *defconfig
> +infra.test_code_style.TestInfraCodeStyle: *runtime_test
>  tests.core.test_post_scripts.TestPostScripts: *runtime_test
>  tests.core.test_rootfs_overlay.TestRootfsOverlay: *runtime_test
>  tests.core.test_timezone.TestGlibcAllTimezone: *runtime_test
> diff --git a/support/testing/infra/test_code_style.py b/support/testing/infra/test_code_style.py
> new file mode 100644
> index 0000000000..6f06ebd145
> --- /dev/null
> +++ b/support/testing/infra/test_code_style.py
> @@ -0,0 +1,27 @@
> +import subprocess
> +
> +import infra
> +import infra.basetest
> +
> +
> +class TestInfraCodeStyle(infra.basetest.BRTest):
> +    config = ""
> +    logfile = None
> +
> +    def setUp(self):
> +        self.show_msg("Starting")
> +        self.logfile = infra.open_log_file(self.builddir, "style",
> +                                           self.logtofile)
> +
> +    def tearDown(self):
> +        self.show_msg("Cleaning up")
> +
> +    def test_run(self):
> +        cmd = ["flake8",
> +               infra.filepath("run-tests"),
> +               infra.filepath("")]
> +        self.logfile.write("> starting '%s'\n" % " ".join(cmd))
> +        self.logfile.flush()
> +        ret = subprocess.call(cmd, stdout=self.logfile, stderr=self.logfile)
> +        if ret != 0:
> +            raise SystemError("There are code style warnings")
> -- 
> 2.13.0
>
Ricardo Martincoski Oct. 3, 2017, 1:05 a.m. UTC | #2
Hello,

On Mon, Oct 02, 2017 at 03:27 AM, Yann E. MORIN wrote:

> On 2017-10-01 22:17 -0300, Ricardo Martincoski spake thusly:
>> Cc: Arnout Vandecappelle <arnout@mind.be>
>> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
>> Cc: Yann E. MORIN <yann.morin.1998@free.fr>
>> Signed-off-by: Ricardo Martincoski <ricardo.martincoski@gmail.com>
>> ---
>> NOTICE: this would require to install flake8 to the docker image
>> buildroot/base.
>> 
>> The configs could be fine-tuned by either adding options to the call,
>> such as:
>>  "--max-line-length=132",
>> or pointing to the config file:
>>  "--config={}".format(infra.filepath("conf/unittest.cfg")),
>> and adding to support/testing/conf/unittest.cfg something like this:
>>  [flake8]
>>  max-line-length=132
>> as pointed out by Yann E. MORIN in the review of
>> http://patchwork.ozlabs.org/patch/819800/
> 
> Note that if the file is support/testing/setup.cfg, then flake8 will
> automatically find it, without the need for passing the --config option.

Indeed. Also in any parent directory it works, i.e. support/setup.cfg

> 
> It can also be named support/testing/.flake8, but I don't like
> dot-files, as they are hard to find.

This filename seems suitable to use in the root directory of the project:
buildroot/.flake8

So with one file we would cover support/, utils/ and also the test files in each
package directory.

And even this RFC patch becomes almost useless.

> 
> If we wanted to sharea  single file for nose2 and flake8, then we could
> move support/testing/conf/unittest.cfg to support/testing/setup.cfg.
> But why would we want to share a single file for the two different
> tools?

Fair enough. We don't need to share a single file.

Regards,
Ricardo
diff mbox series

Patch

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 0e0773fc74..9e33217bd8 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -218,6 +218,7 @@  zynq_microzed_defconfig: *defconfig
 zynq_zc706_defconfig: *defconfig
 zynq_zed_defconfig: *defconfig
 zynq_zybo_defconfig: *defconfig
+infra.test_code_style.TestInfraCodeStyle: *runtime_test
 tests.core.test_post_scripts.TestPostScripts: *runtime_test
 tests.core.test_rootfs_overlay.TestRootfsOverlay: *runtime_test
 tests.core.test_timezone.TestGlibcAllTimezone: *runtime_test
diff --git a/support/testing/infra/test_code_style.py b/support/testing/infra/test_code_style.py
new file mode 100644
index 0000000000..6f06ebd145
--- /dev/null
+++ b/support/testing/infra/test_code_style.py
@@ -0,0 +1,27 @@ 
+import subprocess
+
+import infra
+import infra.basetest
+
+
+class TestInfraCodeStyle(infra.basetest.BRTest):
+    config = ""
+    logfile = None
+
+    def setUp(self):
+        self.show_msg("Starting")
+        self.logfile = infra.open_log_file(self.builddir, "style",
+                                           self.logtofile)
+
+    def tearDown(self):
+        self.show_msg("Cleaning up")
+
+    def test_run(self):
+        cmd = ["flake8",
+               infra.filepath("run-tests"),
+               infra.filepath("")]
+        self.logfile.write("> starting '%s'\n" % " ".join(cmd))
+        self.logfile.flush()
+        ret = subprocess.call(cmd, stdout=self.logfile, stderr=self.logfile)
+        if ret != 0:
+            raise SystemError("There are code style warnings")