Coverage for rust2rpm/tests/test_cfg.py: 100%

9 statements  

« prev     ^ index     » next       coverage.py v7.6.4, created at 2024-10-27 15:21 +0100

1import pytest 

2 

3from rust2rpm import cfg 

4 

5 

6def test_pyparsing_run_tests(): 

7 g = cfg.cfg_grammar() 

8 

9 g.runTests( 

10 """\ 

11 cfg(target_os = "macos") 

12 cfg(any(foo, bar)) 

13 cfg(all(unix, target_pointer_width = "32")) 

14 cfg(not(foo)) 

15 """ 

16 ) 

17 

18 

19@pytest.mark.parametrize( 

20 "expr, expected", 

21 [ 

22 ('cfg(target_os = "macos")', False), 

23 ("cfg(any(foo, bar))", False), 

24 ('cfg(all(unix, target_pointer_width = "16"))', True), 

25 ("cfg(not(foo))", True), 

26 ("cfg(unix)", True), 

27 ("cfg(not(unix))", False), 

28 ("cfg(windows)", False), 

29 ("cfg(miri)", False), 

30 ("cfg(linux)", False), # not defined 

31 ("cfg(not(windows))", True), 

32 ("cfg(any(unix, windows))", True), 

33 ("cfg(any(windows, unix))", True), 

34 ("cfg(any(windows, windows, windows))", False), 

35 ('cfg(target_os = "linux")', True), 

36 ('cfg(any(target_os = "linux"))', True), 

37 ('cfg(all(target_os = "linux"))', True), 

38 ('cfg(any(target_os = "linux", target_os = "macos"))', True), 

39 ('cfg(any(target_pointer_width = "16", target_pointer_width = "32", target_pointer_width = "64"))', True), 

40 ('cfg(target_feature = "avx")', True), 

41 ('cfg(target_family = "unix")', True), 

42 ('cfg(target_env = "")', True), 

43 ('cfg(target_env = "gnu")', True), 

44 ('cfg(target_env = "msvc")', False), 

45 ('cfg(target_env = "musl")', False), 

46 ('cfg(target_pointer_width = "16")', True), 

47 ('cfg(target_pointer_width = "32")', True), 

48 ('cfg(target_pointer_width = "64")', True), 

49 ('cfg(target_vendor = "unknown")', True), 

50 ('cfg(target_vendor = "apple")', False), 

51 ('cfg(target_vendor = "pc")', False), 

52 ("cfg(hello)", False), 

53 # from rustix 0.35.12 

54 ('cfg(any(target_os = "android", target_os = "linux"))', True), 

55 ( 

56 'cfg(all(not(rustix_use_libc), not(miri), target_os = "linux", ' 

57 'any(target_arch = "x86", all(target_arch = "x86_64", target_pointer_width = "64"), ' 

58 'all(target_endian = "little", any(target_arch = "arm", ' 

59 'all(target_arch = "aarch64", target_pointer_width = "64"), ' 

60 'target_arch = "powerpc64", target_arch = "riscv64", target_arch = "mips", target_arch = "mips64")))))', 

61 True, 

62 ), 

63 ( 

64 'cfg(any(rustix_use_libc, miri, not(all(target_os = "linux", ' 

65 'any(target_arch = "x86", all(target_arch = "x86_64", target_pointer_width = "64"), ' 

66 'all(target_endian = "little", any(target_arch = "arm", ' 

67 'all(target_arch = "aarch64", target_pointer_width = "64"), ' 

68 'target_arch = "powerpc64", target_arch = "riscv64", target_arch = "mips", target_arch = "mips64")))))))', 

69 True, 

70 ), 

71 ('cfg(not(target_os = "emscripten"))', True), 

72 # from tokio 1.21.2 

73 ('cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), not(target_os = "wasi")))', False), 

74 ("cfg(loom)", False), 

75 ('cfg(not(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown")))', True), 

76 ('cfg(not(any(target_arch = "wasm32", target_arch = "wasm64")))', True), 

77 ('cfg(target_os = "freebsd")', False), 

78 ("cfg(tokio_unstable)", False), 

79 ], 

80) 

81def test_expressions(expr: str, expected: bool): 

82 value = cfg.parse_and_evaluate(expr) 

83 assert value == expected